Pagamento com 3DS
Dados da API
- Dados da API:
- URL: https://api.sopague.com.br/gateway
- Arquitetura: Representational State Transfer (REST)
Realizar Operação de Pagamento com 3DS
Para criar uma transação que utilizará cartão de débito, envie uma requisição POST
para o endpoint v1/payments/3ds
. Certifique-se de que as bibliotecas de Antifraude e 3DS estejam corretamente implementadas. Consulte as seções correspondentes nesta documentação para mais informações.
POST
/v1/payments/3ds
Via request Representational State Transfer (REST) com o body:
Requisição
{
"cardInfo": {
"cardholderName": "string",
"expirationMonth": "string",
"expirationYear": "string",
"numberToken": "string",
"securityCode": "string"
},
"customer": {
"documentNumber": "string",
"address": "string",
"city": "string",
"complement": "string",
"country": "string",
"email": "string",
"firstName": "string",
"ipAddress": "string",
"lastName": "string",
"mobilePhoneNumber": "string",
"phoneNumber": "string",
"state": "string",
"zipCode": "string"
},
"deviceInfo": {
"httpAcceptBrowserValue": "string",
"httpAcceptContent": "string",
"httpBrowserColorDepth": 0,
"httpBrowserJavaEnabled": "string",
"httpBrowserJavaScriptEnabled": true,
"httpBrowserLanguage": "string",
"httpBrowserScreenHeight": 0,
"httpBrowserScreenWidth": 0,
"httpBrowserTimeDifference": 0,
"ipAddress": "string",
"userAgentBrowserValue": "string"
},
"payment": {
"amount": 0,
"installments": 0,
"productType": "string",
"recurrent": true,
"transactionType": "string"
},
"sellerInfo": {
"code3DS": "string",
"codeAntiFraud": "string",
"urlSite3DS": "string"
}
}
Dicionário de dados - Parâmetros
PROPRIEDADE | DESCRIÇÃO | TIPO | LOCAL | OBRIGATÓRIO | TAMANHO |
---|---|---|---|---|---|
Payment.TransactionType | Tipo da transação. | string | body | sim | fixo |
Payment.Amount | Valor do Pedido em centavos. | integer | body | sim | 10 |
Payment.ProductType | Tipo de produto – avista/ lojista | string | body | sim | fixo |
Payment.Installments | Número de Parcelas. | integer | body | sim | 2 |
SellerInfo.codeAntiFraud | Código obtido através da biblioteca anti-fraude | guid | body | sim | 36 |
SellerInfo.code3DS | Código obtido através da biblioteca 3DS | string | body | sim | 36 |
SellerInfo.urlSite3DS | URL do site do Comércio utilizado para o 3ds | string | body | sim | 2048 |
CardInfo.NumberToken | Identificador do cartão tokenizado. | string | body | não | fixo |
CardInfo.CardholderName | Nome do comprador impresso no cartão. | string | body | sim | 30 |
CardInfo.SecurityCode | Código de segurança | string | body | não | 4 |
CardInfo.Brand | Bandeira do cartão – Opcional. | string | body | não | fixo |
CardInfo.ExpirationMonth | Mês de expiração do cartão com dois dígitos. | string | body | não | 2 |
CardInfo.ExpirationYear | Ano de expiração do cartão com dois dígitos. | string | body | não | 2 |
Customer.DocumentNumber | Número do documento do comprador sem pontuação (sem máscara) | string | body | não | 20 |
Customer.FirstName | Primeiro nome do comprador. | string | body | não | 60 |
Customer.LastName | Último nome do comprador | string | body | não | 60 |
Customer.Email | E-mail do comprador | string | body | não | 255 |
Customer.PhoneNumber | Telefone do comprador | string | body | não | 15 |
Customer.MobilePhoneNumber | Telefone celular do comprador | string | body | não | 25 |
Customer.Address | Endereço do comprador | string | body | não | 60 |
Customer.Complement | Complemento do endereço do comprador | string | body | não | 60 |
Customer.City | Cidade do comprador | string | body | não | 50 |
Customer.State | Estado do comprador | string | body | não | 2 |
Customer.ZipCode | CEP comprador. | string | body | não | 10 |
Customer.IpAddress | IP do dispositivo do comprador. | string | body | não | 48 |
Customer.Country | País do comprador. | string | body | não | 2 |
DeviceInfo.httpAcceptBrowserValue | 3DS - Valor do “Accept Header” do browser do cliente - Obrigatório para 3DS. | string | body | não | 255 |
DeviceInfo.httpAcceptContent | 3DS - Valor exato do HTTP Accept Header - Obrigatório para 3DS. | string | body | não | 256 |
DeviceInfo.httpBrowserLanguage | 3DS - Linguagem do browser do cliente conforme https://www.techonthenet.com/js/language_tags.php - Obrigatório para 3DS. | string | body | não | 8 |
DeviceInfo.httpBrowserJavaEnabled | 3DS - Se JAVA habilitado enviar valor Y, caso contrário N - Obrigatório para 3DS. | string | body | não | 1 |
DeviceInfo.httpBrowserJavaScriptEnabled | 3DS - Se JAVA SCRIPT habilitado enviar valor Y, caso contrário N - Obrigatório para 3DS. | string | body | não | 1 |
DeviceInfo.httpBrowserColorDepth | 3DS - Quantidade de bits utilizados para exibição de imagens - Obrigatório para 3DS. | string | body | não | 3 |
DeviceInfo.httpBrowserScreenHeight | 3DS - Altura da resolução da tela do cliente - Obrigatório para 3DS | string | body | não | 4 |
DeviceInfo.httpBrowserScreenWidth | 3DS - Largura da resolução da tela do cliente - Obrigatório para 3DS. | string | body | não | 4 |
DeviceInfo.httpBrowserTimeDifference | 3DS - Diferença em minutos entre o horário GMT e o do browser do cliente - Obrigatório para 3DS. | string | body | não | 4 |
DeviceInfo.userAgentBrowserValue | 3DS - O valor exato do User Agent Header - Obrigatório para 3DS. | string | body | não | 255 |
Observação
Vendas parceladas: Para vendas parceladas, utilize o productType
como lojista. Para vendas à vista (parcela única), utilize avista.
Domínios
PROPRIEDADE | CONTEÚDO |
---|---|
Payment.TransactionType | debit |
Payment.ProductType | debito |
CardInfo.Brand | visa, mastercard, amex, elo, hipercard |
Customer.DocumentType | cpf, cnpj |
- 🟢 200
- 🔴 400
- 🔴 500
Pagamento realizado com sucesso
{
"paymentAuthorization": {
"amount": 10,
"authorizationCode": "727874",
"description": "Sucesso",
"orderNumber": "956a3013-c9a7",
"paymentId": "020062004408221314340001417728510000000000",
"releaseAt": "2024-08-22T10:14:34.0772056-03:00",
"returnCode": "0"
},
"threeDs": {
"eci": "05",
"paresStatus": "Y",
"status": "Silent",
"threeDsStatus": "AUTHENTICATION_SUCCESSFUL",
"threeDsVersion": "2.1.0",
"veresEnrolled": "Y"
}
}
Dicionário de dados - Retorno
PROPRIEDADE | DESCRIÇÃO | TIPO |
---|---|---|
ReturnCode | Código de retorno. | string |
Description | Descrição do retorno. | string |
PaymentId | Identificador do pagamento, também conhecido como TID. | string |
AuthorizationCode | Código de autorização. | string |
OrderNumber | OrderNumber informado pelo cliente na requisição do pagamento (Numero Pedido Cliente). | string |
ExpireAt | Data e hora de expiração quando se tratar de pré-autorização. | datetime |
Amount | Valor do Pedido em centavos. | integer |
ReleaseAt | Data e hora do registro de pagamento. | datetime |
ThreeDs.Status | Status do 3DS Challenge – 3DS está solicitando um Challenge. | string |
ThreeDs.ThreeDsVersion | ThreeDsVersion é a versão do 3DS e vai ser informado quando for Challenge. | string |
ThreeDs.AcsUrl | AcsUrl é o retorno quando for Challenge, deve informá-lo no initChallenge(acsUrl, pareq, authenticationTransactionId). | string |
ThreeDs.Pareq | Pareq é o retorno quando for Challenge, deve informá-lo no initChallenge(acsUrl, pareq, authenticationTransactionId). | string |
ThreeDs.AuthenticationTransactionId | AuthenticationTransactionId é o retorno quando for Challenge, deve informá-lo no initChallenge(acsUrl, pareq, authenticationTransactionId). | string |
Erro na requisição ou na validação do 3DS
[
{
"tag": "3DS Fail",
"description": "eci: 00 - threeDsVersion: 2.1.0 - threeDsStatus:
AUTHENTICATION_SUCCESSFUL - veresEnrolled: U - directoryServerErrorCode: 203 -
directoryServerErrorDescription: Format of one or more elements is invalid according to
the specification threeDSRequestorURL,"
}
]
Dicionário de dados - Retorno
PROPRIEDADE | DESCRIÇÃO | TIPO |
---|---|---|
tag | Tag do erro | string |
description | Descrição do erro | string |
Erro interno
[
{
"tag": "",
"description": "Não foi possível executar comando. Erro desconhecido."
}
]
Dicionário de dados - Retorno
PROPRIEDADE | DESCRIÇÃO | TIPO |
---|---|---|
tag | Tag do erro | string |
description | Descrição do erro | string |