Skip to content

Suscripciones

zodiacfireworks edited this page Mar 7, 2021 · 1 revision

Suscripciones

Consulta la documentación de Culqi en https://apidocs.culqi.com/#/suscripciones

def get_subscription_data(code, provider):
    email = "richard{0}@piedpiper.com".format(uuid4().hex[:4])

    token_data = deepcopy(Data.CARD[code][provider])
    token_data["email"] = email
    token = culqi.token.create(data=token_data)

    customer_data = deepcopy(Data.CUSTOMER)
    customer_data["email"] = email
    customer = culqi.customer.create(data=customer_data)

    card_data = {
        "token_id": token["data"]["id"],
        "customer_id": customer["data"]["id"],
    }
    card = culqi.card.create(data=card_data)

    plan_data = deepcopy(Data.PLAN)
    plan_data["name"] = "plan-{0}".format(uuid4().hex[:4])
    plan = culqi.plan.create(data=plan_data)

    return {
        "card_id": card["data"]["id"],
        "plan_id": plan["data"]["id"],
    }

Listar

subscription_list = culqi.subscription.list(
    data={
        "limit": 1,
    },
    headers={
        "Accept-Encoding": "identity",
    },
)

display(subscription_list)
{
    "status": 200,
    "data": {
        "paging": {
            "previous": "https://api.culqi.com/v2/subscriptions?limit=1&before=sub_test_utqKrxgouUh0IL76",
            "next": "https://api.culqi.com/v2/subscriptions?limit=1&after=sub_test_utqKrxgouUh0IL76",
            "cursors": {
                "before": "sub_test_utqKrxgouUh0IL76",
                "after": "sub_test_utqKrxgouUh0IL76"
            },
            "remaining_items": 30
        },
        "items": [
            {
                "object": "subscription",
                "id": "sub_test_utqKrxgouUh0IL76",
                "creation_date": 1615129729000,
                "status": "Activa",
                "current_period": 0,
                "total_period": 10,
                "current_period_start": 1617685200000,
                "current_period_end": 1617858000000,
                "cancel_at_period_end": false,
                "cancel_at": null,
                "ended_at": 1619413200000,
                "next_billing_date": 1617685200000,
                "trial_start": 1615129729000,
                "trial_end": 1617721729000,
                "charges": [],
                "plan": {
                    "object": "plan",
                    "id": "pln_test_QIFyiFRhv4wuhMxZ",
                    "creation_date": 1615129728000,
                    "name": "plan-7274",
                    "amount": 1000,
                    "currency_code": "PEN",
                    "interval_count": 2,
                    "interval": "Días",
                    "limit": 10,
                    "trial_days": 30,
                    "total_subscriptions": 1,
                    "metadata": {}
                },
                "card": {
                    "object": "card",
                    "id": "crd_test_tiP6jsig6txtNlK9",
                    "active": true,
                    "creation_date": 1615129727000,
                    "customer_id": "cus_test_atem3d4M6YsKrrW7",
                    "source": {
                        "object": "token",
                        "id": "tkn_test_FCVsMz64M0YXU5R4",
                        "type": "card",
                        "creation_date": 1615129722000,
                        "email": "richard8b67@piedpiper.com",
                        "card_number": "411111******1111",
                        "last_four": "1111",
                        "active": true,
                        "iin": {
                            "object": "iin",
                            "bin": "411111",
                            "card_brand": "Visa",
                            "card_type": "credito",
                            "card_category": "Clásica",
                            "issuer": {
                                "name": "BBVA",
                                "country": "PERU",
                                "country_code": "PE",
                                "website": null,
                                "phone_number": null
                            },
                            "installments_allowed": [
                                2,
                                4,
                                6,
                                8,
                                10,
                                12,
                                3,
                                5,
                                7,
                                9,
                                24,
                                48
                            ]
                        },
                        "client": {
                            "ip": "191.98.182.73",
                            "ip_country": "Peru",
                            "ip_country_code": "PE",
                            "browser": "UNKNOWN",
                            "device_fingerprint": null,
                            "device_type": "Escritorio"
                        },
                        "metadata": {}
                    },
                    "metadata": {}
                },
                "metadata": {
                    "order_id": "0001"
                }
            }
        ]
    }
}

Crear

subscription_data = get_subscription_data("successful", "visa")
subscription = culqi.subscription.create(data=subscription_data)

display(subscription)
{
    "status": 201,
    "data": {
        "object": "subscription",
        "id": "sub_test_fcGyWEQTh83qcZyS",
        "creation_date": 1615131643000,
        "status": "Activa",
        "current_period": 0,
        "total_period": 10,
        "current_period_start": 1617685200000,
        "current_period_end": 1617858000000,
        "cancel_at_period_end": false,
        "cancel_at": null,
        "ended_at": 1619413200000,
        "next_billing_date": 1617685200000,
        "trial_start": 1615131643000,
        "trial_end": 1617723643000,
        "charges": [],
        "plan": {
            "object": "plan",
            "id": "pln_test_wPdNqlSBErDW9vbS",
            "creation_date": 1615131642000,
            "name": "plan-035c",
            "amount": 1000,
            "currency_code": "PEN",
            "interval_count": 2,
            "interval": "Días",
            "limit": 10,
            "trial_days": 30,
            "total_subscriptions": 1,
            "metadata": {}
        },
        "card": {
            "object": "card",
            "id": "crd_test_yjsrR87YeJ1lLwk5",
            "active": true,
            "creation_date": 1615131642000,
            "customer_id": "cus_test_dPj41BFoNfZ1Uzjd",
            "source": {
                "object": "token",
                "id": "tkn_test_JEGrRw0E6DwWwjwV",
                "type": "card",
                "creation_date": 1615131637000,
                "email": "richard5f26@piedpiper.com",
                "card_number": "411111******1111",
                "last_four": "1111",
                "active": true,
                "iin": {
                    "object": "iin",
                    "bin": "411111",
                    "card_brand": "Visa",
                    "card_type": "credito",
                    "card_category": "Clásica",
                    "issuer": {
                        "name": "BBVA",
                        "country": "PERU",
                        "country_code": "PE",
                        "website": null,
                        "phone_number": null
                    },
                    "installments_allowed": [
                        2,
                        4,
                        6,
                        8,
                        10,
                        12,
                        3,
                        5,
                        7,
                        9,
                        24,
                        48
                    ]
                },
                "client": {
                    "ip": "191.98.182.73",
                    "ip_country": "Peru",
                    "ip_country_code": "PE",
                    "browser": "UNKNOWN",
                    "device_fingerprint": null,
                    "device_type": "Escritorio"
                },
                "metadata": {}
            },
            "metadata": {}
        },
        "metadata": {}
    }
}

Leer

subscription_id = subscription["data"]["id"]
subscription = culqi.subscription.read(id_=subscription_id)

display(subscription)
{
    "status": 200,
    "data": {
        "object": "subscription",
        "id": "sub_test_fcGyWEQTh83qcZyS",
        "creation_date": 1615131643000,
        "status": "Activa",
        "current_period": 0,
        "total_period": 10,
        "current_period_start": 1617685200000,
        "current_period_end": 1617858000000,
        "cancel_at_period_end": false,
        "cancel_at": null,
        "ended_at": 1619413200000,
        "next_billing_date": 1617685200000,
        "trial_start": 1615131643000,
        "trial_end": 1617723643000,
        "charges": [],
        "plan": {
            "object": "plan",
            "id": "pln_test_wPdNqlSBErDW9vbS",
            "creation_date": 1615131642000,
            "name": "plan-035c",
            "amount": 1000,
            "currency_code": "PEN",
            "interval_count": 2,
            "interval": "Días",
            "limit": 10,
            "trial_days": 30,
            "total_subscriptions": 1,
            "metadata": {}
        },
        "card": {
            "object": "card",
            "id": "crd_test_yjsrR87YeJ1lLwk5",
            "active": true,
            "creation_date": 1615131642000,
            "customer_id": "cus_test_dPj41BFoNfZ1Uzjd",
            "source": {
                "object": "token",
                "id": "tkn_test_JEGrRw0E6DwWwjwV",
                "type": "card",
                "creation_date": 1615131637000,
                "email": "richard5f26@piedpiper.com",
                "card_number": "411111******1111",
                "last_four": "1111",
                "active": true,
                "iin": {
                    "object": "iin",
                    "bin": "411111",
                    "card_brand": "Visa",
                    "card_type": "credito",
                    "card_category": "Clásica",
                    "issuer": {
                        "name": "BBVA",
                        "country": "PERU",
                        "country_code": "PE",
                        "website": null,
                        "phone_number": null
                    },
                    "installments_allowed": [
                        2,
                        4,
                        6,
                        8,
                        10,
                        12,
                        3,
                        5,
                        7,
                        9,
                        24,
                        48
                    ]
                },
                "client": {
                    "ip": "191.98.182.73",
                    "ip_country": "Peru",
                    "ip_country_code": "PE",
                    "browser": "UNKNOWN",
                    "device_fingerprint": null,
                    "device_type": "Escritorio"
                },
                "metadata": {}
            },
            "metadata": {}
        },
        "metadata": {}
    }
}

Actualizar

subscription_id = subscription["data"]["id"]
subscription_metadata = {
    "metadata": {
        "orderId": 1234567890
    }
}
subscription = culqi.subscription.update(
    id_=subscription_id, data=subscription_metadata
)

display(subscription)
{
    "status": 200,
    "data": {
        "object": "subscription",
        "id": "sub_test_fcGyWEQTh83qcZyS",
        "creation_date": 1615131643000,
        "status": "Activa",
        "current_period": 0,
        "total_period": 10,
        "current_period_start": 1617685200000,
        "current_period_end": 1617858000000,
        "cancel_at_period_end": false,
        "cancel_at": null,
        "ended_at": 1619413200000,
        "next_billing_date": 1617685200000,
        "trial_start": 1615131643000,
        "trial_end": 1617723643000,
        "charges": [],
        "plan": {
            "object": "plan",
            "id": "pln_test_wPdNqlSBErDW9vbS",
            "creation_date": 1615131642000,
            "name": "plan-035c",
            "amount": 1000,
            "currency_code": "PEN",
            "interval_count": 2,
            "interval": "Días",
            "limit": 10,
            "trial_days": 30,
            "total_subscriptions": 1,
            "metadata": {}
        },
        "card": {
            "object": "card",
            "id": "crd_test_yjsrR87YeJ1lLwk5",
            "active": true,
            "creation_date": 1615131642000,
            "customer_id": "cus_test_dPj41BFoNfZ1Uzjd",
            "source": {
                "object": "token",
                "id": "tkn_test_JEGrRw0E6DwWwjwV",
                "type": "card",
                "creation_date": 1615131637000,
                "email": "richard5f26@piedpiper.com",
                "card_number": "411111******1111",
                "last_four": "1111",
                "active": true,
                "iin": {
                    "object": "iin",
                    "bin": "411111",
                    "card_brand": "Visa",
                    "card_type": "credito",
                    "card_category": "Clásica",
                    "issuer": {
                        "name": "BBVA",
                        "country": "PERU",
                        "country_code": "PE",
                        "website": null,
                        "phone_number": null
                    },
                    "installments_allowed": [
                        2,
                        4,
                        6,
                        8,
                        10,
                        12,
                        3,
                        5,
                        7,
                        9,
                        24,
                        48
                    ]
                },
                "client": {
                    "ip": "191.98.182.73",
                    "ip_country": "Peru",
                    "ip_country_code": "PE",
                    "browser": "UNKNOWN",
                    "device_fingerprint": null,
                    "device_type": "Escritorio"
                },
                "metadata": {}
            },
            "metadata": {}
        },
        "metadata": {
            "orderId": "1234567890"
        }
    }
}

Eliminar

subscription_id = subscription["data"]["id"]
deleted_subscription = culqi.subscription.delete(id_=subscription_id)

display(deleted_subscription)
{
    "status": 200,
    "data": {
        "id": "sub_test_fcGyWEQTh83qcZyS",
        "deleted": true,
        "merchant_message": "Se eliminó la suscripcion con ID sub_test_fcGyWEQTh83qcZyS exitosamente."
    }
}

Clone this wiki locally