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.
Utiliza el checkout de conekta a través de una redirección.
Primeros pasos
- Instalar e incluir alguna de nuestras SDKs en tu proyecto.
- Utilizar tu propia llave privada. Si no la conoces, puedes obtenerla aquí.
<?php
$validCustomer = [
'name' => "Payment Link Name",
'email' => "Juan Perez"
];
$customer = Customer::create($validCustomer);
curl -H "Accept: application/vnd.conekta-v2.0.0+json" \
-H "Content-type: application/json" \
-u key_XXXXXXXXXXXX: \
-X POST -d '{
"name": "Juan Perez",
"email": "[email protected]"
}' https://api.conekta.io/customers
Esto regresa una respuesta como la siguiente:
<?php
echo $customer->livemode;
echo $customer->name;
echo $customer->email;
echo $customer->id;
echo $customer->object;
{
"livemode": false,
"name": "Vicente Mendoza",
"email": "[email protected]",
"id": "cus_2neG7CYFDERras9GGU",
"object": "customer",
"created_at": 1588684774,
"corporate": false,
"custom_reference": ""
}
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 una orden y un checkout object al mismo tiempo. Aquí se definen las urls de redirección una vez que se haya completado ya sea exitoso o fallido el pago.
<?php
$validOrderWithCheckout = array(
'line_items'=> array(
array(
'name'=> 'Box of Cohiba S1s',
'description'=> 'Imported From Mex.',
'unit_price'=> 120000,
'quantity'=> 1,
'sku'=> 'cohbs1',
'category'=> 'food',
'tags' => array('food', 'mexican food')
)
),
'checkout' => array(
'allowed_payment_methods' => array("cash", "card", "bank_transfer"),
'type' => 'HostedPayment',
'success_url' => 'https://www.mysite.com/payment/confirmation',
'failure_url' => 'https://www.mysite.com/payment/failure',
'monthly_installments_enabled' => true,
'monthly_installments_options' => array(3, 6, 9, 12)
),
'customer_info' => array(
'customer_id' => 'cus_2nHprwaWFn7QJ21Lj'
),
'currency' => 'mxn',
'metadata' => array('test' => 'extra info')
);
$order = Order::create($validOrderWithCheckout);
curl -H "Accept: application/vnd.conekta-v2.0.0+json" \
-H "Content-type: application/json" \
-u key_XXXXXXXXXXX: \
-X POST -d '{
"currency": "MXN",
"customer_info": {
"customer_id": "cus_2nHprwaWFn7QJ21Lj"
},
"line_items": [{
"name": "Box of Cohiba S1s",
"unit_price": 35000,
"quantity": 1
}],
"shipping_lines": [{
"amount": 0
}],
"checkout": {
"allowed_payment_methods": ["cash", "card", "bank_transfer"],
"type": "HostedPayment",
"success_url": "https://www.mysite.com/payment/confirmation",
"failure_url": "https://www.mysite.com/payment/failure",
"monthly_installments_enabled": true,
"monthly_installments_options": [3, 6, 9, 12]
},
"shipping_contact": {
"phone": "+5215555555555",
"receiver": "Marvin Fuller",
"address": {
"street1": "Nuevo Leon 4",
"country": "MX",
"postal_code": "06100"
}
}
}' https://api.conekta.io/orders
Esto regresa una respuesta como la siguiente, donde es importante obtener la url para el checkout.
<?php
print_r((array) $order->checkout->allowed_payment_methods); // array("cash", "card", "bank_transfer")
print_r($order->checkout->monthly_installments_enabled); // true
print_r((array) $order->checkout->monthly_installments_options); // array(3, 6, 9, 12)
print_r($order->checkout->object); // 'checkout'
print_r($order->checkout->url); // 'https://pay.conektame.io/link/964b5bdfe557467d9e02469e89b48e19
print_r($order->checkout->type); // 'HostedPayment'
{
"livemode": false,
"amount": 35000,
"currency": "MXN",
"payment_status": "paid",
"amount_refunded": 0,
"checkout": {
"id": "42a4c95e-0db2-4ae8-9bb3-ea681acc8281",
"object": "checkout",
"type": "HostedPayment",
"status": "Issued",
"url": "https://pay.conektame.io/link/964b5bdfe557467d9e02469e89b48e19",
"allowed_payment_methods": ["cash", "card", "bank_transfer"],
"needs_shipping_contact": true,
"livemode": true
},
"customer_info": {
"email": "[email protected]",
"name": "Mario Perez",
"corporate": false,
"customer_id": "cus_2nHprwaWFn7QJ21Lj",
"object": "customer_info"
},
"shipping_contact": {
"receiver": "Marvin Fuller",
"phone": "+5215555555555",
"address": {
"street1": "Nuevo Leon 4",
"country": "mx",
"residential": true,
"object": "shipping_address",
"postal_code": "06100"
},
"id": "ship_cont_2nYNo3xT815RRppom",
"object": "shipping_contact",
"created_at": 0
},
"object": "order",
"id": "ord_2nYNo3xT815RRppon",
"metadata": {},
"created_at": 1587129536,
"updated_at": 1587129537,
"line_items": {
"object": "list",
"has_more": false,
"total": 1,
"data": [{
"name": "Box of Cohiba S1s",
"unit_price": 35000,
"quantity": 1,
"object": "line_item",
"id": "line_item_2nYNo3xT815RRppoi",
"parent_id": "ord_2nYNo3xT815RRppon",
"metadata": {},
"antifraud_info": {}
}]
},
"shipping_lines": {
"object": "list",
"has_more": false,
"total": 1,
"data": [{
"amount": 0,
"object": "shipping_line",
"id": "ship_lin_2nYNo3xT815RRppoj",
"parent_id": "ord_2nYNo3xT815RRppon"
}]
}
}
En tu sitio tienes que hacer redirección a la url regresada en el paso anterior, donde el usuario podra efectuar su pago en el checkout de conekta.
<?php
header("Location: {$order->checkout->url}");
Open a web browser and goto checkout url.
Hosted Payment
Una vez que el customer procese el pago, ya sea que haya sido exitoso o fallido se hara redirect a las urls success_url y failure_url definidas en el paso 2.
Se agregaran los siguientes parámetros a la url de redirección devuelta al sitio.
Parámetro | Descripción | Ejemplos |
---|---|---|
checkout_id | Identificador de la petición del checkout | 7e531c1e-7ac7-4c46-8ee1-44d45913449c |
order_id | Identificador de la orden. | ord_2oCQQtCxJ5UnQyXSq |
payment_status | Status del pago | paid, pending_payment, error |
Redirección a tu sitio
Una vez recibas estos parametros tienes que validar el status haciendo una petición a la API de conekta.
<?php
$order = Order::find('ord_2oEhsRCcpaxW66Y2x');
print_r($order->payment_status);
curl --request GET \
--url https://apipp.conekta.io/orders/ord_2oEhsRCcpaxW66Y2x \
--header 'accept: application/vnd.conekta-v2.0.0+json' \
-u key_eYvWV7gSDkNYXsmr: \
--header 'content-type: application/json'
Puedes configurar el checkout para que pueden funcionar 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.
Una vez configurado un webhook tu puedes recibir el evento charge.paid y order.paid cada que se reciba un pago exitoso.