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 .
- campo
amount
com o valor da pedido. - campo
currency
com a moeda de pagamento, de acordo com a ISO 4217 alfa-3. - campo
useCase
com 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.
- campo
uuid
: referência única da transação inicial. - campo
amount
: quantidade de produtos despachados.
A plataforma cria uma transação de débito no valor das produtos enviados.
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 ".
{ "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">
{
 "amount": 200050,
 "currency": "PEN",
 "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_PE",
 "dataCollectionForm": "false"
}
</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 valorf183418d08df49f3900bbd74ef837816
. 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 "
{ "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 valor
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 "
{ "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 valor
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 "
{ "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 valor
Mais informações :referência de status
Gerenciamento dos erros
Tableau des erreurs
Código | Descrição |
---|---|
Formato do campo amount inválido ou campo não enviado. | |
Formato do campo currency inválido ou campo não enviado. | |
Parâmetro strongAuthentication é inválido. | |
Moeda desconhecida. | |
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.