• França
lyra.com
Procurando
Categoria
Tags
pagina inicial
Suporte técnico

Criar uma transação (PCI e 3D Secure)

Ativação desta funcionalidade sujeita à uma autorização prévia do Lyra.

Se você tiver a certificação PCI-DSS, você está habilitado para coletar os dados sensíveis do meio de pagamento em seu site. Você pode depois criar uma nova transação com o Web Service Charge/CreatePayment enviando os dados sensíveis do meio de pagamento.

O exemplo de integração explica como criar um pagamento com uma autenticação alta, como 3D Secure ou SafeKey.

Atenção, uma nova versão do protocolo 3D Secure está sendo desenvolvida. Esta versão 2 será obrigatória a partir do mês de setembro de 2019. Duas novas respostas serão retornadas pelo Web Service Charge/CreatePayment. Para maiores informações, consulte este artigo.

Cinemática do pagamento com autenticação 3D Secure

Diversas trocas ocorrem durante uma transação com autenticação forte:

Navegador do comprador

Servidor Estabelecimento Comercial

Servidor da Plataforma de pagamento

Descrição das etapas:

Etapa Descrição
1 O comprador envia os dados do meio de pagamento ao servidor do Estabelecimento Comercial.
2 Chamada de Charge/CreatePayment para criar uma nova transação.
3 Se uma autenticação 3D Secure for necessária, o Web Service retorna uma resposta de tipo V4/Charge/RedirectRequest.
4 O EC redireciona o comprador para a página 3D Secure do seu banco.
5 Uma vez que o comprador foi autenticado, o navegador é redirecionado para a plataforma de pagamento.
6 A plataforma de pagamento vai criar a transação e chamar a URL definida no parâmetro merchantPostUrlSuccess na primeira chamada.
7 O EC verifica o andamento da transação e redireciona o comprador para a página de confirmação de compra.

As URLs de retorno podem ser definidas usando dois parâmetros durante a etapa 1:

  • merchantPostUrlSuccess : se a transação for autorizada
  • merchantPostUrlRefused : se a transação for recusada

Se merchantPostUrlRefused não for definido em caso de transação recusada, o comprador será redirecionado para merchantPostUrlSuccess.

Preparar seu ambiente

Se você usar PHP com nosso SDK, recomendamos salvar todas suas chaves em um arquivo de configuração.

Exemplo com as chaves de testes:

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");

Não esqueça de substituí-las pelas suas chaves pessoais.

Para maiores informações, consultar SDKs server e Pré-requisitos

Iniciar a transação

Para criar uma nova transação a partir de um novo meio de pagamento, é preciso usar o Web Service Charge/CreatePayment :

/pt-BR/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);

A resposta 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"
}

Se o tipo do objeto não for V4/Charge/RedirectRequest mas V4/Payment , 3D Secure não será requerido, e a resposta apresentará o detalhe da transação (objeto Transaction ). Para maiores detalhes, Consulte Criar uma transação (PCI).

Para maiores informações sobre o Web Service: PCI/Charge/CreatePayment.

Autenticação (3DS)

O Estabelecimento Comercial deve redirecionar o comprador para a página de autenticação. Será preciso para isso criar um formulário que será automaticamente apresentado e com as características seguintes:

  • URL alvo (action) definida no parâmetro redirectUrl
  • Campos ocultos (hidden input) contendo os dados definidos em postData
  • o método é sempre POST

Exemplo de formulário de redirecionamento:

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 o detalhe da transação

Uma vez que a autenticação foi realizada pelo seu comprador, a transação é criada pela plataforma de pagamento. O detalhe da transação é enviado para a URL definida em merchantPostUrlSuccess ou merchantPostUrlRefused em função do resultado do pagamento.

Consulte Analisando o resultado do pagamento via devolução à loja para obter detalhes.

Jobs
Legal
GDPR
25.25.0-1.11