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

Realizar um pagamento no envio

Contexto

O pagamento na hora do despacho é uma nova funcionalidade, conforme o regulamento da DSP2 (segunda Diretiva europeia relativa aos serviços de pagamento). O EC pode realizar vários despachos para um mesmo pedido dentro de um prazo máximo de 180 dias.

Caso de uso

O pagamento no envio funciona em etapas:

1. Transaction initiale

Ao fazer o pedido, crie uma transação inicial com o serviço web Charge/CreatePayment .

  • campoamountcom o valor da pedido.
  • campocurrencycom a moeda de pagamento, de acordo com a ISO 4217 alfa-3.
  • campouseCasecom o valorSHIPMENT_MULTIPLE_AUTHORISATION.

A plataforma de pagamento cria uma transação de verificação, válida por 180 dias. O comprador é autenticado no valor total do pedido, mas o cartão não será debitado imediatamente.

2. Transaction d'expédition

Para cada gatilho de remessa, crie uma transação de remessa com a Taxa de Serviço Web/CreateShipmentTransaction associada à transação inicial.

  • campouuid: referência única da transação inicial.
  • campoamount: quantidade de produtos despachados.

A plataforma cria uma transação de débito no valor das produtos enviados.

O comprador somente será debitado na captura da transação de despacho.

Esquema

Cinématique du paiement

Exemplo

  • Seu comprador faz o pedido de 3 produtos (EUR 35, EUR 25 e EUR 14,12) em um total de EUR 72,12.

  • Se os 3 produtos não estiver em estoque, o EC decide fazer pagamento no despacho com autorizações múltiplas.

    O comprador é autenticado no valor total (72.12 EUR) na criação da transação inicial mas somente será debitado a cada despacho.

    Você usará a transação inicial (o pagamento feito pelo comprador) para criar uma nova transação sempre que o envio for acionado. Por exemplo:

    • 3 dias após o pedido, você aciona o envio do produto nº 1. Você então cria uma transação de envio de 35 euros. O comprador será cobrado em 35 euros.
    • Dez dias após o pedido, você aciona o envio do produto nº 2. Você cria uma nova transação de envio de 25 euros. E o comprador será cobrado em mais 25 euros.
    • 20 dias após o pedido, você aciona o envio do produto nº 3. Você então cria uma transação de envio de EUR 14,12. E o comprador será debitado com os EUR 14,12 restantes.

    Se a transação for realizada na rede CB, todas as três transações beneficiarão de garantia de pagamento porque o acionamento do envio ocorreu nos 30 dias seguintes ao pedido.

Solicitação

Exemple d'une transaction initiale

Campos obrigatórios:

  • Valor: 72,12 €
  • Casos de uso:AUTORIZAÇÃO_MÚLTIPLA_DE_ENVIO para solicitar múltiplas autorizações.

. Campos recomendados:

  • Referência do pedido: "myOrder-1234-initial".
  • E-mail do comprador: " sample@example.com ".
/pt-BR/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreatePayment
    {
        "amount": 7212,
        "currency": "EUR",
        "customer": {
          "email": "sample@example.com"
        },
        "orderId": "myOrder-1234-initial",
        "useCase": "SHIPMENT_MULTIPLE_AUTHORISATION"
      }
<!-- <pre data-language="json" data-market="es-PE">&#010;{&#010;    &quot;amount&quot;: 200050,&#010;    &quot;currency&quot;: &quot;PEN&quot;,&#010;    &quot;orderId&quot;: &quot;myOrderId-999999&quot;,    &#010;    &quot;channelOptions&quot;: {&#010;      &quot;channelType&quot;: &quot;MAIL&quot;,&#010;      &quot;mailOptions&quot;: {&#010;        &quot;recipient&quot;: &quot;sample@example.com&quot;&#010;      }&#010;    },&#010;    &quot;paymentReceiptEmail&quot;: &quot;sample@example.com&quot;,&#010;    &quot;expirationDate&quot;: &quot;2020-04-20T20:13:26+02:00&quot;,&#010;    &quot;locale&quot;: &quot;es_PE&quot;,&#010;    &quot;dataCollectionForm&quot;: &quot;false&quot;&#010;}&#010;</pre>
{
    "amount": 200050,
    "currency": "ARS",
    "orderId": "myOrderId-999999",    
    "channelOptions": {
      "channelType": "MAIL",
      "mailOptions": {
        "recipient": "sample@example.com"
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "es_AR",
    "dataCollectionForm": "false"
}
{
    "amount": 200050,
    "currency": "COP",
    "orderId": "myOrderId-999999",   
    "channelOptions": {
      "channelType": "MAIL",
      "mailOptions": {
        "recipient": "sample@example.com"
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "es_CO",
    "dataCollectionForm": "false"
}
{
    "amount": 200050,
    "currency": "BRL",
    "orderId": "myOrderId-999999",   
    "channelOptions": {
      "channelType": "MAIL",
      "mailOptions": {
        "recipient": "sample@example.com"
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "pt_BR",
    "dataCollectionForm": "false"
}
-->
/**
 * 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"];

?>
/**
 * 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"];

?>

Para conhecer todos os detalhes e descrições dos campos, consulte o playground: Charge/CreatePayment (menu à esquerda).

Resposta

Recupere o formToken para exibir o formulário de pagamento (Mais informações: Etapa 4: Exibir o formulário de pagamento )

O comprador autentica o valor total do pedido, mas o cartão não será debitado imediatamente. A plataforma de pagamento cria uma transação de verificação, válida por 180 dias.

Exemplo de resposta

   
      "kr-answer": {
          "shopId": "12345678",
          "orderCycle": "CLOSED",
          "orderStatus": "PAID",
            "orderDetails": {
              "orderTotalAmount": 7212,
              "orderEffectiveAmount": 7212,
              "orderCurrency": "EUR",
              "mode": "TEST",
              "orderId": "myOrder-1234-initial",
              "metadata": null,
              "_type": "V4/OrderDetails"
            },
            "transactions": [
            {
              "shopId": "12345678",
              "uuid": "f183418d08df49f3900bbd74ef837816",
              "amount": 12500,
              "currency": "EUR",
              "paymentMethodType": "CARD",
              "paymentMethodToken": null,
              "status": "PAID",
              "detailedStatus": "ACCEPTED",
              "operationType": "VERIFICATION",
                    "orderId": "myOrderId-1234",
                    
                    "_type": "V4/Charge/CreateQRCodeResponse"
                },    
              (...)   
    "_type": "V4/WebService/Response" 
}

}
  • Analisar o resultado do pagamento (Mais informações: Etapa 5: Analisar o resultado do pagamento ).

  • Mantenha o uuid da transação original. No exemplo, [transactions][0].[uuid] tem o valor f183418d08df49f3900bbd74ef837816 . Esses dados são necessários para criar transações de envio.

Exemple de la transaction d'expédition 1

Solicitação

Campos obrigatórios:

  • Valor: 35,00 €
  • UUID : referência única da transação inicial:f183418d08df49f3900bbd74ef837816

. Campos recomendados:

  • E-mail do comprador: " sample@example.com "
/pt-BR/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateShipmentTransaction
      {
        "amount": 3500,
        "customer": {
          "email": "sample@example.com"
        },
        "uuid": "f183418d08df49f3900bbd74ef837816"
      }

Para conhecer todos os detalhes e descrições dos campos, consulte o playground: Charge/CreateShipmentTransaction (menu à esquerda).

Resposta à solicitação

   
      {
        "webService": "Charge/CreateShipmentTransaction",
        "version": "V4",
        "applicationVersion": "6.12.0",
        "status": "SUCCESS",
        "answer": {
          "shopId": "12345678",
          "uuid": "7b8179b7845e4576868d624039b754c5",
          "paymentMethodType": "CARD",
          "paymentMethodToken": null,
          "detailedStatus": "AUTHORISED",
          "status": "PAID",
          "amount": 3500,
          "currency": "EUR",
              (...)   
    "_type": "V4/WebService/Response" 
}

}

O valorPAIDdo campostatussignifica que a transação foi aceita.
Mais informações :referência de status

Exemple de la transaction d'expédition 2

Solicitação

Campos obrigatórios:

  • Valor: 25,00 €
  • UUID : referência única da transação inicial:f183418d08df49f3900bbd74ef837816

. Campos recomendados:

  • E-mail do comprador: " sample@example.com "
/pt-BR/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateShipmentTransaction
      {
        "amount": 2500,
        "customer": {
          "email": "sample@example.com"
        },
        "uuid": "f183418d08df49f3900bbd74ef837816"
      }

Para conhecer todos os detalhes e descrições dos campos, consulte o playground: Charge/CreateShipmentTransaction (menu à esquerda).

Resposta à solicitação

   
      {
        "webService": "Charge/CreateShipmentTransaction",
        "version": "V4",
        "applicationVersion": "6.12.0",
        "status": "SUCCESS",
        "answer": {
          "shopId": "12345678",
          "uuid": "7b8179b7845e4576868d624039b754c5",
          "paymentMethodType": "CARD",
          "paymentMethodToken": null,
          "detailedStatus": "AUTHORISED",
          "status": "PAID",
          "amount": 2500,
          "currency": "EUR",
              (...)   
    "_type": "V4/WebService/Response" 
}

}

O valorPAIDdo campostatussignifica que a transação foi aceita.
Mais informações :referência de status

Exemple de la transaction d'expédition 3

Solicitação

Campos obrigatórios:

  • Valor: 14,12 €
  • UUID : referência única da transação inicial:f183418d08df49f3900bbd74ef837816

. Campos recomendados:

  • E-mail do comprador: " sample@example.com "
/pt-BR/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateShipmentTransaction
      {
        "amount": 1412,
        "customer": {
          "email": "sample@example.com"
        },
        "uuid": "f183418d08df49f3900bbd74ef837816"
      }

Para conhecer todos os detalhes e descrições dos campos, consulte o playground: Charge/CreateShipmentTransaction (menu à esquerda).

Resposta à solicitação

   
      {
        "webService": "Charge/CreateShipmentTransaction",
        "version": "V4",
        "applicationVersion": "6.12.0",
        "status": "SUCCESS",
        "answer": {
          "shopId": "12345678",
          "uuid": "7b8179b7845e4576868d624039b754c5",
          "paymentMethodType": "CARD",
          "paymentMethodToken": null,
          "detailedStatus": "AUTHORISED",
          "status": "PAID",
          "amount": 1412,
          "currency": "EUR",
              (...)   
    "_type": "V4/WebService/Response" 
}

}

O valorPAIDdo campostatussignifica que a transação foi aceita.
Mais informações :referência de status

Gerenciamento dos erros

Tableau des erreurs
Código Descrição
INT_009 Formato do campo amount inválido ou campo não enviado.
INT_010 Formato do campo currency inválido ou campo não enviado.
INT_050 Parâmetro strongAuthentication é inválido.
PSP_519 Moeda desconhecida.
PSP_606 Moeda não suportada pelo contrato.

Análise do resultado do pagamento

1. Para a transação inicial

Implémentez l'URL de notification à la fin du paiement (également appelée IPN) pour analyser le résultat et conserver l'uuid de la transaction initiale.

  • Informe apenas o URL da notificação na seção API REST (TEST ou PRODUCTION): Procedimento.
  • Analisar o IPN: Procedimento.
2. Para transações de envio

Le Web Service retourne un objet de type Transaction de débit.

Jobs
Legal
GDPR
25.22-1.11