Aceptar pagos combinados

Al finalizar este tutorial, podrás recibir pagos combinados desde tu tienda en línea y recibir las notificaciones de los pagos en un máximo de 10 minutos.

Diagramas de secuencia

1. Transferencia-Transferencia

2. Transferencia-Tarjeta

3. Tarjeta-Tarjeta

1. Crear Order

Los campos mostrados en el siguiente ejemplo son los mínimos que se requieren para continuar; si deseas saber más sobre el objeto llamado order, puedes revisar nuestra REST API para más información.

Combinando cargos

En este proceso deberás enviar una lista de cargos, dividiendo el monto entre ellos para poder combinarlos agregando un arreglo de cargos:

Campo charges: Una lista de objetos que representan los cargos que se van a combinar en la orden. Cada objeto debe tener los siguientes campos:

  • payment_method: Un objeto que representa el método de pago del cargo. Debe tener el campo "type", que indica el tipo de pago que se está utilizando ("spei" o "card").
  • amount: El monto del cargo. Este valor debe ser menor o igual al monto total de la orden.

Ejemplos de solicitudes

Orden con dos cargos de Transferencia que se combinan para pagar un total de $500.00 MXN

curl --location 'https://api.conekta.io/orders' \
--header 'Accept: application/vnd.conekta-v2.1.0+json' \
--header 'Content-type: application/json' \
--header 'Authorization: Basic ACCESS_TOKEN' \
--data-raw '{
   "currency": "MXN",
   "customer_info": {
       "name": "Nicolás Cedrón",
       "email": "[email protected]",
       "phone": "5522997233",
       "corporate": true
   },
   "line_items": [
       {
           "name": "Box of Cohiba S1s",
           "unit_price": 50000,
           "quantity": 1
       }
   ],
   "charges": [
       {
            "payment_method": {
               "type": "spei"
           },
           "amount": 25000
       },
       {
            "payment_method": {
               "type": "spei"
           },
           "amount": 25000
       }
   ]
}'
require "conekta"

# Configuramos la clave privada de la API de Conekta y la versión de la API
Conekta.api_key = "API_KEY"
Conekta.locale = :es
Conekta.api_version = "2.1.0"

# Creamos un objeto de orden con los datos del comprador y del pago
order = Conekta::Order.create({
  currency: "MXN",
  customer_info: {
    name: "Nicolás Cedrón",
    email: "[email protected]",
    phone: "5522997233",
    corporate: true
  },
  line_items: [
    {
      name: "Box of Cohiba S1s",
      unit_price: 50000,
      quantity: 1
    }
  ],
  charges: [
    {
      payment_method: {
        type: "spei"
      },
      amount: 25000
    },
    {
      payment_method: {
        type: "spei"
      },
      amount: 25000
    }
  ]
})

# Imprimimos el ID de la orden creada
puts "ID de la orden creada: #{order.id}"
import conekta

# Configuramos la clave privada de la API de Conekta
conekta.api_key = "API_KEY"
conekta.locale = 'es'
conekta.api_version = "2.1.0"

# Creamos un objeto de orden con los datos del comprador y del pago
order = conekta.Order.create({
  "currency": "MXN",
  "customer_info": {
    "name": "Nicolás Cedrón",
    "email": "[email protected]",
    "phone": "5522997233",
    "corporate": True
  },
  "line_items": [
    {
      "name": "Box of Cohiba S1s",
      "unit_price": 50000,
      "quantity": 1
    }
  ],
  "charges": [
    {
      "payment_method": {
        "type": "spei"
      },
      "amount": 25000
    },
    {
      "payment_method": {
        "type": "spei"
      },
      "amount": 25000
    }
  ]
})

# Imprimimos el ID de la orden creada
print("ID de la orden creada: {}".format(order.id))
require_once("conekta-php/lib/Conekta.php");

// Configuramos la clave privada de la API de Conekta y la versión de la API
\Conekta\Conekta::setApiKey("API_KEY");
\Conekta\Conekta::setLocale('es');
\Conekta\Conekta::setApiVersion("2.1.0");

// Creamos un objeto de orden con los datos del comprador y del pago
$order = \Conekta\Order::create(array(
  "currency" => "MXN",
  "customer_info" => array(
    "name" => "Nicolás Cedrón",
    "email" => "[email protected]",
    "phone" => "5522997233",
    "corporate" => true
  ),
  "line_items" => array(
    array(
      "name" => "Box of Cohiba S1s",
      "unit_price" => 50000,
      "quantity" => 1
    )
  ),
  "charges" => array(
    array(
      "payment_method" => array(
        "type" => "spei"
      ),
      "amount" => 25000
    ),
    array(
      "payment_method" => array(
        "type" => "spei"
      ),
      "amount" => 25000
    )
  )
));

// Imprimimos el ID de la orden creada
echo "ID de la orden creada: " . $order->id . "\n";
const Conekta = require('conekta');

// Configuramos la clave privada de la API de Conekta y la versión de la API
Conekta.apiKey = 'API_KEY';
Conekta.apiVersion = '2.1.0';
Conekta.locale = 'es';

// Creamos un objeto de orden con los datos del comprador y del pago
Conekta.Order.create({
  currency: 'MXN',
  customer_info: {
    name: 'Nicolás Cedrón',
    email: '[email protected]',
    phone: '5522997233',
    corporate: true
  },
  line_items: [
    {
      name: 'Box of Cohiba S1s',
      unit_price: 50000,
      quantity: 1
    }
  ],
  charges: [
    {
      payment_method: {
        type: 'spei'
      },
      amount: 25000
    },
    {
      payment_method: {
        type: 'spei'
      },
      amount: 25000
    }
  ]
}, function(err, order) {
  if (err) {
    console.log(err);
    return;
  }

  // Imprimimos el ID de la orden creada
  console.log('ID de la orden creada:', order.id);
});
import com.conekta.*;

public class OrderExample {

  public static void main(String[] args) {
// Configuramos la clave privada de la API de Conekta y la versión de la API
    Conekta.setApiKey("API_KEY");
    Conekta.setApiVersion("2.1.0");
    Conekta.setLocale("es");

    try {
      Long nowUnixTimestamp = System.currentTimeMillis();
      Long thirtyDaysFromNowUnixTimestamp =  (nowUnixTimestamp + 30L * 24 * 60 * 60 * 1000) / 1000L;
      String thirtyDaysFromNow = thirtyDaysFromNowUnixTimestamp.toString();

      JSONObject customer = new JSONObject();
      customer.put("name", "Nicolás Cedrón");
      customer.put("email", "[email protected]");
      customer.put("phone", "5522997233");
      customer.put("corporate", true);

      JSONArray lineItems = new JSONArray();
      JSONObject lineItem = new JSONObject();
      lineItem.put("name", "Box of Cohiba S1s");
      lineItem.put("unit_price", 50000);
      lineItem.put("quantity", 1);
      lineItems.put(lineItem);

      JSONArray charges = new JSONArray();
      JSONObject charge1 = new JSONObject();
      JSONObject paymentMethod1 = new JSONObject();
      paymentMethod1.put("type", "spei");
      charge1.put("payment_method", paymentMethod1);
      charge1.put("amount", 25000);
      JSONObject charge2 = new JSONObject();
      JSONObject paymentMethod2 = new JSONObject();
      paymentMethod2.put("type", "spei");
      charge2.put("payment_method", paymentMethod2);
      charge2.put("amount", 25000);
      charges.put(charge1);
      charges.put(charge2);

      JSONObject orderParams = new JSONObject();
      orderParams.put("currency", "MXN");
      orderParams.put("customer_info", customer);
      orderParams.put("line_items", lineItems);
      orderParams.put("charges", charges);

      Order order = Order.create(orderParams);
    } catch (io.conekta.Error e) {
      System.out.println(e.message);
    } catch (io.conekta.ErrorList e) {
      System.out.println(e.details.get(0).message);
    }
  }
}
using conekta;

// Configuramos la clave privada de la API de Conekta y la versión de la API
conekta.Api.apiKey = "API_KEY";
conekta.Api.version = "2.1.0";

//Calculate an expiration time
DateTime thirtyDaysFromNowDateTime = DateTime.Now.AddDays(30);
long thirtyDaysFromNowUnixTimestamp = (Int64)(thirtyDaysFromNowDateTime.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
String thirtyDaysFromNow = thirtyDaysFromNowUnixTimestamp.ToString(); 

try{
  conekta.Order order = new conekta.Order().create(@"{
    ""line_items"": [{
      ""name"": ""Box of Cohiba S1s"",
      ""unit_price"": 50000,
      ""quantity"": 1
      }],
      ""charges"":[{
        ""payment_method"": {
          ""type"": ""spei""
        },
        ""amount"": 25000
      },{
        ""payment_method"": {
          ""type"": ""spei""
        },
        ""amount"": 25000
        }],
        ""currency"": ""MXN"",
        ""customer_info"": {
          ""name"": ""Nicolás Cedrón"",
          ""email"": ""[email protected]"",
          ""phone"": ""5522997233"",
          ""corporate"": true
        }
        }");
} catch (ConektaException e) {
  foreach (JObject obj in e.details) {
    System.Console.WriteLine("\n [ERROR]:\n");
    System.Console.WriteLine("message:\t" + obj.GetValue("message"));
    System.Console.WriteLine("debug:\t" + obj.GetValue("debug_message"));
    System.Console.WriteLine("code:\t" + obj.GetValue("code"));
  }
}

Respuesta

{
   "livemode":false,
   "amount":50000,
   "currency":"MXN",
   "payment_status":"pending_payment",
   "amount_refunded":0,
   "split_payment":true,
   "customer_info":{
      "email":"[email protected]",
      "phone":"5522997233",
      "name":"Nicolás Cedrón",
      "corporate":true,
      "customer_id":null,
      "object":"customer_info"
   },
   "shipping_contact":null,
   "channel":null,
   "fiscal_entity":null,
   "object":"order",
   "id":"ord_2uatLDCjiNPjzwiBA",
   "metadata":{
      
   },
   "is_refundable":false,
   "processing_mode":null,
   "created_at":1695092325,
   "updated_at":1695092325,
   "line_items":{
      "object":"list",
      "has_more":false,
      "total":1,
      "data":[
         {
            "name":"Box of Cohiba S1s",
            "description":null,
            "unit_price":50000,
            "quantity":1,
            "sku":null,
            "tags":null,
            "brand":null,
            "type":null,
            "object":"line_item",
            "id":"line_item_2uatLDCjiNPjzwiB8",
            "parent_id":"ord_2uatLDCjiNPjzwiBA",
            "metadata":{
               
            },
            "antifraud_info":{
               
            }
         }
      ]
   },
   "shipping_lines":null,
   "tax_lines":null,
   "discount_lines":null,
   "charges":{
      "object":"list",
      "has_more":false,
      "total":2,
      "data":[
         {
            "id":"65090e658973ba484c99855c",
            "livemode":false,
            "created_at":1695092325,
            "currency":"MXN",
            "failure_code":null,
            "failure_message":null,
            "monthly_installments":null,
            "device_fingerprint":null,
            "channel":null,
            "payment_method":{
               "clabe":"646180111812345678",
               "bank":"STP",
               "issuing_account_holder_name":null,
               "issuing_account_tax_id":null,
               "issuing_account_bank":null,
               "issuing_account_number":null,
               "receiving_account_holder_name":null,
               "receiving_account_tax_id":null,
               "receiving_account_number":"646180111812345678",
               "receiving_account_bank":"STP",
               "reference_number":null,
               "description":null,
               "tracking_code":null,
               "executed_at":null,
               "payment_attempts":[
                  
               ],
               "object":"bank_transfer_payment",
               "type":"spei",
               "expires_at":1702867793
            },
            "object":"charge",
            "description":"Payment from order",
            "is_refundable":false,
            "reference_id":null,
            "status":"pending_payment",
            "amount":25000,
            "paid_at":null,
            "customer_id":"",
            "order_id":"ord_2uatLDCjiNPjzwiBA",
            "refunds":null,
            "reference":"646180111812345678"
         },
         {
            "id":"65090e658973ba484c998554",
            "livemode":false,
            "created_at":1695092325,
            "currency":"MXN",
            "failure_code":null,
            "failure_message":null,
            "monthly_installments":null,
            "device_fingerprint":null,
            "channel":null,
            "payment_method":{
               "clabe":"646180111812345678",
               "bank":"STP",
               "issuing_account_holder_name":null,
               "issuing_account_tax_id":null,
               "issuing_account_bank":null,
               "issuing_account_number":null,
               "receiving_account_holder_name":null,
               "receiving_account_tax_id":null,
               "receiving_account_number":"646180111812345678",
               "receiving_account_bank":"STP",
               "reference_number":null,
               "description":null,
               "tracking_code":null,
               "executed_at":null,
               "payment_attempts":[
                  
               ],
               "object":"bank_transfer_payment",
               "type":"spei",
               "expires_at":1702867793
            },
            "object":"charge",
            "description":"Payment from order",
            "is_refundable":false,
            "reference_id":null,
            "status":"pending_payment",
            "amount":25000,
            "paid_at":null,
            "customer_id":"",
            "order_id":"ord_2uatLDCjiNPjzwiBA",
            "refunds":null,
            "reference":"646180111812345678"
         }
      ]
   }
}

Orden con dos cargos, uno con Transferencia y otro con Tarjeta que combinan para pagar un total de $500.00 MXN

Debes crear un token para hacer un pago con tarjeta:

  • Para saber más sobre cómo puedes crear un token, puedes revisar la referencia API.
  • También puedes revisar la receta.
  1. Una vez que se valide el tipo de llamada, tendrás una respuesta como esta:
{
    "id": "tok_2tgvCxcr74nop5c56",
    "livemode": false,
    "used": false,
    "object": "token"
}
  1. Crear orden

Petición

curl --location 'https://api.conekta.io/orders' \
--header 'Accept: application/vnd.conekta-v2.1.0+json' \
--header 'Content-type: application/json' \
--header 'Authorization: Basic ACCESS_TOKEN' \
--data-raw '{
   "currency": "MXN",
   "customer_info": {
       "name": "Nicolás Cedrón",
       "email": "[email protected]",
       "phone": "5522997233",
       "corporate": true
   },
   "line_items": [
       {
           "name": "Box of Cohiba S1s",
           "unit_price": 50000,
           "quantity": 1
       }
   ],
   "charges": [
       {
            "payment_method": {
               "type": "card",
               "token_id": "tok_2u32nGqWqVjW96dUc" // Token recibido en el paso 1
           },
           "amount": 20000
       },
       {
            "payment_method": {
               "type": "spei"
           },
           "amount": 30000
       }
   ]
}'
require "conekta"

# Configuramos la clave privada de la API de Conekta y la versión de la API
Conekta.api_key = "API_KEY"
Conekta.locale = :es
Conekta.api_version = "2.1.0"

# Creamos un objeto de orden con los datos del comprador y del pago
order = Conekta::Order.create({
  currency: "MXN",
  customer_info: {
    name: "Nicolás Cedrón",
    email: "[email protected]",
    phone: "5522997233",
    corporate: true
  },
  line_items: [
    {
      name: "Box of Cohiba S1s",
      unit_price: 50000,
      quantity: 1
    }
  ],
  charges: [
    {
      payment_method: {
        type: "card",
        token_id: 'tok_2u32nGqWqVjW96dUc'
      },
      amount: 20000
    },
    {
      payment_method: {
        type: "spei"
      },
      amount: 30000
    }
  ]
})

# Imprimimos el ID de la orden creada
puts "ID de la orden creada: #{order.id}"
import conekta

# Configuramos la clave privada de la API de Conekta
conekta.api_key = "API_KEY"
conekta.locale = 'es'
conekta.api_version = "2.1.0"

# Creamos un objeto de orden con los datos del comprador y del pago
order = conekta.Order.create({
  "currency": "MXN",
  "customer_info": {
    "name": "Nicolás Cedrón",
    "email": "[email protected]",
    "phone": "5522997233",
    "corporate": True
  },
  "line_items": [
    {
      "name": "Box of Cohiba S1s",
      "unit_price": 50000,
      "quantity": 1
    }
  ],
  "charges": [
    {
      "payment_method": {
        "type": "card",
        "token_id": "tok_2u32nGqWqVjW96dUc"
      },
      "amount": 20000
    },
    {
      "payment_method": {
        "type": "spei"
      },
      "amount": 30000
    }
  ]
})

# Imprimimos el ID de la orden creada
print("ID de la orden creada: {}".format(order.id))
require_once("conekta-php/lib/Conekta.php");

// Configuramos la clave privada de la API de Conekta y la versión de la API
\Conekta\Conekta::setApiKey("API_KEY");
\Conekta\Conekta::setLocale('es');
\Conekta\Conekta::setApiVersion("2.1.0");

// Creamos un objeto de orden con los datos del comprador y del pago
$order = \Conekta\Order::create(array(
  "currency" => "MXN",
  "customer_info" => array(
    "name" => "Nicolás Cedrón",
    "email" => "[email protected]",
    "phone" => "5522997233",
    "corporate" => true
  ),
  "line_items" => array(
    array(
      "name" => "Box of Cohiba S1s",
      "unit_price" => 50000,
      "quantity" => 1
    )
  ),
  "charges" => array(
    array(
      "payment_method" => array(
        "type" => "card",
        "token_id" => "tok_2u32nGqWqVjW96dUc"
      ),
      "amount" => 20000
    ),
    array(
      "payment_method" => array(
        "type" => "spei"
      ),
      "amount" => 30000
    )
  )
));

// Imprimimos el ID de la orden creada
echo "ID de la orden creada: " . $order->id . "\n";
const Conekta = require('conekta');

// Configuramos la clave privada de la API de Conekta y la versión de la API
Conekta.apiKey = 'API_KEY';
Conekta.apiVersion = '2.1.0';
Conekta.locale = 'es';

// Creamos un objeto de orden con los datos del comprador y del pago
Conekta.Order.create({
  currency: 'MXN',
  customer_info: {
    name: 'Nicolás Cedrón',
    email: '[email protected]',
    phone: '5522997233',
    corporate: true
  },
  line_items: [
    {
      name: 'Box of Cohiba S1s',
      unit_price: 50000,
      quantity: 1
    }
  ],
  charges: [
    {
      payment_method: {
        type: 'card',
        token_id: 'tok_2u32nGqWqVjW96dUc'
      },
      amount: 20000
    },
    {
      payment_method: {
        type: 'spei'
      },
      amount: 30000
    }
  ]
}, function(err, order) {
  if (err) {
    console.log(err);
    return;
  }

  // Imprimimos el ID de la orden creada
  console.log('ID de la orden creada:', order.id);
});
import com.conekta.*;

public class OrderExample {

  public static void main(String[] args) {
// Configuramos la clave privada de la API de Conekta y la versión de la API
    Conekta.setApiKey("API_KEY");
    Conekta.setApiVersion("2.1.0");
    Conekta.setLocale("es");

    try {
      Long nowUnixTimestamp = System.currentTimeMillis();
      Long thirtyDaysFromNowUnixTimestamp =  (nowUnixTimestamp + 30L * 24 * 60 * 60 * 1000) / 1000L;
      String thirtyDaysFromNow = thirtyDaysFromNowUnixTimestamp.toString();

      JSONObject customer = new JSONObject();
      customer.put("name", "Nicolás Cedrón");
      customer.put("email", "[email protected]");
      customer.put("phone", "5522997233");
      customer.put("corporate", true);

      JSONArray lineItems = new JSONArray();
      JSONObject lineItem = new JSONObject();
      lineItem.put("name", "Box of Cohiba S1s");
      lineItem.put("unit_price", 50000);
      lineItem.put("quantity", 1);
      lineItems.put(lineItem);

      JSONArray charges = new JSONArray();
      JSONObject charge1 = new JSONObject();
      JSONObject paymentMethod1 = new JSONObject();
      paymentMethod1.put("type", "card");
      paymentMethod1.put("token_id", "tok_2u32nGqWqVjW96dUc");
      charge1.put("payment_method", paymentMethod1);
      charge1.put("amount", 20000);
      JSONObject charge2 = new JSONObject();
      JSONObject paymentMethod2 = new JSONObject();
      paymentMethod2.put("type", "spei");
      charge2.put("payment_method", paymentMethod2);
      charge2.put("amount", 30000);
      charges.put(charge1);
      charges.put(charge2);

      JSONObject orderParams = new JSONObject();
      orderParams.put("currency", "MXN");
      orderParams.put("customer_info", customer);
      orderParams.put("line_items", lineItems);
      orderParams.put("charges", charges);

      Order order = Order.create(orderParams);
    } catch (io.conekta.Error e) {
      System.out.println(e.message);
    } catch (io.conekta.ErrorList e) {
      System.out.println(e.details.get(0).message);
    }
  }
}
using conekta;

// Configuramos la clave privada de la API de Conekta y la versión de la API
conekta.Api.apiKey = "API_KEY";
conekta.Api.version = "2.1.0";

//Calculate an expiration time
DateTime thirtyDaysFromNowDateTime = DateTime.Now.AddDays(30);
long thirtyDaysFromNowUnixTimestamp = (Int64)(thirtyDaysFromNowDateTime.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
String thirtyDaysFromNow = thirtyDaysFromNowUnixTimestamp.ToString(); 

try{
  conekta.Order order = new conekta.Order().create(@"{
    ""line_items"": [{
      ""name"": ""Box of Cohiba S1s"",
      ""unit_price"": 50000,
      ""quantity"": 1
      }],
      ""charges"":[{
        ""payment_method"": {
          ""type"": ""card"",
          ""token_id"": ""tok_2u32nGqWqVjW96dUc""
        },
        ""amount"": 20000
      },{
        ""payment_method"": {
          ""type"": ""spei""
        },
        ""amount"": 30000
        }],
        ""currency"": ""MXN"",
        ""customer_info"": {
          ""name"": ""Nicolás Cedrón"",
          ""email"": ""[email protected]"",
          ""phone"": ""5522997233"",
          ""corporate"": true
        }
        }");
} catch (ConektaException e) {
  foreach (JObject obj in e.details) {
    System.Console.WriteLine("\n [ERROR]:\n");
    System.Console.WriteLine("message:\t" + obj.GetValue("message"));
    System.Console.WriteLine("debug:\t" + obj.GetValue("debug_message"));
    System.Console.WriteLine("code:\t" + obj.GetValue("code"));
  }
}

Respuesta

{
   "livemode":false,
   "amount":50000,
   "currency":"MXN",
   "payment_status":"partially_paid",
   "amount_refunded":0,
   "split_payment":true,
   "customer_info":{
      "email":"[email protected]",
      "phone":"5522997233",
      "name":"Nicolás Cedrón",
      "corporate":true,
      "customer_id":null,
      "object":"customer_info"
   },
   "shipping_contact":null,
   "channel":null,
   "fiscal_entity":null,
   "object":"order",
   "id":"ord_2uatXT6CUQSZBQgkt",
   "metadata":{
      
   },
   "is_refundable":true,
   "processing_mode":null,
   "created_at":1695093208,
   "updated_at":1695093210,
   "line_items":{
      "object":"list",
      "has_more":false,
      "total":1,
      "data":[
         {
            "name":"Box of Cohiba S1s",
            "description":null,
            "unit_price":50000,
            "quantity":1,
            "sku":null,
            "tags":null,
            "brand":null,
            "type":null,
            "object":"line_item",
            "id":"line_item_2uatXT6CUQSZBQgkr",
            "parent_id":"ord_2uatXT6CUQSZBQgkt",
            "metadata":{
               
            },
            "antifraud_info":{
               
            }
         }
      ]
   },
   "shipping_lines":null,
   "tax_lines":null,
   "discount_lines":null,
   "charges":{
      "object":"list",
      "has_more":false,
      "total":2,
      "data":[
         {
            "id":"650911d88973ba484c998570",
            "livemode":false,
            "created_at":1695093208,
            "currency":"MXN",
            "failure_code":null,
            "failure_message":null,
            "monthly_installments":null,
            "device_fingerprint":null,
            "channel":null,
            "payment_method":{
               "name":"QA Testing",
               "exp_month":"12",
               "exp_year":"24",
               "auth_code":"1281",
               "object":"card_payment",
               "type":"credit",
               "normalized_device_fingerprint":null,
               "last4":"0957",
               "brand":"visa",
               "issuer":"bbva",
               "account_type":"cuenta oro",
               "contract_id":"S825828000",
               "country":"MX",
               "fraud_score":null,
               "fraud_indicators":[
                  
               ],
               "token_id":"tok_2u32nGqWqVjW96dUc"
            },
            "object":"charge",
            "description":"Payment from order",
            "is_refundable":true,
            "reference_id":null,
            "status":"paid",
            "amount":20000,
            "paid_at":1695093210,
            "customer_id":"",
            "order_id":"ord_2uatXT6CUQSZBQgkt",
            "refunds":null
         },
         {
            "id":"650911d88973ba484c998568",
            "livemode":false,
            "created_at":1695093208,
            "currency":"MXN",
            "failure_code":null,
            "failure_message":null,
            "monthly_installments":null,
            "device_fingerprint":null,
            "channel":null,
            "payment_method":{
               "clabe":"646180111812345678",
               "bank":"STP",
               "issuing_account_holder_name":null,
               "issuing_account_tax_id":null,
               "issuing_account_bank":null,
               "issuing_account_number":null,
               "receiving_account_holder_name":null,
               "receiving_account_tax_id":null,
               "receiving_account_number":"646180111812345678",
               "receiving_account_bank":"STP",
               "reference_number":null,
               "description":null,
               "tracking_code":null,
               "executed_at":null,
               "payment_attempts":[
                  
               ],
               "object":"bank_transfer_payment",
               "type":"spei",
               "expires_at":1702867793
            },
            "object":"charge",
            "description":"Payment from order",
            "is_refundable":false,
            "reference_id":null,
            "status":"pending_payment",
            "amount":30000,
            "paid_at":null,
            "customer_id":"",
            "order_id":"ord_2uatXT6CUQSZBQgkt",
            "refunds":null,
            "reference":"646180111812345678"
         }
      ]
   }
}

2. Procesar respuesta

Puedes procesar la respuesta JSON o desde el SDK usado.

3. Recibe notificaciones

Para poder confirmar los pagos que se realicen con Transferencia deberás añadir un Webhook en tu Admin Conekta para recibir las notificaciones POST (HTTP JSON) correctamente.

Utiliza URLs públicos: Si no tienes una IP pública o un domino a tu disposición, te recomendamos utilizar servicios como ultrahook o localtunnel. También puedes consultar la referencia sobre webhooks. Recomendamos escuchar eventos de order.paid de esta manera:

{
    "object": {
        "livemode": false,
        "amount": 18500,
        "currency": "MXN",
        "payment_status": "paid",
        "amount_refunded": 0,
        "customer_info": {
            "name": "Fulanito Pérez",
            "email": "[email protected]",
            "phone": "+5218181818181",
            "object": "customer_info"
        },
        "shipping_contact": {
            "receiver": "JOSE  MORALES",
            "phone": "6691208528",
            "address": {
                "street1": "Calle 123, int 2",
                "postal_code": "06100",
                "country": "MX"
            },
            "id": "ship_cont_2s53K99C8GXVmCfPk",
            "object": "shipping_contact",
            "created_at": 0
        },
        "object": "order",
        "id": "ord_2s53K99C8GXVmCfPm",
        "created_at": 1656547670,
        "updated_at": 1656547702,
        "line_items": {
            "object": "list",
            "has_more": false,
            "total": 1,
            "data": [{
                "name": "Tacos",
                "unit_price": 1000,
                "quantity": 12,
                "object": "line_item",
                "id": "line_item_2s53K99C8GXVmCfPg",
                "parent_id": "ord_2s53K99C8GXVmCfPm",
                "metadata": {}
            }]
        },
        "shipping_lines": {
            "object": "list",
            "has_more": false,
            "total": 1,
            "data": [{
                "name": "Tacos",
                "amount": 1500,
                "carrier": "FEDEX",
                "object": "line_item",
                "id": "line_item_2s53K99C8GXVmCfPg",
                "parent_id": "ord_2s53K99C8GXVmCfPm",
                "metadata": {}
            }]
        },
        "tax_lines": {
            "object": "list",
            "has_more": false,
            "total": 0,
            "data": []
        },
        "charges": {
            "object": "list",
            "has_more": false,
            "total": 1,
            "data": [{
                "id": "62bce95741de276186407e41",
                "livemode": false,
                "created_at": 1656547671,
                "currency": "MXN",
                "payment_method": {
                    "service_name": "Cash",
                    "barcode_url": "https://s3.amazonaws.com/cash_payment_barcodes/sandbox_reference.png",
                    "object": "cash_payment",
                    "type": "cash",
                    "expires_at": 1656634070,
                    "store_name": "XXXX",
                    "reference": "98000013217610"
                },
                "object": "charge",
                "description": "Payment from order",
                "status": "paid",
                "amount": 13500,
                "paid_at": 1656547702,
                "fee": 537,
                "customer_id": "",
                "order_id": "ord_2s53K99C8GXVmCfPm"
            }]
        }
    },
    "previous_attributes": {}
}

A continuación puedes ver los estados que puede tener una orden con pagos combinados:

Estados de una orden

EstadoDescripción
Cargo contracargado completamentecharged_backTodos los cargos de la orden fueron contracargados
Cargo contracargado parcialmentepartially_charged_backAl menos uno de los cargos de la orden fue contracargado
Orden reembolsada completarefundedSe reembolsaron todos los cargos de la orden
Orden reembolsada parcialmentepartially_refundedAl menos uno de los cargos de la orden fue reembolsado total o parcialmente
Preautorización realizadapreauthorizedSe ha solicitado una autorización previa al cobro de todos los cargos en la orden.
Preautorización parcial realizadapartially_preauthorizedSe ha solicitado una autorización previa al cobro de un cargo en la orden.
Esperando confirmaciónpending_confirmationLa orden está esperando confirmación de pago
Esperando confirmación parcialpartially_pending_confirmationAl menos uno de los cargos de la orden está esperando confirmación de pago
Orden pagada completapaidTodos los cargos de la orden fueron pagados
Orden pagada parcialmentepartially_paidAl menos uno de los cargos de la orden fue pagado parcialmente
Esperando pagopending_paymentLa orden está esperando que se realice el pago
Pago rechazadodeclinedEl pago fue rechazado
Orden canceladacanceledLa orden fue cancelada
Orden anuladavoidedLa orden fue anulada
Orden expiradaexpiredLa orden expiró y no se pudo procesar el pago

Servicio de Notificaciones

Conekta dispone de un servicio de notificaciones a usuario final para las distintas instancias del proceso de pago.

Si tienes activadas las notificaciones vía email de Conekta, tu cliente recibirá los siguientes correos cuando elija pagar con Transferencia:

Generación de la referencia:

5. Prueba tu Webhook

Dentro de tu perfil de Administrador en Conekta, puedes probar la funcionalidad de tu Webhook

¿Qué necesito para probar mi Webhook? Solo agrega la URL de tu Webhook y los datos de acceso al Perfil de Administrador Conekta.

Todos los eventos que ocurran antes, durante y después de una transacción pueden ser notificados a través de webhooks, justo en el momento en que ocurren. Te enlistamos todos los eventos que intervienen en esta modalidad, accediendo a la siguiente liga (https://developers.conekta.com/docs/eventos-webhooks) para revisar el detalle del payload correspondiente a cada uno de ellos, y mapearlos para llevar a cabo los procesos internos requeridos por tu negocio.

En esta documentación también encontrarás la manera de configurarlo en el Panel de Conekta de tu compañía.