Datos de pago guardados y tipos de transacciones
En esta sección se describen los tipos de transacciones admitidos para los datos de pago guardados.
Tipos de datos de pago guardados
La pasarela de pago permite crear y utilizar tres tipos de datos de pago guardados:
Normal – para pagos no relacionados con ningún plan o calendario. Por ejemplo, cuando un comprador hace un nuevo pedido y lo paga utilizando datos de tarjeta previamente guardados.
Recurrente – para pagos que ocurren según un calendario fijo. Por ejemplo, pagos mensuales de servicios públicos.
A plazos – al pagar a plazos, cuando el cliente paga la factura en pequeñas partes durante un período de tiempo fijo de acuerdo con un plan de pagos.
Una tarjeta puede tener datos de pago guardados de diferentes tipos. Además, la tarjeta puede tener varios datos de pago guardados para diferentes planes de pago a plazos.
Tipo de transacciones
Las transacciones con datos de pago guardados pertenecen a uno de dos grupos según el iniciador de la transacción:
-
CIT (cardholder-initiated transactions) – transacciones de comercio electrónico en las que el portador de la tarjeta participa en el pago. Este grupo incluye 4 tipos de transacciones:
- C/CI – transacción iniciadora con guardado de datos de pago normales para pagos posteriores.
- RI – transacción iniciadora con guardado de datos de pago para pagos recurrentes.
- II – transacción iniciadora con guardado de datos de pago para pagos a plazos.
- F – transacción no programada realizada por el portador de la tarjeta utilizando datos de pago normales.
-
MIT (Merchant-initiated Transactions) – transacciones de comercio electrónico realizadas por el comerciante sin la participación del portador de la tarjeta. En este grupo entran 3 tipos de transacciones:
- U – transacción no programada utilizando datos de pago normales. Por ejemplo, aplicación de multas. Tenga en cuenta que para esta operación no hay verificación CVC o 3DS, ya que el propietario de la tarjeta no participa en ella y no puede introducir ningún dato.
- R – transacción recurrente posterior utilizando datos de pago recurrentes.
- I – transacción posterior a plazos utilizando datos de pago para pagos a plazos.
El tipo de transacción debe pasarse en el parámetro tii de las solicitudes API de pago. Lea más sobre los valores del parámetro tii aquí.
Gestión de datos de pago guardados a través de API
A continuación se presentan ejemplos de creación y uso de diferentes tipos de datos de pago guardados a través de API utilizando la página de pago propia del comerciante:
- Datos de pago guardados comunes
- Datos de pago guardados recurrentes
- Datos de pago guardados para cuotas
Datos de pago guardados comunes
Creación de datos de pago guardados comunes
Para crear datos de pago guardados comunes, ejecute la siguiente secuencia de solicitudes:
- Ejecute la solicitud register.do con el parámetro
clientId, obtenga en respuestaorderIdyformUrl. - Transfiera el valor obtenido
orderIden el parámetroMDORDERde la solicitud paymentorder.do.
Como resultado se crearán los datos de pago guardados para el cliente con el clientId indicado inicialmente. Puede ejecutar la solicitud getBindings.do para asegurarse de que los datos de pago guardados están creados.
Ejemplo de solicitud paymentorder.do:
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/paymentorder.do \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data '$CVC=123' \
--data '$EXPIRY=203012' \
--data '$PAN=4000001111111118' \
--data 'TEXT=TEST CARDHOLDER' \
--data MDORDER=59e00106-1f69-76a7-b893-b27c00b4f820 \
--data userName=test_user \
--data password=test_user_password{
"redirect": "https://dev.bpcbt.com/payment/merchants/pay/finish.html?orderId=59e00106-1f69-76a7-b893-b27c00b4f820&lang=en",
"info": "Your order is proceeded, redirecting...",
"errorCode": 0
}Pago con datos de pago guardados comunes
Para pagar el pedido con datos de pago guardados comunes utilice la siguiente secuencia de solicitudes:
- Ejecute la solicitud register.do con el parámetro
clientId→ obtenga en respuestaorderId. - Obtenga la lista de datos de pago guardados con ayuda de la solicitud getBindings.do con el mismo valor
clientIdy conbindingType=C→ obtenga en respuestabindingId. - Ejecute la solicitud paymentOrderBinding.do. Transfiera el valor
orderId(obtenido en el Paso 1) en el parámetromdOrder, así como transfiera elbindingIdobtenido. Valores disponibles detii:F,U.
Como resultado el pedido será pagado con ayuda de los datos de pago guardados con el bindingId indicado.
Ejemplo de solicitud paymentOrderBinding.do:
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/paymentOrderBinding.do \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data mdOrder=24c3d392-4c60-7f0b-9ff5-b00100b4f820 \
--data ip=127.0.0.1 \
--data cvc=123 \
--data bindingId=b83317e0-1679-7d85-b375-a63200b4f820 \
--data userName=test_user \
--data password=test_user_password \
--data language=en \
--data tii=F{
"redirect": "https://dev.bpcbt.com/payment/merchants/pay/finish.html?orderId=24c3d392-4c60-7f0b-9ff5-b00100b4f820&lang=en",
"info": "Your order is proceeded, redirecting...",
"errorCode": 0
}Datos de pago guardados recurrentes
Creación de datos de pago guardados recurrentes
Para crear datos de pago guardados recurrentes, ejecute la siguiente secuencia de solicitudes:
- Ejecute la solicitud register.do con el parámetro
clientId, obtenga en respuestaorderIdyformUrl - Transmita el valor obtenido
orderIden el parámetroMDORDERde la solicitud paymentorder.do. Es necesario transmitir parámetros adicionalesrecurringFrequencyyrecurringExpiry(no se realiza verificación, pero esta información es utilizada por el banco emisor de la tarjeta).
Como resultado se creará un enlace de datos de pago guardados para el cliente con el clientId inicialmente especificado. Puede ejecutar la solicitud getBindings.do para asegurarse de que el enlace de datos de pago guardados esté creado.
Ejemplo de solicitud paymentorder.do:
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/paymentorder.do \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data '$CVC=123' \
--data '$EXPIRY=203012' \
--data '$PAN=4000001111111118' \
--data 'TEXT=TEST CARDHOLDER' \
--data MDORDER=59e00106-1f69-76a7-b893-b27c00b4f820 \
--data userName=test_user \
--data password=test_user_password \
--data language=en \
--data 'jsonParams={"recurringFrequency": "1", "recurringExpiry":"20261231"}'{
"errorCode": 0,
"is3DSVer2": true,
"threeDSServerTransId": "efa8e3ce-a4a6-49f8-b422-df781de18119",
"threeDSMethodURLServer": "https://dev.bpcbt.com/payment/client/gather?threeDSServerTransID=efa8e3ce-a4a6-49f8-b422-df781de18119"
}Pago con enlace de datos de pago guardados recurrente
Para el pago del pedido con enlace de datos de pago guardados recurrente utilice la siguiente secuencia de solicitudes:
- Obtenga la lista de enlaces de datos de pago guardados utilizando la solicitud getBindings.do con
bindingType=R→ obtenga en respuestabindingId. - Ejecute la solicitud recurrentPayment.do con el
bindingIdobtenido.
Como resultado el pedido será pagado mediante el enlace de datos de pago guardados con el bindingId especificado.
Ejemplo de solicitud recurrentPayment.do:
curl --request POST \
--url https://dev.bpcbt.com/payment/recurrentPayment.do \
--header 'Content-Type: application/json' \
--data '{
"userName": "test_user",
"password": "test_user_password",
"orderNumber": "UAF-203974-DE-12",
"language": "EN",
"bindingId": "3080a436-02a0-75c2-a2ce-41be00b40dc0",
"amount": 12300,
"currency": "978",
"description" : "Test description",
"additionalParameters": {
"firstParamName": "firstParamValue",
"secondParamName": "secondParamValue"
}
}'{
"success": true,
"data": {
"orderId": "9adaa8f0-3b5a-742f-80b4-172200b40dc0"
},
"orderStatus": {
"errorCode": "0",
"orderNumber": "9003",
"orderStatus": 2,
"actionCode": 0,
"actionCodeDescription": "",
"amount": 12300,
"currency": "978",
"date": 1618338779501,
"orderDescription": "Test description",
"merchantOrderParams": [
{
"name": "firstParamName",
"value": "firstParamValue"
},
{
"name": "secondParamName",
"value": "secondParamValue"
}
],
"transactionAttributes": [],
"attributes": [
{
"name": "mdOrder",
"value": "9adaa8f0-3b5a-742f-80b4-172200b40dc0"
}
],
"cardAuthInfo": {
"maskedPan": "400000**1118",
"expiration": "202612",
"cardholderName": "TEST CARDHOLDER",
"approvalCode": "123456",
"paymentSystem": "VISA",
"product": "visa-product",
"secureAuthInfo": {
"eci": 7
},
"pan": "400000**1118"
},
"bindingInfo": {
"clientId": "test-client",
"bindingId": "3080a436-02a0-75c2-a2ce-41be00b40dc0"
},
"authDateTime": 1618338779790,
"authRefNum": "111111111111",
"paymentAmountInfo": {
"paymentState": "DEPOSITED",
"approvedAmount": 12300,
"depositedAmount": 12300,
"refundedAmount": 0,
"totalAmount": 12300
},
"bankInfo": {
"bankName": "ES TEST BANK",
"bankCountryCode": "ES",
"bankCountryName": "Spain"
},
"chargeback": false,
"operations": [
{
"amount": 12300,
"cardHolder": "TEST CARDHOLDER",
"authCode": "123456"
}
]
}
}Enlaces de datos de pago guardados para pagos a plazos
Creación de enlace de datos de pago guardados para pago a plazos
Para crear un enlace de datos de pago guardados para pagos a plazos, ejecute la siguiente secuencia de solicitudes:
- Ejecute la solicitud register.do con el parámetro
clientId→ obtenga en respuestaorderId. - Transmita el valor obtenido
orderIden el parámetroMDORDERde la solicitud paymentorder.do. Es necesario transmitir parámetros adicionalesinstallments,totalInstallmentAmount,recurringFrequencyyrecurringExpiry.
Como resultado se creará un enlace de datos de pago guardados para el cliente con el clientId inicialmente especificado. Puede ejecutar la solicitud getBindings.do para asegurarse de que el enlace de datos de pago guardados esté creado.
Ejemplo de solicitud paymentorder.do:
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/paymentorder.do \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data '$CVC=123' \
--data '$EXPIRY=203012' \
--data '$PAN=4000001111111118' \
--data 'TEXT=TEST CARDHOLDER' \
--data MDORDER=bd30b67f-f8c7-7c9c-a4ac-66b300b40dc0 \
--data userName=test_user \
--data password=test_user_password \
--data language=en \
--data 'jsonParams={"installments": "3", "totalInstallmentAmount": "900000", "recurringFrequency": "3", "recurringExpiry":"20261231"}'{
"errorCode": 0,
"is3DSVer2": true,
"threeDSServerTransId": "3e07d895-8cac-460c-81f3-da6f6389dc11",
"threeDSMethodURLServer": "https://dev.bpcbt.com/payment/client/gather?threeDSServerTransID=3e07d895-8cac-460c-81f3-da6f6389dc11",
"threeDSMethodURLServerDirect": "https://dev.bpcbt.com/payment/rest/3dsmethod.do"
}Pago con enlace de datos de pago guardados para pagos a plazos
Para el pago del pedido con enlace de datos de pago guardados para pagos a plazos utilice la siguiente secuencia de solicitudes:
- Obtenga la lista de enlaces de datos de pago guardados utilizando la solicitud getBindings.do con
bindingType=I→ obtenga en respuestabindingId. - Ejecute la solicitud installmentPayment.do con el
bindingIdobtenido.
Como resultado el pedido será pagado mediante el enlace de datos de pago guardados con el bindingId especificado.
Ejemplo de solicitud installmentPayment.do:
curl --request POST \
--url https://dev.bpcbt.com/payment/installmentPayment.do \
--header 'Content-Type: application/json' \
--data '{
"userName": "test_user",
"password": "test_user_password",
"orderNumber": "UAF-203974-DE-12",
"language": "EN",
"bindingId": "8aa4fa8b-4d8a-76ca-b314-7bcc00b4f820",
"amount": 12300,
"currency": "978",
"description" : "Test description",
"additionalParameters": {
"firstParamName": "firstParamValue",
"secondParamName": "secondParamValue"
}
}'{
"errorCode": 0,
"errorMessage": "Success",
"orderId": "0e441115-f3bc-711c-8827-2fdc00b4f820",
"orderStatus": {
"errorCode": "0",
"orderNumber": "7033",
"orderStatus": 2,
"actionCode": 0,
"actionCodeDescription": "",
"amount": 12300,
"currency": "978",
"date": 1618340470944,
"orderDescription": "Test description",
"merchantOrderParams": [
{
"name": "firstParamName",
"value": "firstParamValue"
},
{
"name": "secondParamName",
"value": "secondParamValue"
}
],
"transactionAttributes": [],
"attributes": [
{
"name": "mdOrder",
"value": "0e441115-f3bc-711c-8827-2fdc00b4f820"
}
],
"cardAuthInfo": {
"maskedPan": "400000**1118",
"expiration": "203012",
"cardholderName": "TEST CARDHOLDER",
"approvalCode": "123456",
"paymentSystem": "VISA",
"product": "visa-product",
"secureAuthInfo": {
"eci": 7
},
"pan": "400000**1118"
},
"bindingInfo": {
"clientId": "test-client",
"bindingId": "8aa4fa8b-4d8a-76ca-b314-7bcc00b4f820"
},
"authDateTime": 1618340471076,
"authRefNum": "111111111111",
"paymentAmountInfo": {
"paymentState": "DEPOSITED",
"approvedAmount": 12300,
"depositedAmount": 12300,
"refundedAmount": 0,
"totalAmount": 12300
},
"bankInfo": {
"bankName": "ES TEST BANK",
"bankCountryCode": "ES",
"bankCountryName": "Spain"
},
"chargeback": false,
"operations": [
{
"amount": 12300,
"cardHolder": "TEST CARDHOLDER",
"authCode": "123456"
}
]
},
"error": false
}