Cobrança com 3DS2
Como funciona o 3D Secure 2
Quando uma cobrança é enviada com dados de 3DS2, o provedor irá solicitar uma analise ao banco emissor.
O banco emissor pode exigir que o cliente faça uma autenticação. Esse processo é conhecido como desafio.
Uma cobrança pode ser autorizada pelo banco emissor sem exigir desafio.
A cobrança com desafio exigirá uma ação por parte do usuário para autenticar a transação.
Nesse caso o usuário será redirecionado ao banco para autenticar a transação.
O resultado final da transação será enviado via webhook
Cobrança com 3D Secure 2
Para iniciar uma cobrança com 3DS2, primeiro certifique-se de que o provedor está na lista de provedores suportados.
Inclua o objeto threeDSecure2 na cobrança.
Principais informações
- redirectURL: A URL que o provedor irá utilizar para retornar ao site de origem após o redirecionamento
- requestorURL: A URL do site do portador do cartão
- browser: Dados do navegador do portador do cartão
- cardHolder: Dados do portador do cartão
- billingAddress: Endereço de cobrança
- shippingAddress: Endereço para envio
Exemplo de cobrança com 3D Secure 2
curl --location --request POST 'https://api.malga.io/v1/charges' \
--header 'X-Client-Id: <YOUR_CLIENT_ID>' \
--header 'X-Api-Key: <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchantId": "469ed9e8-97d1-433a-a586-2fd282b7d9a4",
"amount": 100,
"statementDescriptor": "Pedido #231 loja joão",
"capture": true,
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"paymentSource": {
"sourceType": "card",
"card": {
"cardHolderName": "JOSE DAS NEVES",
"cardNumber": "4929564637987814",
"cardCvv": "123",
"cardExpirationDate": "12/2026"
}
},
"threeDSecure2": {
"redirectURL": "http://your-company/receive",
"requestorURL": "http://your-company",
"browser": {
"acceptHeader": "*/*",
"colorDepth": 24,
"javaEnabled": true,
"javaScriptEnabled": true,
"language": "pt-BR",
"screenHeight": 1080,
"screenWidth": 1920,
"timeZoneOffset": "180",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
"ip": "0.0.0.0"
},
"cardHolder": {
"email": "cardHolder@email.com",
"mobilePhone": "11 99329899"
},
"billingAddress": {
"city": "Rio de Janeiro",
"country": "Brasil",
"streetNumber": "45",
"zipCode": "2547896",
"state": "RJ",
"street": "Av. Brasil"
},
"shippingAddress": {
"city": "São Paulo",
"country": "Brasil",
"streetNumber": "45",
"zipCode": "2957896",
"state": "SP",
"street": "Rua das Flores"
}
}
}'
Exemplo de resposta com 3D Secure 2
{
"clientId": "8827fe85-7a47-42c6-b331-769c243a5893",
"merchantId": "469ed9e8-97d1-433a-a586-2fd282b7d9a4",
"description": null,
"orderId": null,
"createdAt": "2023-02-24T21:46:36.392Z",
"amount": 100,
"originalAmount": 100,
"currency": "BRL",
"statementDescriptor": "Pedido #231 loja joão",
"capture": true,
"isDispute": false,
"status": "pending",
"paymentMethod": {
"installments": 1,
"paymentType": "credit"
},
"paymentSource": {
"sourceType": "card",
"cardId": "8747b602-02d5-4246-9e3a-2be879c126f7"
},
"transactionRequests": [
{
"idempotencyKey": "00f9729c-6cd3-4529-adec-74b3efd96263",
"providerId": "617fe0b0-f0ff-4e73-b6f1-1c765e59f1f5",
"providerType": "ADYEN",
"transactionId": null,
"amount": 100,
"authorizationCode": null,
"authorizationNsu": null,
"requestStatus": "processing",
"requestType": "authorization",
"responseTs": "971ms",
"providerAuthorization": {
"networkAuthorizationCode": null,
"networkResponseCode": "RedirectShopper"
}
}
],
"threeDSecure2": {
"redirectURL": "http://your-company/receive",
"requestorURL": "http://your-company",
"browser": {
"acceptHeader": "*/*",
"colorDepth": 24,
"javaEnabled": true,
"javaScriptEnabled": true,
"language": "pt-BR",
"screenHeight": 1080,
"screenWidth": 1920,
"timeZoneOffset": "180",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
"ip": "127.0.0.1"
},
"billingAddress": null,
"shippingAddress": null,
"cardHolder": null,
"authData": {
"action": "REDIRECT",
"providerType": "ADYEN",
"responseType": "AUTHENTICATION",
"response": {
"md": "M2RzMi5lZTBiZTgzZTdmZDBlZDk...AkHGAAAA",
"url": "https://checkoutshopper-test.adyen.com/checkoutshopper/threeDS2.shtml?pspReference=8636772643981111",
"paReq": "BQABAgB-MNl4GsRJSf5EmZE8guLfFQX7Q5Q...L_dRprriZL72QXGCtIPK-Hd",
"termUrl": "https://checkoutshopper-test.adyen.com/checkoutshopper/threeDS/return/H4sIAAAAAAAA_..."
}
}
}
}
A resposta da transação irá incluir o objeto authData dentro do objeto threeDSecure2, com dados para a ação de autenticação.
Examinando o objeto authData
- O atributo action representa que tipo de ação foi solicitada para autenticação.
- O atributo providerType identifica em qual provedor o 3DS2 foi processado.
- O atributo responseType mostra qual é a etapa do desafio, podendo ser uma etapa de autenticação ou autorização.
- O atributo response é um objeto dinâmico com a resposta do provedor com dados para autenticação.
Os provedores implementam o desafio de formas diferentes, exigindo tratamentos específicos.
Na próxima sessão iremos mostrar como lidar com o fluxo com desafio.