Cargo recurrente

Transferencias Bancarias Recurrentes vía SPEI

¿Qué es?

Es una solución para que los merchants puedan recibir pagos por grandes montos de manera recurrente mediante la asignación de una referencia única a sus clientes o proveedores.

¿Qué ventajas ofrece la solución?

  • Transacciones interbancarias recurrentes por grandes montos.
  • Asignación de una referencia única a los usuarios del merchant.
  • Permite a los usuarios del merchant realizar pagos 24/7 las veces que desee.
  • Facilita al merchant la identificación y conciliación de operaciones.
  • Permite visualizar y recibir notificaciones de los pagos en tiempo real.

📘

Primeros pasos

  • Es necesario contar con conocimiento de APIs.
  • Es preferible ser desarrollador fullstack (frontend + backend).
  • Instalar e incluir una de las librerías disponibles de Conekta.
  • Contar con tus API Keys (llave personal) de pruebas.

1. Añade tu llave privada y versión del API

Necesitarás tu llave privada de pruebas. Si aún no cuentas con ella, puedes obtenerla en tu panel Conekta.

--header 'Authorization: Bearer key_xxxxxxx'
using Conekta.net.Api;
using Conekta.net.Client;
using Conekta.net.Model;

Configuration config = new Configuration();
config.AccessToken = "key_xxxxx";
require_once("/path/to/lib/Conekta.php");
\Conekta\Conekta::setApiKey("key_eYvWV7gSDkNYXsmr");
\Conekta\Conekta::setApiVersion("2.0.0");
require "conekta"
Conekta.api_key = "key_eYvWV7gSDkNYXsmr"
Conekta.api_version = "2.0.0"
import conekta
conekta.api_key = "key_eYvWV7gSDkNYXsmr"
conekta.api_version = "2.0.0"
var conekta = require('conekta');
conekta.api_key = 'key_eYvWV7gSDkNYXsmr';
conekta.api_version = '2.0.0';
import com.conekta;
Conekta.setApiKey("key_eYvWV7gSDkNYXsmr");
com.conekta.Conekta.apiVersion = "2.0.0"
import (
    conekta "github.com/conekta/conekta-go"
)
conekta.APIKey = "key_pMcnDF4zFyWKyLG15LuqwA"

2. Crea tu SPEI Recurrente

Con esto tus clientes estarán listos para pagar con una referencia personalizada. Para este proceso necesitas primero crear un customer e indicar que va a utilizar el payment_source de spei_recurrente. Con esto se genera la CLABE (referencia en la respuesta) que podrá usar tu cliente y realizar pagos con SPEI de manerá recurrente en su banca seleccionando como banco STP.

Nota: En modo de pruebas se generá la misma referencia, en modo productivo esta cambia.

curl --request POST \
  --url https://api.conekta.io/customers \
  --header 'accept: application/vnd.conekta-v2.1.0+json' \
  -u key_eYvWV7gSDkNYXsmr: \
  --header 'content-type: application/json' \
  --data '{
      "name": "Fulanito",
      "email": "[email protected]",
      "phone": "+5218181818181",
      "payment_sources": {
        "type": "spei_recurrent"
      }
  }'

#Respuesta de API
{
   "livemode":false,
   "name":"Fulanito",
   "email":"[email protected]",
   "phone":"+5215555555555",
   "id":"cus_2nNW3ZFwnaeicFygP",
   "object":"customer",
   "created_at":1587510139,
   "corporate":false,
   "custom_reference":"",
   "payment_sources":{
      "object":"list",
      "has_more":false,
      "data":[{
         "id":"off_ref_2nZpKdaweaacDUz6W",
         "object":"payment_source",
         "type":"spei_recurrent",
         "reference":"646180111812345678",
         "created_at":1587510139,
         "parent_id":"cus_2nNW3ZFwnaeicFygP"
      }]
   }
}
using System.Collections.Generic;
using System.Diagnostics;
using Conekta.net.Api;
using Conekta.net.Client;
using Conekta.net.Model;

namespace Example
{
    public class CreateCustomerExample
    {
        public static void Main()
        {
            Configuration config = new Configuration();
            config.AccessToken = "key_xxxxxxx";

            var apiInstance = new CustomersApi(config);
            var paymentSources = new List<CustomerPaymentMethodsRequest>()
            {
                new CustomerPaymentMethodsRequest(
                    new PaymentMethodSpeiRequest("spei_recurrent")
                )
            };
            var customer = new(
                name: "test dot",
                phone: "+573143159063",
                email: "[email protected]",
                paymentSources: paymentSources,
            );
            try
            {
                // Create customer
                CustomerResponse result = apiInstance.CreateCustomer(customer);
                Debug.WriteLine(result);
            }
            catch (ApiException  e)
            {
                Debug.Print("Exception when calling CustomersApi.CreateCustomer: " + e.Message);
                Debug.Print("Status Code: " + e.ErrorCode);
                Debug.Print(e.StackTrace);
            }
        }
    }
}
try{
    $customer = \Conekta\Customer::create(
      array(
          'name'  => "fulanito",
          'email' => "[email protected]",
          'phone' => "+5218181818181",
          'payment_sources' => array(
                array(
                'type' => "spei_recurrent"
                )
            )
      )
    );
    var_dump(json_encode($customer));
  } catch (\Conekta\ProcessingError $error){
    echo $error->getMessage();
  } catch (\Conekta\ParameterValidationError $error){
    echo $error->getMessage();
  } catch (\Conekta\Handler $error){
    echo $error->getMessage();
  }

#Respuesta de API
{
   "livemode":false,
   "name":"Fulanito",
   "email":"[email protected]",
   "phone":"+5215555555555",
   "id":"cus_2nNW3ZFwnaeicFygP",
   "object":"customer",
   "created_at":1587510139,
   "corporate":false,
   "custom_reference":"",
   "payment_sources":{
      "object":"list",
      "has_more":false,
      "total":1,
      "data":[{
         "id":"off_ref_2nZpKdaweaacDUz6W",
         "object":"payment_source",
         "type":"spei_recurrent",
         "reference":"646180111812345678",
         "created_at":1587510139,
         "parent_id":"cus_2nNW3ZFwnaeicFygP"
      }]
   }
}
# N/A
# N/A
# N/A
# N/A
# N/A

3. Crear un Webhook

Consultar la referencia sobre Webhooks

Con todo esto configurado ahora podrás utilizar SPEI Recurrente para tus clientes.