{"id":19510629,"url":"https://github.com/culqi/culqi-java","last_synced_at":"2025-08-02T12:33:36.185Z","repository":{"id":44561966,"uuid":"69400362","full_name":"culqi/culqi-java","owner":"culqi","description":"Una implementación de Culqi en Java","archived":false,"fork":false,"pushed_at":"2024-12-03T21:44:51.000Z","size":246,"stargazers_count":9,"open_issues_count":7,"forks_count":8,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-26T03:44:35.193Z","etag":null,"topics":["culqi","java","payments","sdk"],"latest_commit_sha":null,"homepage":"https://developers.culqi.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/culqi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-09-27T21:30:41.000Z","updated_at":"2024-12-03T21:36:10.000Z","dependencies_parsed_at":"2024-01-03T03:18:46.060Z","dependency_job_id":"d8104769-9ce7-4094-af43-58f864ba3a8a","html_url":"https://github.com/culqi/culqi-java","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/culqi/culqi-java","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/culqi%2Fculqi-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/culqi%2Fculqi-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/culqi%2Fculqi-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/culqi%2Fculqi-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/culqi","download_url":"https://codeload.github.com/culqi/culqi-java/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/culqi%2Fculqi-java/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268388352,"owners_count":24242544,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["culqi","java","payments","sdk"],"created_at":"2024-11-10T23:16:35.684Z","updated_at":"2025-08-02T12:33:36.165Z","avatar_url":"https://github.com/culqi.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Culqi-Java\n\n[![Code Climate](https://codeclimate.com/github/culqi/culqi-java/badges/gpa.svg)](https://codeclimate.com/github/culqi/culqi-java)\n[![Build Status](https://travis-ci.org/culqi/culqi-java.svg?branch=master)](https://travis-ci.org/culqi/culqi-java)\n\nNuestra Biblioteca JAVA oficial, es compatible con la [v2.0](https://culqi.com/api/) del Culqi API, con el cual tendrás la posibilidad de realizar cobros con tarjetas de débito y crédito, Yape, PagoEfectivo, billeteras móviles y Cuotéalo con solo unos simples pasos de configuración.\n\nNuestra biblioteca te da la posibilidad de capturar el `status_code` de la solicitud HTTP que se realiza al API de Culqi, así como el `response` que contiene el cuerpo de la respuesta obtenida.\n\n\n| Versión actual|Culqi API|\n|----|----|\n| 2.0.4  |[v2.0](https://culqi.com/api/)|\n\n\n## Requisitos\n\n- Java 1.7+\n- Afiliate [aquí](https://afiliate.culqi.com/).\n- Si vas a realizar pruebas obtén tus llaves desde [aquí](https://integ-panel.culqi.com/#/registro), si vas a realizar transacciones reales obtén tus llaves desde [aquí](https://panel.culqi.com/#/registro).\n\n\u003e Recuerda que para obtener tus llaves debes ingresar a tu CulqiPanel \u003e Desarrollo \u003e ***API Keys***.\n\n![alt tag](http://i.imgur.com/NhE6mS9.png)\n\n\u003e Recuerda que las credenciales son enviadas al correo que registraste en el proceso de afiliación.\n\n* Para encriptar el payload debes generar un id y llave RSA  ingresando a CulqiPanel \u003e Desarrollo  \u003e RSA Keys.\n\n## Instalación\n\nInstalación usando Maven:\n\nSolo necesita agregar el siguiente repositorio en el archivo pom.xml\n\n```xml\n\u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003ejitpack.io\u003c/id\u003e\n        \u003curl\u003ehttps://jitpack.io\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n```\n\nLuego agregar la dependencia:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.culqi\u003c/groupId\u003e\n    \u003cartifactId\u003eculqi-java\u003c/artifactId\u003e\n    \u003cversion\u003ev2.0.4\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Configuración\n\nPara empezar a enviar peticiones al API de Culqi debes configurar tu llave pública (pk), llave privada (sk).\nPara habilitar encriptación de payload debes configurar tu rsa_id y rsa_public_key.\n\n```java\nculqi.public_key = \"pk_test_889113cd74ecfc55\";\nculqi.secret_key = \"sk_test_LoSAl6rqTInlzPSJ\";\nString rsaPublicKey = \"-----BEGIN PUBLIC KEY-----\\n\"\n\t\t\t+ \"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDADka0Pt4SuWlHRA6kcJIwDde\\n\"\n\t\t\t+ \"o67OYBEgQDEelmmixs9AlB/1bv446XOOE8eTJSridll2ZAn2nze7Gl2vQs0yW+4A\\n\"\n\t\t\t+ \"XmszJwugM0lxTDiPdTXdbrA4VXiXDG29VLQCAxt1+/c7bE84hMS6cymWgEjYoa6I\\n\"\n\t\t\t+ \"xX8u0ncLyiRUdZC2cwIDAQAB\\n\"\n\t\t\t+ \"-----END PUBLIC KEY-----\";\n\t\nSring rsaId = \"5243bad7-1d88-49c0-9699-f8ae156da58f\"; \n\t\nJsonData jsondata = new JsonData();\n```\n\n### Encriptar payload\n\nPara encriptar el payload necesitas pasar como parámetro el rsaPublicKey y rsaId.\n\nEjemplo\n\n```java\nprotected Map\u003cString, Object\u003e createTokenEncrypt() throws Exception {\n    return init().token.create(jsondata.jsonToken(), rsaPublicKey, rsaId);\n}\n```\n\n\n## Servicios\n\n### Crear Token\n\nAntes de crear un Cargo o Card es necesario crear un `token` de tarjeta. \nLo recomendable es generar los 'tokens' con [Culqi Checkout v4](https://docs.culqi.com/es/documentacion/checkout/v4/culqi-checkout/) o [Culqi JS v4](https://docs.culqi.com/es/documentacion/culqi-js/v4/culqi-js/) **debido a que es muy importante que los datos de tarjeta sean enviados desde el dispositivo de tus clientes directamente a los servidores de Culqi**, para no poner en riesgo los datos sensibles de la tarjeta de crédito/débito.\n\n\u003e Recuerda que cuando interactúas directamente con el [API Token](https://apidocs.culqi.com/#tag/Tokens/operation/crear-token) necesitas cumplir la normativa de PCI DSS 3.2. Por ello, te pedimos que llenes el [formulario SAQ-D](https://listings.pcisecuritystandards.org/documents/SAQ_D_v3_Merchant.pdf) y lo envíes al buzón de riesgos Culqi.\n\n```java\n protected Map\u003cString, Object\u003e createToken() throws Exception {\n    return init().token.create(jsondata.jsonToken());\n }\n```\n\n### Crear Cargo\n\nCrear un cargo significa cobrar una venta a una tarjeta. Para esto previamente deberías generar el  `token` y enviarlo en parámetro **source_id**.\n\nLos cargos pueden ser creados vía [API de cargo](https://apidocs.culqi.com/#tag/Cargos/operation/crear-cargo).\n\n```java\nprotected Map\u003cString, Object\u003e createCharge() throws Exception {\n   String source_id = createToken().get(\"id\").toString();\n   return init().charge.create(jsondata.jsonCharge(source_id));\n}\n```\n\nPara realizar un cargo recurrente, puedes utilizar el siguiente código:\n\n```java\nprotected Map\u003cString, Object\u003e createCharge() throws Exception {\n    String source_id = createToken().get(\"id\").toString();\n    Map\u003cString, String\u003e customHeaders = new HashMap\u003cString, String\u003e();\n    customHeaders.put(\"X-Charge-Channel\", \"recurrent\");\n\n    return init().charge.create(jsondata.jsonCharge(source_id), customHeaders);\n}\n```\n\n### Crear Devolución\n\nSolicita la devolución de las compras de tus clientes (parcial o total) de forma gratuita a través del API y CulqiPanel. \n\nLas devoluciones pueden ser creados vía [API de devolución](https://apidocs.culqi.com/#tag/Devoluciones/operation/crear-devolucion).\n\n```java\nprotected Map\u003cString, Object\u003e createRefund() throws Exception {\n   String charge_id = createCharge().get(\"id\").toString();\n   return init().refund.create(jsondata.jsonRefund(charge_id));\n}\n```\n\n### Crear Cliente\n\nEl **cliente** es un servicio que te permite guardar la información de tus clientes. Es un paso necesario para generar una [tarjeta](/es/documentacion/pagos-online/recurrencia/one-click/tarjetas).\n\nLos clientes pueden ser creados vía [API de cliente](https://apidocs.culqi.com/#tag/Clientes/operation/crear-cliente).\n\n```java\n protected Map\u003cString, Object\u003e createCustomer() throws Exception {\n    return init().customer.create(jsondata.jsonCustomer());\n }\n```\n\n### Crear Tarjeta\n\nLa **tarjeta** es un servicio que te permite guardar la información de las tarjetas de crédito o débito de tus clientes para luego realizarles cargos one click o recurrentes (cargos posteriores sin que tus clientes vuelvan a ingresar los datos de su tarjeta).\n\nLas tarjetas pueden ser creadas vía [API de tarjeta](https://apidocs.culqi.com/#tag/Tarjetas/operation/crear-tarjeta).\n\n```java\nprotected Map\u003cString, Object\u003e createCard() throws Exception {\n   String customer_id = createCustomer().get(\"id\").toString();\n   String token_id = createToken().get(\"id\").toString();\n   return init().card.create(jsondata.jsonCard(customer_id,token_id));\n}\n```\n\n### Crear Plan\n\nEl plan es un servicio que te permite definir con qué frecuencia deseas realizar cobros a tus clientes.\n\nUn plan define el comportamiento de las suscripciones. Los planes pueden ser creados vía el [API de Plan](https://apidocs.culqi.com/#/planes#create) o desde el **CulqiPanel**.\n\n```java\nprotected Map\u003cString, Object\u003e createPlan() throws Exception {\n   return init().plan.create(jsondata.jsonPlan());\n}\n```\n\n### Crear Suscripción\n\nLa suscripción es un servicio que asocia la tarjeta de un cliente con un plan establecido por el comercio.\n\nLas suscripciones pueden ser creadas vía [API de suscripción](https://apidocs.culqi.com/#tag/Suscripciones/operation/crear-suscripcion).\n\n```java\n protected Map\u003cString, Object\u003e createSubscription() throws Exception {\n    String card_id = createCard().get(\"id\").toString();\n    String plan_id = createPlan().get(\"id\").toString();\n    return init().subscription.create(jsondata.jsonSubscription(card_id, plan_id));\n }\n```\n\n### Crear Orden\n\nEs un servicio que te permite generar una orden de pago para una compra potencial.\nLa orden contiene la información necesaria para la venta y es usado por el sistema de **PagoEfectivo** para realizar los pagos diferidos.\n\nLas órdenes pueden ser creadas vía [API de orden](https://apidocs.culqi.com/#tag/Ordenes/operation/crear-orden).\n\n```java\n protected Map\u003cString, Object\u003e createSubscription() throws Exception {\n    String card_id = createCard().get(\"id\").toString();\n    String plan_id = createPlan().get(\"id\").toString();\n    return init().subscription.create(jsondata.jsonSubscription(card_id, plan_id));\n }\n```\n\n\n## Build\n\n```bash\nmvn package -DskipTests\n```\n\n## Testing\n\nDebes tener instalado Maven para poder ejecutar los tests\n\n```bash\nmvn test\n```\n\nPuede ejecutar estos unitarios independientemente\n\n```bash\nmvn test -D test=CulqiCreateTest#test01_createToken\nmvn test -D test=CulqiCreateTest#test02_createTokenEncrypt\nmvn test -D test=CulqiCreateTest#test04_createCharge\nmvn test -D test=CulqiCreateTest#test05_createPlan\nmvn test -D test=CulqiCreateTest#test06_createCustomer\nmvn test -D test=CulqiCreateTest#test07_createCard\nmvn test -D test=CulqiCreateTest#test08_createSubscription\nmvn test -D test=CulqiCreateTest#test09_chargeCapture\n```\n\n### Ejemplo Prueba Token\n\n```java\n@Test\npublic void test01_createToken() throws Exception {\n    culqiCRUD.createToken().get(\"object\").toString();\n    assertEquals(\"token\", culqiCRUD.createToken().get(\"object\").toString());\n}\n```\n\n### Ejemplo Prueba Cargo\n```java\n@Test\npublic void test04_createCharge() throws Exception {\n    assertEquals(\"charge\", culqiCRUD.createCharge().get(\"object\").toString());\n}\n```\n\n## ¿Cómo instalar el jar de Culqi en un proyecto Maven? \n\n```bash\nmvn install:install-file -Dfile={dir}/culqi-java-1.1.8.jar  -DgroupId=com.culqi -DartifactId=culqi-java -Dversion={version} -Dpackaging=jar\n```\n\n\nLuego agregas la siguiente dependencia en el pom.xml\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.culqi\u003c/groupId\u003e\n    \u003cartifactId\u003eculqi-java\u003c/artifactId\u003e\n    \u003cversion\u003e{version}\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Documentación\n\n- [Referencia de Documentación](https://docs.culqi.com/)\n- [Referencia de API](https://apidocs.culqi.com/)\n- [Demo Checkout V4 + Culqi 3DS](https://github.com/culqi/culqi-java-demo-checkoutv4-culqi3ds)\n- [okhttp3](http://square.github.io/okhttp/)\n- [Jackson Core Databind](https://github.com/FasterXML/jackson-databind/wiki)\n- [Wiki](https://github.com/culqi/culqi-java/wiki)\n\n### Instalar Java\nDescarga Spring Tools Suite 4-4.21.0 archivo del siguiente link:\n\n```bash\n    https://cdn.spring.io/spring-tools/release/STS4/4.21.0.RELEASE/dist/e4.30/spring-tool-suite-4-4.21.0.RELEASE-e4.30.0-linux.gtk.x86_64.tar.gz\n```\n\n### Instalar jdk (Kit de Desarrollo de Java)\nAsegúrate de tener instalado el JDK 8 mediante los siguientes comandos:\n\n```bash\nsudo apt-get update\nsudo apt-get install openjdk-8-jdk\n```\n### Configurar Variables de Entorno para Java y Maven\nEdita el archivo .bashrc con el siguiente comando:\n\n```bash\n    #Abre el archivo .bashrc \n    nano ~/.bashrc\n```\nAñade las siguientes líneas al final del archivo:\n\n```bash\n    #Agrega las siguientes líneas al final del archivo:\n    JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\n    M2_HOME=/usr/share/maven\n    PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin\n```\nGuarda los cambios y cierra el editor (Ctrl + o \u003e\u003e Enter \u003e\u003e Ctrl + x).\n\n### Instalar Maven\nInstala Maven con el siguiente comando\n\n```bash\nsudo apt-get install maven\n```\n\n\n### Como abrir el archvio SDK\n\nAbre Spring Tools Suite y selecciona:\n```bash\n    FILE \u003e\u003e IMPORT \u003e\u003e MAVEN \u003e\u003e EXISTING MAVEN PROJECTS\n```\n\n### Instalar Dependencias\nHaz clic derecho en la carpeta raíz del proyecto y selecciona:\n\n```bash\n        RUN AS \u003e\u003e MAVEN CLEAN \n        RUN AS \u003e\u003e MAVEN INSTALL\n```\n\n### Ejecutar Tests\nHaz clic derecho en la carpeta src/test/java y selecciona:\n\n```bash\n        RUN AS \u003e\u003e JUnit Test\n```\nEspera a que se ejecuten todas las pruebas unitarias y, luego, ejecuta cada prueba individualmente según las necesidades.\n\n```bash\nCulqiCreateTest:\n    test05_createPlan\n    test08_createSubscription\n\nCulqiDeleteTest: \n    test01_deleteSubscription\n    test02_deletePlan\n\nCulqiGetTest:\n    test06_findPlan\n    test07_findSubscription\n\nCulqiAllTest:\n    test04_allPlan\n    test06_allSubscriptions\n```\nClick derecho en el nombre del test_0** \u003e\u003e RUN\n\n### Donde Encontrar los ejemplos para Pruebas\nDentro de la estructura del proyecto, encontrarás ejemplos de pruebas que puedes utilizar para verificar el funcionamiento del SDK. Sigue estos pasos para acceder y ejecutar los ejemplos:\n\n# Ubicación de los Ejemplos:\n* Haz clic derecho en la carpeta src/test/java.\n* Abre el archivo CulqiCRUD.java.\n* En la linea 27 puedes configurar el secreto:\n\n```bash\n    culqi.secret_key = \"sk_live_************\";\n```\n\n* Haz clic derecho en la carpeta src/test/java.\n* Abre el archivo JsonData.java.\n\n* Ejemplo de JSON:\nEn el archivo JsonData.java, encontrarás ejemplos de datos en formato JSON que se utilizan en las pruebas. Puedes modificar estos datos según tus necesidades.\n\n```bash\nphp examples/plan/02-create-plan.php\n    Crear Plan: jsonPlan\n    Actualizar Plan: jsonUpdatePlan\n    All Plan: jsonPlanFilter\n\n    Crear Subscription: jsonSubscription\n    Actualizar Subscription: jsonUpdateSubscription\n    All Subscription: jsonListSubscriptions\n```\nModifica estos ejemplos según tus necesidades y asegúrate de tener configuradas correctamente tus credenciales de Culqi antes de ejecutar las pruebas.\n\n\n## Changelog\n\nTodos los cambios en las versiones de esta biblioteca están listados en [CHANGELOG](CHANGELOG).\n\n## Autor\n\nTeam Culqi\n\n## Licencia\n\nEl código fuente de culqi-java está distribuido bajo MIT License, revisar el archivo [LICENSE](https://github.com/culqi/culqi-java/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fculqi%2Fculqi-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fculqi%2Fculqi-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fculqi%2Fculqi-java/lists"}