• Francia
página de estado
demo
asistencia
FAQContacte el soporte tecnico
Buscar
Categoria
Tags
España
Francia
España
Europa (Inglés)
India
Página principal
Casos de uso
Crear un pago
Crear un pago en vencimientos
Crear un pago multitarjeta
Crear un pago por token
Crear un enlace de pago
Crear una suscripción
Gestione sus suscripciones
Gestione sus transacciones
Analizar los diarios
Docs API
Formulario incrustado
API REST
Formulario en redirección
Pago móvil
Intercambio de ficheros
Ejemplo de código
Medios de pago
Plugins
Guías
Back office Experto
Guías funcionales

Crear una transacción (PCI y 3-D Secure)

La activación de esta funcionalidad está sujeta a la aprobación previa de Lyra.

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.

Importante: Una nueva versión del protocolo 3-D Secure se está desarrollando. Esta versión 2 será obligatoria a partir de septiembre de 2019. Dos nuevas respuestas serán devueltas por el Web Service Charge/CreatePayment. Para más información consulte este artículo.

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:

https://github.com/lyra/rest-php-examples/blob/master/www/keys.PCI.php

<?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 :

/es/rest/V4.0/api/kb/authentication.html
https://github.com/lyra/rest-php-examples/blob/master/www/PCI.3DS.php#L9-L50
https://api.lyra.com/api-payment/V4/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": "LYRA",
    "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:

https://github.com/lyra/rest-php-examples/blob/master/www/PCI.3DS.php#L74-L83
<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.

Jobs
Legal
GDPR
25.22-1.11