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

Guia de integração

Esta seção apresenta como implementar as trocas entre o navegador, o servido EC e a plataforma de pagamento quando a autenticação do portador for gerenciada por nosso servidor de autenticação durante o pagamento.

Para comerciantes PCI-DSS que realizaram a autenticação do titular do cartão por meio de seu próprio servidor de autenticação ou por meio do serviço PCI/Authentication/CreateSession , consulte a seção " Autenticação realizada por terceiros ".

1. Adicionar biblioteca JavaScript ao seu site

Para facilitar a integração da solução, nossa biblioteca JavaScript coleta os dados do equipamento e do navegador do cliente, comunica diretamente com o 3DS Server e gerencia a interação do portador de cartão durante o challenge.

No , HEAD da página, você precisa adicionar a biblioteca JavaScript em uma tag <script>.

<head>
 ...
 <script src="https://static.lyra.com/static/js/authenticate-client/V1.0/kr-authenticate.umd.js"></script>
 ...
</head>

2. Iniciar uma solicitação de autenticação do portador

Ligue para o serviço da WebV4.1/PCI/Cobrar/CriarPagamento utilizando os campos abaixo:

NÍVEL SOBRENOME Descrição REQUISITO
1 amount Valor do pagamento na menor unidade da moeda. Sim
1 currency Código (ISO 4217 alfa3) da moeda do pagamento. Sim
1 orderId Referência do pedido( recomendado ). Não
1 formAction Permite indicar se você quer salvar o cartão.

Valores possíveis:

  • PAYMENT
  • REGISTER_PAY

Não
1 customer Objeto com os dados do comprador. Não
1 paymentForms Objeto com os dados do cartão. Sim
2 paymentMethodType Tipo de método de pagamento.Deve ser avaliado em CARTÃO. Sim
2 pan Número de cartão. Sim
2 expiryMonth Mês de vencimento do cartão. Sim
2 expiryYear Ano de vencimento do cartão. Sim
2 securityCode Código de segurança do cartão (CVV ou 4DBC). Não
1 ipnTargetUrl Url para notificar o fim da autenticação Não

Outros campos facultativos estão disponíveis. Encontre a descrição dos campos em nosso playground.

Recomendamos enviar quantos dados puder sobre o comprador via o objeto customer para aumentar as chances de ter uma autenticação frictionless.

Exemplo de solicitação

/pt-BR/rest/V4.0/api/kb/authentication.html
https://github.com/lyra/rest-php-examples/blob/master/www/minimalEmbeddedForm.php#L9-L44
https://api.lyra.com/api-payment/V4.1/PCI/Authentication/CreatePayment
{  
  "amount": "990",
  "currency": "EUR",
  "paymentForms": [
      {
        "pan": "4970110000001003",
        "expiryMonth": 11,
        "expiryYear": 23,
        "securityCode": "123",
        "paymentMethodType": "CARD"
      }
    ],
    "customer": {
      "email": "sample@example.com"
    },
    "ipnTargetUrl": "https://merchant.ipn.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", 
"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"];

?>

Na resposta AuthenticationSessionResponse, encontrará os campos seguintes:

  • answer.operationSessionId: identificador de sessão de autenticação (para guardar)
  • answer.operationUrl: url para enviar à biblioteca JavaScript

Encontre a descrição dos campos em nosso playground.

Exemplo de resposta

{
  "webService":"PCI/Charge/CreatePayment",
  "version":"V4",
  "applicationVersion":"6.0.0",
  "serverDate":"2023-04-16T11:11:21+00:00",
  "ticket":"839ecda45f6449a8869747a80c26b2d2",
  "applicationProvider":"LYRA",
  "metadata":null,
  "status":"SUCCESS",
  "mode":"TEST",
  "serverUrl":"https://api.lyra.com",
  "_type":"V4/WebService/Response",
  "answer":{
    "operationSessionId":"30641640cba14eab8e6766094fd201da",
    "operationUrl":"https://api.lyra.com/api-payment/V4/Charge/Public/Authenticate/Payment/Session/30641640cba14eab8e6766094fd201da;JSESSIONID=7A4beEA2d5fdbFeA7389F3B91a7bDBaBc8DA9df5.default-hostname",
    "_type":"V4/PCI/Authentication/AuthenticationSessionResponse"
  }
}

No exemplo:

  • answer.operationSessionId: "30641640cba14eab8e6766094fd201da"
  • answer.operationUrl: "https://api.lyra.com/api-payment/V4/Charge/Public/Authenticate/Payment/Session/30641640cba14eab8e6766094fd201da;JSESSIONID=7A4beEA2d5fdbFeA7389F3B91a7bDBaBc8DA9df5.default-hostname"

3. Inicializar o script de autenticação

Uma vez que a sessão de autenticação foi criada, deve inicializar a biblioteca de autenticação JavaScript e depois chamar o método authenticate. Recomendamos adicionar um indicador visual de carregamento durante esta chamada.

// définition de la class javascript
class KrAuthenticate{
  constructor(publicKey,options)
  authenticate(operationUrl)
}

1. Parâmetros de inicialização de classe KrAuthenticate

SOBRENOME Descrição REQUISITO
publicKey Chave pública de TESTE ou PRODUÇÃO para a loja. Mais informações : ** 3ª chave na tabela de chaves API REST.. Sim
options Elemento do DOM no qual será exibido a janela de autenticação (facultativo). Não

Também pode exibir a janela de autenticação em um outro elemento do DOM graças ao atributo element do parâmetro facultativo opções.

  • Sem elemento DOM ( recomendado ) :
  const krAuthenticate = new KrAuthenticate("69876357:testpublickey_DEMOPUBLICKEY95me92597fd28tGD4r5");
  • Com o elemento DOM:
  const krAuthenticate = new KrAuthenticate("69876357:testpublickey_DEMOPUBLICKEY95me92597fd28tGD4r5", {
 element: document.getElementById("id-challenge-element")
  });

Neste exemplo, o id do elemento do DOM é: id-challenge-element.

2. Parâmetros do método de execução de autenticação KrAuthenticate.authenticate

Use o campo operationUrl gerado durante a criação da sessão (etapa 2).

SOBRENOME Descrição REQUISITO
operationUrl URL de inicialização de autenticação fornecido na resposta do serviço V4.1/PCI/Charge/CreatePayment no objeto answer/AuthenticationSessionResponse#operationUrl. Sim

Exemplo: .

  • operationUrl: "https://api.lyra.com/api-payment/V4/Charge/Public/Authenticate/Payment/Session/30641640cba14eab8e6766094fd201da;JSESSIONID=7A4beEA2d5fdbFeA7389F3B91a7bDBaBc8DA9df5.default-hostname"

3. Exemplo de código com a classe ,KrAuthenticate,e o método KrAuthenticate.authenticate

Exemplo de integração usando bootstrap, JQuery e a biblioteca:

<!-- import JS -->
    [...]
    <script src='https://static.lyra.com/static/js/authenticate-client/V1.0/kr-authenticate.umd.js'></script>
    [...]
    
    <form action='javascript:authenticatePayment()'>
      <button id='submitButton' type='submit' class='btn btn-primary'>Authenticate</button>
    </form>
    [...]

    <script>
    // instantiate library
    const krAuthenticate = new KrAuthenticate('69876357:testpublickey_DEMOPUBLICKEY95me92597fd28tGD4r5');

    // Callback removing the overlay
    function myCallback(data){
        document.getElementById('overlay').remove();
    }

    // this is an example of overlay with a bootstrap spinner
    function buildOverlay(){
        let overlay = document.createElement('div');
        overlay.setAttribute('id', 'overlay');
        overlay.style.backgroundColor = '#D3D3D3';
        overlay.style.height = '100%';
        overlay.style.position = 'absolute';
        overlay.style.top = '0';
        overlay.style.opacity = '0.90';
        overlay.style.width = '100%'
        overlay.classList.add('d-flex', 'justify-content-center', 'flex-column', 'align-items-center');
        overlay.innerHTML = `
<div class="spinner-border" role="status">
<span class="sr-only">Loading...</span>
</div>
        `;
        document.body.appendChild(overlay);
    }

    // Main function triggered by button
    function authenticatePayment(){
        document.querySelector('#submitButton').disabled = true;
        buildOverlay();
        krAuthenticate.authenticate("https://theUrlFromThePciCall", myCallback);
    }</script>

4. Executar a biblioteca JavaScript

A biblioteca JavaScript é responsável por realizar todas as ações necessárias à autenticação.

Tipo de autenticação. Descrição Teste
3DS2 Frictionless, sans 3DS Method A autenticação é realizada sem nenhuma interação do portador. 3DS2 - Autenticação Frictionless, sem 3DS Method
3DS2 Frictionless, avec 3DS Method Um script (3DS Method) é executado antes da autenticação que opera depois sem intervenção do portador. 3DS2 - Autenticação Frictionless, com3DS Method
3DS2 Challenge, sans 3DS Method A autenticação requer ações por parte do portador. 3DS2 - Autenticação Challenge, sem3DS Method
3DS2 Challenge, avec 3DS Method Um script (3DS Method) é executado antes das ações de autenticação do portador. 3DS2 - Autenticação Challenge, com3DS Method

Consulte a seção Testes e casos de uso para obter mais exemplos.

5. Análise do resultado do pagamento

No final da autenticação e da solicitação de autorização, a plataforma retorna um objeto Payment na IPN. Ele descreve o detalhe do pagamento (status do pagamento, resultado da solicitação de autorização, resultado da autenticação do portador, etc...).

  • Mais informações : Payment.

Gerenciamento do timeout

A duração da sessão de pagamento é definida para 10 minutos . Após esse tempo, caso o IPN não tenha sido configurado pelo comerciante, recomenda-se realizar uma chamada para o Web Service.Encomendar/Obter para obter o resultado do pagamento.

Jobs
Legal
GDPR
25.32-1.11