Creación y utilización de token
El pago en un clic también se conoce como pago por token o pago por nombre de usuario. También se usa el término token de pago para designar un token.
El pago por token permite que los sitios web comerciales ofrecezcan a sus clientes la posibilidad de asociar un medio de pago a un nombre de usuario para facilitar los pagos posteriores en la web (sin necesidad de volver a ingresar su número de tarjeta).
Pago con token
Los token permiten:
- El comprador ya no tendrá que ingresar sus datos bancarios durante los siguientes pagos. En este caso, se presenta una solicitud de confirmación con un resumen de la transacción. Si el medio de pago es una tarjeta bancaria, en este caso, se requerirá el criptograma visual siempre que la tarjeta cuente con uno.
- el pago en 1 clic. Puede crear una transacción a partir de un token sin interacción del usuario. La creación se realiza durante una llamada de servidor a servidor.
- Pago por suscripción. Cada cuenta de cliente está asociada con una recurrencia y un monto, con una duración limitada o no en tiempo.
Bajo ciertas condiciones (consultar con el interlocutor de la plataforma de pago), es posible compartir las identificaciones (token) entre varias entidades jurídicas. Las autentificaciones compartidas por varias entidades jurídicas deben ser únicas y creadas únicamente por la plataforma de pago.
Creación de un token durante un pago
El parámetro formAction permite crear un token. Utilice uno de los siguientes valores:
formAction | Descripción |
---|---|
ASK_REGISTER_PAY | Agrega una casilla en el formulario de pago para registrar la tarjeta |
REGISTER_PAY | El token se creará automáticamente. |
el e-mail es obligatorio para cualquier creación de token.
en la llamada al Web ServiceCharge/CreatePayment:
{ "amount": 9900, "currency": "ARS", "formAction": "ASK_REGISTER_PAY", "orderId": "myOrderId-999999", "customer": { "email": "sample@example.com" } }
/** * I initialize the PHP SDK */ require_once __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/keys.php'; require_once __DIR__ . '/helpers.php'; /** * Initialize the SDK * see keys.php */ $client = new Lyra\Client(); /** * I create a formToken */ $store = array( "amount" => 250, "currency" => "EUR", "formAction" => "ASK_REGISTER_PAY", "orderId" => uniqid("MyOrderId"), "customer" => array( "email" => "sample@example.com" )); $response = $client->post("V4/Charge/CreatePayment", $store); /* I check if there are some errors */ if ($response['status'] != 'SUCCESS') { /* an error occurs, I throw an exception */ display_error($response); $error = $response['answer']; throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] ); } /* everything is fine, I extract the formToken */ $formToken = $response["answer"]["formToken"]; ?>
Al final del pago, el objeto PaymentTransaction contiene el token del modo de pago en la propiedad **paymentMethodToken**:
{ "orderCycle": "CLOSED", "orderStatus": "PAID", "serverDate": "2018-10-02T16:38:13+00:00", "orderDetails": (...) "customer": (...) "transactions": [ { "shopId": "45789921", "uuid": "7af034f2883240c2876f6c61c7eab8ea", "amount": 9900, "currency": "ARS", "paymentMethodType": "CARD", "paymentMethodToken": "b6e51ba31f934ac5b25ccad2a52ccd56", (...) "_type": "V4/PaymentTransaction" } ], "_type": "V4/Payment" }
Creación de un token sin pago
En ciertos casos, solo querrá crear un token sin efectuar ningún cobro. Para ello, necesita utilizar el Web Service Charge/CreateToken:
{ "currency": "ARS", "orderId": "myOrderId-999999", "customer": { "email": "sample@example.com" } }
/** * I initialize the PHP SDK */ require_once __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/keys.php'; require_once __DIR__ . '/helpers.php'; /** * Initialize the SDK * see keys.php */ $client = new Lyra\Client(); /** * I create a formToken */ $store = array( "orderId" => uniqid("MyOrderId"), "customer" => array( "email" => "sample@example.com", )); $response = $client->post("V4/Charge/CreateToken", $store); /* I check if there are some errors */ if ($response['status'] != 'SUCCESS') { /* an error occurs, I throw an exception */ display_error($response); $error = $response['answer']; throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] ); } /* everything is fine, I extract the formToken */ $formToken = $response["answer"]["formToken"]; ?>
el e-mail es obligatorio para cualquier creación de token.
La llamada funciona como Charge/CreatePayment Se creará una transacción de tipo VERIFICATION.
Por lo tanto, kr-answer contendrá un objeto de tipo Payment y el token se devolverá en transactions[0].paymentMethodToken.
Uso de token: pago en un solo clic con visualización del formulario
Si ha registrado un medio de pago (token de tarjeta), puede crear un pago transmitiendo el token que se debe debitar en el campo paymentMethodToken durante una llamada al Web Service Charge/ CreatePayment. Gracias a este método, el comprador no tiene que ingresar de nuevo los datos de la tarjeta. Se muestra un formulario previamente rellenado que el comprador deberá validar.
Si su tienda está configurada para solicitar el CVV o una autentificación 3-D Secure durante un pago por token, el formulario se ajustará automáticamente.
Para usarlo, simplemente envíe el token creado previamente utilizando el Web Service Charge/CreatePayment.
Ejemplo: .
{ "amount": 9900, "currency": "ARS", "paymentMethodToken": "b6e51ba31f934ac5b25ccad2a52ccd56" }
/** * I initialize the PHP SDK */ require_once __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/keys.php'; require_once __DIR__ . '/helpers.php'; /** * Initialize the SDK * see keys.php */ $client = new Lyra\Client(); /** * create a transaction with a payment method token */ $store = array( "amount" => 250, "currency" => "EUR", "paymentMethodToken" => "b6e51ba31f934ac5b25ccad2a52ccd56" ); /** * do the web-service call */ $response = $client->post("V4/Charge/CreatePayment", $store); /* I check if there are some errors */ if ($response['status'] != 'SUCCESS') { /* an error occurs, I throw an exception */ display_error($response); $error = $response['answer']; throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] ); } ?>
Charge/CreatePayment devuelve un formToken. Charge/CreatePayment devuelve un formToken. A continuación, debe generar su formulario de pago utilizando el cliente JavaScript, de la misma manera que un pago simple.
Uso de token: pago sin clics sin visualización del formulario
Puede crear una transacción desde un token sin interacción del usuario (sin solicitud de CVV ni autentificación 3-D Secure). La llamada se realiza de servidor a servidor y devuelve una transacción (sin notificación al final del pago en este caso).
Para ello, realice una llamada al Web Service Charge/CreatePayment transmitiendo el token y estableciendo formAction en SILENT.
Ejemplo: .
{ "amount": 9900, "currency": "ARS", "paymentMethodToken": "b6e51ba31f934ac5b25ccad2a52ccd56", "formAction": "SILENT" }
Charge/CreatePayment regresa directamente una transacción como:
{ "shopId": "45789921", "orderCycle": "CLOSED", "orderStatus": "PAID", "serverDate": "2018-09-27T14:02:17+00:00", "orderDetails": (...) "customer": (...) }, "transactions": [{ "shopId": "45789921", "uuid": "5b158f084502428499b2d34ad074df05", "amount": 990, (...) "_type": "V4/PaymentTransaction" }], "_type": "V4/Payment" }