Cargo único
IMPORTANTE
Esta modalidad de pago con tarjeta te permitirá crear órdenes sin necesidad de almacenar/recordar la información del medio de pago en Conekta.
Si tu negocio no cuenta con una Certificación Nivel I de PCI DSS, con permisos para gestionar y procesar datos, deberás utilizar el “Component” de Conekta para integrar esta modalidad. Ve al siguiente enlace para continuar con tu implementación.
Características
- No es necesario registrar/almacenar un cliente en Conekta
- No es necesario registrar/almacenar un método de pago en Conekta (tarjeta)
- Cada vez que un cliente quiera realizar un pago, tendrá que ingresar los datos de la tarjeta de nuevo
Flujo
Pasos para integrar
Generar autenticación de API
Para configurar los headers de tus peticiones, sigue las instrucciones de la sección “Primeros Pasos”.
Crear orden de pago
La orden requiere de cierta información que se obtiene ya sea de algún servicio interno del negocio, o directamente del FrontEnd al solicitarla al usuario/cliente final. Los datos principales traducidos a atributos del request son:
- ¿Quién está pagando? -> Customer
- ¿Qué está pagando? -> Line_items
- ¿Cuánto está pagando? -> Unit_pice multiplicado por Quantity
- ¿Cuál es el método de pago? -> Payment_method
- ¿Información extra requerida por el negocio? -> Metadata
Request
-H "Accept: application/vnd.conekta-v2.1.0+json" \
-H "Content-type: application/json" \
-u key_YOUR_PRIVATE_API_KEY: \
-X POST -d '{
"line_items": [{
"name": "Nombre del Producto o Servicio",
"unit_price": 23000,
"quantity": 1
}],
"currency": "MXN",
"customer_info": {
"name": "Jorge Martínez",
"email": "[email protected]",
"phone": "+5218181818181"
},
"metadata":{
"datos_extra": "1234"
},
"charges":[{
"payment_method": {
"type": "card",
"number": "283081093801218301",
"name": "Jorge Martinez",
"exp_month": "12",
"exp_year": "2024",
"cvc": "198",
}
}]
}’https://api.conekta.io/orders
{
"livemode": false,
"amount": 23000,
"currency": "MXN",
"payment_status": "paid",
"amount_refunded": 0,
"customer_info": {
"email": "[email protected]",
"phone": "+5218181818181",
"name": "Jorge Martínez",
"object": "customer_info"
},
"object": "order",
"id": "ord_2tQAKpPrfkdyzZvfM",
"metadata": {**
"datos_extra": "1234"
},
"is_refundable": true,
"created_at": 1676929549,
"updated_at": 1676929551,
"line_items": {
"object": "list",
"has_more": false,
"data": [
{
"name": "Nombre del Producto o Servicio",
"unit_price": 23000,
"quantity": 1,
"object": "line_item",
"id": "line_item_2tQAKpPrfkdyzZvfK",
"parent_id": "ord_2tQAKpPrfkdyzZvfM",
"metadata": {},
"antifraud_info": {}
}
]
},
"charges": {
"object": "list",
"has_more": false,
"data": [
{
"id": "63f3ea0d88dc6c0019a3fe39",
"livemode": false,
"created_at": 1676929549,
"currency": "MXN",
"device_fingerprint": "e6edc7bb5ca296c0c61acb60ad20d083",
"payment_method": {
"name": "ESTEFANIA ALBARRAN",
"exp_month": "12",
"exp_year": "23",
"auth_code": "731650",
"object": "card_payment",
"type": "credit",
"last4": "4242",
"brand": "visa",
"issuer": "banamex",
"account_type": "BANAMEX",
"country": "MX",
"fraud_indicators": []
},
"object": "charge",
"description": "Payment from order",
"status": "paid",
"amount": 23000,
"paid_at": 1676929550,
"fee": 1255,
"customer_id": "",
"order_id": "ord_2tQAKpPrfkdyzZvfM"
}
]
}
}
<?php
require __DIR__ . '/../../vendor/autoload.php';
use Conekta\Api\OrdersApi;
use Conekta\Configuration;
use Conekta\Model\OrderRequest;
$config = Configuration::getDefaultConfiguration()->setAccessToken(getenv("CONEKTA_API_KEY"));
$apiInstance = new OrdersApi(null, $config);
$rq = new OrderRequest([
'line_items' => [
[
'name' => 'Nombre del Producto o Servicio',
'unit_price' => 23000,
'quantity' => 1
]
],
'currency' => 'MXN',
'customer_info' => [
'name' => 'Jorge Martinez',
'email' => '[email protected]',
'phone' => '+5218181818181'
],
'metadata' => [
'datos_extra' => '12334'
],
'charges' => [
[
'payment_method' => [
'type' => 'card',
'number' => '4242424242424242',
'name' => 'Jorge Martinez',
'exp_month' => '12',
'exp_year' => '2025',
'cvc' => '198'
]
]
]
]);
try {
$result = $apiInstance->createOrder($rq);
$json_string = json_encode($result, JSON_PRETTY_PRINT);
print_r($json_string);
} catch (Exception $e) {
echo 'Exception when calling OrdersApi->createOrder: ', $e->getMessage(), PHP_EOL;
}
Nota
El mapeo de la respuesta es importante para que puedas realizar la conciliación automática de tu negocio, es decir, cuando recibas un pago puedas registrarlo en tu sistema y ejecutar los procesos requeridos como: actualización de balances, activación de servicio o entrega de producto.
Puedes utilizar el response del request para creación de orden tomando en cuenta los datos principales (marcados con **) y demás información que consideres necesaria para los procesos mencionados anteriormente.
Notificaciones vía webhook
Esta modalidad de pago a través de tarjeta tiene comunicación directa vía API para cada uno de los momentos de la transacción. Lo que significa que a cada request hay un response exitoso o fallido inmediato con el que puedes conciliar automáticamente.
Sin embargo, 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 al siguiente enlace para revisar el detalle del payload correspondiente a cada uno de ellos, y mapearlos para llevar a cabo los procesos internos de tu negocio requeridos.
Te recomendamos capturar los siguientes eventos:
Evento | Descripción |
---|---|
order.paid | Enviado cuando el cliente completa un pago de forma exitosa |
order.pending_payment | Enviado cuando una orden es creada pero está pendiente de pago |
order.declined | Enviado cuando el pago de una orden es declinado. |
Updated 7 months ago