Giftcard Purchase Confirmation
/paymentPermite confirmar y registrar el resultado final de una operación de giftcard.
Objetivo
Este endpoint permite realizar la compra de subscripciones y pines digitales. Una vez completada la transacción exitosamente, la respuesta incluye el código de activación necesario para que el usuario final pueda activar y utilizar su giftcard en la plataforma correspondiente.
Request
Headers
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
x-api-key | String | Sí | API Key requerida para validar la autenticidad del mensaje. |
x-authorization-token | String | Sí | Token de autenticación obtenido en el login. |
Body Parameters
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
companyCode | String | Sí | Código de la compañía asociada al producto. |
productId | String | Sí | Identificador del producto asociado a la operación. |
amount | Number | Sí | Monto a pagar por la suscripción o giftcard. |
paymentMethod | String | Sí | Método de pago utilizado. Valores posibles: DEBIT, ACCOUNT, CREDIT. |
externalPaymentId | String | Sí | ID de la operación provisto por el cliente. |
externalClientId | String | Sí | ID del usuario final asignado por el cliente. |
Response
Response Body
| Parámetro | Tipo | Descripción |
|---|---|---|
operationId | String | ID de la operación. |
createdAt | String | Fecha y hora de creación de la operación. |
companyCode | String | Código de la compañía asociada al producto. |
companyName | String | Nombre de la compañía. |
amount | Number | Monto de la transacción. |
activatePin | String | PIN de activación para la giftcard. |
clientUserName | String | Nombre de usuario del cliente. |
externalClientId | String | ID del usuario final asignado por el cliente. |
externalPaymentId | String | ID de la operación provisto por el cliente. |
additionalData | Object | Objeto de estructura variable según el proveedor y el producto. Ver Campos de additionalData. |
Campos de additionalData
El contenido de additionalData depende del proveedor y del producto comprado. Ningún campo de este objeto está garantizado.
Al integrar, tené en cuenta lo siguiente:
- Tratá
additionalDatacomo un objeto de estructura variable. - Ignorá los campos que tu integración no reconozca.
- Tu integración no debe fallar si falta algún campo, ni si
additionalDatallega vacío ({}) o comonull.
El PIN o código de activación llega siempre en el campo activatePin, en el nivel raíz de la respuesta. Nunca llega dentro de additionalData.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| legend | String | No | Leyenda o instrucciones de canje del producto, para mostrar al usuario final. |
| expirationDate | String (fecha YYYY-MM-DD) | No | Fecha de vencimiento del PIN o gift card, cuando el proveedor la informa. |
| serialNumber | String | No | Número de serie del PIN o tarjeta, cuando el proveedor lo informa. |
| providerOperationId | String | No | Identificador de la operación del lado del proveedor. |
Ejemplo: additionalData con leyenda y vencimiento
{
"operationId": "3f9c2a1e-7b4d-4e8a-9c21-5d6e8f0a1b2c",
"createdAt": "2026-04-09T15:32:10.000Z",
"companyCode": "MX-S-00001",
"companyName": "Gift Card Ejemplo",
"amount": 200,
"activatePin": "ABCD-EFGH-IJKL-1234",
"clientUserName": "cliente_demo",
"externalClientId": "cliente-0001",
"externalPaymentId": "pago-0001",
"additionalData": {
"legend": "Ingresá el código en la sección Canjear de la tienda del proveedor.",
"expirationDate": "2026-10-09"
}
}Ejemplo: additionalData mínimo
{
"operationId": "8a1d4c7e-2f3b-4a9d-b6e5-0c1f2a3b4d5e",
"createdAt": "2026-04-09T16:05:44.000Z",
"companyCode": "MX-S-00002",
"companyName": "Suscripción Ejemplo",
"amount": 150,
"activatePin": "WXYZ-9876-5432",
"clientUserName": "cliente_demo",
"externalClientId": "cliente-0002",
"externalPaymentId": "pago-0002",
"additionalData": {
"serialNumber": "SN-000123456"
}
}Según el producto, additionalData también puede llegar vacío ({}) o como null.
Consideraciones
- Este endpoint debe ser implementado por el cliente para recibir la confirmación de resultado de TAPI.
- El campo 'status' puede ser 'confirmed' o 'failed'.
CLIENT LIBRARIES
REQUEST EXAMPLE
curl --request POST \
--url https://subscriptions.homo.tapila.cloud/payment \
--header 'x-authorization-token: YOUR_TOKEN_HERE' \
--header 'x-api-key: YOUR_API_KEY_HERE' \
--header 'Content-Type: application/json' \
--data '{
"companyCode": "",
"productId": "",
"amount": "",
"paymentMethod": "ACCOUNT",
"externalPaymentId": "",
"externalClientId": ""
}'