Cobros Recurrentes con PixelPay facilita a los comercios enviar cobros a múltiples usuarios, con el fin de suscribirlos a un producto o servicio y automáticamente renovar los pagos de manera semanal, quincenal, mensual, trimestral o anual, según lo defina el comercio.
La funcionalidad en API se encuentra en versión BETA.
Necesitas asignar un usuario del comercio con los permisos para ver y crear cobros recurrentes
.
El administrador del comercio debe activar la opción en el panel respectivo del usuario, de esa manera permitirá el acceso de manejar la herramienta de cobros recurrentes.
POST https://{endpoint}/api/v2/subscriptions
Todos los campos deberán ser enviados como parámetros en la consulta https
en formato Query String
o incluir en el header tipo de formato content-type: x-www-form-urlencoded
.
Campo | Valor | Validación | Descripción |
---|---|---|---|
name |
Texto | Requerido, min: 5, max: 80 | Nombre del cobro recurrente |
description |
Texto | Opcional, min: 5, max: 120 | Descripción para el cobro recurrente |
type |
public o unique |
Requerido | Tipo de cobro recurrente |
recurrence |
weekly bimonthly monthly quarterly annual |
Requerido | Periodo de recurrencia en que se ejecutará el cobro |
currency |
HNL o USD |
Requerido | Moneda en la cual se realizará el cobro |
amount |
0.00 | Requerido, double | Cantidad total del cobro en moneda |
limit |
1 | Opcional, interger, min: 1, max: 100 | Número de pagos necesarios para completar los cobros recurrentes del usuario |
conversion |
true o false |
Opcional | El monto se convertirá de Dólar a Lempira al realizar el pago |
auto_cancel |
true o false |
Opcional | Modalidad de cancelación |
lang |
es o en |
Opcional | Código de lenguaje que usará, por defecto es para español |
// RUTA DE LA PETICIÓN
// https://pixel-pay.com/api/v2/subscriptions
// DATOS ENVIADOS EN LA PETICIÓN "POST"
{
"name": "Seguro médico",
"description": "Este plan incluye cobertura médica completa para individuos y familias.",
"type": "public",
"recurrence": "monthly",
"currency": "HNL",
"amount": "1000.00",
"conversion": "false",
"auto_cancel": "false"
}
{
"success": true,
"message": "Información obtenida con exito",
"data": {
"name": "Seguro médico",
"description": "Este plan incluye cobertura médica completa para individuos y familias.",
"type": "public",
"recurrence": "monthly",
"currency": "HNL",
"amount": 10,
"conversion": false,
"auto_cancel": false,
"merchant_id": 1,
"lang": "es",
"id": "1944c0b5-53d2-45d5-b330-bfa1ee6cac17",
"updated_at": "2024-05-10T20:21:22.000000Z",
"created_at": "2024-05-10T20:21:22.000000Z",
"total": "10.00",
"total_formatted": "L 10.00"
}
}
{
"success": false,
"message": "El campo recurrence debe ser igual a alguno de estos valores: weekly, bimonthly, monthly, quarterly, annual.",
"errors": {
"recurrence": [
"El campo recurrence debe ser igual a alguno de estos valores: weekly, bimonthly, monthly, quarterly, annual."
]
}
}
GET https://{endpoint}/api/v2/subscriptions/{subscription_id}
Campo | Valor | Validación | Descripción |
---|---|---|---|
subscription_id |
Alfanumérico | Requerido | Es el id que se obtuvo al crear el cobro recurrente |
// RUTA DE LA PETICIÓN
// https://pixel-pay.com/api/v2/subscriptions/{subscription_id}
// DATOS ENVIADOS EN LA PETICIÓN "GET"
// https://pixel-pay.com/api/v2/subscriptions/1944c0b5-53d2-45d5-b330-bfa1ee6cac17
{
"success": true,
"message": "Información obtenida con exito",
"data": {
"id": "1944c0b5-53d2-45d5-b330-bfa1ee6cac17",
"merchant_id": 1,
"name": "Seguro médico",
"description": "Este plan incluye cobertura médica completa para individuos y familias.",
"type": "public",
"recurrence": "monthly",
"limit": null,
"is_enumerable": 0,
"max_enumerable": null,
"currency": "HNL",
"amount": 10,
"is_active": 1,
"created_at": "2024-05-10T20:21:22.000000Z",
"updated_at": "2024-05-10T20:21:22.000000Z",
"deleted_at": null,
"lang": "es",
"auto_cancel": 0,
"conversion": 0,
"total": "10.00",
"total_formatted": "L 10.00"
}
}
{
"success": false,
"message": "No se encontró un cobro recurrente válido."
}
Por medio de este request podemos actualizar la información de un cobro recurrente utilizando los mismos campos que utilizamos al crearlo y en la URL de la petición el id del cobro recurrente que obtuvimos en la respuesta al crearlo. Los datos enviados serán reemplazados por los anteriores.
POST https://{endpoint}/api/v2/subscriptions/{subscription_id}
En el request se envían los mismos campos como se muestra en el índice de campos al crear un cobro recurrente.
Campo | Valor | Validación | Descripción |
---|---|---|---|
subscription_id |
Alfanumérico | Requerido | Es el id que se obtuvo al crear el cobro recurrente |
// RUTA DE LA PETICIÓN
// https://pixel-pay.com/api/v2/subscriptions/{subscription_id}
// DATOS ENVIADOS EN LA PETICIÓN "POST"
// https://pixel-pay.com/api/v2/subscriptions/1944c0b5-53d2-45d5-b330-bfa1ee6cac17
{
"name": "Seguro médico 24/7",
"description": "Este plan incluye cobertura médica completa para familias.",
"type": "public",
"recurrence": "monthly",
"currency": "HNL",
"amount": "1000.00",
"conversion": "false",
"auto_cancel": "true"
}
{
"success": true,
"message": "El cobro recurrente se actualizó exitosamente.",
"data": {
"id": "1944c0b5-53d2-45d5-b330-bfa1ee6cac17",
"merchant_id": 1,
"name": "Seguro médico 24/7",
"description": "Este plan incluye cobertura médica completa para familias.",
"type": "public",
"recurrence": "monthly",
"limit": null,
"is_enumerable": 0,
"max_enumerable": null,
"currency": "HNL",
"amount": 10,
"is_active": 1,
"created_at": "2024-05-10T20:21:22.000000Z",
"updated_at": "2024-05-11T03:49:24.000000Z",
"deleted_at": null,
"lang": "es",
"auto_cancel": true,
"conversion": 0,
"total": "10.00",
"total_formatted": "L 10.00"
}
}
{
"success": false,
"message": "No se encontró un cobro recurrente válido."
}
Por medio de este request podemos desactivar o activar un cobro recurrente.
POST https://{endpoint}/api/v2/subscriptions/{subscription_id}/activation
Campo | Valor | Validación | Descripción |
---|---|---|---|
subscription_id |
Alfanumérico | Requerido | Es el id que se obtuvo al crear el cobro recurrente |
activation_status |
activate o deactivate |
Requerido | Nuevo estado del cobro recurrente |
// RUTA DE LA PETICIÓN
// https://pixel-pay.com/api/v2/subscriptions/{subscription_id}/activation
// DATOS ENVIADOS EN LA PETICIÓN "POST"
// https://pixel-pay.com/api/v2/subscriptions/1944c0b5-53d2-45d5-b330-bfa1ee6cac17/activation
{
"activation_status": "deactivate"
}
{
"success": true,
"message": "Se actualizó el estado del cobro recurrente."
}
{
"success": false,
"message": "No se encontró un cobro recurrente válido."
}
Por medio de este request, podrás inscribir a tus clientes de manera efectiva en el servicio de cobros recurrentes. En este procso, se establecerá una suscripción activa que facilitará la gestión continua de los pagos, asegurando una experiencia fluida y sin interrupciones para todos.
En la respuesta exitosa, encontrarás el campo payment_url
que contiene el enlace para suscribirse, el cuál debes compartir al usuario para que realice el flujo de pago por medio de nuestro Checkout.
Además, encontrás el campo customer
que es el id del cliente suscrito al cobro recurrente, que necesitarás si deseas cancelar la suscripción o consultar su estado.
POST https://{endpoint}/api/v2/subscriptions/{subscription_id}/subscribe
Campo | Valor | Validación | Descripción |
---|---|---|---|
subscription_id |
Alfanumérico | Requerido | Es el id que se obtuvo al crear el cobro recurrente |
resubscribe |
true o false |
Opcional | Es una nueva suscripción o resuscripción |
subscription |
Alfanumérico | Requerido | Es el id que se obtuvo al crear el cobro recurrente |
customer_name |
Texto | Requerido, min: 3, max: 160 | Nombre completo del cliente |
customer_email |
usuario@dominio.com | Requerido, email, max: 180 | Correo electrónico del cliente |
pay_date |
yyyy/mm/dd hh:mm | Opcional, date | Fecha a ejecutarse el cobro |
// RUTA DE LA PETICIÓN
// https://pixel-pay.com/api/v2/subscriptions/{subscription_id}/subscribe
// DATOS ENVIADOS EN LA PETICIÓN "POST"
// https://pixel-pay.com/api/v2/subscriptions/1944c0b5-53d2-45d5-b330-bfa1ee6cac17/subscribe
{
"resubscribe": "deactivate",
"subscription": "1944c0b5-53d2-45d5-b330-bfa1ee6cac17",
"customer_name": "Juan Perez",
"customer_email": "recurrentes@pixel.hn",
"pay_date": "2024/05/15"
}
{
"success": true,
"message": "Pago para aprobar cobro recurrente obtenido exitosamente.",
"data": {
"payment": {
"ref": "SUB-0001-1715804970",
"uuid": "P-e0a1cd9d-ad91-44ad-ae26-a62cb6ba786d",
"status": "temp",
"description": "Cobro Recurrente #0001 - Seguro médico 24/7",
"note": null,
"category": "subscription",
"currency": "HNL",
"tax_amount": 0,
"amount": 10,
"items": [
{
"title": "Seguro médico 24/7",
"tax": 0,
"qty": 1,
"price": 10,
"total": 10
}
],
"customer_name": "Juan Perez",
"customer_email": "recurrentes@pixel.hn",
"customer_phone": null,
"client_ip": null,
"client_device": null,
"order": "SUB-0001-1715804970",
"payment_hash": "fd8fc11e48728350c3bba5d724b78634",
"created_at": "2024-05-15 08:05:30",
"company_name": "PixelPay SA de CV",
"company_slug": "pixel",
"company_key": "2212294583",
"is_overdue": false,
"payment_url": "https://pixel-pay.com/pixel/P-e0a1cd9d-ad91-44ad-ae26-a62cb6ba786d/checkout",
"attach_url": null,
"extra": null
},
"content": [
{
"title": "Seguro médico 24/7",
"tax": 0,
"qty": 1,
"price": 10,
"total": 10
}
],
"properties": {
"subscription": {
"customer": "c5ad6aec-3776-49b1-a957-88f00cb94f7e",
"approval": true
},
"hook": {
"type": "subscription",
"order": "SUB-0001-1715804970",
"complete": "https://pixel-pay.com/pixel/subscription/1944c0b5-53d2-45d5-b330-bfa1ee6cac17/c5ad6aec-3776-49b1-a957-88f00cb94f7e"
}
},
"signature": "e60c4f81fa8acaf2a85c9f9917c6e65f43b1a27cc3dd5a8c32d8fa729c6e057e7478714f1d3d90e68bd0e93c2261502e201e9d17c14dfcc12fdbd988cd601f3b"
}
}
{
"success": false,
"message": "El campo subscription no existe.",
"errors": {
"subscription": [
"El campo subscription no existe."
]
}
}
GET https://{endpoint}/api/v2/subscriptions/{subscription_id}/{customer_subscription_id}
Campo | Valor | Validación | Descripción |
---|---|---|---|
subscription_id |
Alfanumérico | Requerido | Es el id que se obtuvo al crear el cobro recurrente |
customer_subscription_id |
Alfanumérico | Requerido | Es el id que se obtuvo al suscribir el usuario al cobro recurrente |
// RUTA DE LA PETICIÓN
// https://pixel-pay.com/api/v2/subscriptions/{subscription_id}/{customer_subscription_id}
// DATOS ENVIADOS EN LA PETICIÓN "GET"
// https://pixel-pay.com/api/v2/subscriptions/1944c0b5-53d2-45d5-b330-bfa1ee6cac17/customer/c5ad6aec-3776-49b1-a957-88f00cb94f7e
{
"success": true,
"message": "Información obtenida con exito",
"data": {
"id": "c5ad6aec-3776-49b1-a957-88f00cb94f7e",
"subscription_id": "1944c0b5-53d2-45d5-b330-bfa1ee6cac17",
"customer_name": "Juan Perez",
"customer_email": "recurrentes@pixel.hn",
"status": "pending",
"quantity": 1,
"paid_count": 0,
"failed_count": 0,
"wants_to_cancel": 0,
"extra": null,
"pay_date": null,
"last_failed_at": null,
"created_at": "2024-05-15T20:29:30.000000Z",
"updated_at": "2024-05-15T20:29:30.000000Z",
"deleted_at": null,
"confirm_cancellation": 0,
"cancel_token": "Ix6SadKUzXqPEdtAqDcbSnGLjARG0ttSo3oOU7Fihiqn2YkPUML85qTWrB3x",
"cancel_reason": null,
"total": "10.00",
"total_formatted": "L 10.00"
}
}
{
"success": false,
"message": "No se encontró un cobro recurrente de cliente válido."
}
Por medio de este request, podrás cancelar la suscripción de un usuario a un cobro recurrente activo.
POST https://{endpoint}/api/v2/subscriptions/{subscription_id}/{customer_subscription_id}/cancel
Campo | Valor | Validación | Descripción |
---|---|---|---|
subscription_id |
Alfanumérico | Requerido | Es el id que se obtuvo al crear el cobro recurrente |
customer_subscription_id |
Alfanumérico | Requerido | Es el id que se obtuvo al suscribir el usuario al cobro recurrente |
resubscribe |
true o false |
Opcional | Es una nueva suscripción o resuscripción |
subscription |
Alfanumérico | Requerido | Es el id que se obtuvo al crear el cobro recurrente |
customer_name |
Texto | Requerido, min: 3, max: 160 | Nombre completo del cliente |
customer_email |
usuario@dominio.com | Requerido, email, max: 180 | Correo electrónico del cliente |
pay_date |
yyyy/mm/dd hh:mm | Opcional, date | Fecha a ejecutarse el cobro |
// RUTA DE LA PETICIÓN
// https://pixel-pay.com/api/v2/subscriptions/{subscription_id}/subscribe
// DATOS ENVIADOS EN LA PETICIÓN "POST"
// https://pixel-pay.com/api/v2/subscriptions/1944c0b5-53d2-45d5-b330-bfa1ee6cac17/subscribe
{
"success": true,
"message": "Se canceló el cobro recurrente exitosamente."
}
{
"success": false,
"message": "No se encontró un cobro recurrente de cliente válido."
}
{
"success": false,
"message": "El estado del cobro recurrente debe ser active, obtuvo pending."
}