Crear una transacción (PCI y 3-D Secure)
Si tiene la certificación PCI DSS, está autorizado a recolectar la información confidencial del medio de pago en su sitio. Puede crear una nueva transacción con el Web Service Charge/CreatePayment transmitiendo la información confidencial del medio de pago.
El ejemplo de integración explica cómo crear un pago con autentificación fuerte, como el 3-D Secure o SafeKey.
Cinemática del pago con autentificación 3-D Secure
Varios intercambios están involucrados en una transacción con autentificación fuerte:
Navegador del comprador
Servidor Vendedor
Servidor de la Plataforma de Pago.
Descripción de las etapas:
Etapa | Descripción |
---|---|
1 | El comprador transmite la información del medio de pago al servidor del vendedor. |
2 | Llamada del Charge/CreatePayment para crear una nueva transacción. |
3 | Si una autentificación 3-D Secure es necesaria, el Web Service devuelve una respuesta del tipo V4/Charge/RedirectRequest. |
4 | El vendedor redirige al comprador a la página 3-D Secure de su banco. |
5 | Tras la autentificación del comprador, se redirige al navegador a la plataforma de pago. |
6 | La plataforma de pago va crear una transacción y llamar la URL definida en el parámetro merchantPostUrlSuccess durante la primera llamada. |
7 | El vendedor comprueba el estado de la transacción y redirige al comprador a la página de confirmación de la compra. |
Las URL de retorno se pueden definir mediante dos parámetros en la etapa 1:
- merchantPostUrlSuccess : si la transacción es autorizada
- merchantPostUrlRefused : si la transacción es rechazada
Si merchantPostUrlRefused no es definido en caso de una transacción rechazada, el comprador es redirigido a merchantPostUrlSuccess.
Preparar su entorno
Si usa PHP con nuestro SDK, le recomendamos que agrupe sus claves en un archivo de configuración.
Ejemplo con claves de test:
<?php /** * Get the client */ require_once __DIR__ . '/vendor/autoload.php'; /** * Define configuration */ /* Username, password and endpoint used for server to server web-service calls */ Lyra\Client::setDefaultUsername("69876357"); Lyra\Client::setDefaultPassword("testpassword_DEMOPRIVATEKEY23G4475zXZQ2UA5x7M"); Lyra\Client::setDefaultEndpoint("https://api.payzen.eu");
Recuerde sustituirlas por sus claves personales.
Para más información, vea Servidor de SDK y Requisitos previos
Iniciar la transacción
Para crear una nueva transacción a partir de un nuevo modo de pago, es necesario utilizar el Web Service Charge/CreatePayment :
{ "amount": 990, "currency": "EUR", "merchantPostUrlSuccess": "http://mockbin.com/request", "merchantPostUrlRefused": "http://mockbin.com/request", "paymentForms": [ { "paymentMethodType": "CARD", "pan": "4970100000000055", "expiryMonth": "11", "expiryYear": "21", "securityCode": "123" } ] } }
/** * I initialize the PHP SDK */ require_once __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/keys.PCI.php'; require_once __DIR__ . '/helpers.php'; /** * Initialize the SDK * see keys.php */ $client = new Lyra\Client(); /** * Define the card to use (we use a 3DS enabled card) */ $card = array( "paymentMethodType" => "CARD", "pan" => "4970100000000022", "expiryMonth" => "11", "expiryYear" => "21", "securityCode" => "123" ); /** * starting to create a transaction */ $store = array( "amount" => 250, "currency" => "EUR", "paymentForms" => array($card), "merchantPostUrlSuccess" => "http://mockbin.com/request", "merchantPostUrlRefused" => "http://mockbin.com/request", "customer" => array( "email" => "sample@example.com", "orderId" => uniqid("MyOrderId") )); /** * do the web-service call */ $response = $client->post("V4/Charge/CreatePayment", $store);
La respuesta será:
{ "webService": "Charge/CreatePayment", "version": "V4", "applicationVersion": "4.6.1", "status": "SUCCESS", "answer": { "redirectUrl": "https://authentication-server-url/buyer-bank", "width": 390, "height": 434, "template": "3dsecure", "postData": { "MD": "JSESSIONID=f9a1CBA1beF8AbAfFE89bD35.vadpayment01tls;+_CqX06BsfWgStNNUg7VgJ", "PaReq": "eJxVUttu2zAM/RXD74skp/EloFW0CYp1QINuSW9+GVSJcYwlcmLJS9yvn+Q6a6sX8VDE4eGh4PK02wZ/sTFVrfOQjWgYoJa1qnSZhw+rm29pGBgrtBLbWmMedmjCSw6rTYM4X6JsG+Rwh8aIEoNK5eHv2eGZxtdm/VQu7WLxUCaP5Y+Qw/3VLzxwGFpx12kUATlDR9HIjdCWg5CH69sFv8iSmFIgA4QdNrdzTvuTAXmHoMUO+bIOUJgusHVg0VggfRZk3WrbdDyaOJozgLbZ8o21+ykhx+NxtBfdG+oRtkD8C5APIfetj4xjOlWK/xzfvNzNi5mMiueCLejqz+SxeFNPBa1zIL4ClLDII8oyGtE0oNk0SqeTBEifB7HzEniW+aHeY9j7FlefHj4nwJnbuGV0PEtSN8EZAZ72bheuwhn4PwaFRjr9w/UhfvbdeyqtsyuR48l6jAJjjC7WGKWxShhbx6+vinmn+yJPX3nbGGM9vwdAPA0ZlkiGhbvoy0f4B/cLwxM=", "TermUrl": "https://payment-service-provider-return-url" }, "allowIFrame": true, "hideAtStartup": false, "hideTimeout": 15, "_type": "V4/Charge/RedirectRequest" }, "ticket": null, "serverDate": "2019-02-08T09:28:57+00:00", "applicationProvider": "PAYZEN", "metadata": null, "_type": "V4/WebService/Response" }
Si el tipo del objeto devuelto no es V4/Charge/RedirectRequest sino que V4/Payment , 3-D Secure no es obligatorio y la respuesta contiene los detalles de la transacción (objeto Transaction ). Para más información, consulte Crear una transacción (PCI).
Más información sobre el Web Service: PCI/Charge/CreatePayment.
autentificación (3DS)
El vendedor debe redirigir al comprador hacia la página de autentificación. Para ello, debe crear un formulario que será enviado automáticamente con las siguientes características:
- URL fuente (action) definido en el parámetroredirectUrl
- campos de entrada ocultos (hidden input) que contienen los datos definidos en postData
- el método es siempre POST
Ejemplo del formulario de re direccionamiento:
<form id="goTo3DS" action="https://authentication-server-url/buyer-bank" method="POST"> <input type='hidden' name='MD' value='JSESSIONID=3f1c1eD7716a696FB1F74d21.vadpayment02tls;+_Z5NVQRqn73uWdF7SOLhL'> <input type='hidden' name='PaReq' value='eJxVUttSwjAQ/ZVO3yXpzVJmG8cbozMiKgjqixOTVepACk0q1K83KfWWl(...)'> <input type='hidden' name='TermUrl' value='https://payment-service-provider-return-url'> </form> <script type="text/javascript"> document.getElementById('goTo3DS').submit(); </script>
<form id="goTo3DS" action="<?php echo $redirectRequest['redirectUrl'] ?>" method="POST"> <?php foreach ($redirectRequest['postData'] as $key => $value) { echo "<input type='hidden' name='".htmlentities($key)."' value='".htmlentities($value)."'>\n"; } ?> </form> <script type="text/javascript"> document.getElementById('goTo3DS').submit(); </script>
Recuperar el detalle de la transacción.
Una vez que la autentificación se efectuó, para la plataforma de pago la transacción ha sido creada. El detalle de la transacción es transmitido al URL definido en el merchantPostUrlSuccess o merchantPostUrlRefused según el resultado del pago.
Consultez Analyse du résultat du paiement via le retour à la boutique pour plus de détails.