# Culqi Python
[![Build Status](https://travis-ci.org/culqi/culqi-python.svg?branch=master)](https://travis-ci.org/culqi/culqi-python)
![](https://img.shields.io/pypi/pyversions/Culqi)
![](https://img.shields.io/pypi/l/culqi)
![](https://img.shields.io/pypi/v/culqi)
Nuestra Biblioteca PYTHON oficial, es compatible con la v2.0 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.
Nuestra 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.
## Requisitos
- Python 2.7+
* Afiliate [aquí](https://afiliate.culqi.com/).
* 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).
> Recuerda que para obtener tus llaves debes ingresar a tu CulqiPanel > Desarrollo > ***API Keys***.
![alt tag](http://i.imgur.com/NhE6mS9.png)
> Recuerda que las credenciales son enviadas al correo que registraste en el proceso de afiliación.
* Para encriptar el payload debes generar un id y llave RSA ingresando a CulqiPanel > Desarrollo > RSA Keys
## Instalación
Ejecuta los siguientes comandos:
```bash
py -m pip install pytest
py -m pip install python-dotenv
py -m pip install culqi
py -m pip install jsonschema
py -m pip install pycryptodome
```
## Configuracion
Para empezar a enviar peticiones al API de Culqi debes configurar tu llave pública (pk), llave privada (sk).
Para habilitar encriptación de payload debes configurar tu rsa_id y rsa_public_key.
```python
from dotenv import load_dotenv
from culqi2 import __version__
from culqi2.client import Culqi
self.public_key = "pk_test_e94078b9b248675d"
self.private_key = "sk_test_c2267b5b262745f0"
self.culqi = Culqi(self.public_key, self.private_key)
#ecnrypt variables
self.rsa_public_key = "-----BEGIN PUBLIC KEY-----\n" + \
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDswQycch0x/7GZ0oFojkWCYv+g\n" + \
"r5CyfBKXc3Izq+btIEMCrkDrIsz4Lnl5E3FSD7/htFn1oE84SaDKl5DgbNoev3pM\n" + \
"C7MDDgdCFrHODOp7aXwjG8NaiCbiymyBglXyEN28hLvgHpvZmAn6KFo0lMGuKnz8\n" + \
"iuTfpBl6HpD6+02SQIDAQAB\n" + \
"-----END PUBLIC KEY-----"
self.rsa_id = "de35e120-e297-4b96-97ef-10a43423ddec"
```
### Encriptar payload
Para encriptar el payload necesitas agregar el parámetros **options** que contiene tu id y llave RSA.
Ejemplo
```python
options = {}
options["rsa_public_key"] = self.rsa_public_key #"la llave pública RSA"
options["rsa_id"] = self.rsa_id # "el id de tu llave"
token = self.token.create(data=self.token_data, **options)
```
## Ejemplos
### Crear Token
```python
token = self.token.create(data=self.token_data)
```
### Crear Cargo
```python
charge = self.charge.create(data=self.charge_data)
```
### Crear Plan
```python
plan = self.plan.create(data=self.plan_data)
```
### Crear Customer
```python
customer = self.customer.create(data=self.customer_data)
```
### Actualizar Customer
```python
updated_customer = self.customer.update(
id_=created_customer["data"]["id"], data=metadatada
)
```
### Obtener Customer
```python
retrieved_customer = self.customer.read(created_customer["data"]["id"])
```
### Crear Card
```python
card = self.card.create(data=self.card_data)
```
### Crear Suscripción
```python
subscription = self.subscription.create(data=self.subscription_data)
```
### Crear Reembolso
```python
refund = self.refund.create(data=self.refund_data)
```
## Pruebas
En la caperta **/test** econtraras ejemplo para crear un token, charge, plan, órdenes, card, suscripciones, etc.
> Recuerda que si quieres probar tu integración, puedes utilizar nuestras [tarjetas de prueba.](https://docs.culqi.com/es/documentacion/pagos-online/tarjetas-de-prueba/)
### Ejemplo Prueba Token
```python
@pytest.mark.vcr()
def test_token_create(self):
token = self.token.create(data=self.token_data)
print(token)
assert token["data"]["object"] == "token"
```
### Ejemplo Prueba Cargo
```python
@property
def charge_data(self):
# pylint: disable=no-member
token_data = deepcopy(Data.TOKEN)
token = self.culqi.token.create(data=token_data)
print(token)
charge_data = deepcopy(Data.CHARGE)
charge_data["source_id"] = token["data"]["id"]
return charge_data
@pytest.mark.vcr()
def test_charge_create(self):
charge = self.charge.create(data=self.charge_data)
print (charge)
assert charge["data"]["object"] == "charge"
```
## Documentación
- [Referencia de API](https://apidocs.culqi.com/)
- [Demo Checkout V4 + Culqi 3DS](https://github.com/culqi/culqi-python-demo-checkoutv4-culqi3ds)
- [Wiki](https://github.com/culqi/culqi-python/wiki)
## Changelog
Todos los cambios en las versiones de esta biblioteca están listados en
[CHANGELOG.md](CHANGELOG.md).
## Autor
Team Culqi
## Licencia
El código fuente de culqi-python está distribuido bajo MIT License, revisar el archivo LICENSE.
Raw data
{
"_id": null,
"home_page": "https://github.com/culqi/culqi",
"name": "culqi-python-oficial",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "Api Client,Payment Integration,Culqi,Python 3,Python 2",
"author": "Team Culqi",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/75/33/5aac1f5078530bd222ddbc054561cc1d968a99764bd0165583d1e74e3441/culqi-python-oficial-1.0.0.tar.gz",
"platform": null,
"description": "# Culqi Python\r\n\r\n[![Build Status](https://travis-ci.org/culqi/culqi-python.svg?branch=master)](https://travis-ci.org/culqi/culqi-python)\r\n![](https://img.shields.io/pypi/pyversions/Culqi)\r\n![](https://img.shields.io/pypi/l/culqi)\r\n![](https://img.shields.io/pypi/v/culqi)\r\n\r\n\r\nNuestra Biblioteca PYTHON oficial, es compatible con la v2.0 del Culqi API, con el cual tendr\u00e1s la posibilidad de realizar cobros con tarjetas de d\u00e9bito y cr\u00e9dito, Yape, PagoEfectivo, billeteras m\u00f3viles y Cuot\u00e9alo con solo unos simples pasos de configuraci\u00f3n.\r\n\r\nNuestra biblioteca te da la posibilidad de capturar el `status_code` de la solicitud HTTP que se realiza al API de Culqi, as\u00ed como el `response` que contiene el cuerpo de la respuesta obtenida.\r\n\r\n## Requisitos\r\n\r\n- Python 2.7+\r\n* Afiliate [aqu\u00ed](https://afiliate.culqi.com/).\r\n* Si vas a realizar pruebas obt\u00e9n tus llaves desde [aqu\u00ed](https://integ-panel.culqi.com/#/registro), si vas a realizar transacciones reales obt\u00e9n tus llaves desde [aqu\u00ed](https://panel.culqi.com/#/registro).\r\n\r\n> Recuerda que para obtener tus llaves debes ingresar a tu CulqiPanel > Desarrollo > ***API Keys***.\r\n\r\n![alt tag](http://i.imgur.com/NhE6mS9.png)\r\n\r\n> Recuerda que las credenciales son enviadas al correo que registraste en el proceso de afiliaci\u00f3n.\r\n\r\n* Para encriptar el payload debes generar un id y llave RSA ingresando a CulqiPanel > Desarrollo > RSA Keys\r\n\r\n## Instalaci\u00f3n\r\n\r\nEjecuta los siguientes comandos:\r\n\r\n```bash\r\npy -m pip install pytest\r\npy -m pip install python-dotenv\r\npy -m pip install culqi\r\npy -m pip install jsonschema\r\npy -m pip install pycryptodome\r\n\r\n```\r\n\r\n## Configuracion\r\n\r\nPara empezar a enviar peticiones al API de Culqi debes configurar tu llave p\u00fablica (pk), llave privada (sk).\r\nPara habilitar encriptaci\u00f3n de payload debes configurar tu rsa_id y rsa_public_key.\r\n\r\n```python\r\n\r\nfrom dotenv import load_dotenv\r\nfrom culqi2 import __version__\r\nfrom culqi2.client import Culqi\r\n\r\nself.public_key = \"pk_test_e94078b9b248675d\"\r\nself.private_key = \"sk_test_c2267b5b262745f0\"\r\nself.culqi = Culqi(self.public_key, self.private_key)\r\n\r\n#ecnrypt variables\r\nself.rsa_public_key = \"-----BEGIN PUBLIC KEY-----\\n\" + \\\r\n \"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDswQycch0x/7GZ0oFojkWCYv+g\\n\" + \\\r\n \"r5CyfBKXc3Izq+btIEMCrkDrIsz4Lnl5E3FSD7/htFn1oE84SaDKl5DgbNoev3pM\\n\" + \\\r\n \"C7MDDgdCFrHODOp7aXwjG8NaiCbiymyBglXyEN28hLvgHpvZmAn6KFo0lMGuKnz8\\n\" + \\\r\n \"iuTfpBl6HpD6+02SQIDAQAB\\n\" + \\\r\n \"-----END PUBLIC KEY-----\"\r\nself.rsa_id = \"de35e120-e297-4b96-97ef-10a43423ddec\"\r\n\r\n```\r\n\r\n### Encriptar payload\r\n\r\nPara encriptar el payload necesitas agregar el par\u00e1metros **options** que contiene tu id y llave RSA.\r\n\r\nEjemplo\r\n\r\n```python\r\noptions = {}\r\noptions[\"rsa_public_key\"] = self.rsa_public_key #\"la llave p\u00fablica RSA\"\r\noptions[\"rsa_id\"] = self.rsa_id # \"el id de tu llave\"\r\ntoken = self.token.create(data=self.token_data, **options)\r\n\r\n```\r\n\r\n## Ejemplos\r\n\r\n### Crear Token\r\n\r\n```python\r\n\r\ntoken = self.token.create(data=self.token_data)\r\n\r\n```\r\n\r\n### Crear Cargo\r\n\r\n```python\r\n\r\ncharge = self.charge.create(data=self.charge_data)\r\n\r\n```\r\n\r\n### Crear Plan\r\n\r\n```python\r\nplan = self.plan.create(data=self.plan_data)\r\n\r\n```\r\n\r\n### Crear Customer\r\n\r\n```python\r\ncustomer = self.customer.create(data=self.customer_data)\r\n\r\n```\r\n\r\n### Actualizar Customer\r\n\r\n```python\r\n updated_customer = self.customer.update(\r\n id_=created_customer[\"data\"][\"id\"], data=metadatada\r\n )\r\n```\r\n\r\n### Obtener Customer\r\n\r\n```python\r\n retrieved_customer = self.customer.read(created_customer[\"data\"][\"id\"])\r\n```\r\n\r\n### Crear Card\r\n\r\n```python\r\n card = self.card.create(data=self.card_data)\r\n\r\n```\r\n\r\n### Crear Suscripci\u00f3n\r\n\r\n```python\r\nsubscription = self.subscription.create(data=self.subscription_data)\r\n\r\n```\r\n\r\n### Crear Reembolso\r\n\r\n```python\r\nrefund = self.refund.create(data=self.refund_data)\r\n\r\n```\r\n\r\n## Pruebas\r\n\r\nEn la caperta **/test** econtraras ejemplo para crear un token, charge, plan, \u00f3rdenes, card, suscripciones, etc.\r\n\r\n> Recuerda que si quieres probar tu integraci\u00f3n, puedes utilizar nuestras [tarjetas de prueba.](https://docs.culqi.com/es/documentacion/pagos-online/tarjetas-de-prueba/)\r\n\r\n### Ejemplo Prueba Token\r\n\r\n```python\r\n @pytest.mark.vcr()\r\n def test_token_create(self):\r\n token = self.token.create(data=self.token_data)\r\n print(token)\r\n assert token[\"data\"][\"object\"] == \"token\"\r\n\r\n```\r\n\r\n### Ejemplo Prueba Cargo\r\n```python\r\n @property\r\n def charge_data(self):\r\n # pylint: disable=no-member\r\n token_data = deepcopy(Data.TOKEN)\r\n token = self.culqi.token.create(data=token_data)\r\n print(token)\r\n charge_data = deepcopy(Data.CHARGE)\r\n charge_data[\"source_id\"] = token[\"data\"][\"id\"]\r\n\r\n return charge_data\r\n\r\n @pytest.mark.vcr()\r\n def test_charge_create(self):\r\n charge = self.charge.create(data=self.charge_data)\r\n print (charge)\r\n assert charge[\"data\"][\"object\"] == \"charge\"\r\n```\r\n\r\n## Documentaci\u00f3n\r\n\r\n- [Referencia de API](https://apidocs.culqi.com/)\r\n- [Demo Checkout V4 + Culqi 3DS](https://github.com/culqi/culqi-python-demo-checkoutv4-culqi3ds)\r\n- [Wiki](https://github.com/culqi/culqi-python/wiki)\r\n\r\n## Changelog\r\n\r\nTodos los cambios en las versiones de esta biblioteca est\u00e1n listados en\r\n[CHANGELOG.md](CHANGELOG.md).\r\n\r\n## Autor\r\nTeam Culqi\r\n\r\n## Licencia\r\nEl c\u00f3digo fuente de culqi-python est\u00e1 distribuido bajo MIT License, revisar el archivo LICENSE.\r\n\r\n",
"bugtrack_url": null,
"license": "",
"summary": "Biblioteca de Culqi para Python",
"version": "1.0.0",
"project_urls": {
"Download": "https://github.com/culqi/culqi/-/archive/1.0.0/culqi-python-oficial-1.0.0.tar.gz",
"Homepage": "https://github.com/culqi/culqi"
},
"split_keywords": [
"api client",
"payment integration",
"culqi",
"python 3",
"python 2"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "5feac94720c1266f0f714d3f8eb7ff2b1da6dba1a4449fc13391bb6cbd1936e2",
"md5": "1783f019d71274926b8db99ff08fd4e6",
"sha256": "5de0e228f1c5a64ef095dfdd6ce128125dab994fcc70206d4d0d2f8157328d5f"
},
"downloads": -1,
"filename": "culqi_python_oficial-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1783f019d71274926b8db99ff08fd4e6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 14727,
"upload_time": "2023-08-19T02:06:38",
"upload_time_iso_8601": "2023-08-19T02:06:38.356724Z",
"url": "https://files.pythonhosted.org/packages/5f/ea/c94720c1266f0f714d3f8eb7ff2b1da6dba1a4449fc13391bb6cbd1936e2/culqi_python_oficial-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "75335aac1f5078530bd222ddbc054561cc1d968a99764bd0165583d1e74e3441",
"md5": "b5a8e113d5d8dc8bd1fa48ede3651c25",
"sha256": "f8dde9b9735dc332c42ad4f036512aab7dd83a8bfb0d8f77d88e6b5243e23f0f"
},
"downloads": -1,
"filename": "culqi-python-oficial-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "b5a8e113d5d8dc8bd1fa48ede3651c25",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 13439,
"upload_time": "2023-08-19T02:06:40",
"upload_time_iso_8601": "2023-08-19T02:06:40.098576Z",
"url": "https://files.pythonhosted.org/packages/75/33/5aac1f5078530bd222ddbc054561cc1d968a99764bd0165583d1e74e3441/culqi-python-oficial-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-19 02:06:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "culqi",
"github_project": "culqi",
"github_not_found": true,
"lcname": "culqi-python-oficial"
}