Crear un pago autenticado con 3DS
Este documento aplica a los siguientes países:
| Brasil | Chile | México | España | Uruguay |
|---|
En el Web Checkout de Getnet, 3D Secure (3DS) es un protocolo adicional de autenticación, usado en pagos online con tarjeta para verificar la identidad del titular de la tarjeta con el banco emisor durante el proceso de checkout. Cuando una transacción se envía a través de Web Checkout, el banco emisor puede requerir que el cliente complete un paso de autenticación, como una contraseña de un solo uso (OTP), verificación biométrica o confirmación en la aplicación bancaria.
Según la evaluación de riesgo, la autenticación puede ocurrir mediante un flujo frictionless (sin interacción del cliente) o un flujo de challenge (que requiere verificación del usuario). Este mecanismo ayuda a reducir el fraude y aumenta la seguridad de las transacciones sin tarjeta presente.
Para comprender las reglas de cada país, consulta el documento 3DS Authentication.
Requisitos
Antes de seguir los pasos, necesitas:
- Configurar tu Web Checkout mediante Portal o mediante API (dependiendo de tu ubicación).
- Generar tu token siguiendo el documento de Authentication.
Payment intent con 3DS
El flujo consiste en la validación de la tarjeta, la tokenización de datos sensibles y el almacenamiento seguro.
Una vez completado este proceso, se envía un webhook que contiene el card_id. Este identificador representa la referencia tokenizada de la tarjeta almacenada.
Utilizando este identificador, el Merchant puede realizar nuevas transacciones a través del endpoint de autorización de la Regional API, proporcionando únicamente el card_id en la solicitud, sin necesidad de enviar de nuevo todos los datos de la tarjeta.
3DS actúa como una importante capa de seguridad y, por este motivo, no se recomienda desactivarlo para todos los pagos.
Para pasar por la autenticación 3DS, estos parámetros deben enviarse en el payment intent.
| Endpoint |
|---|
POST /payment-intent |
Campos obligatorios
| Atributo | Tipo | Descripción | Ejemplo |
|---|---|---|---|
configurations | Object | Conjunto de opciones de pago. | — |
preauthorization | Boolean | Indica si es un pago de tipo preautorizado. | false |
card_verification | Boolean | Indica si es un pago de tipo verificación de tarjeta. | false |
3ds | Boolean | Indica si es un pago de tipo 3DS. | true |
El siguiente bloque de código muestra los campos que deben enviarse en el payment intent endpoint.
"configurations": {
"preauthorization": false,
"card_verification": false,
"3ds": true
}Argentina:
card_verificationypreauthorizationno están disponibles para Argentina.
Comprender el proceso de autenticación 3DS
El emisor de la tarjeta determina dinámicamente el flujo de autenticación según la evaluación de riesgo, la marca de tarjeta y las capacidades del emisor. Después de iniciar el enrollment, la API devuelve un campo status que indica tu próxima acción.
Gestiona los tres escenarios posibles:
- Autenticación directa: el emisor autentica al titular de la tarjeta de inmediato (estado:
AuthenticatedoAttempt). - Challenge requerido: el emisor requiere verificación interactiva del titular de la tarjeta (estado:
Pending Challenge). Elige entre renderizar una plantilla HTML o realizar un POST manual usando los datos de ACS Direct Form. - Pending Enrollment Continue: el emisor requiere procesamiento adicional antes de llegar a un estado final (estado:
Pending Enrollment Continue). Este paso puede finalizar en autenticación o en un challenge.
Referencia rápida: flujo de decisión
Sigue esta lógica de decisión según el status devuelto por la API:
Después del Paso 2 (Iniciar Enrollment):
AuthenticatedoAttempt: continúa con Paso 4: Crear el pago.Pending Challenge: redirige al cliente usandoredirect_html_templateoacs_redirect_form. Después de que se complete el challenge, continúa con Paso 3B: Validar autenticación, luego con Paso 4: Crear el pago.Pending Enrollment Continue: continúa con Paso 3C: Continuar enrollment.
Pasos de implementación
Paso 1: Obtener Access Token y tokenizar la tarjeta
- Solicita un access token usando tus credenciales de API.
- Tokeniza la información de la tarjeta usando el token endpoint.
Paso 2: Iniciar Enrollment
Llama al endpoint 3DS - Init Authentication. Incluye el objeto extra_fields con la dirección de facturación, la dirección de envío, los detalles del navegador y la información del cliente, para respaldar una evaluación de riesgo 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"
}
}
}'Ejemplo de respuesta (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"
}
}
Paso 3: Comprobar el estado y seguir el escenario correspondiente
Status: Authenticated o Attempt
Extrae los datos de autenticación (xid, eci, cavv, ds_trans_id) y continúa con Paso 4: Crear el pago.
Status: Pending Challenge
Redirige al cliente a su banco para la autenticación. Elige uno de los siguientes métodos de redirección:
Opción A: plantilla HTML
Extrae y renderiza el redirect_html_template directamente en tu aplicación. La plantilla contiene un formulario autoenviable que redirige automáticamente al cliente a la página de autenticación de su banco.
Ejemplo — renderizar la plantilla HTML del lado del 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>Ejemplo — renderizar la plantilla HTML del lado del 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);
}
});Opción B: ACS Direct Form
Usa el objeto acs_redirect_form para realizar una solicitud POST manual desde el navegador del cliente. Este método es preferible porque evita scripts de terceros y te permite mostrar una interfaz de carga personalizada durante la redirección.
Detalles requeridos del POST:
- URL: usa el valor
action_urlde la respuesta. - Método:
POST - Content-Type:
application/x-www-form-urlencoded - Body: incluye
creqythreeDSSessionData.
Ejemplo — redirección manual con 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
Continúa con Paso 3C: Continuar enrollment antes de gestionar cualquier estado posterior.
Paso 3B: Validar autenticación
Después de que el cliente complete el challenge y el navegador redirija de vuelta a tu sitio, captura el token CRES del callback y llama al endpoint 3DS - Validate Authentication. Envía el token junto con el transaction_id y el xid de la respuesta del enrollment.
Ejemplo de solicitud:
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>"
}'Paso 3C: Continuar enrollment
Si el enrollment inicial devuelve Pending Enrollment Continue, llama al endpoint 3DS - Continue Enrollment con el transaction_id del Paso 2. La respuesta sigue la misma lógica de estado que el enrollment inicial y puede devolver Pending Challenge o Authenticated.
Si la respuesta devuelve Pending Challenge, redirige al cliente usando la Opción A o la Opción B, luego llama a Paso 3B: Validar autenticación.
Ejemplo de respuesta (estado 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"
}
}Paso 4: Crear el pago
Una vez que se complete la autenticación (Authenticated o Attempt), llama al endpoint Create - Authorize. Incluye los datos de autenticación (xid, eci, cavv, ds_trans_id) en el objeto payment.
Requisitos específicos por país: algunos mercados pueden requerir campos obligatorios adicionales. En Uruguay debes incluir un array
ratescon la claveiva. Envíaregional_regulation_codesolo cuando la transacción califique para una regulación regional o un beneficio fiscal. Cada entrada tiene uncode(17934o19210) y uninvoiceopcional de hasta 9 caracteres alfanuméricos. Cuando omites elinvoice, Getnet lo obtiene de tuorder_id. Consulta la referencia Taxes and Regulations para más información.
Ejemplo de solicitud:
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": { ... }
}
}
}'Integración con Europa
El flujo 3DS para el tenant santander con country: ES sigue el mismo ciclo de vida que el flujo genérico, pero con comportamientos específicos en cada etapa. Esta sección documenta el flujo lineal completo.
Identificadores clave
| Campo | Valor |
|---|---|
| Tenant | santander |
| País | ES |
| Moneda | EUR |
| Protocolo 3DS | 2.1.0 |
| Proveedor ACS | Redsys (sis-d.redsys.es) |
Encabezados requeridos
Todas las solicitudes del flujo de España requieren los siguientes encabezados adicionales:
| Encabezado | Valor |
|---|---|
x-seller-id | Tu UUID de seller |
tenant | santander |
country | ES |
x-operation-type | card |
Paso 1: Iniciar Enrollment
Llama a POST /v2/enrolments-initial con los encabezados específicos de España. Incluye el objeto extra_fields con los detalles del cliente, la dirección de facturación, la dirección de envío y el 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"
}
}
}'Ejemplo de respuesta (Attempt):
{
"transaction_id": "526618589740",
"protocol": "2.1.0",
"status": "Attempt",
"eci": 0,
"acs_redirect_form": {
"method": "POST",
"creq": "11cf1933-8798-4280-bd92-e8120fe1944e"
}
}Importante — estado
Attempten España: siempre continúa con el Paso 2 (Continue Enrollment) cuando recibasAttempt. No lo trates como una autenticación completa. El paso de continuación puede revelar un estadoPending ChallengeoAuthenticated. Guarda eltransaction_id; lo necesitas para todos los pasos siguientes.El valor
acs_redirect_form.creqde esta respuesta es una referencia de transacción del servidor, usada internamente para continuar el flujo. No lo uses para redirigir al cliente — los datos reales de redirección del ACS se devuelven en la respuesta de Continue Enrollment.
La respuesta también puede devolver directamente Pending Enrollment Continue o Authenticated.
Paso 2: Continuar Enrollment
Envía el transaction_id del Paso 1 a POST /v2/enrolments-continue. Incluye los mismos encabezados específicos de España. La respuesta sigue la misma lógica de estado que el flujo genérico y puede devolver Pending Challenge o 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"
}'Ejemplo de respuesta (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"
}
}Redirige al cliente al ACS usando cualquiera de los dos métodos:
Opción A: plantilla HTML — inyecta el redirect_html_template en tu página. La plantilla es un formulario autoenviable que redirige automáticamente al cliente a la página de challenge de Redsys.
Opción B: ACS Direct Form — construye un formulario POST usando los datos de acs_redirect_form. El formulario requiere únicamente el campo creq — no incluyas 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>Diferencia clave respecto al flujo genérico: el formulario ACS requiere únicamente
creq. El flujo genérico requiere tantocreqcomothreeDSSessionData.
Paso 3: Validar autenticación
Después de que el cliente complete el challenge, el ACS redirige de vuelta a tu term_url con un token CRES. Captura este token y llama a POST /v2/validations. Envía el CRES en el 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="
}'Ejemplo de respuesta (Authenticated):
{
"tx_id": "e86473ea-b0df-4d79-97ff-17a56f5ac500",
"status": "Authenticated",
"ds_trans_id": "e90eac9f-c69f-4025-9316-48db9c707643"
}la respuesta de validación devuelve tx_id, status y ds_trans_id. No incluye todos los campos presentes en la respuesta genérica (como xid o cavv), pero los valores de estado siguen la misma convención.
Paso 4: Crear el pago
Una vez que el flujo 3DS llegue a Authenticated, llama a POST /v2/payments para cobrar la tarjeta.
Requisitos específicos de España:
- Establece
order_idcon eltransaction_iddevuelto por el proceso de enrollment 3DS, no con un ID de orden personalizado. - Incluye el campo
cresen el objetopayment. Para transacciones de ES, solo se requierecrespara la autorización 3DS; no incluyasxid,cavvnieci.
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"
}
}
}
}
}'Ver también
Puedes explorar más pagos de la API de Getnet Web Checkout:
- Aprende cómo crear un pago con preautorización.
- Aprende cómo crear un pago con verificación de tarjeta.