Skip to content

culqi/culqi-python

 
 

Repository files navigation

Culqi Python

GitHub PyPI Travis (.org) branch

Biblioteca de CULQI para el lenguaje Python, pagos simples en tu sitio web. Consume el Culqi API.

Versión actual Culqi API
0.2.6 (2017-02-27) v2

Requisitos

  • Python 2.7, 3.5, 3.6, 3.7, 3.8-dev
  • Credenciales de comercio en Culqi.

Instalación

pip install culqipy

Ejemplo

Inicialización

from uuid import uuid4
import culqipy

api_key = '{LLAVE PUBLICA}'
api_secret = '{LLAVE SECRETA}'

client = Client(api_key=api_key, api_secret=api_secret)

Token

Crear
token_data = {
      "cvv": "123",
      "card_number": "4111111111111111",
      "expiration_year": "2020",
      "expiration_month": "09",
      "email": "richard@piedpiper.com",
}

token = client.token.create(data=token_data)
print(token["data"])
Leer
retrieved_token = client.token.read(token["data"]["id"])
print(retrieved_token["data"])
Actualizar
metadatada = {
      "metadata": {
            "order_id": "0001"
      }
}
updated_token = client.token.update(id_=token["data"]["id"], data=metadatada)
print(updated_token["data"])
Listar
retrieved_token_list = client.token.list()
assert "items" in retrieved_token_list["data"]

Cargo

Crear
charge_data = {
      "amount": 10000,
      "capture": False,
      "currency_code": "PEN",
      "description": "Venta de prueba",
      "email": "richard@piedpiper.com",
      "installments": 0,
      "source_id": token["data"]["id"],
}

charge = client.charge.create(data=charge_data)
print(charge["data"])
Capturar
captured_charge = client.charge.capture(charge["data"]["id"])
print(captured_charge["data"])
Leer
retrieved_charge = client.charge.read(charge["data"]["id"])
print(retrieved_charge["data"])
Actualizar
metadatada = {
      "metadata": {
            "order_id": "0001"
      }
}
updated_charge = client.charge.update(id_=charge["data"]["id"], data=metadatada)
print(updated_charge["data"])
Listar
retrieved_charge_list = client.charge.list()
assert "items" in retrieved_charge_list["data"]

Reembolso

Crear
refund_data = {
      "amount": 100,
      "reason": "solicitud_comprador",
      "charge_id": charge["data"]["id"],
}

refund = client.refund.create(data=refund_data)
print(refund["data"])
Leer
retrieved_refund = client.refund.read(refund["data"]["id"])
print(retrieved_refund["data"])
Actualizar
metadatada = {
      "metadata": {
            "order_id": "0001"
      }
}
updated_refund = client.refund.update(id_=refund["data"]["id"], data=metadatada)
print(updated_refund["data"])
Listar
retrieved_refund_list = client.refund.list()
assert "items" in retrieved_refund_list["data"]

Cliente

Crear
customer_data = {
      "address": "Avenida Lima 123213",
      "address_city": "LIMA",
      "country_code": "PE",
      "email": "richard@piedpiper.com",
      "first_name": "Richard",
      "last_name": "Piedpiper",
      "phone_number": "+51998989789",
}

customer = client.customer.create(data=customer_data)
print(customer["data"])
Leer
retrieved_customer = client.customer.read(customer["data"]["id"])
print(retrieved_customer["data"])
Actualizar
metadatada = {
      "metadata": {
            "order_id": "0001"
      }
}
updated_customer = client.customer.update(id_=customer["data"]["id"], data=metadatada)
print(updated_customer["data"])
Eliminar
deleted_customer = client.customer.delete(id_=customer["data"]["id"])
print(deleted_customer["data"])
Listar
retrieved_customer_list = client.customer.list()
assert "items" in retrieved_customer_list["data"]

Tarjeta

Crear
card_data = {
      "token_id": token["data"]["id"],
      "customer_id": customer["data"]["id"],
}

card = client.card.create(data=card_data)
print(card["data"])
Leer
retrieved_card = client.card.read(card["data"]["id"])
print(retrieved_card["data"])
Actualizar
metadatada = {
      "metadata": {
            "order_id": "0001"
      }
}
updated_card = client.card.update(id_=card["data"]["id"], data=metadatada)
print(updated_card["data"])
Eliminar
deleted_card = client.card.delete(id_=card["data"]["id"])
print(deleted_card["data"])
Listar
retrieved_card_list = client.card.list()
assert "items" in retrieved_card_list["data"]

Plan

Crear
plan_data = {
      "amount": 1000,
      "currency_code": "PEN",
      "interval": "dias",
      "interval_count": 2,
      "limit": 10,
      "name": "plan-{0}".format(uuid4().hex[:4]),
      "trial_days": 30,
}

plan = client.plan.create(data=plan_data)
print(plan["data"])
Leer
retrieved_plan = client.plan.read(plan["data"]["id"])
print(retrieved_plan["data"])
Actualizar
metadatada = {
      "metadata": {
            "order_id": "0001"
      }
}
updated_plan = client.plan.update(id_=plan["data"]["id"], data=metadatada)
print(updated_plan["data"])
Eliminar
deleted_plan = client.plan.delete(id_=plan["data"]["id"])
print(deleted_plan["data"])
Listar
retrieved_plan_list = client.plan.list()
assert "items" in retrieved_plan_list["data"]

Suscripción

Crear
subscription_data = {
      "card_id": card["data"]["id"],
      "plan_id": plan["data"]["id"],
}

subscription = client.subscription.create(data=subscription_data)
print(subscription["data"])
Leer
retrieved_subscription = client.subscription.read(subscription["data"]["id"])
print(retrieved_subscription["data"])
Actualizar
metadatada = {
      "metadata": {
            "order_id": "0001"
      }
}
updated_subscription = client.subscription.update(id_=subscription["data"]["id"], data=metadatada)
print(updated_subscription["data"])
Eliminar
deleted_subscription = client.subscription.delete(id_=subscription["data"]["id"])
print(deleted_subscription["data"])
Listar
retrieved_subscription_list = client.subscription.list()
assert "items" in retrieved_subscription_list["data"]

Orden

Crear
order_data = {
      "amount": 1000,
      "currency_code": "PEN",
      "description": "Venta de prueba",
      "order_number": "order-{0}".format(uuid4().hex[:4]),
      "client_details": {
            "first_name": "Richard",
            "last_name": "Piedpiper",
            "email": "richard@piedpiper.com",
            "phone_number": "+51998989789",
      },
      "expiration_date": 1893474000,
      "confirm": False,
}

order = client.order.create(data=order_data)
print(order["data"])
Confirmar
confirmed_order = client.order.confirm(order["data"]["id"])
print(confirmed_order["data"])
Leer
retrieved_order = client.order.read(order["data"]["id"])
print(retrieved_order["data"])
Actualizar
metadatada = {
      "metadata": {
            "order_id": "0001"
      }
}
updated_order = client.order.update(id_=order["data"]["id"], data=metadatada)
print(updated_order["data"])
Eliminar
deleted_order = client.order.delete(order["data"]["id"])
print(deleted_order["data"])
Listar
retrieved_order_list = client.order.list()
assert "items" in retrieved_order_list["data"]

Evento

Leer
retrieved_event = client.event.read(event_id)
print(retrieved_event["data"])
Listar
retrieved_event_list = client.event.list()
assert "items" in retrieved_event_list["data"]

Iin

Leer
retrieved_iin = client.iin.read(iin_id)
print(retrieved_iin["data"])
Listar
retrieved_iin_list = client.iin.list()
assert "items" in retrieved_iin_list["data"]

Transferencia

Leer
retrieved_transfer = client.transfer.read(transfer_id)
print(retrieved_transfer["data"])
Listar
retrieved_transfer_list = client.transfer.list()
assert "items" in retrieved_transfer_list["data"]

Nota

Cada metodo retona un diccionario con la estructura

{
      "status": status_code,
      "data": data
}

El status_code es el estatus HTTP numérico devuelto por la solicitud HTTP que se realiza al API de Culqi, y data contiene el cuerpo de la respuesta obtenida.

Documentación

Changelog

Todos los cambios en las versiones de esta biblioteca están listados en CHANGELOG.md.

Desarrollo

Si estas interesado en contribuir con el desarrollo y mantenimiento de este paquete es recomendable que emplees poetry para la gestión de dependencias.

Entorno

Clona el proyecto

$ git clone https://github.com/culqi/culqi-python.git
$ cd culqi-python

Instala las dependencias

$ poetry install

Testing and coverage

Puedes ejecutar los tests con poetry

poetry run pytest --cov --cov-report=
poetry run coverage report

¿Quieres enviar un PR?

Antes de hacer tu primer commit y enviar tu pull request ejecuta

$ poetry run pre-commit install

Luego relaiza tu commits de forma habitual.

Autor

Willy Aguirre (@marti1125 - Team Culqi)

Nuestros Contribuidores

Licencia

El código fuente de culqi-python está distribuido bajo MIT License, revisar el archivo LICENSE.txt.

Packages

No packages published

Contributors 12

Languages