Servicio de creación de transacciones

Esta llamada es necesaria para obtener la URL del método 3DS correspondiente a la tarjeta y la versión más reciente del 3DS admitida, además de crear una transacción en el servidor 3DS que se utilizará en los pasos siguientes del flujo.

Importante: El valor del campo message_version devuelto en la respuesta debe usarse en el paso CREQ (para transacciones de desafío).

Detalles de la llamada#

  • Recurso: /v2/authentication
  • Método HTTP: POST
  • Formato de la solicitud: JSON
  • Formato la respuesta: JSON
  • Parâmetros de cabeçalho:
ParámetroDescriciónFormatoObligatorio
merchant_idCódigo de la tienda en el servidor 3DS. Los códigos de producción y certificación serán diferentes.< 15 ANSI
merchant_keyclave de autentificación de la tienda en el 3DS Server. Las claves de producción y certificación serán diferentes.< 80 ANSI
Content-TypeDebe ser enviado con el valor application/json.= 15 ANSI
AuthorizationDebe ser enviada la firma de autentificación de la tienda en el formato Bearer {assinatura}. Ejemplo: Bearer JHVGytfdgauygdauiw78264284527852897hagdg.< 2000 ANCOND.*
carat_merchant_idEl código de la tienda Carat debe enviarse solo si el campo token se envía en la solicitud< 15 ANCOND.
carat_merchant_keyLa clave de autenticación de la tienda Carat debe enviarse solo si el campo token se envía en la solicitud< 80 ANCOND.

* Observación: Por razones de seguridad, para realizar la autentificación de la transacción, se recomienda informar el valor del campo Authorization.
Si la tienda ha registrado su clave pública con el Portal Carat, este campo es obligatorio.

Autorizadores disponibles#

IDNome
1Visa
2Mastercard
41Elo
3Amex

Generación de la firma#

Para generar el valor que se enviará en el header Authorization, es necesario:

Payload#

Es posible generar la firma utilizando 2 payloads diferentes:

  • El payload usando tarjeta para esta funcionalidad debe tener el siguiente formato:
{
"merchant_id": "XXXXX",
"merchant_key": "XXXXXXXXXXXXXXX",
"cartao": "5555555555555555",
"timestamp": "1620952402824"
}
  • El payload usando token para esta funcionalidad debe tener el siguiente formato:
{
"merchant_id":"XXXXX",
"merchant_key": "XXXXXXXXXXXXXXX",
"token": "er334gvdgdf5dfgdfg63456363434tre345353rg34tb4576jfgrtu464jj56j56u56u56ghhrthrhrthrth467",
"timestamp": "1620952402824"
}

Payload Base64:

eyJhbGciOiJSUzI1NiJ9.eyJtZXJjaGFudF9pZCI6IkRBVEFPTkxZT04iLCJtZXJjaGFudF9rZXkiOiI5QUM0RjVEQTk0NDExODJDMUNEODJEMzlDNDg2ODYzOTNBRkZDNjlGQzRFMDczM0VFNDgyNjRDNjNCODZENUVFIiwiY2FydGFvIjoiNDExMTEyMDAwMDAwMDAwMCIsInRpbWVzdGFtcCI6IjE2MjA5NTEyNDA5NzUifQ.oYlyOKPsJ9aOCrmJcOq024FGnKReevWdSbKXTcopNqp8AT_4dERYD9G4v-h7pq-xbZOGUOO7YpNmGIqmC-oWHLHGdDGenM7bJyuq1QUff3D9WoMNLeBk5wyguVPoaH7QApksWJllp4fUfLz_BDjw5xwc8ksrDQu1M8w-_PP8wWv9f1_A34Lo7dk1FTQwuFNO4ZBfnkTRLfn0_pIypU9h42Sh9Nr4V8_9Xz0TZvbSw5_FNFY_iQAwXs1Ipr0tGHNL1fvKBlgXfB06ouenHIFNhvzdgPjwGZToJo5hG3NSLsRAI-OiXEkK9loPNNNldkSTzbrtYYTD8gDL90dbQe8fIE3fir-48dsGCzyqO7dZigSbSXxRZkHC6ArfIY6MtY9C4pD8Ero4kOXjAMfxfJq7fhsTh7wrnUhkU-hZxl4nGH_0BPWAe7vBqdCw2agOpUzixY1rLtlQlJ41W42rbIL7lSW6zPF1oLtYG73hUjlcmW8aAdoJlQANWK9_dv6gHv0PjV-BS6jZsLT2aL5Mqgi8DCVPg6cRwAfv2DXSizcSX-6a6mpfQ7ZgR0eU0vHgopX_t6jnO3O3v6Lp2vIArrsH8SW0LT1oBDn-9p-SvtMIJQDhejkPuzrVmwNNXMy8Sb6c8LmhfnPhmyeObUbk1I1iCcbIrCdvqteZdrlGMCImo2M

Composición del payload#

ParámetroDescriciónFormatoObligatorio
merchant_idCódigo de la tienda en el Portal Carat.= 15 ANSI
merchant_keyClave de autentificación de la tienda en el Portal Carat.< 80 ANSI
cartaoNúmero de tarjeta del comprador (PAN), el campo tarjeta o token siempre debe enviarse en la carga útil.< 19 ANCOND
tokenHASH de una tarjeta almacenada en Carat, el campo tarjeta o token siempre debe enviarse en la carga útil= 88 ANCOND
timestampRepresentación en milisegundos del momento de generación de la firma. Destacando que el campo timestamp tiene un límite de validez de 10 minutos.< 13 NSI

Ejemplos#

Abajo estan algunos ejemplos de llamada al servicio de creación de transacciones utilizando la herramienta cURL.

Solicitud con número de tarjeta:

Para usar este ejemplo, no olvide definir la variable {{url}} con el valor
esitef-homologacao.softwareexpress.com.br

curl
--request POST "https://mpi-homolog.softwareexpress.com.br/3ds-server/v2/authentication"
--header "Content-Type: application/json"
--header "merchant_id: xxxxxxxxxxxxxxx"
--header "merchant_key: xxxxxxxxxxx"
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJtZXJjaGFudF9pZCI6IkRBVEFPTkxZT04iLCJtZXJjaGFudF9rZXkiOiI5QUM0RjVEQTk0NDExODJDMUNEODJEMzlDNDg2ODYzOTNBRkZDNjlGQzRFMDczM0VFNDgyNjRDNjNCODZENUVFIiwiY2FydGFvIjoiNDExMTEyMDAwMDAwMDAwMCIsInRpbWVzdGFtcCI6IjE2MjA5NTEyNDA5NzUifQ.oYlyOKPsJ9aOCrmJcOq024FGnKReevWdSbKXTcopNqp8AT_4dERYD9G4v-h7pq-xbZOGUOO7YpNmGIqmC-oWHLHGdDGenM7bJyuq1QUff3D9WoMNLeBk5wyguVPoaH7QApksWJllp4fUfLz_BDjw5xwc8ksrDQu1M8w-_PP8wWv9f1_A34Lo7dk1FTQwuFNO4ZBfnkTRLfn0_pIypU9h42Sh9Nr4V8_9Xz0TZvbSw5_FNFY_iQAwXs1Ipr0tGHNL1fvKBlgXfB06ouenHIFNhvzdgPjwGZToJo5hG3NSLsRAI-OiXEkK9loPNNNldkSTzbrtYYTD8gDL90dbQe8fIE3fir-48dsGCzyqO7dZigSbSXxRZkHC6ArfIY6MtY9C4pD8Ero4kOXjAMfxfJq7fhsTh7wrnUhkU-hZxl4nGH_0BPWAe7vBqdCw2agOpUzixY1rLtlQlJ41W42rbIL7lSW6zPF1oLtYG73hUjlcmW8aAdoJlQANWK9_dv6gHv0PjV-BS6jZsLT2aL5Mqgi8DCVPg6cRwAfv2DXSizcSX-6a6mpfQ7ZgR0eU0vHgopX_t6jnO3O3v6Lp2vIArrsH8SW0LT1oBDn-9p-SvtMIJQDhejkPuzrVmwNNXMy8Sb6c8LmhfnPhmyeObUbk1I1iCcbIrCdvqteZdrlGMCImo2M'
--data-binary
{
"cardholder":{
"acct":{
"number":"1234123412341234"
}
},
"brand_id":"2"
}
--verbose

Respuesta:

{
"three_ds_method_url": "https://www.example.com",
"three_ds_server": {
"trans_id": "12341234-1234-1234-1234-123412341234",
"status": "NEW"
},
"acs": {
"protocol_version": {
"start": "2.1.0",
"end": "2.2.0"
}
},
"device_channel": "02",
"ds": {
"protocol_version": {
"start": "2.1.0",
"end": "2.2.0"
}
},
"message_version": "2.2.0"
}

Solicitud con token: Para usar este ejemplo, no olvide definir la variable {{url}} con el valor
esitef-homologacao.softwareexpress.com.br

curl
--request POST "https://mpi-homolog.softwareexpress.com.br/3ds-server/v2/authentication"
--header "Content-Type: application/json"
--header "merchant_id: xxxxxxxxxxxxxxx"
--header "merchant_key: xxxxxxxxxxx"
--header "carat_merchant_id: yyyyyyyyyyyyyyy"
--header "carat_merchant_key: zzzzzzzzzzzzzz"
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJtZXJjaGFudF9pZCI6IkRBVEFPTkxZT04iLCJtZXJjaGFudF9rZXkiOiI5QUM0RjVEQTk0NDExODJDMUNEODJEMzlDNDg2ODYzOTNBRkZDNjlGQzRFMDczM0VFNDgyNjRDNjNCODZENUVFIiwiY2FydGFvIjoiNDExMTEyMDAwMDAwMDAwMCIsInRpbWVzdGFtcCI6IjE2MjA5NTEyNDA5NzUifQ.oYlyOKPsJ9aOCrmJcOq024FGnKReevWdSbKXTcopNqp8AT_4dERYD9G4v-h7pq-xbZOGUOO7YpNmGIqmC-oWHLHGdDGenM7bJyuq1QUff3D9WoMNLeBk5wyguVPoaH7QApksWJllp4fUfLz_BDjw5xwc8ksrDQu1M8w-_PP8wWv9f1_A34Lo7dk1FTQwuFNO4ZBfnkTRLfn0_pIypU9h42Sh9Nr4V8_9Xz0TZvbSw5_FNFY_iQAwXs1Ipr0tGHNL1fvKBlgXfB06ouenHIFNhvzdgPjwGZToJo5hG3NSLsRAI-OiXEkK9loPNNNldkSTzbrtYYTD8gDL90dbQe8fIE3fir-48dsGCzyqO7dZigSbSXxRZkHC6ArfIY6MtY9C4pD8Ero4kOXjAMfxfJq7fhsTh7wrnUhkU-hZxl4nGH_0BPWAe7vBqdCw2agOpUzixY1rLtlQlJ41W42rbIL7lSW6zPF1oLtYG73hUjlcmW8aAdoJlQANWK9_dv6gHv0PjV-BS6jZsLT2aL5Mqgi8DCVPg6cRwAfv2DXSizcSX-6a6mpfQ7ZgR0eU0vHgopX_t6jnO3O3v6Lp2vIArrsH8SW0LT1oBDn-9p-SvtMIJQDhejkPuzrVmwNNXMy8Sb6c8LmhfnPhmyeObUbk1I1iCcbIrCdvqteZdrlGMCImo2M'
--data-binary
{
"cardholder":{
"acct":{
"token":"er334gvdgdf5dfgdfg63456363434tre345353rg34tb4576jfgrtu464jj56j56u56u56ghhrthrhrthrth467"
}
},
"brand_id":"2"
}
--verbose

Respuesta:

{
"three_ds_method_url": "https://www.example.com",
"three_ds_server": {
"trans_id": "12341234-1234-1234-1234-123412341234",
"status": "NEW"
},
"acs": {
"protocol_version": {
"start": "2.1.0",
"end": "2.2.0"
}
},
"device_channel": "02",
"ds": {
"protocol_version": {
"start": "2.1.0",
"end": "2.2.0"
}
},
"message_version": "2.2.0"
}

Parámetros de solicitud#

En la tabla siguiente se describen los parámetros de solicitud del servicio de creación de transacciones:

ParámetroDescriciónFormatoObligatorio
brand_idID da la tarjeta. más información.= 4 NSI
cardholder.acct
numberNúmero de tarjeta del comprador, el campo number o token siempre debe enviarse en la solicitud< 19 NCOND
tokenHASH de una tarjeta almacenada en Carat, siempre se debe enviar el campo number o token en la solicitud= 88 ANCOND
message
versionVersión del mensaje 3DS: 2.1.0 ou 2.2.0.< 8 ANNO

Parámetros de respuesta#

En caso de éxito, el código de respuesta HTTP será 201. Cualquier otro código debe ser interpretado como un error. En la tabla siguiente se describen los parámetros de respuesta del servicio de creación de transacciones:

ParámetroDescriciónFormato
three_ds_method_urlURL do frame invisible que se mostrará en el navegador del comprador< 256 AN
device_channelCanal del dispositivo. Saiba mais.< 2 N
message_versionVersión de transacción (esta versión debe usarse en la solicitud de CRes)< 8 AN
three_ds_server
trans_idID de la transacción 3DS Server< 8 AN
statusStatus no 3DS Server. más información.= 3 AN
acs.protocol_version
startVersión más antigua del protocolo 3DS soportada por ACS< 8 AN
endVersión más reciente del protocolo 3DS soportada por ACS< 8 AN
ds.protocol_version
startVersão mais antiga de protocolo 3DS suportada pelo DS< 8 AN
endVersão mais recente de protocolo 3DS suportada pelo DS< 8 AN
error
codeCódigo de error. más información.< 3 N
componentIndica cual componente identificou el error.
  • C = 3DS SDK
  • S = 3DS Server
  • D = DS
  • A = ACS
= 1 AN
descriptionDescripción del error< 2048 AN
detailDetalles del error< 28 AN