Conekta Developer's Hub

Bienvenido al Conekta Developer's Hub. Aquí encontrarás la más robusta documentación del API Conekta y todos los tutoriales que te ayudarán a comenzar a recibir pagos de la manera más rápida, sencilla y segura.

Link de Pago con MSI

Link de pago

Crear link de pago fácilmente a través de API y compártelo con tus clientes.

📘

Primeros pasos

  • Instalar e incluir alguna de nuestras SDKs en tu proyecto.
  • Utilizar tu propia llave privada. Si no la conoces, puedes obtenerla aquí.

Paso 1 - Crear el link de pago.

El siguiente snippet incorpora todas las partes del paso 1. Copia y pega el siguiente fragmento de código en tu sandbox y corre el código para crear a un checkout object y opcionalmente también puedes enviarlo por correo electrónico ó SMS.

Para más información sobre las diferentes partes del snippet favor de seguir el resto del tutorial.

curl --request POST \
  --url https://api.conekta.io/checkouts \
  --header 'accept: application/vnd.conekta-v2.0.0+json' \
  -u key_eYvWV7gSDkNYXsmr: \
  --header 'content-type: application/json' \
  --data '{
    "name": "Payment Link Name",
    "type": "PaymentLink",
    "recurrent": false,
    "expired_at": 1590882634,
    "allowed_payment_methods": ["cash", "card", "bank_transfer"],
    "needs_shipping_contact": true,
    "monthly_installments_enabled": true,
    "monthly_installments_options": [3, 6, 9, 12],
    "order_template": {
        "line_items": [{
            "name": "Red Wine",
            "unit_price": 1000,
            "quantity": 10
        }],
        "metadata": {
          "mycustomkey": "12345",
          "othercustomkey": "abcd"
        },
        "currency": "MXN",
        "customer_info": {
            "name": "Juan Perez",
            "email": "[email protected]",
            "phone": "5566982090"
        }
    }
 }'
<?php

$validCheckout = [
  'name' => "Payment Link Name",
  'type' => "PaymentLink",
  'recurrent' => false,
  'expired_at' => 1600882634,
  'allowed_payment_methods' => ["cash", "card", "bank_transfer"],
  'needs_shipping_contact' => true,
  'monthly_installments_enabled' => true,
  'monthly_installments_options' => [3, 6, 9, 12],
  'order_template' => [
    'line_items' => [[
      'name' => "Red Wine",
      'unit_price' => 1000,
      'quantity' => 10
    ]],
    'metadata' => [
      'mycustomkey' => "12345",
      'othercustomkey' => "abcd"
    ],
    'currency' => "MXN",
    'customer_info' => [
      'name' => "Juan Perez",
      'email' => "[email protected]",
      'phone' => "5566982090"
    ]
  ]
];
$checkout = Checkout::create($validCheckout);

Link de múltiples pagos

Esto creará un link de pago que se puede utilizar solamente una vez, si deseas que el link pueda recibir múltiples pagos para múltiples usuarios, la bandera de recurrent debería estar en true y el número máximo de pagos permitidos. Como se muestra a continuación.

curl --request POST \
  --url https://api.conekta.io/checkouts \
  --header 'accept: application/vnd.conekta-v2.0.0+json' \
  -u key_eYvWV7gSDkNYXsmr: \
  --header 'content-type: application/json' \
  --data '{
    "name": "Payment Link Name",
    "type": "PaymentLink",
    "recurrent": true,
    "payments_limit_count": 3,
    "expired_at": 1590882634,
    "allowed_payment_methods": ["cash", "card", "bank_transfer"],
    "needs_shipping_contact": true,
    "monthly_installments_enabled": true,
    "monthly_installments_options": [3, 6, 9, 12],
    "order_template": {
        "line_items": [{
            "name": "Red Wine",
            "unit_price": 1000,
            "quantity": 10
        }],
        "metadata": {
          "mycustomkey": "12345",
          "othercustomkey": "abcd"
        },
        "currency": "MXN"
    }
 }'
<?php

$validCheckout = [
  'name' => "Payment Link Name",
  'type' => "PaymentLink",
  'recurrent' => true,
  'payments_limit_count' => 3,
  'expired_at' => 1600882634,
  'allowed_payment_methods' => ["cash", "card", "bank_transfer"],
  'needs_shipping_contact' => true,
  'monthly_installments_enabled' => true,
  'monthly_installments_options' => [3, 6, 9, 12],
  'order_template' => [
    'line_items' => [[
      'name' => "Red Wine",
      'unit_price' => 1000,
      'quantity' => 10
    ]],
    'metadata' => [
      'mycustomkey' => "12345",
      'othercustomkey' => "abcd"
    ],
    'currency' => "MXN",
    'customer_info' => [
      'name' => "Juan Perez",
      'email' => "[email protected]",
      'phone' => "5566982090"
    ]
  ]
];
$checkout = Checkout::create($validCheckout);

Paso 1.1 - Asociar un customer con link de pago

Si quieres crear customers y asociarlos con el link de pago entonces puedes hacer las siguientes dos peticiones

Crear el customer

curl -H "Accept: application/vnd.conekta-v2.0.0+json"\
-H "Content-type: application/json" \
-u key_XXXXXXXXX: \
-X POST -d '{
    "name": "Juan Perez",
    "email": "[email protected]",
    "phone": "5566982093",
    "shipping_contacts": [{
        "phone": "+5566982090",
        "receiver": "Juan Perez",
        "address": {
            "street1": "Nuevo Leon 254",
            "country": "MX",
            "postal_code": "06100"
        }
    }]
}' https://api.conekta.io/customers
<?php

$customer = \Conekta\Customer::create(
  [
    'name'  => "Juan Perez",
    'email' => "[email protected]",
    'phone' => "5566982093",
    'shipping_contacts' => [
      [
        'phone' => "+5566982090",
        'receiver' => "Juan Perez",
        'address' => [
          'street1' => "Nuevo Leon 254",
          'country' => "MX",
          'postal_code' => "06100"
        ]
      ]
    ]
  ]
);

Crear link de pago asociado a ese customer

curl --request POST \
--url https://api.conekta.io/checkouts \
--header 'accept: application/vnd.conekta-v2.0.0+json' \
-u key_XXXXX: \
--header 'content-type: application/json' \
--data '{
    "name": "Payment Link Name",
    "type": "PaymentLink",
    "recurrent": false,
    "expired_at": 1597635007,
    "allowed_payment_methods": ["cash", "card", "bank_transfer"],
    "needs_shipping_contact": false,
    "monthly_installments_enabled": true,
    "monthly_installments_options": [3, 6, 9, 12],
    "order_template": {
        "line_items": [{
            "name": "Red Wine",
            "unit_price": 1000,
            "quantity": 10
        }],
        "currency": "MXN",
        "customer_info": {
            "customer_id": "cus_2nYSnP4EDiREgGte9"
        }
    }
}'
<?php

$validCheckout = [
  'name' => "Payment Link Name",
  'type' => "PaymentLink",
  'recurrent' => false,
  'expired_at' => 1600882634,
  'allowed_payment_methods' => ["cash", "card", "bank_transfer"],
  'needs_shipping_contact' => true,
  'monthly_installments_enabled' => true,
  'monthly_installments_options' => [3, 6, 9, 12],
  'order_template' => [
    'line_items' => [[
      'name' => "Red Wine",
      'unit_price' => 1000,
      'quantity' => 10
    ]],
    'metadata' => [
      'mycustomkey' => "12345",
      'othercustomkey' => "abcd"
    ],
    'currency' => "MXN",
    'customer_info' => [
      'customer_id' => "cus_2nYSnP4EDiREgGte9"
    ]
  ]
];
$checkout = Checkout::create($validCheckout);

Paso 1.2 - Compartir la url del link de pago con el customer.

Tienes dos opciones para compartir la url del link de pago, puedes hacerlo a través de sms o correo electrónico.

{
    "id": "42a4c95e-0db2-4ae8-9bb3-ea681acc8281",
    "object": "checkout",
    "name": "Payment Link Name",
    "url": "https://pay.conekta.com/link/42a4c95e0db24ae89bb3ea681acc8281",
    "slug": "42a4c95e0db24ae89bb3ea681acc8281",
    "status": "Issued",
    "type": "PaymentLink",
    "expired_at": 1590882634,
    "allowed_payment_methods": ["cash", "card", "bank_transfer"],
    "needs_shipping_contact": true,
    "monthly_installments_options": [3, 6, 9, 12],
    "monthly_installments_enabled": true,
    "livemode": true
}
<?Php

echo $checkout->id;
echo $checkout->object;
echo $checkout->name;
echo $checkout->url;
echo $checkout->slug;
echo $checkout->livemode;
echo $checkout->monthly_installments_enabled;
var_dump((array) $checkout->monthly_installments_options);

Paso 2 - Compartir el link de pago

Puedes compartir el link de pago con tu cliente mediante las siguientes opciones:

Paso 2.1 - Compartir el link de pago en un SMS.

Si lo prefieres puedes enviar un sms con el link de pago a través de nuestros sistemas.

curl --request POST \
  --url https://api.conekta.io/checkouts/42a4c95e-0db2-4ae8-9bb3-ea681acc8281/sms \
  --header 'accept: application/vnd.conekta-v2.0.0+json' \
  -u key_eYvWV7gSDkNYXsmr: \
  --header 'content-type: application/json' \
  --data '{
    "phonenumber": "5566982090"
  }'
<?php

$checkout->sendSms(['phone' => '555555555']);

Paso 2.2 - Compartir el link de pago en un correo electrónico

Si lo prefieres puedes enviar un email con el link de pago a través de nuestros sistemas.

curl --request POST \
  --url https://api.conekta.io/checkouts/42a4c95e-0db2-4ae8-9bb3-ea681acc8281/email \
  --header 'accept: application/vnd.conekta-v2.0.0+json' \
  -u key_eYvWV7gSDkNYXsmr: \
  --header 'content-type: application/json' \
  --data '{
    "email": "[email protected]"
  }'
<?php

$checkout->sendEmail(['email' => '[email protected]']);

Paso 3: Configurar meses sin intereses

Puedes configurar tu link de pago para que pueda procesar con meses sin intereses si en las peticiones agregas estas dos variables: monthly_installments_enabled para activarlo y monthly_installments_options con los meses habilitados, Ej 3, 6, 9, 12, 18.

Paso 4 - Recibir la notificación de pago

Si tienes configurado un webhook tu puedes recibir el evento charge.paid cada que se reciba un pago exitoso.

# N/A
<?php

$body = @file_get_contents('php://input');
$data = json_decode($body);
http_response_code(200); // Return 200 OK 

if ($data->type == 'charge.paid'){
  $msg = "Tu pago ha sido comprobado.";
  mail("[email protected]","Pago confirmado",$msg);
}

Cancelar el link

Si necesitas cancelar un link previamente creado, se puede hacer a través de nuestra API.

curl --request PUT \
  --url https://apipp.conekta.io/checkouts/019b2693-18e6-4094-8bd1-5530bcad5906/cancel \
  --header 'accept: application/vnd.conekta-v2.0.0+json' \
  -u key_eYvWV7gSDkNYXsmr: \
  --header 'content-type: application/json' \
  --data '{}'
<?php

$checkout->cancel();