Criar um pagamento autenticado com 3DS
This document applies to the following countries:
| Brasil | Chile | México | Espanha | Uruguai |
|---|
No Web Checkout da Getnet, o 3D Secure (3DS) é um protocolo adicional de autenticação, usado em pagamentos online com cartão para verificar a identidade do portador do cartão junto ao banco emissor durante o processo de checkout. Quando uma transação é enviada pelo Web Checkout, o banco emissor pode exigir que o cliente conclua uma etapa de autenticação, como uma senha de uso único (OTP), verificação biométrica ou confirmação no aplicativo do banco.
Dependendo da avaliação de risco, a autenticação pode ocorrer por meio de um fluxo frictionless (sem interação do cliente) ou um fluxo de challenge (exigindo verificação do usuário). Esse mecanismo ajuda a reduzir fraudes e aumenta a segurança das transações sem cartão presente.
Para entender as regras de cada país, consulte o documento 3DS Authentication.
Requisitos
Antes de seguir as etapas, você precisa:
- Configurar seu Web Checkout via Portal ou via API (dependendo da sua localização).
- Gerar seu token seguindo o documento de Authentication.
Payment intent com 3DS
O fluxo consiste na validação do cartão, tokenização de dados sensíveis e armazenamento seguro.
Após a conclusão desse processo, um webhook contendo o card_id é enviado. Esse identificador representa a referência tokenizada do cartão armazenado.
Usando esse identificador, o Merchant pode realizar novas transações por meio do endpoint de autorização da Regional API, informando apenas o card_id na requisição, sem precisar enviar novamente todos os dados do cartão.
O 3DS atua como uma importante barreira de segurança e, por esse motivo, não é recomendável desativá-lo para todos os pagamentos.
Para passar pela autenticação 3DS, estes parâmetros devem ser enviados no payment intent.
| Endpoint |
|---|
POST /payment-intent |
Campos obrigatórios
| Atributo | Tipo | Descrição | Exemplo |
|---|---|---|---|
configurations | Object | Conjunto de opções de pagamento. | — |
preauthorization | Boolean | Indica se é um pagamento do tipo pré-autorizado. | false |
card_verification | Boolean | Indica se é um pagamento do tipo verificação de cartão. | false |
3ds | Boolean | Indica se é um pagamento do tipo 3DS. | true |
O bloco de código a seguir mostra os campos que devem ser enviados no endpoint do payment intent.
"configurations": {
"preauthorization": false,
"card_verification": false,
"3ds": true
}Argentina:
card_verificationepreauthorizationnão estão disponíveis para a Argentina.
Entendendo o processo de autenticação 3DS
O emissor do cartão determina dinamicamente o fluxo de autenticação com base na avaliação de risco, na bandeira do cartão e nas capacidades do emissor. Depois que você inicia o enrollment, a API retorna um campo status que determina sua próxima ação.
Trate os três cenários possíveis:
- Autenticação direta: o emissor autentica o portador do cartão imediatamente (status:
AuthenticatedouAttempt). - Challenge necessário: o emissor exige verificação interativa do portador do cartão (status:
Pending Challenge). Escolha entre renderizar um template HTML ou realizar um POST manual usando os dados do ACS Direct Form. - Continuação de enrollment pendente: o emissor exige processamento adicional antes de atingir um estado final (status:
Pending Enrollment Continue). Essa etapa pode resultar em autenticação ou em um challenge.
Referência rápida: fluxo de decisão
Siga esta lógica de decisão com base no status retornado pela API:
Após o Passo 2 (Iniciar o enrollment):
AuthenticatedouAttempt: prossiga para Passo 4: Criar o pagamento.Pending Challenge: redirecione o cliente usandoredirect_html_templateouacs_redirect_form. Após a conclusão do challenge, prossiga para Passo 3B: Validar autenticação, depois para Passo 4: Criar o pagamento.Pending Enrollment Continue: prossiga para Passo 3C: Continuar o enrollment.
Etapas de implementação
Passo 1: Obter o access token e tokenizar o cartão
- Solicite um access token usando suas credenciais de API.
- Tokenize as informações do cartão usando o endpoint de token.
Passo 2: Iniciar o enrollment
Chame o endpoint 3DS - Init Authentication. Inclua o objeto extra_fields com endereço de cobrança, endereço de entrega, detalhes do navegador e informações do cliente para oferecer suporte a uma avaliação de risco precisa.
curl --request POST \
--url https://api-sbx.globalgetnet.com/dpm/security-gwproxy/v2/enrolments-initial \
--header 'authorization: Bearer ' \
--header 'content-type: application/json' \
--data '{
"currency": "CLP",
"md": "NmQyZTQzODAtZDhhMy00Y2NiLTkxMzgtYzI4OTE4MjgxOGE0",
"term_url": "123",
"amount": 1,
"payment_method": {
"expiration_month": "05",
"expiration_year": "25",
"security_code": "282",
"number_token": "4292b573ea94b257dcb132afe242b4a15c9866d16e2d4d64d8e571c877af0540c3946b8bddaf37c2c75a1810863fc6b0fe0e841ebbc752c1d23ccfb5fdaac3d1"
},
"description": "TEST",
"operation": "CREDIT",
"extra_fields": {
"billing_address": {
"street": "Av. Brasil",
"number": "1000",
"complement": "Sala 1",
"district": "São Geraldo",
"city": "Porto Alegre",
"state": "RS",
"country": "BR",
"postal_code": "90230060",
"reference": "Near the hospital"
},
"shipping_address": {
"street": "Av. Brasil",
"number": "1000",
"complement": "Sala 1",
"district": "São Geraldo",
"city": "Porto Alegre",
"state": "RS",
"country": "BR",
"postal_code": "90230060",
"reference": "Near the hospital"
}
}
}'Exemplo de resposta (Pending Challenge):
{
"transaction_id": "84c05897-fbf1-4a91-90e8-d292a0fda1c8",
"status": "Pending Challenge",
"protocol": "3DS2.3.1",
"redirect_html_template": "<html>...</html>",
"acs_redirect_form": {
"action_url": "https://3ds-acs.test.modirum.com/mdpayacs/creq;token=368800071.1773147207.lksz3Q5MLGPuP5RsNmoU_8831PDCBLY_ABFB5xq0wtc",
"method": "POST",
"creq": "ewogICAgImFjc1RyYW5zSUQiOiAiNjVhMWUxN2MtZWVmYS00NGU1LTgyMDEtMDI4MjM5ZTVmOTA3IiwKICAgICJjaGFsbGVuZ2VXaW5kb3dTaXplIjogIjAzIiwKICAgICJtZXNzYWdlVHlwZSI6ICJDUmVxIiwKICAgICJtZXNzYWdlVmVyc2lvbiI6ICIyLjMuMSIsCiAgICAidGhyZWVEU1NlcnZlclRyYW5zSUQiOiAiZjI0ZmZhMWItMWY5MC01ZjMxLTgwMDAtMDAwMDAyYmY4Yjc3Igp9",
"threeDSSessionData": "NmQyZTQzODAtZDhhMy00Y2NiLTkxMzgtYzI4OTE4MjgxOGE0"
}
}
Passo 3: Verificar o status e seguir o cenário apropriado
Status: Authenticated ou Attempt
Extraia os dados de autenticação (xid, eci, cavv, ds_trans_id) e prossiga para Passo 4: Criar o pagamento.
Status: Pending Challenge
Redirecione o cliente para o banco para que ele conclua a autenticação. Escolha um dos métodos de redirecionamento a seguir:
Opção A: template HTML
Extraia e renderize o redirect_html_template diretamente na sua aplicação. O template contém um formulário de envio automático que redireciona o cliente para a página de autenticação do banco.
Exemplo — renderizando o template HTML no lado do cliente:
<!-- In your frontend application -->
<div id="challenge-container"></div>
<script>
// Receive the redirect_html_template from your backend
const redirectHtmlTemplate = response.redirect_html_template;
// Inject the HTML into your page
document.getElementById('challenge-container').innerHTML = redirectHtmlTemplate;
// The template contains a form that will automatically submit and redirect
// the customer to their bank's authentication page
</script>Exemplo — renderizando o template HTML no lado do servidor:
// Node.js/Express example
app.post('/initiate-3ds', async (req, res) => {
const enrollmentResponse = await fetch('https://api-sbx.globalgetnet.com/dpm/security-gwproxy/v2/enrolments-initial', {
// ... request configuration
});
const data = await enrollmentResponse.json();
if (data.status === 'Pending Challenge') {
// Send the HTML template directly to the browser
res.send(data.redirect_html_template);
}
});Opção B: ACS Direct Form
Use o objeto acs_redirect_form para realizar uma requisição POST manual a partir do navegador do cliente. Esse método é preferível porque evita scripts de terceiros e permite exibir uma UI de carregamento personalizada durante o redirecionamento.
Detalhes necessários do POST:
- URL: use o valor
action_urlda resposta. - Método:
POST - Content-Type:
application/x-www-form-urlencoded - Corpo: inclua
creqethreeDSSessionData.
Exemplo — redirecionamento manual via POST:
<div id="loader">Redirecting to secure bank authentication...</div>
<form id="acs-direct-form" method="POST" action="https://3ds-acs.test.modirum.com/mdpayacs/creq;token=368800071.1773147207.lksz3Q5MLGPuP5RsNmoU_8831PDCBLY_ABFB5xq0wtc">
<input type="hidden" name="creq" value="ewogICAgImFjc1RyYW5zSUQiOiAiNjVhMWUxN2MtZWVmYS00NGU1LTgyMDEtMDI4MjM5ZTVmOTA3IiwKICAgICJjaGFsbGVuZ2VXaW5kb3dTaXplIjogIjAzIiwKICAgICJtZXNzYWdlVHlwZSI6ICJDUmVxIiwKICAgICJtZXNzYWdlVmVyc2lvbiI6ICIyLjMuMSIsCiAgICAidGhyZWVEU1NlcnZlclRyYW5zSUQiOiAiZjI0ZmZhMWItMWY5MC01ZjMxLTgwMDAtMDAwMDAyYmY4Yjc3Igp9" />
<input type="hidden" name="threeDSSessionData" value="NmQyZTQzODAtZDhhMy00Y2NiLTkxMzgtYzI4OTE4MjgxOGE0" />
</form>
<script>
// Programmatically submit the form
document.getElementById('acs-direct-form').submit();
</script>Status: Pending Enrollment Continue
Prossiga para Passo 3C: Continuar o enrollment antes de tratar qualquer status subsequente.
Passo 3B: Validar autenticação
Depois que o cliente concluir o challenge e o navegador redirecionar de volta para seu site, capture o token CRES do callback e chame o endpoint 3DS - Validate Authentication. Envie o token junto com o transaction_id e o xid da resposta de enrollment.
Exemplo de requisição:
curl --request POST \
--url https://api-sbx.globalgetnet.com/dpm/security-gwproxy/v2/validations \
--header 'authorization: Bearer <your-token>' \
--header 'content-type: application/json' \
--data '{
"transaction_id": "502040201060404060506040",
"xid": "VDdnR0kyU1g4ZXlxMkhWTlp0VnA=",
"token": "<cres-token-from-challenge-callback>"
}'Passo 3C: Continuar o enrollment
Se o enrollment inicial retornar Pending Enrollment Continue, chame o endpoint 3DS - Continue Enrollment com o transaction_id do Passo 2. A resposta segue a mesma lógica de status do enrollment inicial e pode retornar Pending Challenge ou Authenticated.
Se a resposta retornar Pending Challenge, redirecione o cliente usando a Opção A ou a Opção B, depois chame Passo 3B: Validar autenticação.
Exemplo de resposta (status Pending Challenge):
{
"transaction_id": "84c05897-fbf1-4a91-90e8-d292a0fda1c8",
"status": "Pending Challenge",
"protocol": "3DS2.3.1",
"acs_redirect_form": {
"action_url": "https://3ds-acs.test.modirum.com/mdpayacs/creq;token=368800071.1773147207.lksz3Q5MLGPuP5RsNmoU_8831PDCBLY_ABFB5xq0wtc",
"method": "POST",
"creq": "ewogICAgImFjc1RyYW5zSUQiOiAiNjVhMWUxN2MtZWVmYS00NGU1LTgyMDEtMDI4MjM5ZTVmOTA3IiwKICAgICJjaGFsbGVuZ2VXaW5kb3dTaXplIjogIjAzIiwKICAgICJtZXNzYWdlVHlwZSI6ICJDUmVxIiwKICAgICJtZXNzYWdlVmVyc2lvbiI6ICIyLjMuMSIsCiAgICAidGhyZWVEU1NlcnZlclRyYW5zSUQiOiAiZjI0ZmZhMWItMWY5MC01ZjMxLTgwMDAtMDAwMDAyYmY4Yjc3Igp9",
"threeDSSessionData": "NmQyZTQzODAtZDhhMy00Y2NiLTkxMzgtYzI4OTE4MjgxOGE0"
}
}Passo 4: Criar o pagamento
Após a conclusão da autenticação (Authenticated ou Attempt), chame o endpoint Create - Authorize. Inclua os dados de autenticação (xid, eci, cavv, ds_trans_id) no objeto payment.
Requisitos específicos por país: alguns mercados podem exigir campos obrigatórios adicionais. No Uruguai, você deve incluir um array
ratescom a chaveiva. Envieregional_regulation_codesomente quando a transação for elegível para um benefício fiscal ou regulação regional. Cada entrada recebe umcode(17934ou19210) e, opcionalmente, uminvoicecom até 9 caracteres alfanuméricos. Quando você omite oinvoice, a Getnet o deriva do seuorder_id. Consulte a referência Taxes and Regulations para mais informações.
Exemplo de requisição:
curl --request POST \
--url https://api-sbx.globalgetnet.com/dpm/payments-gwproxy/v2/payments \
--header 'authorization: Bearer '\
--header 'content-type: application/json' \
--header 'x-seller-id: 54f88e68-7764-4e87-8830-756b1e2c02f8' \
--data '{
"order_id": "123order",
"data": {
"amount": 118708,
"currency": "CLP",
"payment": {
"payment_method": "CREDIT_AUTHORIZATION",
"xid": "VDdnR0kyU1g4ZXlxMkhWTlp0VnA=",
"eci": "24",
"ds_trans_id": "f7e5f76e-6388-43e6-b8cd-49b251a1f89c",
"card": { ... }
}
}
}'Integração com a Europa
O fluxo 3DS para o tenant santander com country: ES segue o mesmo ciclo de vida do fluxo genérico, mas com comportamentos específicos em cada etapa. Esta seção documenta o fluxo linear completo.
Identificadores principais
| Campo | Valor |
|---|---|
| Tenant | santander |
| País | ES |
| Moeda | EUR |
| Protocolo 3DS | 2.1.0 |
| Provedor ACS | Redsys (sis-d.redsys.es) |
Cabeçalhos obrigatórios
Todas as requisições do fluxo da Espanha exigem os seguintes cabeçalhos adicionais:
| Cabeçalho | Valor |
|---|---|
x-seller-id | UUID do seu seller |
tenant | santander |
country | ES |
x-operation-type | card |
Passo 1: Iniciar o enrollment
Chame POST /v2/enrolments-initial com os cabeçalhos específicos da Espanha. Inclua o objeto extra_fields com dados do cliente, cobrança, entrega e navegador.
curl --request POST \
--url https://api-sbx.globalgetnet.com/dpm/security-gwproxy/v2/enrolments-initial \
--header 'accept: application/json' \
--header 'authorization: Bearer <your-token>' \
--header 'x-seller-id: <your-seller-id>' \
--header 'tenant: santander' \
--header 'country: ES' \
--header 'content-type: application/json' \
--header 'x-operation-type: card' \
--data '{
"currency": "EUR",
"amount": 400,
"term_url": "https://your-domain.com/3ds/callback",
"payment_method": {
"number": "4548814479727229",
"security_code": "123",
"expiration_month": "12",
"expiration_year": "49",
"payment_method": "CREDIT",
"credentials_on_file_type": "ONE_CLICK"
},
"description": "3ds unified",
"extra_fields": {
"customer": {
"email": "[email protected]",
"document_number": "12345678Z",
"document_type": "dni",
"name": "Sra. Carmen López",
"phone_number": "34612345678"
},
"billing_address": {
"street": "Calle Gran Vía",
"number": "28",
"complement": "Piso 3, Puerta A",
"district": "Centro",
"city": "Madrid",
"state": "Madrid",
"country": "ES",
"postal_code": "28013",
"reference": "Near Callao metro station"
},
"shipping_address": {
"street": "Calle Gran Vía",
"number": "28",
"complement": "Piso 3, Puerta A",
"district": "Centro",
"city": "Madrid",
"state": "Madrid",
"country": "ES",
"postal_code": "28013",
"reference": "Near Callao metro station"
},
"browser_details": {
"ip": "1.1.1.1",
"accept_header": "application/json,application/x-www-form-urlencoded",
"java_enabled": "false",
"java_script_enabled": "true",
"language": "es",
"color_depth": "24",
"screen_height": "600",
"screen_width": "800",
"time_zone": "52",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
}
}'Exemplo de resposta (Attempt):
{
"transaction_id": "526618589740",
"protocol": "2.1.0",
"status": "Attempt",
"eci": 0,
"acs_redirect_form": {
"method": "POST",
"creq": "11cf1933-8798-4280-bd92-e8120fe1944e"
}
}Importante — status
Attemptna Espanha: sempre prossiga para o Passo 2 (Continuar o enrollment) ao receberAttempt. Não trate esse status como autenticação concluída. A etapa de continuação pode revelar um estadoPending ChallengeouAuthenticated. Armazene otransaction_id; você precisará dele em todas as etapas seguintes.O valor de
acs_redirect_form.creqnesta resposta é uma referência de transação do servidor, usada internamente para a continuidade do fluxo. Não o utilize para redirecionar o cliente — os dados reais de redirecionamento do ACS são retornados na resposta de continuação do enrollment.
A resposta também pode retornar Pending Enrollment Continue ou Authenticated diretamente.
Passo 2: Continuar o enrollment
Envie o transaction_id do Passo 1 para POST /v2/enrolments-continue. Inclua os mesmos cabeçalhos específicos da Espanha. A resposta segue a mesma lógica de status do fluxo genérico e pode retornar Pending Challenge ou Authenticated.
curl --request POST \
--url https://api-sbx.globalgetnet.com/dpm/security-gwproxy/v2/enrolments-continue \
--header 'accept: application/json' \
--header 'authorization: Bearer <your-token>' \
--header 'x-seller-id: <your-seller-id>' \
--header 'tenant: santander' \
--header 'country: ES' \
--header 'content-type: application/json' \
--data '{
"transaction_id": "526618589740"
}'Exemplo de resposta (Pending Challenge):
{
"status": "Pending Challenge",
"redirect_html_template": "<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">...</html>",
"eci": 0,
"acs_redirect_form": {
"action_url": "https://sis-d.redsys.es/sis-simulador-web/authenticationRequest.jsp",
"method": "POST",
"creq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjExY2YxOTMzLTg3OTgtNDI4MC1iZDkyLWU4MTIwZmUxOTQ0ZSIsImFjc1RyYW5zSUQiOiI1Zjg1YjVmZi04Y2Q5LTQwOWQtOWZlOS1iNjMwZDllMzYwMjYiLCJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0"
}
}Redirecione o cliente para o ACS usando um dos métodos a seguir:
Opção A: template HTML — injete o redirect_html_template na sua página. O template é um formulário de envio automático que redireciona o cliente para a página de challenge da Redsys automaticamente.
Opção B: ACS Direct Form — construa um formulário POST usando os dados de acs_redirect_form. O formulário exige apenas o campo creq — não inclua threeDSSessionData.
<div id="loader">Redirecting to Redsys secure authentication...</div>
<form id="acs-direct-form" method="POST" action="https://sis-d.redsys.es/sis-simulador-web/authenticationRequest.jsp" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="creq" value="eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjExY2YxOTMzLTg3OTgtNDI4MC1iZDkyLWU4MTIwZmUxOTQ0ZSIsImFjc1RyYW5zSUQiOiI1Zjg1YjVmZi04Y2Q5LTQwOWQtOWZlOS1iNjMwZDllMzYwMjYiLCJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0" />
</form>
<script>
document.getElementById('acs-direct-form').submit();
</script>Principal diferença em relação ao fluxo genérico: o formulário ACS exige apenas
creq. O fluxo genérico exige tantocreqquantothreeDSSessionData.
Passo 3: Validar autenticação
Depois que o cliente concluir o challenge, o ACS redireciona de volta para o seu term_url com um token CRES. Capture esse token e chame POST /v2/validations. Envie o CRES no campo token.
curl --request POST \
--url https://api-sbx.globalgetnet.com/dpm/security-gwproxy/v2/validations \
--header 'accept: application/json' \
--header 'authorization: Bearer <your-token>' \
--header 'x-seller-id: <your-seller-id>' \
--header 'tenant: santander' \
--header 'country: ES' \
--header 'content-type: application/json' \
--header 'x-operation-type: card' \
--data '{
"token": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImU5MGVhYzlmLWM2OWYtNDAyNS05MzE2LTQ4ZGI5YzcwNzY0MyIsImFjc1RyYW5zSUQiOiJlODY0NzNlYS1iMGRmLTRkNzktOTdmZi0xN2E1NmY1YWM1MDAiLCJtZXNzYWdlVHlwZSI6IkNSZXMiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIiwidHJhbnNTdGF0dXMiOiJZIn0="
}'Exemplo de resposta (Authenticated):
{
"tx_id": "e86473ea-b0df-4d79-97ff-17a56f5ac500",
"status": "Authenticated",
"ds_trans_id": "e90eac9f-c69f-4025-9316-48db9c707643"
}Observação: a resposta de validação retorna
tx_id,statuseds_trans_id. Ela não inclui todos os campos presentes na resposta genérica (comoxidoucavv), mas os valores de status seguem a mesma convenção.
Passo 4: Criar o pagamento
Quando o fluxo 3DS atingir o status Authenticated, chame POST /v2/payments para cobrar o cartão.
Requisitos específicos da Espanha:
- Defina
order_idcomo otransaction_idretornado pelo processo de enrollment 3DS — não use um ID de pedido personalizado. - Inclua o campo
cresno objetopayment. Para transações na Espanha (ES), apenascresé necessário para a autorização 3DS — não incluaxid,cavvoueci.
curl --request POST \
--url https://api-sbx.globalgetnet.com/dpm/payments-gwproxy/v2/payments \
--header 'content-type: application/json' \
--header 'authorization: Bearer <your-token>' \
--header 'x-seller-id: <your-seller-id>' \
--header 'country: ES' \
--header 'tenant: santander' \
--data '{
"idempotency_key": "91d5f349-8256-4929-a468-7a2c97e68978",
"request_id": "cf779372-082f-4d13-ad74-35ad0b93d9c5",
"order_id": "526618589740",
"data": {
"amount": 400,
"currency": "EUR",
"customer_id": "913f3f9d-7060-4639-af6d-331b658668d4",
"payment": {
"payment_id": "6456ef10-55ce-415f-aa82-39336a5d572d",
"payment_method": "CREDIT",
"save_card_data": false,
"transaction_type": "FULL",
"number_installments": 1,
"dynamic_mcc": "1234",
"credentials_on_file_type": "ONE_CLICK",
"cres": "<cres-token-from-redsys-callback>",
"card": {
"number": "4548810000000003",
"expiration_month": "12",
"expiration_year": "49",
"cardholder_name": "Sra. Carmen López",
"security_code": "123"
}
},
"additional_data": {
"order": {
"items": [
{
"name": "Producto Electrónico",
"quantity": 1,
"sku": "SKU-ES-001",
"price": 400.00
}
]
},
"customer": {
"email": "[email protected]",
"document_number": "12345678Z",
"document_type": "dni",
"name": "Sra. Carmen López",
"phone_number": "34612345678",
"billing_address": {
"street": "Calle Gran Vía",
"number": "28",
"complement": "Piso 3, Puerta A",
"district": "Centro",
"city": "Madrid",
"state": "Madrid",
"country": "ES",
"postal_code": "28013",
"reference": "Near Callao metro station"
},
"shippings": {
"address": {
"street": "Calle Gran Vía",
"number": "28",
"complement": "Piso 3, Puerta A",
"district": "Centro",
"city": "Madrid",
"state": "Madrid",
"country": "ES",
"postal_code": "28013",
"reference": "Near Callao metro station"
},
"name": "Sra. Carmen López",
"phone_number": "34612345678"
}
}
}
}
}'Veja também
Você pode explorar mais pagamentos da API Getnet Web Checkout:
- Saiba como criar um pagamento com pré-autorização.
- Saiba como criar um pagamento com verificação de cartão.