Transferencias P2P
Transacción P2P
La funcionalidad P2P le ayuda a proporcionar a los usuarios (clientes actuales o potenciales) la posibilidad de enviarse dinero entre ellos. También permite recibir transferencias en sus tarjetas, sin enviar sus datos a nadie, y ganar comisiones proporcionando el servicio a un amplio círculo de usuarios.
El servicio P2P es un servicio disponible para configuración e integración con sitios web de terceros, aplicaciones móviles, así como bancos de internet y móviles.
Los usuarios tienen acceso a una lista completa de operaciones, envío/recepción de transferencias, registro/autorización en el servicio, gestión de tarjetas guardadas.
Una característica importante del servicio P2P es la posibilidad de realizar transferencias por número de teléfono, incluso si el usuario aún no está registrado en el sistema.
Existen varios escenarios para la implementación de transacciones P2P:
- Los datos del portador de la tarjeta se ingresan del lado de la pasarela
- Los datos del portador de la tarjeta se ingresan del lado de la tienda online
Escenario de procesamiento de operación P2P con ingreso de datos de pago del lado de la pasarela de pago
- En el sitio del vendedor (por ejemplo, en una tienda online) el portador de la tarjeta solicita la ejecución de una transferencia de dinero P2P.
- El sistema de la tienda online registra el pedido en la Pasarela de pago a través de registerP2P.do. Los parámetros de registro utilizados incluyen el monto de la transferencia, moneda, número del pedido en el sistema del vendedor y URL de retorno para el cliente.
- La pasarela de pago en respuesta a la solicitud de registro devuelve un identificador único del pedido en el sistema de pago y URL para redirigir al cliente al formulario de recolección de datos de tarjeta.
- El sistema de la tienda online transfiere la dirección URL de redirección, recibida en el Paso 3, al navegador del cliente.
- El navegador del cliente abre la dirección URL.
- Por la URL especificada el navegador del cliente obtiene el formulario para la recolección de datos de tarjeta.
- El cliente completa el formulario, y los datos se envían al servidor de la pasarela de pago.
- El sistema verifica la pertenencia de la tarjeta a 3-D Secure (SecureCode).
- La pasarela envía el enlace de redirección a la página del servidor de control de acceso (ACS) del banco emisor en el navegador web del cliente (este paso es necesario para la implementación de 3DS).
- El navegador web del cliente solicita el formulario de autorización de usuario de ACS.
- ACS envía el formulario de autorización al navegador web del cliente.
- El cliente completa el formulario, y los datos se envían al servidor de la pasarela de pago.
- ACS procesa el formulario y, independientemente del resultado, envía la dirección URL de redirección de las páginas de la pasarela de pago al navegador web del cliente. Junto con esta URL se envían los parámetros encriptados del resultado de autorización.
- El navegador web del cliente solicita la página de la pasarela de pagos al transmitir parámetros cifrados del resultado de autorización.
- La pasarela de pagos transfiere el dinero.
- Cuando el dinero es transferido, la pasarela de pagos envía la URL de retorno al navegador web del cliente (la URL fue especificada durante el registro del pedido por la tienda en línea en el Paso 2).
- El navegador web del cliente solicita los resultados de la transferencia de dinero de la tienda en línea.
- El sistema de la tienda en línea solicita información sobre el estado del pedido de la pasarela de pagos – getP2PStatus.do.
- La pasarela de pagos devuelve el estado del pedido.
- El sistema de la tienda en línea muestra al cliente el resultado del pago.
Escenario de realización de operación P2P con entrada de datos de pago del lado de la tienda en línea
- El portador de la tarjeta (cliente) interactúa con la tienda en línea para crear un pedido.
- El sistema de la tienda en línea recopila los datos de la tarjeta en su lado.
- El sistema de la tienda en línea registra el pedido en la Pasarela de pagos a través de registerP2P.do. Los parámetros de registro utilizados incluyen la suma de transferencia, moneda, número de pedido en el sistema del vendedor y URL de retorno para el cliente.
- La pasarela de pagos en respuesta a la solicitud de registro devuelve el identificador único del pedido en el sistema de pagos.
-
Opcional. Si la tienda en línea trabaja con comisión, la tienda en línea envía a la pasarela de pagos una solicitud de suma de comisión a través de verifyP2P.do / verifyP2PByBinding.do.
- Opcional. La pasarela de pagos envía en respuesta la suma de comisión.
- La tienda en línea envía una solicitud de transferencia de fondos a la Pasarela de pago a través de performP2P.do / performP2PByBinding.do.
En esta etapa se inicia el funcionamiento de 3DS2.
- La Pasarela de pago verifica en el servidor 3DS si el cliente puede autenticarse utilizando el protocolo 2.0.
- La Pasarela de pago envía respuesta a la solicitud realizada en el Paso 6. La respuesta también devuelve los siguientes parámetros:
-
is3DSVer2- bandera de posibilidad de autenticación 3DSv2 (true/false) -
threeDSServerTransId- identificador de transacción asignado por el servidor 3DS -
threeDSMethodURLServer- dirección del servidor 3DS para recolección de datos del navegador -
threeDSMethodURL- (opcional) dirección del servidor ACS para recolección de datos del navegador -
threeDSMethodDataPacked- (opcional) datos para recolección de datos del navegador en ACS
(Ver también descripción de la solicitud). -
- La tienda en línea invoca
threeDSMethodURLServeren un iframe separado utilizando el métodoPOST, usando el valor obtenido de la respuesta a la solicitud de transferencia de fondos. Esto permite al servidor 3DS recopilar datos sobre el navegador del cliente. -
Opcional. Si en la respuesta a la solicitud de transferencia de fondos se obtuvieron los parámetros
threeDSMethodURLythreeDSMethodDataPacked, la tienda en línea invoca en un iframe separado mediante método POSTthreeDSMethodURL.
- Transferencia de fondos - etapa 2. La tienda en línea vuelve a enviar solicitud para ejecutar la transferencia a través de performP2P.do / performP2PByBinding.do.
Es necesario pasar el parámetrothreeDSServerTransId- identificador de transacción que fue creado por el servidor 3DS y devuelto en el Paso 10.
- La Pasarela de pago envía solicitud de autenticación al servidor 3DS.
- El servidor 3DS envía solicitud de autenticación (AReq) al servidor ACS.
- El servidor ACS envía respuesta a la solicitud de autenticación (ARes) al servidor 3DS.
- El servidor 3DS envía los datos recibidos a la pasarela de pago.
-
- Si el cliente no necesita pasar autenticación en ACS, la pasarela de pago devuelve respuesta a la solicitud de transferencia de fondos. En este caso el escenario continúa desde el Paso 27.
- Si el cliente necesita pasar autenticación en ACS, la Pasarela de pago enviará respuesta a la página de pago con datos de redirección a ACS.
- La página de pago se redirige a
acsUrlcon el parámetrocreq=packedCReq. - ACS muestra la página de autenticación para el cliente (página challenge).
- El cliente está autenticado.
- El servidor ACS verifica la autenticidad de los datos de autenticación.
- Ocurre intercambio de datos entre los servidores ACS y 3DS y se confirma el resultado del procesamiento.
- El servidor ACS redirige al cliente a la página de la tienda.
- La tienda en línea envía solicitud /p2p/finishThreeDsVer2.do a la pasarela de pago.
- La Pasarela de pago envía a la tienda en línea respuesta a la solicitud realizada.
- La tienda en línea envía getP2PStatus.do a la pasarela de pagos para conocer el estado del pedido.
- La pasarela de pagos envía respuesta a la solicitud realizada.
- La tienda en línea muestra la página de resultado al cliente.
Transacción AFT
AFT (Account Funding Transaction) – tipo especial de operaciones de débito de fondos con el objetivo de recargar la cuenta interna del cliente en el sistema del comerciante o cuenta bancaria en el sistema del banco (frecuentemente utilizada como alternativa a la operación de compra).
El escenario de operación AFT tiene las siguientes características:
- Al ejecutar una transacción AFT en la solicitud de registro de pedido es necesario transmitir el parámetro
featurescon el valorWITHOUT_TO_CARD. - En la transacción AFT en la solicitud de pago o en la solicitud de pago por enlace se indican únicamente los datos de la tarjeta de débito, es decir,
fromCard.
Escenario de operación AFT con introducción de datos de pago en el lado de la pasarela de pago
- En el sitio web del vendedor (por ejemplo, en una tienda en línea) el portador de la tarjeta solicita la ejecución de una transferencia monetaria P2P.
- El sistema de la tienda online registra el pedido en la Pasarela de Pagos a través de registerP2P.do con el parámetro
features=WITHOUT_TO_CARD. Los parámetros de registro utilizados incluyen el monto de la transferencia, la moneda, el número de pedido en el sistema del vendedor y la URL de retorno para el cliente.
- La Pasarela de Pagos en respuesta a la solicitud de registro devuelve un identificador único del pedido en el sistema de pagos y la URL para redirigir al cliente al formulario de recopilación de datos de tarjeta.
- El sistema de la tienda online transmite la dirección URL de redirección obtenida en el Paso 3 al navegador del cliente.
- El navegador del cliente abre la dirección URL.
- En la URL indicada, el navegador del cliente obtiene el formulario para recopilar datos de tarjeta.
- El cliente llena el formulario y los datos se envían al servidor de la pasarela de pagos.
- El sistema verifica la pertenencia de la tarjeta a 3-D Secure (SecureCode).
- La pasarela envía el enlace de redirección a la página del servidor de control de acceso (ACS) del banco emisor al navegador web del cliente (este paso es necesario para implementar 3DS).
- El navegador web del cliente solicita el formulario de autorización de usuario de ACS.
- ACS envía el formulario de autorización al navegador web del cliente.
- El cliente llena el formulario y los datos se envían al servidor de la pasarela de pagos.
- ACS procesa el formulario y, independientemente del resultado, envía la dirección URL de redirección de páginas de la pasarela de pagos al navegador web del cliente. Junto con esta URL se envían parámetros cifrados del resultado de autorización.
- El navegador web del cliente solicita la página de la pasarela de pagos al transmitir parámetros cifrados del resultado de autorización.
- La Pasarela de Pagos transfiere el dinero.
- Cuando el dinero es transferido, la pasarela de pagos envía la dirección URL de retorno al navegador web del cliente (la dirección URL fue especificada durante el registro del pedido por la tienda online en el Paso 2).
- El navegador web del cliente solicita los resultados de la transferencia de dinero de la tienda online.
- El sistema de la tienda online solicita información sobre el estado del pedido a la pasarela de pagos – getP2PStatus.do.
- La Pasarela de Pagos devuelve el estado del pedido.
- El sistema de la tienda online muestra al cliente el resultado del pago.
Escenario de operación AFT con ingreso de datos de pago del lado de la tienda online
Este escenario puede ejecutarse de dos maneras:
- Registro y pago en una solicitud (instantPerformP2P.do)
- Registro y pago en solicitudes separadas (registerP2P.do+performP2P.do/performP2PByBinding.do)
Registro y pago en una solicitud
- El titular de la tarjeta (cliente) interactúa con la tienda online para crear un pedido.
- La tienda online recopila los datos de la tarjeta en su lado.
- La tienda online registra el pedido e inicia el pago, enviando una solicitud instantPerformP2P.do.
- La pasarela de pago consulta al servidor 3DS si el cliente puede pasar la autenticación 3DS2.
- La pasarela de pago envía respuesta a la solicitud. La respuesta también devuelve los siguientes parámetros:
-
threeDSServerTransId- identificador de transacción asignado por el servidor 3DS -
threeDSMethodURLServer- dirección del servidor 3DS para la recopilación de datos del navegador -
threeDSMethodURL- (opcional) dirección del servidor ACS para la recopilación de datos del navegador -
threeDSMethodDataPacked- (opcional) datos para la recopilación de datos del navegador en ACS
(Ver también descripción de la solicitud). -
- La tienda online llama a
threeDSMethodURLServeren un iframe separado usando el métodoPOST, utilizando el valor obtenido de la respuesta a la solicitud de transferencia de fondos. Esto permite al servidor 3DS recopilar datos sobre el navegador del cliente. -
Opcional. Si en la respuesta a la solicitud de transferencia de fondos se obtuvieron los parámetros
threeDSMethodURLythreeDSMethodDataPacked, la tienda online llama en un iframe separado mediante el método POST athreeDSMethodURL.
- La tienda online vuelve a enviar la solicitud instantPerformP2P.do, para ejecutar la transferencia.
Es necesario pasar el parámetrothreeDSServerTransId- identificador de transacción que fue creado por el servidor 3DS y devuelto en el Paso 5.
- La pasarela de pago envía solicitud de autenticación al servidor 3DS.
- El servidor 3DS intercambia datos con ACS.
- El servidor 3DS envía los datos obtenidos a la pasarela de pago.
-
- Si el cliente no necesita pasar autenticación en ACS, la pasarela de pago devuelve respuesta a la solicitud de transferencia de fondos. En este caso el escenario continúa desde el Paso 27.
- Si el cliente necesita pasar autenticación en ACS, la pasarela de pago enviará respuesta a la página de pago con datos de redirección a ACS.
- La página de pago se redirige a
acsUrlcon el parámetrocreq=packedCReq. - ACS muestra la página de autenticación para el cliente (página challenge).
- El cliente está autenticado.
- El servidor ACS verifica la autenticidad de los datos de autenticación.
- Ocurre intercambio de datos entre servidores ACS y 3DS y se confirma el resultado del procesamiento.
- El servidor ACS redirige al cliente a la página de la tienda.
- La tienda online envía solicitud /p2p/finishThreeDsVer2.do a la pasarela de pago.
- La pasarela de pago envía a la tienda online respuesta a la solicitud realizada.
- La tienda online envía getP2PStatus.do a la pasarela de pago para conocer el estado del pedido.
- La pasarela de pago envía respuesta a la solicitud realizada.
- La tienda online muestra la página de resultado al cliente.
Registro y pago en solicitudes separadas
- El titular de la tarjeta (cliente) interactúa con la tienda en línea para crear un pedido.
- El sistema de la tienda en línea recopila los datos de la tarjeta en su lado.
- El sistema de la tienda en línea registra el pedido en la Pasarela de pagos a través de registerP2P.do con el parámetro
features=WITHOUT_TO_CARD. Los parámetros de registro utilizados incluyen el monto de transferencia, moneda, número de pedido en el sistema del vendedor y URL de retorno para el cliente.
- La Pasarela de pagos en respuesta a la solicitud de registro devuelve un identificador único del pedido en el sistema de pagos.
-
Opcional. Si la tienda en línea trabaja con comisión, la tienda en línea envía a la pasarela de pagos una solicitud del monto de comisión a través de verifyP2P.do / verifyP2PByBinding.do.
- Opcional. La Pasarela de pagos envía en respuesta el monto de comisión.
- La tienda en línea envía una solicitud de transferencia de fondos a la Pasarela de pagos a través de performP2P.do / performP2PByBinding.do, especificando los datos de la tarjeta de débito en el bloque
fromCard.
En esta etapa se inicia el trabajo de 3DS 2.0.
- La Pasarela de pagos verifica en el servidor 3DS si el cliente puede autenticarse utilizando el protocolo 2.0.
- La pasarela de pagos envía una respuesta a la solicitud realizada en el Paso 6. La respuesta también devuelve los siguientes parámetros:
-
is3DSVer2- indicador de posibilidad de autenticación 3DSv2 (true/false) -
threeDSServerTransId- identificador de transacción asignado por el servidor 3DS -
threeDSMethodURLServer- dirección del servidor 3DS para la recopilación de datos del navegador -
threeDSMethodURL- (opcional) dirección del servidor ACS para la recopilación de datos del navegador -
threeDSMethodDataPacked- (opcional) datos para la recopilación de datos del navegador en ACS
(Ver también descripción de la solicitud). -
- La tienda online invoca
threeDSMethodURLServeren un iframe separado utilizando el métodoPOST, usando el valor obtenido de la respuesta a la solicitud de transferencia de fondos. Esto permite al servidor 3DS recopilar datos sobre el navegador del cliente. -
Opcional. Si en la respuesta a la solicitud de transferencia de fondos se obtuvieron los parámetros
threeDSMethodURLythreeDSMethodDataPacked, la tienda online invoca en un iframe separado mediante método POSTthreeDSMethodURL.
- Transferencia de fondos - etapa 2. La tienda online envía nuevamente una solicitud para ejecutar la transferencia a través de performP2P.do / performP2PByBinding.do.
Es necesario pasar el parámetrothreeDSServerTransId- identificador de transacción que fue creado por el servidor 3DS y devuelto en el Paso 10.
- La pasarela de pagos envía una solicitud de autenticación al servidor 3DS.
- El servidor 3DS envía una solicitud de autenticación (AReq) al servidor ACS.
- El servidor ACS envía una respuesta a la solicitud de autenticación (ARes) al servidor 3DS.
- El servidor 3DS envía los datos recibidos a la pasarela de pagos.
-
- Si el cliente no necesita pasar por autenticación en ACS, la pasarela de pagos devuelve una respuesta a la solicitud de transferencia de fondos. En este caso el escenario continúa desde el Paso 27.
- Si el cliente necesita pasar por autenticación en ACS, la pasarela de pagos enviará una respuesta a la página de pagos con datos de redirección a ACS.
- La página de pago se redirige a
acsUrlcon el parámetrocreq=packedCReq. - ACS muestra la página de autenticación para el cliente (página challenge).
- El cliente está autenticado.
- El servidor ACS verifica la autenticidad de los datos de autenticación.
- Se produce un intercambio de datos entre los servidores ACS y 3DS y se confirma el resultado del procesamiento.
- El servidor ACS redirige al cliente a la página de la tienda.
- La tienda online envía una solicitud /p2p/finishThreeDsVer2.do a la pasarela de pagos.
- La pasarela de pagos envía a la tienda online una respuesta a la solicitud realizada.
- La tienda online envía getP2PStatus.do a la pasarela de pagos para conocer el estado del pedido.
- La pasarela de pagos envía una respuesta a la solicitud realizada.
- La tienda online muestra la página de resultado al cliente.
Transacción OCT
OCT (Original Credit Transaction) - tipo especial de transacciones para acreditar fondos monetarios al destinatario en tiempo real.
- En la transacción OCT en la solicitud de pago se indican solo los datos de la tarjeta de acreditación, es decir,
toCard. - Al ejecutar la transacción OCT en la solicitud de registro de pedido es necesario transmitir el parámetro
featurescon el valorWITHOUT_FROM_CARD.
Escenario de realización de transacción OCT
- El titular de la tarjeta (cliente) interactúa con la tienda en línea para crear el pedido.
- El sistema de la tienda en línea registra el pedido en la Pasarela de pago a través de registerP2P.do. Los parámetros de registro utilizados incluyen el monto de transferencia, moneda, número de pedido en el sistema del vendedor y URL de retorno para el cliente.
- La Pasarela de pago en respuesta a la solicitud de registro devuelve un identificador único del pedido en el sistema de pago y URL para redirigir al cliente al formulario de recopilación de datos de tarjeta.
- El sistema de la tienda en línea transmite la dirección URL de redirección obtenida en el Paso 3 al navegador del cliente.
- El cliente completa el formulario, y los datos se envían al servidor de la pasarela de pago.
- La Pasarela de pago realiza la transferencia de fondos a través de performP2P.do.
- Cuando el dinero es transferido, la pasarela de pago envía la URL de retorno al navegador web del cliente (la URL fue especificada durante el registro del pedido por la tienda en línea en el Paso 2).
- El navegador web del cliente solicita los resultados de la transferencia de dinero de la tienda en línea.
- El sistema de la tienda en línea solicita información sobre el estado del pedido a la pasarela de pago – getP2PStatus.do.
- La Pasarela de pago devuelve el estado del pedido.
- El sistema de la tienda en línea muestra al cliente el resultado del pago.
Llamadas API
Las solicitudes de transacciones P2P deben estar firmadas. La información sobre firmas de solicitudes está disponible en nuestra Guía de API.
Registro de pedido P2P
Para procesar un pedido de transferencia de dinero de tarjeta a tarjeta utilice la solicitud https://dev.bpcbt.com/payment/rest/api/p2p/registerP2P.do.
Al ejecutar la solicitud es necesario usar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | username |
String [1..30] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Obligatorio | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
| Obligatorio | currency |
String [3] | Código de moneda del pago ISO 4217. Si no se especifica, se utiliza el valor por defecto. Solo se permiten dígitos. |
| Obligatorio | returnUrl |
String [1..512] | Dirección a la que se requiere redirigir al usuario en caso de pago exitoso. La dirección debe especificarse completamente, incluyendo el protocolo utilizado (por ejemplo, https://mybestmerchantreturnurl.com en lugar de mybestmerchantreturnurl.com). De lo contrario, el usuario será redirigido a una dirección del siguiente tipo: https://dev.bpcbt.com/payment/<merchant_address>. |
| Opcional | failUrl |
String [1..512] | Dirección a la que se debe redirigir al usuario en caso de pago fallido. La dirección debe especificarse completamente, incluyendo el protocolo utilizado (por ejemplo, https://mybestmerchantreturnurl.com en lugar de mybestmerchantreturnurl.com). De lo contrario, el usuario será redirigido a una dirección del siguiente tipo: https://dev.bpcbt.com/payment/<merchant_address>. |
| Opcional | orderDescription |
String [1..600] | Descripción del pedido transmitida al gateway de pago durante el registro. En este campo no está permitido transmitir datos personales o datos de pago (números de tarjetas, etc.). Este requisito está relacionado con el hecho de que la descripción del pedido no se enmascara en ningún lugar. |
| Opcional | language |
String [2] | Clave de idioma según ISO 639-1. Si no se especifica el idioma, se utiliza el idioma predeterminado especificado en la configuración de la tienda. Idiomas soportados: en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv. |
| Opcional | clientId |
String [0..255] | Número de cliente (ID) en el sistema del comerciante — hasta 255 caracteres. Se utiliza para implementar la funcionalidad de vinculaciones. Puede devolverse en la respuesta, si al comerciante se le permite crear vinculaciones. La especificación de este parámetro al procesar pagos por vinculación es obligatoria. En caso contrario, el pago será imposible. |
| Opcional | merchantLogin |
String [1..255] | Para registrar un pedido en nombre de otro comerciante, especifica su login (para la cuenta API) en este parámetro. Se puede usar solo si tienes permiso para ver las transacciones de otros vendedores o si el vendedor especificado es tu vendedor subsidiario. |
| Opcional | dynamicCallbackUrl |
String [1..512] | Parámetro para transmitir la dirección dinámica para recibir notificaciones callback de "pago" por pedido, activadas para el comerciante (autorización exitosa, débito exitoso, devolución, cancelación, rechazo de pago por timeout, rechazo de pago card present). Las notificaciones callback "no de pago" (activación/desactivación de vinculación, creación de vinculación), serán enviadas a la dirección callback estática. |
| Opcional | sessionTimeoutSecs |
Integer [1..9] | Duración de vida del pedido en segundos. En caso de que el parámetro no esté especificado, se utilizará el valor indicado en la configuración del comerciante, o el tiempo por defecto (1200 segundos = 20 minutos). Si en la solicitud está presente el parámetro expirationDate, entonces el valor del parámetro sessionTimeoutSecs no se tiene en cuenta. |
| Opcional | sessionExpiredDate |
String | Fecha y hora de vencimiento del pedido. Formato: yyyy-MM-ddTHH:mm:ss.Si este parámetro no se transmite en la solicitud, entonces para determinar el tiempo de vencimiento del pedido se utiliza el parámetro sessionTimeoutSecs. |
| Opcional | mcc |
Integer [4] | Merchant Category Code (código de categoría del comerciante). Para transmitir este parámetro es necesario un permiso especial. Solo se pueden usar valores de la lista permitida de MCC. Para obtener información más detallada, contacte al soporte técnico. |
| Opcional | bindingId |
String [1..255] | Identificador de una vinculación ya existente (identificador de tarjeta tokenizada por el gateway). Solo se puede usar si el comerciante tiene permiso para trabajar con vinculaciones. Si este parámetro se transmite en esta solicitud, significa que:
|
| Opcional | creditBindingId |
String [0..255] | Identificador de vinculación de tarjeta para acreditación. Se utiliza en transferencias de tarjeta a tarjeta, cuando se conoce de antemano la tarjeta del destinatario. Este parámetro debe ser transmitido primero en la solicitud de registro de pago (registerP2P.do - aquí también debe ser transmitido el parámetro clientId), luego en la solicitud de transferencia de fondos por vinculación (performP2PByBinding.do - el valor del parámetro creditBindingId, transmitido en registerP2P.do, debe ser transmitido en el parámetro bindingId en el bloque toCard). |
| Condicional | transactionTypeIndicator |
String | Se utiliza en tipos de transacciones unidireccionales. Son posibles los siguientes valores:
|
| Condicional | features |
Object | Contenedor para el parámetro feature, obligatorio para operaciones unidireccionales.Si se ejecuta una operación AFT (transferencia de tarjeta a cuenta) - en el parámetro feature debe pasarse WITHOUT_TO_CARD. Además, si después de esta operación AFT se prevé ejecutar una operación OCT, es necesario pasar el valor OCT_EXPECTED. Ejemplo: "features" : { "feature" : ["WITHOUT_TO_CARD"] } Si se ejecuta una operación OCT (transferencia de cuenta a tarjeta) - en el parámetro feature debe pasarse WITHOUT_FROM_CARD. Ejemplo: "features" : { "feature" : ["WITHOUT_FROM_CARD"] } |
| Opcional | params |
Object | Campos de información adicional para almacenamiento posterior, se transmiten de la siguiente forma: "params": [ {"name": "param1", "value": "value1"}, {"name": "param2", "value": "value2"} ].Estos campos pueden ser transmitidos al procesamiento del banco para su posterior visualización en los registros del banco. Por defecto se transmiten orderNumber (número de pedido) y orderDescription (descripción del pedido).orderDescription no debe exceder 99 caracteres, no utilice los siguientes caracteres: %, +, retorno de carro \r y salto de línea
|
| ). Para habilitar esta funcionalidad, contacte al banco. |
|||
| Opcional | feeInput |
String | Tamaño de la comisión en unidades mínimas de moneda. La funcionalidad debe estar habilitada a nivel del vendedor en el gateway. Si para el comerciante está establecido el permiso correspondiente, y él realiza operaciones AFT, la comisión del comerciante llega en la solicitud de registro y se envía en el mensaje al procesamiento.
|
| Opcional | shippingPayerData |
Object | Objeto que contiene datos de entrega al cliente. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Ver parámetros anidados. |
| Opcional | preOrderPayerData |
Object | Objeto que contiene datos de pedido preliminar. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Ver parámetros anidados. |
| Opcional | orderPayerData |
Object | Objeto que contiene datos sobre el pagador del pedido. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Ver parámetros anidados. |
| Opcional | billingAndShippingAddressMatchIndicator |
String [1] | Indicador de coincidencia de la dirección de facturación del titular de la tarjeta y la dirección de envío. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Valores posibles:
|
| Condicional | billingPayerData |
Object | Bloque con datos de registro del cliente (dirección, código postal), necesario para pasar la verificación de dirección en el marco de los servicios AVS/AVV. Obligatorio si la función está habilitada para el vendedor en el lado de la Pasarela de Pago. Debe haber sido incluido en la solicitud registerP2P.do o en la solicitud performP2P.do. Ver parámetros anidados. |
| Condicional | billingRecipientData |
Object | Bloque de datos sobre el destinatario. Obligatorio si la función está habilitada para el vendedor en el lado de la Pasarela de Pago. Debe haber sido incluido en la solicitud registerP2P.do o en la solicitud performP2P.do. Ver parámetros anidados. |
| Opcional | debitMdOrder |
String [1..36] | Número único de pedido para el cual se ejecutó la transferencia AFT en iPay. Este parámetro se utiliza para operaciones OCT en transferencias P2P (AFT+OCT). |
Descripción de los parámetros del objeto shippingPayerData:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | shippingCity |
String [1..50] | Ciudad del cliente (de la dirección de entrega) |
| Opcional | shippingCountry |
String [1..50] | País del cliente |
| Opcional | shippingAddressLine1 |
String [1..50] | Dirección principal del cliente (de la dirección de entrega) |
| Opcional | shippingAddressLine2 |
String [1..50] | Dirección principal del cliente (de la dirección de entrega) |
| Opcional | shippingAddressLine3 |
String [1..50] | Dirección principal del cliente (de la dirección de entrega) |
| Opcional | shippingPostalCode |
String [1..16] | Código postal del cliente para entrega |
| Opcional | shippingState |
String [1..50] | Estado/región del comprador (de la dirección de entrega) |
| Opcional | shippingMethodIndicator |
Integer [2] | Indicador del método de entrega. Valores posibles:
|
| Opcional | deliveryTimeframe |
Integer [2] | Plazo de entrega del producto. Valores posibles:
|
| Opcional | deliveryEmail |
String [1..254] | Dirección de correo electrónico de destino para la entrega de distribución digital. Es preferible transmitir el correo electrónico en el parámetro de solicitud independiente email (pero si lo transmite en este bloque, se aplicarán las mismas reglas). |
Descripción de los parámetros del objeto preOrderPayerData:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | preOrderDate |
String [10] | Fecha esperada de entrega (para compras de preorden) en formato AAAAMMDD. |
| Opcional | preOrderPurchaseInd |
Integer [2] | Indicador de colocación por el cliente de un pedido para entrega disponible o futura. Valores posibles:
|
| Opcional | reorderItemsInd |
Integer [2] | Indicador de que el cliente vuelve a reservar una entrega previamente pagada como parte de un nuevo pedido. Valores posibles:
|
Descripción de los parámetros del objeto orderPayerData.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | homePhone |
String [7..15] | Teléfono de casa del propietario de la tarjeta. Es necesario indicar siempre el código del país, pero el signo + o 00 al inicio se puede indicar u omitir. El número debe tener una longitud de 7 a 15 dígitos. De este modo, son posibles los siguientes valores:
|
| Opcional | workPhone |
String [7..15] | Teléfono de trabajo del propietario de la tarjeta. Es necesario indicar siempre el código del país, pero el signo + o 00 al inicio se puede indicar u omitir. El número debe tener una longitud de 7 a 15 dígitos. De este modo, son posibles los siguientes valores:
|
| Opcional | mobilePhone |
String [7..15] | Número de teléfono móvil del propietario de la tarjeta. Es necesario indicar siempre el código del país, pero el signo + o 00 al inicio se puede indicar u omitir. El número debe tener una longitud de 7 a 15 dígitos. De este modo, son posibles los siguientes valores:
Para los pagos por VISA con autorización 3DS es necesario indicar el correo electrónico o el número de teléfono del propietario de la tarjeta. Si tiene configurada la visualización del número de teléfono en la página de pago y usted indicó un número de teléfono incorrecto, el cliente podrá corregirlo en la página de pago. |
A continuación se muestran los parámetros del bloque billingPayerData (datos sobre la dirección de registro del cliente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | billingCity |
String [0..50] | Ciudad registrada para una tarjeta específica en el Banco Emisor. Obligatorio para transacciones AFT con Visa. |
| Condición | billingCountry |
String [0..50] | País registrado para una tarjeta específica del banco emisor. Formato: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) o nombre del país. Recomendamos transmitir el código ISO de dos/tres letras del país. Obligatorio para transacciones AFT con Visa. |
| Condición | billingAddressLine1 |
String [0..50] | Dirección registrada para una tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio de transmitir para verificación AVS. Obligatorio para transacciones AFT con Visa. |
| Opcional | billingAddressLine2 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor. Línea 2. |
| Opcional | billingAddressLine3 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor. Línea 3. |
| Opcional | billingPostalCode |
String [0..9] | Código postal registrado para la tarjeta específica en el Banco Emisor. Obligatorio para la verificación AVS. |
| Opcional | billingState |
String [0..50] | Estado registrado para la tarjeta específica en el Banco Emisor. Formato: valor completo del código ISO 3166-2, su parte o nombre del estado/región. Puede contener letras solo del alfabeto latino. Recomendamos transmitir el código ISO de dos letras del estado/región. |
| Obligatorio | payerAccount |
String [1..32] | Número de cuenta del remitente. |
| Condición | payerLastName |
String [1..64] | Apellido del remitente. Obligatorio para transacciones AFT con Visa. |
| Condición | payerFirstName |
String [1..35] | Nombre del remitente. Obligatorio para transacciones AFT con Visa. |
| Opcional | payerMiddleName |
String [1..35] | Patronímico del remitente. |
| Opcional | payerCombinedName |
String [1..99] | Nombre completo del remitente. |
| Opcional | payerIdType |
String [1..8] | Tipo de documento de identificación proporcionado del remitente. Valores posibles:
|
| Opcional | payerIdNumber |
String [1..99] | Número del documento de identificación proporcionado del remitente. |
| Condición | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. Obligatorio para transacciones AFT con Visa. |
A continuación se presentan los parámetros del bloque billingRecipientData (datos sobre el destinatario).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | recipientCity |
String [0..40] | Código de ciudad del destinatario. Formato ISO 3166-1 alpha-3. Puede contener letras solo del alfabeto latino. |
| Condición | recipientCountry |
String [0..50] | Código del país del destinatario. Formato: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) o nombre del país. Recomendamos transmitir el código ISO de país de dos/tres letras. Obligatorio para transacciones AFT con Mastercard. |
| Opcional | recipientAddressLine1 |
String [0..50] | Dirección del destinatario. Puede contener letras solo del alfabeto latino. |
| Opcional | recipientPostalCode |
String [0..9] | Código postal del destinatario. |
| Opcional | recipientState |
String [0..50] | Código del estado del destinatario. Formato: valor completo del código ISO 3166-2, su parte o denominación del estado/región. Puede contener letras únicamente del alfabeto latino. Recomendamos transmitir el código ISO de dos letras del estado/región. |
| Condición | recipientAccount |
String [0..32] | Número de cuenta del destinatario. Obligatorio para transacciones AFT con Mastercard. |
| Condición | recipientAccountNumberType |
Integer [1..2] | Tipo de cuenta del destinatario. Valores posibles:
Obligatorio para transacciones AFT con Mastercard. |
| Obligatorio | recipientLastName |
String [0..35] | Apellido del destinatario. |
| Obligatorio | recipientFirstName |
String [0..35] | Nombre del destinatario. |
| Opcional | recipientMiddleName |
String [0..35] | Nombre patronímico del destinatario. |
| Opcional | recipientCombinedName |
String [0..99] | Nombre completo del destinatario. |
| Opcional | recipientIdType |
String [1..8] | Tipo de documento de identificación proporcionado del destinatario. Valores posibles:
|
| Opcional | recipientIdNumber |
String [1..99] | Número del documento de identificación proporcionado del destinatario. |
| Opcional | recipientBirthday |
String [1..20] | Fecha de cumpleaños del destinatario en formato YYYYMMDD. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| Obligatorio | errorMessage |
String [1..512] | Parámetro informativo que es la descripción del error en caso de que ocurra un error. El valor de errorMessage puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. El idioma de descripción se especifica en el parámetro language de la solicitud. |
| Opcional | formUrl |
String [1..512] | URL del formulario de pago al cual será redirigido el comprador. La URL no se devuelve si el registro del pedido no se completó debido a un error especificado en errorCode. |
| Opcional | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Opcional | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
Ejemplos
Ejemplo de solicitud
curl -X POST 'https://dev.bpcbt.com/payment/rest/api/p2p/registerP2P.do'
-H 'Content-Type: application/json'
--data-raw '{
"username":"test_user",
"password":"test_user_password",
"amount" : 50000,
"currency" : "978",
"returnUrl" : "https://mybestmerchantreturnurl.com",
"orderNumber": "1"
}'Ejemplo de solicitud de operación OCT
curl -X POST 'https://dev.bpcbt.com/payment/rest/api/p2p/registerP2P.do'
-H 'Content-Type: application/json'
--data-raw '{
"username":"test_user",
"password":"test_user_password",
"amount" : 50000,
"currency" : "978",
"returnUrl" : "https://mybestmerchantreturnurl.com",
"orderNumber": "12",
"clientId": "122313",
"creditBindingId": "99ef0cee-34fe-7312-ad7c-78bc00b3236a",
"transactionTypeIndicator": "A",
"features":{
"feature":["FEATURE_1", "FEATURE_2", .. "FEATURE_N"]
}
}'Ejemplo de solicitud con especificación de datos del remitente y destinatario
curl -X POST 'https://dev.bpcbt.com/payment/rest/api/p2p/registerP2P.do' \
--header 'Content-Type: application/json' \
--data-raw '{
"username": "test_user",
"password": "test_user_password",
"amount" : 1500,
"currency" : "978",
"returnUrl" : "https://mybestmerchantreturnurl.com",
"failUrl" : "https://failUrl.com",
"orderNumber": "01rthtbkuysgr",
"email" : "test@test.com",
"billingPayerData": {
"payerAccount": "DE89370400440532013000",
"payerLastName": "CHINA",
"payerFirstName": "Mieville",
"payerMiddleName": "Tom",
"payerCombinedName": "CHINA Mieville",
"payerIdType": "IDTP1",
"payerIdNumber": "792209292",
"billingCity": "BUD",
"billingCountry": "348",
"billingAddressLine1": "Terez krt",
"billingAddressLine2": "Terez krt",
"billingAddressLine3": "Terez krt",
"billingPostalCode": "1067",
"billingState": "VI",
"payerBirthday": "19900101"
},
"billingRecipientData": {
"recipientAccount": "DE89370400440532013000",
"recipientLastName": "CHINA",
"recipientFirstName": "Mieville",
"recipientMiddleName": "Tom",
"recipientCombinedName": "CHINA Mieville",
"recipientIdType": "IDTP1",
"recipientIdNumber": "792209292",
"recipientCity": "BUD",
"recipientCountry": "348",
"recipientAddressLine1": "Terez krt",
"recipientPostalCode": "1067",
"recipientState": "VI",
"recipientBirthday": "19900101"
}
}'Ejemplo de respuesta
{
"errorCode": 0,
"errorMessage": "Successful",
"orderId": "0a4eaae8-653a-71a9-8259-46fc00a8ea58",
"formUrl": "https://dev.bpcbt.com/payment/merchants/ecom/payment.html?mdOrder=0a4eaae8-653a-71a9-8259-46fc00a8ea58&language=en",
"orderNumber": "2009"
}Importe de comisión
Para obtener el importe de comisión por transferencia de dinero utilice la solicitud https://dev.bpcbt.com/payment/rest/api/p2p/verifyP2P.do.
La estructura de la solicitud supone la presencia del bloque fromCard para transmitir atributos de tarjeta para débito y del bloque toCard para transmitir atributos de tarjeta para acreditación.
Dependiendo de los procesos de negocio, al realizar transferencia de tarjeta a tarjeta pueden ser posibles las siguientes variantes:
- Al pasarela de pagos se transmiten datos de tarjeta de débito y datos de tarjeta de acreditación de fondos monetarios. En este caso en la solicitud deben estar presentes ambos bloques de parámetros —
fromCardytoCard. - Si la acreditación a tarjeta se realiza por sistema externo, entonces al pasarela de pagos se transmiten solo datos de tarjeta de débito. En este caso debe estar completado solo un bloque de parámetros —
fromCard - Si el débito de tarjeta se realiza por sistema externo, entonces al pasarela de pagos se transmiten solo datos de tarjeta de acreditación. En este caso debe estar completado solo un bloque de parámetros —
toCard
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | username |
String [1..30] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| No obligatorio | language |
String [2] | Clave de idioma según ISO 639-1. Si no se especifica el idioma, se utiliza el idioma predeterminado especificado en la configuración de la tienda. Idiomas soportados: en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv. |
| No obligatorio | amount |
String [0..12] | Importe de la transferencia en unidades mínimas de moneda (por ejemplo, en kopeks). Este parámetro se transmite si el pagador decide cambiar el importe de la transferencia al realizar la transferencia monetaria. |
| No obligatorio | mcc |
Integer [4] | Merchant Category Code (código de categoría del comerciante). Para transmitir este parámetro es necesario un permiso especial. Solo se pueden usar valores de la lista permitida de MCC. Para obtener información más detallada, contacte al soporte técnico. |
| No obligatorio | billingPayerData |
Object | Bloque con datos de registro del cliente (dirección, código postal), necesario para pasar verificación de dirección en marco de servicios AVS/AVV. Es obligatorio si la función está habilitada para el vendedor del lado del Pasarela de Pagos. Ver parámetros anidados. |
| Obligatorio | fromCard |
Object | Bloque con atributos de la tarjeta de débito. Ver parámetros anidados. |
| Obligatorio | toCard |
Object | Bloque con atributos de la tarjeta de acreditación. Ver parámetros anidados. |
El bloque fromCard incluye los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | pan |
String [1..19] | Número de tarjeta de débito de fondos monetarios. |
| Condición | cvc |
String [3] | Código CVC/CVV2 en el reverso de la tarjeta de débito. Obligatorio, si el pago no se realiza por vinculación y/o si el vendedor no tiene permiso para el pago sin CVC. Solo se permiten dígitos. |
| Condición | expirationYear |
Integer [4] | Año de vencimiento de la tarjeta de débito. Se aceptan valores de 2000 a 2200. |
| Condición | expirationMonth |
Integer [2] | Mes de vencimiento de la tarjeta de débito. Valores disponibles: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12. |
| Obligatorio | cardholderName |
String [1..26] | Nombre del titular de la tarjeta de débito. |
| Condición | seToken |
String | Datos encriptados de la tarjeta. Obligatorio, si se usa en lugar de los datos de la tarjeta. Parámetros obligatorios para la cadena seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Más detalles sobre la generación de seToken véase aquí. |
El bloque toCard incluye los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | pan |
String [1..19] | Número de tarjeta para el depósito de fondos monetarios. |
| No obligatorio | expirationYear |
Integer [4] | Año de vencimiento de la tarjeta de acreditación. Se aceptan valores de 2000 a 2200. |
| No obligatorio | expirationMonth |
Integer [2] | Mes de vencimiento de la tarjeta de acreditación. Valores disponibles: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12. |
| No obligatorio | cardholderName |
String [1..26] | Nombre del titular de la tarjeta de acreditación. |
| Condición | seToken |
String | Datos cifrados de la tarjeta. Obligatorio si se utiliza en lugar de los datos de la tarjeta. Parámetros obligatorios para la cadena seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Más detalles sobre la generación de seToken ver aquí. |
A continuación se muestran los parámetros del bloque billingPayerData (datos sobre la dirección de registro del cliente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | billingCity |
String [0..50] | Ciudad registrada para una tarjeta específica en el Banco Emisor. Obligatorio para transacciones AFT con Visa. |
| Condición | billingCountry |
String [0..50] | País registrado para una tarjeta específica del banco emisor. Formato: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) o nombre del país. Recomendamos transmitir el código ISO de dos/tres letras del país. Obligatorio para transacciones AFT con Visa. |
| Condición | billingAddressLine1 |
String [0..50] | Dirección registrada para una tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio de transmitir para verificación AVS. Obligatorio para transacciones AFT con Visa. |
| Opcional | billingAddressLine2 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor. Línea 2. |
| Opcional | billingAddressLine3 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor. Línea 3. |
| Opcional | billingPostalCode |
String [0..9] | Código postal registrado para la tarjeta específica en el Banco Emisor. Obligatorio para la verificación AVS. |
| Opcional | billingState |
String [0..50] | Estado registrado para la tarjeta específica en el Banco Emisor. Formato: valor completo del código ISO 3166-2, su parte o nombre del estado/región. Puede contener letras solo del alfabeto latino. Recomendamos transmitir el código ISO de dos letras del estado/región. |
| Obligatorio | payerAccount |
String [1..32] | Número de cuenta del remitente. |
| Condición | payerLastName |
String [1..64] | Apellido del remitente. Obligatorio para transacciones AFT con Visa. |
| Condición | payerFirstName |
String [1..35] | Nombre del remitente. Obligatorio para transacciones AFT con Visa. |
| Opcional | payerMiddleName |
String [1..35] | Patronímico del remitente. |
| Opcional | payerCombinedName |
String [1..99] | Nombre completo del remitente. |
| Opcional | payerIdType |
String [1..8] | Tipo de documento de identificación proporcionado del remitente. Valores posibles:
|
| Opcional | payerIdNumber |
String [1..99] | Número del documento de identificación proporcionado del remitente. |
| Condición | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. Obligatorio para transacciones AFT con Visa. |
A continuación se presentan los parámetros del bloque billingRecipientData (datos sobre el destinatario).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | recipientCity |
String [0..40] | Código de ciudad del destinatario. Formato ISO 3166-1 alpha-3. Puede contener letras solo del alfabeto latino. |
| Condición | recipientCountry |
String [0..50] | Código del país del destinatario. Formato: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) o nombre del país. Recomendamos transmitir el código ISO de país de dos/tres letras. Obligatorio para transacciones AFT con Mastercard. |
| Opcional | recipientAddressLine1 |
String [0..50] | Dirección del destinatario. Puede contener letras solo del alfabeto latino. |
| Opcional | recipientPostalCode |
String [0..9] | Código postal del destinatario. |
| Opcional | recipientState |
String [0..50] | Código del estado del destinatario. Formato: valor completo del código ISO 3166-2, su parte o denominación del estado/región. Puede contener letras únicamente del alfabeto latino. Recomendamos transmitir el código ISO de dos letras del estado/región. |
| Condición | recipientAccount |
String [0..32] | Número de cuenta del destinatario. Obligatorio para transacciones AFT con Mastercard. |
| Condición | recipientAccountNumberType |
Integer [1..2] | Tipo de cuenta del destinatario. Valores posibles:
Obligatorio para transacciones AFT con Mastercard. |
| Obligatorio | recipientLastName |
String [0..35] | Apellido del destinatario. |
| Obligatorio | recipientFirstName |
String [0..35] | Nombre del destinatario. |
| Opcional | recipientMiddleName |
String [0..35] | Nombre patronímico del destinatario. |
| Opcional | recipientCombinedName |
String [0..99] | Nombre completo del destinatario. |
| Opcional | recipientIdType |
String [1..8] | Tipo de documento de identificación proporcionado del destinatario. Valores posibles:
|
| Opcional | recipientIdNumber |
String [1..99] | Número del documento de identificación proporcionado del destinatario. |
| Opcional | recipientBirthday |
String [1..20] | Fecha de cumpleaños del destinatario en formato YYYYMMDD. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| Obligatorio | errorMessage |
String [1..512] | Parámetro informativo que es la descripción del error en caso de que ocurra un error. El valor de errorMessage puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. El idioma de descripción se especifica en el parámetro language de la solicitud. |
El bloque feeDescriptionList incluye los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| No obligatorio | feeAmount |
Integer [1..12] | Importe de la comisión. |
| No obligatorio | feeCurrency |
String [3] | Código de moneda de pago ISO 4217. |
| No obligatorio | feeDescription |
String [1..512] | Descripción de la comisión. |
Ejemplos
Ejemplo de solicitud
curl -X POST 'https://dev.bpcbt.com/payment/rest/api/p2p/verifyP2P.do'
-H 'Content-Type: application/json'
--data-raw '{
"username":"test_user",
"password":"test_user_password",
"orderId": "0a4eaae8-653a-71a9-8259-46fc00a8ea58",
"fromCard": {
"cardholderName": "TEST CARDHOLDER",
"cvc": "123",
"expirationMonth": 12,
"expirationYear": 2030,
"pan": "5000001111111115"
},
"toCard": {
"pan": "4000001111111118"
},
"amount" : 50000
}'Ejemplo de respuesta
{
"errorCode": 0,
"errorMessage": "Successful",
"feeDescriptionList: [ {
"feeAmount": 500,
"feeCurrency": "978",
"feeDescription": "Acquirer fee"
} ]
}Comisión por transferencia P2P por vinculación
Para obtener el monto de la comisión al transferir fondos por vinculación, utilice la solicitud https://dev.bpcbt.com/payment/rest/api/p2p/verifyP2PByBinding.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de la solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | username |
String [1..30] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Opcional | language |
String [2] | Clave de idioma según ISO 639-1. Si no se especifica el idioma, se utiliza el idioma predeterminado especificado en la configuración de la tienda. Idiomas soportados: en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv. |
| Opcional | mcc |
Integer [4] | Merchant Category Code (código de categoría del comerciante). Para transmitir este parámetro es necesario un permiso especial. Solo se pueden usar valores de la lista permitida de MCC. Para obtener información más detallada, contacte al soporte técnico. |
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Obligatorio | fromCard |
Object | Bloque con atributos de la tarjeta de débito. Ver parámetros anidados. |
| Obligatorio | toCard |
Object | Bloque con atributos de la tarjeta de acreditación. Ver parámetros anidados. |
El bloque fromCard incluye los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | bindingId |
String [1..255] | Identificador de vinculación creado al pagar el pedido o utilizado para el pago. Disponible solo si el vendedor tiene permitido crear vinculaciones. |
| Condición | pan |
String [1..19] | Número de tarjeta de débito de fondos monetarios. |
| Condición | cvc |
String [3] | Código CVC/CVV2 en el reverso de la tarjeta de débito. Obligatorio, si el pago no se realiza por vinculación y/o si el vendedor no tiene permiso para el pago sin CVC. Solo se permiten dígitos. |
| Condición | expirationYear |
Integer [4] | Año de vencimiento de la tarjeta de débito. Se aceptan valores de 2000 a 2200. |
| Condición | expirationMonth |
Integer [2] | Mes de vencimiento de la tarjeta de débito. Valores disponibles: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12. |
| Opcional | cardholderName |
String [1..26] | Nombre del titular de la tarjeta de débito. |
| Condición | seToken |
String | Datos encriptados de la tarjeta. Obligatorio, si se usa en lugar de los datos de la tarjeta. Parámetros obligatorios para la cadena seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Más detalles sobre la generación de seToken véase aquí. |
El bloque toCard incluye los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | bindingId |
String [1..255] | Identificador de vinculación creado al pagar el pedido o utilizado para el pago. Disponible solo si el vendedor tiene permitido crear vinculaciones. |
| Condición | pan |
String [1..19] | Número de tarjeta para el depósito de fondos monetarios. |
| Opcional | expirationYear |
Integer [4] | Año de vencimiento de la tarjeta de acreditación. Se aceptan valores de 2000 a 2200. |
| Opcional | expirationMonth |
Integer [2] | Mes de vencimiento de la tarjeta de acreditación. Valores disponibles: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12. |
| Opcional | cardholderName |
String [1..26] | Nombre del titular de la tarjeta de acreditación. |
| Condición | seToken |
String | Datos cifrados de la tarjeta. Obligatorio si se utiliza en lugar de los datos de la tarjeta. Parámetros obligatorios para la cadena seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Más detalles sobre la generación de seToken ver aquí. |
Parámetros de la respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| Obligatorio | errorMessage |
String [1..512] | Parámetro informativo que es la descripción del error en caso de que ocurra un error. El valor de errorMessage puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. El idioma de descripción se especifica en el parámetro language de la solicitud. |
| Opcional | feeAmount |
Integer [1..12] | Importe de la comisión. |
| Opcional | feeCurrency |
String [3] | Código de moneda de pago ISO 4217. |
| Opcional | feeDescription |
String [1..512] | Descripción de la comisión. |
Ejemplos
Ejemplo de solicitud
curl --location --request POST 'https://dev.bpcbt.com/payment/rest/api/p2p/verifyP2PByBinding.do' \
--header 'Content-Type: application/json' \
--data-raw '{
"username": "test_user",
"password": "test_user_password",
"orderId": "fa71bf70-7c81-484e-a6fc-7db7e4283b2a",
"bindingId": "4d792471-cee0-742c-922d-a265072e6148",
"fromCard": {
"seToken": "ofVx1r3aIJ3Mlx3nkfeOIJgFOnwfsgFK+V6Yzm+KxJgsq19l74GChhX0We/LEFq78Rhn9uFAEZGdeyDhnIc/KfuvObf0EzoDA65Uj1Z8FjwWyjnEwTBHZL4KmdFBCSk8jLxHt70mXwyjiHYyCVH1fT/UVOnsrkZVGrqmEG4MTi5dX9Znzf24DwRg4iezvdT8vf0dUW5lJdvY1tgOsOnBulwy6kH/YbHVsnR6yxO6d6IsdnT5f8PxaB+7ZyUqgrd6VA88FGJKJgdoxk4721pqKSG5dYroLJG96s23EDJ2Hpi4e9wU2rP7E6dlFw+qzATqX/eaJbaQ9eakkdMWnkj7aQ=="
},
"toCard": {
"cardholderName": "IVAN IVANOV",
"cvc": "123",
"expirationMonth": 12,
"expirationYear": 2024,
"pan": "5555555555555599"
},
"amount": 1000,
"currency": "978",
"clientId": "123",
"fromCard": {
"bindingId": "fd3afc57-c6d0-4e08-aaef-1b7cfeb093dc"
},
"toCard": {
"pan": "4000001111111118"
}
}'Ejemplo de respuesta
{
"errorCode" : 0,
"errorMessage" : "Successful",
"feeDescriptionList" : [ {
"feeAmount" : 10,
"feeCurrency" : "978",
"feeDescription" : "Acquirer fee"
} ]
}Transferencia P2P
Para realizar una transferencia monetaria de tarjeta a tarjeta utilice la solicitud https://dev.bpcbt.com/payment/rest/api/p2p/performP2P.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
La estructura de la solicitud performP2P.do supone la presencia del bloque fromCard para transmitir atributos de la tarjeta para débito y del bloque toCard para transmitir atributos de la tarjeta para acreditación. Dependiendo de los procesos de negocio definidos para el banco y la tienda, al realizar la transferencia de tarjeta a tarjeta pueden ser posibles las siguientes variantes.
- La tienda transmite al gateway datos de la tarjeta de débito y datos de la tarjeta de acreditación de fondos monetarios. En este caso en la solicitud deben estar presentes ambos bloques de parámetros —
fromCardytoCard. - Si la acreditación a la tarjeta es realizada por un sistema externo (operación AFT), entonces la tienda transmite al gateway solo datos de la tarjeta de débito. En este caso debe haber solo un bloque de parámetros –
fromCard - Si el débito de la tarjeta es realizado por un sistema externo (operación OCT), entonces la tienda transmite al gateway solo datos de la tarjeta de acreditación. En este caso debe haber solo un bloque de parámetros –
toCard
Parámetros de la solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | username |
String [1..30] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Opcional | language |
String [2] | Clave de idioma según ISO 639-1. Si no se especifica el idioma, se utiliza el idioma predeterminado especificado en la configuración de la tienda. Idiomas soportados: en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv. |
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Opcional | email |
String [1..40] | Correo electrónico del pagador. |
| Opcional | amount |
String [0..12] | Importe de la transferencia en unidades mínimas de moneda (por ejemplo, en kopeks). Este parámetro se transmite si el pagador decide cambiar el importe de la transferencia al realizar la transferencia monetaria. |
| Opcional | type |
String | En caso de transferencia monetaria con datos solo de una tarjeta es necesario transmitir en este parámetro el valor correspondiente:WITHOUT_FROM_CARD - sin indicación de tarjeta para el débito de fondos.WITHOUT_TO_CARD - sin indicación de tarjeta para el abono. Si se trata de una transferencia monetaria ordinaria de tarjeta a tarjeta, entonces aquí es necesario transmitir el siguiente valor: STANDARD. |
| Opcional | amountInput |
Integer [0..12] | Importe de la transferencia en unidades mínimas de moneda (por ejemplo, en kopeks). Si se especifica un importe en este parámetro, la transferencia se realizará por este importe (independientemente del importe transmitido en la solicitud de procesamiento del pedido). |
| Opcional | captcha |
String | CAPTCHA (texto destinado a distinguir la entrada humana de la entrada de máquina) |
| Optional | externalScaExemptionIndicator |
String | Tipo de excepción SCA (Strong Customer Authentication). Se utiliza para transacciones AFT. Si se especifica este parámetro, la transacción será procesada dependiendo de su configuración en la pasarela de pagos: o se ejecutará una operación SSL forzada, o el banco emisor recibirá información sobre la excepción SCA y tomará la decisión de realizar la operación con autenticación 3DS o sin ella (para obtener información detallada contacte con nuestro servicio de soporte). Valores permitidos:
Para transmitir este parámetro debe tener derechos suficientes en la pasarela de pagos. |
| Opcional | threeDSSDK |
Boolean | Valores posibles: true o false Bandera que indica que el pago proviene del 3DS SDK. |
| Opcional | threeDSSDKEncData |
String | Datos cifrados del dispositivo. Parámetro es obligatorio para SDK. |
| Opcional | threeDSSDKReferenceNumber |
String | Identificador oficial del 3DS2 SDK |
| Opcional | threeDSSDKEphemPubKey |
String | Parte pública de la clave efímera. Requerida para establecer sesión con ACS. Parámetro es obligatorio para SDK. |
| Opcional | threeDSSDKAppId |
String | Identificador único del SDK. Parámetro es obligatorio para SDK. |
| Opcional | threeDSSDKTransId |
String | Identificador único de la transacción en el SDK. Parámetro es obligatorio para SDK. |
| Opcional | threeDSMethodNotificationUrl |
String [1..512] | URL para envío de notificación sobre la verificación completada en ACS. |
| Condicional | threeDSServerTransId |
String [1..36] | Identificador de transacción creado en el servidor 3DS. Obligatorio para la autenticación 3DS. |
| Opcional | threeDSVer2FinishUrl |
String [1..512] | URL al que el cliente debe ser redirigido después de la autenticación en el servidor ACS. |
| Condicional | threeDSVer2MdOrder |
String [1..36] | Número de pedido que fue registrado en la primera parte de la solicitud en el marco de la operación 3DS2. Obligatorio para la autenticación 3DS. Si este parámetro está presente en la solicitud, entonces se utiliza mdOrder, que se transmite en el presente parámetro. En tal caso no ocurre el registro del pedido, sino que ocurre inmediatamente el pago del pedido.Este parámetro se transmite solo al utilizar métodos de pago instantáneo, es decir, cuando el pedido se registra y se paga en el marco de una solicitud. |
| Opcional | bindingNotNeeded |
Boolean | Valores permitidos:
|
| Condicional | originalPaymentNetRefNum |
String | Identificador de la transacción original o anterior exitosa en el sistema de pago en relación con la operación ejecutada por vinculación - TRN ID. Se transmite si el valor del parámetro tii = R,U o F.Obligatorio al usar las vinculaciones del comerciante en transferencias por vinculación. |
| Opcional | mcc |
Integer [4] | Merchant Category Code (código de categoría del comerciante). Para transmitir este parámetro es necesario un permiso especial. Solo se pueden usar valores de la lista permitida de MCC. Para obtener información más detallada, contacte al soporte técnico. |
| Condicional | tii |
String | Identificador del iniciador de transacción. Parámetro que indica qué tipo de operación ejecutará el iniciador (Cliente o Comerciante). Obligatorio para operaciones AFT y transferencia usando vinculación en el bloque fromCard o vinculación propia del comerciante.Para operaciones OCT este parámetro no se transmite. Valores posibles |
| Obligatorio | params |
Object | Campos de información adicional para almacenamiento posterior, se transmiten de la siguiente forma: {"param":"value","param2":"value2"}.Estos campos pueden ser transmitidos al procesamiento del banco para su posterior visualización en los registros del banco. Por defecto se transmiten orderNumber (número de pedido) y orderDescription (descripción del pedido).orderDescription no debe exceder 99 caracteres, no utilice los siguientes caracteres: %, +, retorno de carro \r y salto de línea
|
| ). Para habilitar esta funcionalidad, contacte con el banco. En el objeto params de la solicitud de transferencia de dinero de tarjeta a tarjeta pueden ser transmitidos los siguientes datos del cliente (el formato de los valores depende del método utilizado de procesamiento de datos):
params la siguiente información (el formato de los valores se determina por el método utilizado de procesamiento de datos):
Si es necesario contacte con el equipo de soporte para indicar valores permanentes de los parámetros payer* y recipientName, para no transmitirlos cada vez en todas las solicitudes. |
|||
| Opcional | shippingPayerData |
Object | Objeto que contiene datos sobre la entrega al cliente. Este parámetro se utiliza para posterior autenticación 3DS del cliente. Ver parámetros anidados. |
| Opcional | preOrderPayerData |
Object | Objeto que contiene datos del pedido preliminar. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Ver parámetros anidados. |
| Opcional | orderPayerData |
Object | Objeto que contiene datos sobre el pagador del pedido. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Ver parámetros anidados. |
| Condición | billingPayerData |
Object | Bloque con datos de registro del cliente (dirección, código postal), necesario para pasar la verificación de dirección en el marco de los servicios AVS/AVV. Obligatorio si la función está habilitada para el vendedor del lado de la Pasarela de Pago. Debió estar incluido en la solicitud registerP2P.do o en la solicitud performP2P.do. Ver parámetros anidados. |
| Condición | billingRecipientData |
Object | Bloque de datos sobre el destinatario. Obligatorio si la función está habilitada para el vendedor del lado de la Pasarela de Pago. Debió estar incluido en la solicitud registerP2P.do o en la solicitud performP2P.do. Ver parámetros anidados. |
| Obligatorio | fromCard |
Object | Bloque con atributos de la tarjeta de débito. Ver parámetros anidados. |
| Obligatorio | toCard |
Object | Bloque con atributos de la tarjeta de acreditación. Ver parámetros anidados. |
Valores posibles del parámetro tii:
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Datos de tarjeta se guardan después de transacción | Comentario |
|---|---|---|---|---|---|---|
| CI | Iniciante - Normal (CIT) | Iniciante | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de vinculación. |
| F | Pago no programado (CIT) | Subsecuente | Comprador | Cliente selecciona tarjeta en lugar de ingreso manual | No | Transacción de comercio electrónico, utilizando vinculación normal previamente guardada. |
Descripción de los parámetros del objeto shippingPayerData:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | shippingCity |
String [1..50] | Ciudad del cliente (de la dirección de entrega) |
| Opcional | shippingCountry |
String [1..50] | País del cliente |
| Opcional | shippingAddressLine1 |
String [1..50] | Dirección principal del cliente (de la dirección de entrega) |
| Opcional | shippingAddressLine2 |
String [1..50] | Dirección principal del cliente (de la dirección de entrega) |
| Opcional | shippingAddressLine3 |
String [1..50] | Dirección principal del cliente (de la dirección de entrega) |
| Opcional | shippingPostalCode |
String [1..16] | Código postal del cliente para entrega |
| Opcional | shippingState |
String [1..50] | Estado/región del comprador (de la dirección de entrega) |
| Opcional | shippingMethodIndicator |
Integer [2] | Indicador del método de entrega. Valores posibles:
|
| Opcional | deliveryTimeframe |
Integer [2] | Plazo de entrega del producto. Valores posibles:
|
| Opcional | deliveryEmail |
String [1..254] | Dirección de correo electrónico de destino para la entrega de distribución digital. Es preferible transmitir el correo electrónico en el parámetro de solicitud independiente email (pero si lo transmite en este bloque, se aplicarán las mismas reglas). |
Descripción de los parámetros del objeto preOrderPayerData:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | preOrderDate |
String [10] | Fecha esperada de entrega (para compras de preorden) en formato AAAAMMDD. |
| Opcional | preOrderPurchaseInd |
Integer [2] | Indicador de colocación por el cliente de un pedido para entrega disponible o futura. Valores posibles:
|
| Opcional | reorderItemsInd |
Integer [2] | Indicador de que el cliente vuelve a reservar una entrega previamente pagada como parte de un nuevo pedido. Valores posibles:
|
Descripción de los parámetros del objeto orderPayerData.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | homePhone |
String [7..15] | Teléfono de casa del propietario de la tarjeta. Es necesario indicar siempre el código del país, pero el signo + o 00 al inicio se puede indicar u omitir. El número debe tener una longitud de 7 a 15 dígitos. De este modo, son posibles los siguientes valores:
|
| Opcional | workPhone |
String [7..15] | Teléfono de trabajo del propietario de la tarjeta. Es necesario indicar siempre el código del país, pero el signo + o 00 al inicio se puede indicar u omitir. El número debe tener una longitud de 7 a 15 dígitos. De este modo, son posibles los siguientes valores:
|
| Opcional | mobilePhone |
String [7..15] | Número de teléfono móvil del propietario de la tarjeta. Es necesario indicar siempre el código del país, pero el signo + o 00 al inicio se puede indicar u omitir. El número debe tener una longitud de 7 a 15 dígitos. De este modo, son posibles los siguientes valores:
Para los pagos por VISA con autorización 3DS es necesario indicar el correo electrónico o el número de teléfono del propietario de la tarjeta. Si tiene configurada la visualización del número de teléfono en la página de pago y usted indicó un número de teléfono incorrecto, el cliente podrá corregirlo en la página de pago. |
A continuación se muestran los parámetros del bloque billingPayerData (datos sobre la dirección de registro del cliente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | billingCity |
String [0..50] | Ciudad registrada para una tarjeta específica en el Banco Emisor. Obligatorio para transacciones AFT con Visa. |
| Condición | billingCountry |
String [0..50] | País registrado para una tarjeta específica del banco emisor. Formato: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) o nombre del país. Recomendamos transmitir el código ISO de dos/tres letras del país. Obligatorio para transacciones AFT con Visa. |
| Condición | billingAddressLine1 |
String [0..50] | Dirección registrada para una tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio de transmitir para verificación AVS. Obligatorio para transacciones AFT con Visa. |
| Opcional | billingAddressLine2 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor. Línea 2. |
| Opcional | billingAddressLine3 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor. Línea 3. |
| Opcional | billingPostalCode |
String [0..9] | Código postal registrado para la tarjeta específica en el Banco Emisor. Obligatorio para la verificación AVS. |
| Opcional | billingState |
String [0..50] | Estado registrado para la tarjeta específica en el Banco Emisor. Formato: valor completo del código ISO 3166-2, su parte o nombre del estado/región. Puede contener letras solo del alfabeto latino. Recomendamos transmitir el código ISO de dos letras del estado/región. |
| Obligatorio | payerAccount |
String [1..32] | Número de cuenta del remitente. |
| Condición | payerLastName |
String [1..64] | Apellido del remitente. Obligatorio para transacciones AFT con Visa. |
| Condición | payerFirstName |
String [1..35] | Nombre del remitente. Obligatorio para transacciones AFT con Visa. |
| Opcional | payerMiddleName |
String [1..35] | Patronímico del remitente. |
| Opcional | payerCombinedName |
String [1..99] | Nombre completo del remitente. |
| Opcional | payerIdType |
String [1..8] | Tipo de documento de identificación proporcionado del remitente. Valores posibles:
|
| Opcional | payerIdNumber |
String [1..99] | Número del documento de identificación proporcionado del remitente. |
| Condición | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. Obligatorio para transacciones AFT con Visa. |
A continuación se presentan los parámetros del bloque billingRecipientData (datos sobre el destinatario).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | recipientCity |
String [0..40] | Código de ciudad del destinatario. Formato ISO 3166-1 alpha-3. Puede contener letras solo del alfabeto latino. |
| Condición | recipientCountry |
String [0..50] | Código del país del destinatario. Formato: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) o nombre del país. Recomendamos transmitir el código ISO de país de dos/tres letras. Obligatorio para transacciones AFT con Mastercard. |
| Opcional | recipientAddressLine1 |
String [0..50] | Dirección del destinatario. Puede contener letras solo del alfabeto latino. |
| Opcional | recipientPostalCode |
String [0..9] | Código postal del destinatario. |
| Opcional | recipientState |
String [0..50] | Código del estado del destinatario. Formato: valor completo del código ISO 3166-2, su parte o denominación del estado/región. Puede contener letras únicamente del alfabeto latino. Recomendamos transmitir el código ISO de dos letras del estado/región. |
| Condición | recipientAccount |
String [0..32] | Número de cuenta del destinatario. Obligatorio para transacciones AFT con Mastercard. |
| Condición | recipientAccountNumberType |
Integer [1..2] | Tipo de cuenta del destinatario. Valores posibles:
Obligatorio para transacciones AFT con Mastercard. |
| Obligatorio | recipientLastName |
String [0..35] | Apellido del destinatario. |
| Obligatorio | recipientFirstName |
String [0..35] | Nombre del destinatario. |
| Opcional | recipientMiddleName |
String [0..35] | Nombre patronímico del destinatario. |
| Opcional | recipientCombinedName |
String [0..99] | Nombre completo del destinatario. |
| Opcional | recipientIdType |
String [1..8] | Tipo de documento de identificación proporcionado del destinatario. Valores posibles:
|
| Opcional | recipientIdNumber |
String [1..99] | Número del documento de identificación proporcionado del destinatario. |
| Opcional | recipientBirthday |
String [1..20] | Fecha de cumpleaños del destinatario en formato YYYYMMDD. |
El bloque fromCard incluye los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | pan |
String [1..19] | Número de tarjeta de débito de fondos monetarios. |
| Condición | cvc |
String [3] | Código CVC/CVV2 en el reverso de la tarjeta de débito. Obligatorio, si el pago no se realiza por vinculación y/o si el vendedor no tiene permiso para el pago sin CVC. Solo se permiten dígitos. |
| Condición | expirationYear |
Integer [4] | Año de vencimiento de la tarjeta de débito. Se aceptan valores de 2000 a 2200. |
| Condición | expirationMonth |
Integer [2] | Mes de vencimiento de la tarjeta de débito. Valores disponibles: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12. |
| Opcional | cardholderName |
String [1..26] | Nombre del titular de la tarjeta de débito. |
| Condición | seToken |
String | Datos encriptados de la tarjeta. Obligatorio, si se usa en lugar de los datos de la tarjeta. Parámetros obligatorios para la cadena seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Más detalles sobre la generación de seToken véase aquí. |
| Condición | threeDsAuthResult |
Object | Bloque con datos sobre el resultado de la autenticación 3 DS utilizando MPI/3DS Server del comerciante. Obligatorio para transacciones de transferencia de tarjeta a tarjeta y AFT utilizando MPI/3DS Server del comerciante. Ver parámetros anidados. |
Al realizar pagos utilizando tokens (APPLE, SAMSUNG, GOOGLE) en lugar de los datos de la tarjeta en el bloque fromCard se transmite:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | vendor |
String | Parámetro utilizado al realizar pagos mediante tokens. Como valor se transmite la denominación del proveedor del servicio de pago: APPLE, GOOGLE, SAMSUNG.Este parámetro debe transmitirse simultáneamente con el parámetro paymentToken (valor del token).Este parámetro no puede estar presente simultáneamente con los parámetros: pan, cvc, expiry, bindingId, seToken. |
| Condición | paymentToken |
String [1..8192] | Valor del token del proveedor especificado en el parámetro vendor (APPLE, GOOGLE, SAMSUNG). Si vendor está especificado, el parámetro es obligatorio.Este parámetro no puede estar presente simultáneamente con los parámetros: pan, cvc, expiry, bindingId, seToken. |
| No obligatorio | decryptedToken |
Boolean | Token descifrado para pagos a través de vendedores (ApplePay, GooglePay, etc.). Valores posibles:
Si no se pasa este parámetro, por defecto se considerará que se pasó decryptedToken = false. |
| No obligatorio | protocolVersion |
String | Versión del protocolo definida por Google para el token de pago: ECv1 (por defecto) o ECv2
|
A continuación se enumeran los parámetros del bloque threeDsAuthResult (datos sobre el resultado de autenticación 3 DS).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | cavv |
String [0..200] | Valor de verificación de autenticación del titular de la tarjeta. Se especifica solo después del pago del pedido y en caso de tener el permiso correspondiente. |
| Opcional | xid |
String [1..80] | Identificador comercial electrónico de la transacción. Se especifica solo después del pago del pedido y en caso de tener el permiso correspondiente. |
| Opcional | eci |
Integer [1..4] | Indicador de comercio electrónico. Especificado solo después del pago del pedido y en caso de tener el permiso correspondiente. A continuación se proporciona la descripción de los códigos ECI.
|
| Condicional | threeDsType |
String | Tipo de autenticación 3DS. Este parámetro es obligatorio para el pago a través de su servidor 3DS con 3DS 2. Para pagos SSL este parámetro es opcional y se determina dependiendo del valor ECI. Valores permitidos:
|
| Opcional | threeDSProtocolVersion |
String | Versión del protocolo 3DS. Valores posibles: "2.1.0", "2.2.0" para 3DS2. Si en la solicitud no se transmite threeDSProtocolVersion, entonces para la autorización 3D Secure se utilizará el valor por defecto (2.1.0 - para 3DS 2). |
El bloque toCard incluye los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | pan |
String [1..19] | Número de tarjeta para el depósito de fondos monetarios. |
| Opcional | expirationYear |
Integer [4] | Año de vencimiento de la tarjeta de acreditación. Se aceptan valores de 2000 a 2200. |
| Opcional | expirationMonth |
Integer [2] | Mes de vencimiento de la tarjeta de acreditación. Valores disponibles: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12. |
| Opcional | cardholderName |
String [1..26] | Nombre del titular de la tarjeta de acreditación. |
| Condición | seToken |
String | Datos cifrados de la tarjeta. Obligatorio si se utiliza en lugar de los datos de la tarjeta. Parámetros obligatorios para la cadena seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Más detalles sobre la generación de seToken ver aquí. |
En la autenticación por protocolo 3DS2 también se transmiten los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | threeDSServerTransId |
String [1..36] | Identificador de transacción creado en el servidor 3DS. Obligatorio para la autenticación 3DS. |
| Opcional | threeDSVer2FinishUrl |
String [1..512] | URL al que el cliente debe ser redirigido después de la autenticación en el servidor ACS. |
| Opcional | threeDSMethodNotificationUrl |
String [1..512] | URL para envío de notificación sobre la verificación completada en ACS. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| Opcional | errorMessage |
String [1..512] | Parámetro informativo que es la descripción del error en caso de que ocurra un error. El valor de errorMessage puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. El idioma de descripción se especifica en el parámetro language de la solicitud. |
| Opcional | info |
String | Resultado del intento de transferencia de fondos. Valor en caso de transferencia exitosa: "Su pago ha sido procesado, se está realizando la redirección..." Valor en caso de error: "Se está realizando la redirección..." |
| Condicional | acsUrl |
String [1..512] | Dirección URL para redirección a ACS. Se devuelve en respuesta exitosa en caso de pago 3D-Secure, si se requiere redirección a ACS. Para más detalles ver Redirección a ACS. |
| Condicional | paReq |
String [1..255] | PAReq (Payment Authentication Request) — mensaje que debe enviarse al ACS junto con la redirección. Se devuelve en respuesta exitosa en caso de pago 3D-Secure, si se requiere redirección al ACS. Este mensaje contiene datos en codificación Base64, necesarios para la autenticación del portador de la tarjeta. Para más detalles ver Redirección al ACS. |
| Opcional | termUrl |
String [1..512] | En caso de respuesta exitosa en caso de pago 3D-Secure. URL para redirigir al cliente después de la interacción con ACS para completar el pago. |
| Opcional | originalPaymentNetRefNum |
String | Identificador de la transacción original o anterior exitosa en el sistema de pago en relación con la operación ejecutada por vinculación - TRN ID. Se transmite si el valor del parámetro tii = R,U o F.Obligatorio al usar las vinculaciones del comerciante en transferencias por vinculación. |
| Condicional | mcTransactionReference |
String [1..19] | Identificador de transacción AFT por tarjeta Mastercard. Aplicable (y obligatorio) solo para Mastercard. |
| Condicional | statusResponse |
Object | Parámetros del estado de respuesta. Este bloque se devuelve solo si tienes habilitada la configuración correspondiente. Para habilitar esta funcionalidad, contacta al soporte técnico. Ver parámetros anidados. |
En la autenticación por protocolo 3DS2 en respuesta a la primera solicitud llegan los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | is3DSVer2 |
Boolean | Valores posibles: true o false Bandera que muestra que el pago proviene de 3DS2. |
| Obligatorio | threeDSServerTransId |
String [1..36] | Identificador de transacción creado en el servidor 3DS. Obligatorio para la autenticación 3DS. |
| Opcional | threeDSMethodUrl |
String [1..512] | URL del servidor ACS para la recopilación de datos del navegador. |
| Obligatorio | threeDSMethodUrlServer |
String [1..512] | Dirección URL del servidor 3DS para la recopilación de datos del navegador que se incluirán en AReq (Authentication Request) desde el servidor 3DS al servidor ACS. |
| Opcional | threeDSMethodDataPacked |
String [1..1024] | Datos CReq (Challenge Response) en codificación Base-64 para envío al servidor ACS. |
| Opcional | threeDSMethodURLServerDirect |
String [1..512] | Dirección URL 3dsmethod.do para ejecutar el método 3DS en el servidor 3DS a través de la pasarela de pago (si existe el permiso correspondiente a nivel de comerciante). |
A continuación se presentan los parámetros que deben estar presentes en la respuesta, después de la solicitud repetida de pago y la necesidad de redirigir al cliente al ACS en la autenticación por protocolo 3DS2:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condicional | acsUrl |
String [1..512] | Dirección URL para redirección a ACS. Se devuelve en respuesta exitosa en caso de pago 3D-Secure, si se requiere redirección a ACS. Para más detalles ver Redirección a ACS. |
| Condicional | packedCReq |
String | Datos empaquetados de challenge request. Se devuelve en respuesta exitosa en caso de pago 3D-Secure, si se requiere redirección a ACS. Este valor debe usarse como valor del parámetro creq del enlace a ACS (acsUrl), para redirigir el cliente a ACS. Para más detalles ver Redirección a ACS. |
Parámetros del bloque statusResponse:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| Obligatorio | errorMessage |
String [1..512] | Parámetro informativo que es la descripción del error en caso de que ocurra un error. El valor de errorMessage puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. El idioma de descripción se especifica en el parámetro language de la solicitud. |
| Opcional | orderStatus |
Integer | El valor de este parámetro indica el estado del pedido en la pasarela de pago. Ausente si el pedido no fue encontrado. A continuación se presenta la lista de valores disponibles:
|
| Opcional | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Opcional | panMaskedFrom |
String [1..19] | Número de tarjeta enmascarado para el débito de fondos. |
| Opcional | panMaskedTo |
String [1..19] | Número de tarjeta enmascarado para el depósito de fondos. |
| Opcional | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
| Opcional | currency |
String [3] | Código de moneda del pago ISO 4217. Si no se especifica, se utiliza el valor por defecto. Solo se permiten dígitos. |
| Opcional | creationDate |
Integer | Fecha de registro del pedido. |
| Opcional | orderDescription |
String [1..600] | Descripción del pedido transmitida al gateway de pago durante el registro. En este campo no está permitido transmitir datos personales o datos de pago (números de tarjetas, etc.). Este requisito está relacionado con el hecho de que la descripción del pedido no se enmascara en ningún lugar. |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Obligatorio | resultCode |
Integer | Código de error al ejecutar la solicitud. Valores posibles:
|
| Opcional | orderParams |
Object | Objeto con atributos del vendedor. En la respuesta puede presentarse más de un bloque orderParams.El objeto debe transmitirse de la siguiente manera: {"param":"value","param2":"value2"}. |
| Opcional | operationList |
Object | Objeto que contiene información sobre las transacciones completadas en el pedido. En la respuesta puede estar presente más de un bloque operationList.Los parámetros que se pueden transmitir están descritos abajo. |
| Opcional | binding |
String | Identificador de enlace (si ya ha sido creado). Este parámetro se devuelve solo si la versión de getP2PStatus es igual a 3 o superior. |
| Opcional | detokenizedPanRepresentation |
String [1..19] | Número de tarjeta destokenizado (últimos 4 dígitos o en forma enmascarada). |
| Opcional | detokenizedPanExpiryDate |
String | Fecha de vencimiento de la tarjeta destokenizada en el siguiente formato: YYYYMM. |
| Opcional | paymentNetRefNum |
String [1..512] | Original Network Reference Number - es un identificador que asigna la red de pagos (Mastercard, Visa, etc.) al realizar la primera transacción (por ejemplo, compra). Al ejecutar la operación inversa (devolución, contracargo, pago repetido), este número:
getP2PStatus version versión 7 o superior.
|
Para completar la transacción utilice el método /p2p/finishThreeDsVer2.do.
Ejemplos
Ejemplo de primera solicitud en caso de autenticación por protocolo 3DS2
curl -X POST 'https://dev.bpcbt.com/payment/rest/api/p2p/performP2P.do'
-H 'Content-Type: application/json'
--data-raw '{
"username":"test_user",
"password":"test_user_password",
"orderId": "0a4eaae8-653a-71a9-8259-46fc00a8ea58",
"amount" : "50000",
"fromCard": {
"vendor": "APPLE",
"paymentToken": "eyJkZXZpY2VNYW51ZmFjdHVyZXJJZGVudGlmaWVyIjoiMDUwMTEwMDMwMjczIiwiY3VycmVuY3lDb2RlIjoiOTc4IiwiYXBwbGljYXRpb25FeHBpcmF0aW9uRGF0ZSI6IjI3MDEzMSIsInBheW1lbnREYXRhIjp7Im9ubGluZVBheW1lbnRDcnlwdG9ncmFtIjoiQUc5WW5Pak1YOUJXQUFSaElJOFBBb0FCRkE9PSJ9LCJwYXltZW50RGF0YVR5cGUiOiIzRFNlY3VyZSIsInRyYW5zYWN0aW9uQW1vdW50IjoxMDAsImFwcGxpY2F0aW9uUHJpbWFyeUFjY291bnROdW1iZXIiOiI1NTU1NTU1NTU1NTU1NTk5In0=",
"decryptedToken":true,
"protocolVersion":"ECv1"
},
"toCard" : {
"pan" : "4111111111111111"
},
"params" : [
{"name" : "recipientName", "Name" : "Surname"},
{"name" : "payerName", "value" : "Name1 Surname1"},
{"name" : "payerCity", "value" : "City"},
{"name" : "payerCountry", "value" : "Country"},
{"name" : "payerPostalCode", "value" : "777777"},
{"name" : "payerState", "value" : "State"},
{"name" : "payerAddress", "value" : "street, 18"]
},
}'Ejemplo de segunda solicitud en caso de autenticación por protocolo 3DS2
curl -X POST 'https://dev.bpcbt.com/payment/rest/api/p2p/performP2P.do'
-H 'Content-Type: application/json'
--data-raw '{
"username":"test_user",
"password":"test_user_password",
"orderId": "0a4eaae8-653a-71a9-8259-46fc00a8ea58",
"fromCard": {
"cardholderName": "TEST CARDHOLDER",
"cvc": "123",
"expirationMonth": 12,
"expirationYear": 2030,
"pan": "5000001111111115"
},
"toCard": {
"pan": "4000001111111118"
},
"amount" : 50000,
"params" : [
{"name" : "recipientName", "Name" : "Surname"},
{"name" : "payerName", "value" : "Name1 Surname1"},
{"name" : "payerCity", "value" : "City"},
{"name" : "payerCountry", "value" : "Country"},
{"name" : "payerPostalCode", "value" : "777777"},
{"name" : "payerState", "value" : "State"},
{"name" : "payerAddress", "value" : "street, 18"
"threeDSServerTransId" : "3afc168a-94b4-4eb3-8e2e-80f6c186669d",
"threeDSVer2FinishUrl" : "https://example.com/acs2/acs/3dsMethod"
}'Ejemplo de solicitud de transferencia AFT
curl -X POST 'https://dev.bpcbt.com/payment/rest/api/p2p/performP2P.do'
-H 'Content-Type: application/json'
--data-raw '{
"username": "test_user",
"password": "test_user_password",
"orderId": "0a4eaae8-653a-71a9-8259-46fc00a8ea58",
"fromCard": {
"cardholderName": "TEST CARDHOLDER",
"cvc": "123",
"expirationMonth": 12,
"expirationYear": 2030,
"pan": "5000001111111115"
},
"amountInput": "1000025",
"type": "STANDARD"
}'Ejemplo de respuesta a la primera solicitud en caso de autenticación por protocolo 3DS2
{
"errorCode": 0,
"is3DSVer2": true,
"threeDSServerTransId": "3afc168a-94b4-4eb3-8e2e-80f6c186669d",
"threeDSMethodURL": "https://example.com/acs2/acs/3dsMethod",
"threeDSMethodURLServer": "https://example.com/3dsserver/api/v1/client/gather?threeDSServerTransID=3afc168a-94b4-4eb3-8e2e-80f6c186669d",
"threeDSMethodDataPacked": "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9hY3F1aXJlci5jb20vM2Rzc2VydmVyL2FwaS92MS9hY3Mvbm90aWZpY2F0aW9uP3RocmVlRFNTZXJ2ZXJUcmFuc0lEPTNhZmMxNjhhLTk0YjQtNGViMy04ZTJlLTgwZjZjMTg2NjY5ZCIsInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiM2FmYzE2OGEtOTRiNC00ZWIzLThlMmUtODBmNmMxODY2NjlkIn0="
}Ejemplo de respuesta a la segunda solicitud en caso de autenticación por protocolo 3DS2
{
"errorCode": 0,
"info": "Your order is proceeded, redirecting...",
"acsUrl": "https://example.com/acs2/acs/creq",
"is3DSVer2": true,
"packedCReq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjNhZmMxNjhhLTk0YjQtNGViMy04ZTJlLTgwZjZjMTg2NjY5ZCIsIm1lc3NhZ2VUeXBlIjoiQ1JlcSIsIm1lc3NhZ2VWZXJzaW9uIjoiMi4xLjAiLCJhY3NUcmFuc0lEIjoiOWM3NTkxMmEtZTg0NC00ODgyLWI5YzctYzZmYmMzNjIyNGQ3IiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0"
}Transferencia P2P por vinculación
Para realizar una transferencia de tarjeta a tarjeta utilizando vinculación, utilice la solicitud https://dev.bpcbt.com/payment/rest/api/p2p/performP2PByBinding.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatorio | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | username |
String [1..30] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Opcional | language |
String [2] | Clave de idioma según ISO 639-1. Si no se especifica el idioma, se utiliza el idioma predeterminado especificado en la configuración de la tienda. Idiomas soportados: en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv. |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Opcional | email |
String [1..40] | Correo electrónico para mostrar en la página de pago. Si se configuran las notificaciones del cliente para el vendedor, es necesario especificar el correo electrónico. Ejemplo: client_mail@email.com. Para pagos con VISA con autorización 3DS es necesario especificar el correo electrónico o el número de teléfono del titular de la tarjeta. |
| Condición | type |
String | En caso de transferencia monetaria con datos solo de una tarjeta es necesario transmitir en este parámetro el valor correspondiente:WITHOUT_FROM_CARD - sin indicación de tarjeta para el débito de fondos.WITHOUT_TO_CARD - sin indicación de tarjeta para el abono. Si se trata de una transferencia monetaria ordinaria de tarjeta a tarjeta, entonces aquí es necesario transmitir el siguiente valor: STANDARD. |
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Opcional | amountInput |
Integer [0..12] | Importe de la transferencia en unidades mínimas de moneda (por ejemplo, en kopeks). Si se especifica un importe en este parámetro, la transferencia se realizará por este importe (independientemente del importe transmitido en la solicitud de procesamiento del pedido). |
| Opcional | amountInput |
Integer [0..12] | Importe de la transferencia en unidades mínimas de moneda (por ejemplo, en kopeks). Si se especifica un importe en este parámetro, la transferencia se realizará por este importe (independientemente del importe transmitido en la solicitud de procesamiento del pedido). |
| Opcional | captcha |
String | CAPTCHA (texto destinado a distinguir la entrada humana de la entrada de máquina) |
| Optional | externalScaExemptionIndicator |
String | Tipo de excepción SCA (Strong Customer Authentication). Se utiliza para transacciones AFT. Si se especifica este parámetro, la transacción será procesada dependiendo de su configuración en la pasarela de pagos: o se ejecutará una operación SSL forzada, o el banco emisor recibirá información sobre la excepción SCA y tomará la decisión de realizar la operación con autenticación 3DS o sin ella (para obtener información detallada contacte con nuestro servicio de soporte). Valores permitidos:
Para transmitir este parámetro debe tener derechos suficientes en la pasarela de pagos. |
| Opcional | threeDSSDK |
Boolean | Valores posibles: true o false Bandera que indica que el pago proviene del 3DS SDK. |
| Opcional | threeDSSDKEncData |
String | Datos cifrados del dispositivo. Parámetro es obligatorio para SDK. |
| Opcional | threeDSSDKReferenceNumber |
String | Identificador oficial del 3DS2 SDK |
| Opcional | threeDSSDKEphemPubKey |
String | Parte pública de la clave efímera. Requerida para establecer sesión con ACS. Parámetro es obligatorio para SDK. |
| Opcional | threeDSSDKAppId |
String | Identificador único del SDK. Parámetro es obligatorio para SDK. |
| Opcional | threeDSSDKTransId |
String | Identificador único de la transacción en el SDK. Parámetro es obligatorio para SDK. |
| Opcional | threeDSMethodNotificationUrl |
String [1..512] | URL para envío de notificación sobre la verificación completada en ACS. |
| Condición | threeDSServerTransId |
String [1..36] | Identificador de transacción creado en el servidor 3DS. Obligatorio para la autenticación 3DS. |
| Opcional | threeDSVer2FinishUrl |
String [1..512] | URL al que el cliente debe ser redirigido después de la autenticación en el servidor ACS. |
| Condición | threeDSVer2MdOrder |
String [1..36] | Número de pedido que fue registrado en la primera parte de la solicitud en el marco de la operación 3DS2. Obligatorio para la autenticación 3DS. Si este parámetro está presente en la solicitud, entonces se utiliza mdOrder, que se transmite en el presente parámetro. En tal caso no ocurre el registro del pedido, sino que ocurre inmediatamente el pago del pedido.Este parámetro se transmite solo al utilizar métodos de pago instantáneo, es decir, cuando el pedido se registra y se paga en el marco de una solicitud. |
| Opcional | bindingNotNeeded |
Boolean | Valores permitidos:
|
| Condición | originalPaymentNetRefNum |
String | Identificador de la transacción original o anterior exitosa en el sistema de pago en relación con la operación ejecutada por vinculación - TRN ID. Se transmite si el valor del parámetro tii = R,U o F.Obligatorio al usar las vinculaciones del comerciante en transferencias por vinculación. |
| Opcional | mcc |
Integer [4] | Merchant Category Code (código de categoría del comerciante). Para transmitir este parámetro es necesario un permiso especial. Solo se pueden usar valores de la lista permitida de MCC. Para obtener información más detallada, contacte al soporte técnico. |
| Condición | tii |
String | Identificador del iniciador de transacción. Parámetro que indica qué tipo de operación realizará el iniciador (Cliente o Comercio). Obligatorio para operaciones AFT y transferencia utilizando vinculación en el bloque fromCard o vinculación propia del comercio.Para operaciones OCT este parámetro no se transmite. Valores posibles |
| Opcional | params |
Object | Campos de información adicional para almacenamiento posterior, se transmiten de la siguiente forma: {"param":"value","param2":"value2"}.Estos campos pueden ser transmitidos al procesamiento del banco para su posterior visualización en los registros del banco. Por defecto se transmiten orderNumber (número de pedido) y orderDescription (descripción del pedido).orderDescription no debe exceder 99 caracteres, no utilice los siguientes caracteres: %, +, retorno de carro \r y salto de línea
|
| ). Para habilitar esta funcionalidad, contacte con el banco. En el objeto params de la solicitud de transferencia de dinero de tarjeta a tarjeta pueden ser transmitidos los siguientes datos del cliente (el formato de los valores depende del método utilizado de procesamiento de datos):
params la siguiente información (el formato de los valores se determina por el método utilizado de procesamiento de datos):
Si es necesario contacte con el equipo de soporte para indicar valores permanentes de los parámetros payer* y recipientName, para no transmitirlos cada vez en todas las solicitudes. |
|||
| Opcional | shippingPayerData |
Object | Objeto que contiene datos sobre la entrega al cliente. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Ver parámetros anidados. |
| Opcional | preOrderPayerData |
Object | Objeto que contiene datos de pedido preliminar. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Ver parámetros anidados. |
| Opcional | orderPayerData |
Object | Objeto que contiene datos sobre el pagador del pedido. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Ver parámetros anidados. |
| Opcional | billingAndShippingAddressMatchIndicator |
String [1] | Indicador de coincidencia de la dirección de facturación del titular de la tarjeta y la dirección de envío. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Valores posibles:
|
| Condición | billingPayerData |
Object | Bloque con datos de registro del cliente (dirección, código postal), necesario para pasar la verificación de dirección en el marco de los servicios AVS/AVV. Obligatorio si la función está habilitada para el vendedor en el lado de la Pasarela de Pagos. Ver parámetros anidados. |
| Condición | billingRecipientData |
Object | Bloque de datos sobre el destinatario. Obligatorio si la función está habilitada para el vendedor en el lado de la Pasarela de Pagos. Ver parámetros anidados. |
| Obligatorio | fromCard |
Object | Bloque con atributos de la tarjeta de débito. Ver parámetros anidados. |
| Obligatorio | toCard |
Object | Bloque con atributos de la tarjeta de acreditación. Ver parámetros anidados. |
Valores posibles del parámetro tii:
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Datos de tarjeta se guardan después de transacción | Comentario |
|---|---|---|---|---|---|---|
| CI | Iniciante - Normal (CIT) | Iniciante | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de vinculación. |
| F | Pago no programado (CIT) | Subsecuente | Comprador | Cliente selecciona tarjeta en lugar de ingreso manual | No | Transacción de comercio electrónico, utilizando vinculación normal previamente guardada. |
El bloque fromCard incluye los siguientes parámetros:
| Obligatorio | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | bindingId |
String [1..255] | Identificador de vinculación creado al pagar el pedido o utilizado para el pago. Disponible solo si el vendedor tiene permitido crear vinculaciones. |
| Condición | pan |
String [1..19] | Número de tarjeta de débito de fondos monetarios. |
| Condición | cvc |
String [3] | Código CVC/CVV2 en el reverso de la tarjeta de débito. Obligatorio, si el pago no se realiza por vinculación y/o si el vendedor no tiene permiso para el pago sin CVC. Solo se permiten dígitos. |
| Condición | expirationYear |
Integer [4] | Año de vencimiento de la tarjeta de débito. Se aceptan valores de 2000 a 2200. |
| Condición | expirationMonth |
Integer [2] | Mes de vencimiento de la tarjeta de débito. Valores disponibles: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12. |
| Opcional | cardholderName |
String [1..26] | Nombre del titular de la tarjeta de débito. |
| Condición | seToken |
String | Datos encriptados de la tarjeta. Obligatorio, si se usa en lugar de los datos de la tarjeta. Parámetros obligatorios para la cadena seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Más detalles sobre la generación de seToken véase aquí. |
| Condición | threeDsAuthResult |
Object | Bloque con datos sobre el resultado de autenticación 3 DS utilizando MPI/3DS Server del comercio. Obligatorio para transacciones de transferencia de tarjeta a tarjeta y AFT utilizando MPI/3DS Server del comercio. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque threeDsAuthResult (datos sobre el resultado de autenticación 3 DS).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | cavv |
String [0..200] | Valor de verificación de autenticación del titular de la tarjeta. Se especifica solo después del pago del pedido y en caso de tener el permiso correspondiente. |
| Opcional | xid |
String [1..80] | Identificador comercial electrónico de la transacción. Se especifica solo después del pago del pedido y en caso de tener el permiso correspondiente. |
| Opcional | eci |
Integer [1..4] | Indicador de comercio electrónico. Especificado solo después del pago del pedido y en caso de tener el permiso correspondiente. A continuación se proporciona la descripción de los códigos ECI.
|
| Condicional | threeDsType |
String | Tipo de autenticación 3DS. Este parámetro es obligatorio para el pago a través de su servidor 3DS con 3DS 2. Para pagos SSL este parámetro es opcional y se determina dependiendo del valor ECI. Valores permitidos:
|
| Opcional | threeDSProtocolVersion |
String | Versión del protocolo 3DS. Valores posibles: "2.1.0", "2.2.0" para 3DS2. Si en la solicitud no se transmite threeDSProtocolVersion, entonces para la autorización 3D Secure se utilizará el valor por defecto (2.1.0 - para 3DS 2). |
El bloque toCard incluye los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | bindingId |
String [1..255] | Identificador de vinculación creado al pagar el pedido o utilizado para el pago. Disponible solo si el vendedor tiene permitido crear vinculaciones. |
| Condición | pan |
String [1..19] | Número de tarjeta para el depósito de fondos monetarios. |
| Opcional | expirationYear |
Integer [4] | Año de vencimiento de la tarjeta de acreditación. Se aceptan valores de 2000 a 2200. |
| Opcional | expirationMonth |
Integer [2] | Mes de vencimiento de la tarjeta de acreditación. Valores disponibles: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12. |
| Opcional | cardholderName |
String [1..26] | Nombre del titular de la tarjeta de acreditación. |
| Condición | seToken |
String | Datos cifrados de la tarjeta. Obligatorio si se utiliza en lugar de los datos de la tarjeta. Parámetros obligatorios para la cadena seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Más detalles sobre la generación de seToken ver aquí. |
Descripción de los parámetros del objeto shippingPayerData:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | shippingCity |
String [1..50] | Ciudad del cliente (de la dirección de entrega) |
| Opcional | shippingCountry |
String [1..50] | País del cliente |
| Opcional | shippingAddressLine1 |
String [1..50] | Dirección principal del cliente (de la dirección de entrega) |
| Opcional | shippingAddressLine2 |
String [1..50] | Dirección principal del cliente (de la dirección de entrega) |
| Opcional | shippingAddressLine3 |
String [1..50] | Dirección principal del cliente (de la dirección de entrega) |
| Opcional | shippingPostalCode |
String [1..16] | Código postal del cliente para entrega |
| Opcional | shippingState |
String [1..50] | Estado/región del comprador (de la dirección de entrega) |
| Opcional | shippingMethodIndicator |
Integer [2] | Indicador del método de entrega. Valores posibles:
|
| Opcional | deliveryTimeframe |
Integer [2] | Plazo de entrega del producto. Valores posibles:
|
| Opcional | deliveryEmail |
String [1..254] | Dirección de correo electrónico de destino para la entrega de distribución digital. Es preferible transmitir el correo electrónico en el parámetro de solicitud independiente email (pero si lo transmite en este bloque, se aplicarán las mismas reglas). |
Descripción de los parámetros del objeto preOrderPayerData:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | preOrderDate |
String [10] | Fecha esperada de entrega (para compras de preorden) en formato AAAAMMDD. |
| Opcional | preOrderPurchaseInd |
Integer [2] | Indicador de colocación por el cliente de un pedido para entrega disponible o futura. Valores posibles:
|
| Opcional | reorderItemsInd |
Integer [2] | Indicador de que el cliente vuelve a reservar una entrega previamente pagada como parte de un nuevo pedido. Valores posibles:
|
Descripción de los parámetros del objeto orderPayerData.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | homePhone |
String [7..15] | Teléfono de casa del propietario de la tarjeta. Es necesario indicar siempre el código del país, pero el signo + o 00 al inicio se puede indicar u omitir. El número debe tener una longitud de 7 a 15 dígitos. De este modo, son posibles los siguientes valores:
|
| Opcional | workPhone |
String [7..15] | Teléfono de trabajo del propietario de la tarjeta. Es necesario indicar siempre el código del país, pero el signo + o 00 al inicio se puede indicar u omitir. El número debe tener una longitud de 7 a 15 dígitos. De este modo, son posibles los siguientes valores:
|
| Opcional | mobilePhone |
String [7..15] | Número de teléfono móvil del propietario de la tarjeta. Es necesario indicar siempre el código del país, pero el signo + o 00 al inicio se puede indicar u omitir. El número debe tener una longitud de 7 a 15 dígitos. De este modo, son posibles los siguientes valores:
Para los pagos por VISA con autorización 3DS es necesario indicar el correo electrónico o el número de teléfono del propietario de la tarjeta. Si tiene configurada la visualización del número de teléfono en la página de pago y usted indicó un número de teléfono incorrecto, el cliente podrá corregirlo en la página de pago. |
A continuación se muestran los parámetros del bloque billingPayerData (datos sobre la dirección de registro del cliente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | billingCity |
String [0..50] | Ciudad registrada para una tarjeta específica en el Banco Emisor. Obligatorio para transacciones AFT con Visa. |
| Condición | billingCountry |
String [0..50] | País registrado para una tarjeta específica del banco emisor. Formato: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) o nombre del país. Recomendamos transmitir el código ISO de dos/tres letras del país. Obligatorio para transacciones AFT con Visa. |
| Condición | billingAddressLine1 |
String [0..50] | Dirección registrada para una tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio de transmitir para verificación AVS. Obligatorio para transacciones AFT con Visa. |
| Opcional | billingAddressLine2 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor. Línea 2. |
| Opcional | billingAddressLine3 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor. Línea 3. |
| Opcional | billingPostalCode |
String [0..9] | Código postal registrado para la tarjeta específica en el Banco Emisor. Obligatorio para la verificación AVS. |
| Opcional | billingState |
String [0..50] | Estado registrado para la tarjeta específica en el Banco Emisor. Formato: valor completo del código ISO 3166-2, su parte o nombre del estado/región. Puede contener letras solo del alfabeto latino. Recomendamos transmitir el código ISO de dos letras del estado/región. |
| Obligatorio | payerAccount |
String [1..32] | Número de cuenta del remitente. |
| Condición | payerLastName |
String [1..64] | Apellido del remitente. Obligatorio para transacciones AFT con Visa. |
| Condición | payerFirstName |
String [1..35] | Nombre del remitente. Obligatorio para transacciones AFT con Visa. |
| Opcional | payerMiddleName |
String [1..35] | Patronímico del remitente. |
| Opcional | payerCombinedName |
String [1..99] | Nombre completo del remitente. |
| Opcional | payerIdType |
String [1..8] | Tipo de documento de identificación proporcionado del remitente. Valores posibles:
|
| Opcional | payerIdNumber |
String [1..99] | Número del documento de identificación proporcionado del remitente. |
| Condición | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. Obligatorio para transacciones AFT con Visa. |
A continuación se presentan los parámetros del bloque billingRecipientData (datos sobre el destinatario).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | recipientCity |
String [0..40] | Código de ciudad del destinatario. Formato ISO 3166-1 alpha-3. Puede contener letras solo del alfabeto latino. |
| Condición | recipientCountry |
String [0..50] | Código del país del destinatario. Formato: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) o nombre del país. Recomendamos transmitir el código ISO de país de dos/tres letras. Obligatorio para transacciones AFT con Mastercard. |
| Opcional | recipientAddressLine1 |
String [0..50] | Dirección del destinatario. Puede contener letras solo del alfabeto latino. |
| Opcional | recipientPostalCode |
String [0..9] | Código postal del destinatario. |
| Opcional | recipientState |
String [0..50] | Código del estado del destinatario. Formato: valor completo del código ISO 3166-2, su parte o denominación del estado/región. Puede contener letras únicamente del alfabeto latino. Recomendamos transmitir el código ISO de dos letras del estado/región. |
| Condición | recipientAccount |
String [0..32] | Número de cuenta del destinatario. Obligatorio para transacciones AFT con Mastercard. |
| Condición | recipientAccountNumberType |
Integer [1..2] | Tipo de cuenta del destinatario. Valores posibles:
Obligatorio para transacciones AFT con Mastercard. |
| Obligatorio | recipientLastName |
String [0..35] | Apellido del destinatario. |
| Obligatorio | recipientFirstName |
String [0..35] | Nombre del destinatario. |
| Opcional | recipientMiddleName |
String [0..35] | Nombre patronímico del destinatario. |
| Opcional | recipientCombinedName |
String [0..99] | Nombre completo del destinatario. |
| Opcional | recipientIdType |
String [1..8] | Tipo de documento de identificación proporcionado del destinatario. Valores posibles:
|
| Opcional | recipientIdNumber |
String [1..99] | Número del documento de identificación proporcionado del destinatario. |
| Opcional | recipientBirthday |
String [1..20] | Fecha de cumpleaños del destinatario en formato YYYYMMDD. |
Al autenticar por protocolo 3DS2 también se transmiten los siguientes parámetros:
| Obligatorio | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | threeDSServerTransId |
String [1..36] | Identificador de transacción creado en el servidor 3DS. Obligatorio para la autenticación 3DS. |
| Opcional | threeDSVer2FinishUrl |
String [1..512] | URL al que el cliente debe ser redirigido después de la autenticación en el servidor ACS. |
| Opcional | threeDSMethodNotificationUrl |
String [1..512] | URL para envío de notificación sobre la verificación completada en ACS. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| Obligatorio | errorMessage |
String [1..512] | Parámetro informativo que es la descripción del error en caso de que ocurra un error. El valor de errorMessage puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. El idioma de descripción se especifica en el parámetro language de la solicitud. |
| Opcional | info |
String | Resultado del intento de transferencia de fondos. Valor en caso de transferencia exitosa: "Su pago ha sido procesado, se está realizando la redirección..." Valor en caso de error: "Se está realizando la redirección..." |
| Condición | acsUrl |
String [1..512] | Dirección URL para redirección a ACS. Se devuelve en respuesta exitosa en caso de pago 3D-Secure, si se requiere redirección a ACS. Para más detalles ver Redirección a ACS. |
| Condición | paReq |
String [1..255] | PAReq (Payment Authentication Request) — mensaje que debe enviarse al ACS junto con la redirección. Se devuelve en respuesta exitosa en caso de pago 3D-Secure, si se requiere redirección al ACS. Este mensaje contiene datos en codificación Base64, necesarios para la autenticación del portador de la tarjeta. Para más detalles ver Redirección al ACS. |
| Condición | termUrl |
String [1..512] | En caso de respuesta exitosa en caso de pago 3D-Secure. Esta es la URL a la cual ACS redirige al portador de la tarjeta después de la autenticación. Para más detalles consulte Redirección al ACS. |
| Condición | statusResponse |
Object | Parámetros del estado de respuesta. Este bloque se devuelve solo si tiene habilitada la configuración correspondiente. Para habilitar esta funcionalidad, contacte al soporte técnico. Ver parámetros anidados. |
Al autenticar por protocolo 3DS2 en respuesta a la primera solicitud llegan los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | is3DSVer2 |
Boolean | Valores posibles: true o false Bandera que muestra que el pago proviene de 3DS2. |
| Obligatorio | threeDSServerTransId |
String [1..36] | Identificador de transacción creado en el servidor 3DS. Obligatorio para la autenticación 3DS. |
| Opcional | threeDSMethodUrl |
String [1..512] | URL del servidor ACS para la recopilación de datos del navegador. |
| Obligatorio | threeDSMethodUrlServer |
String [1..512] | Dirección URL del servidor 3DS para la recopilación de datos del navegador que se incluirán en AReq (Authentication Request) desde el servidor 3DS al servidor ACS. |
| Opcional | threeDSMethodDataPacked |
String [1..1024] | Datos CReq (Challenge Response) en codificación Base-64 para envío al servidor ACS. |
| Opcional | threeDSMethodURLServerDirect |
String [1..512] | Dirección URL 3dsmethod.do para ejecutar el método 3DS en el servidor 3DS a través de la pasarela de pago (si existe el permiso correspondiente a nivel de comerciante). |
A continuación se presentan los parámetros que deben estar presentes en la respuesta, después de la solicitud repetida de pago y la necesidad de redirigir al cliente al ACS al autenticar por protocolo 3DS2:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | acsUrl |
String [1..512] | Dirección URL para redirección a ACS. Se devuelve en respuesta exitosa en caso de pago 3D-Secure, si se requiere redirección a ACS. Para más detalles ver Redirección a ACS. |
| Condición | packedCReq |
String | Datos empaquetados de challenge request. Se devuelve en respuesta exitosa en caso de pago 3D-Secure, si se requiere redirección a ACS. Este valor debe usarse como valor del parámetro creq del enlace a ACS (acsUrl), para redirigir el cliente a ACS. Para más detalles ver Redirección a ACS. |
Parámetros del bloque statusResponse:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| Obligatorio | errorMessage |
String [1..512] | Parámetro informativo que es la descripción del error en caso de que ocurra un error. El valor de errorMessage puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. El idioma de descripción se especifica en el parámetro language de la solicitud. |
| Opcional | orderStatus |
Integer | El valor de este parámetro indica el estado del pedido en la pasarela de pago. Ausente si el pedido no fue encontrado. A continuación se presenta la lista de valores disponibles:
|
| Opcional | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Opcional | panMaskedFrom |
String [1..19] | Número de tarjeta enmascarado para el débito de fondos. |
| Opcional | panMaskedTo |
String [1..19] | Número de tarjeta enmascarado para el depósito de fondos. |
| Opcional | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
| Opcional | currency |
String [3] | Código de moneda del pago ISO 4217. Si no se especifica, se utiliza el valor por defecto. Solo se permiten dígitos. |
| Opcional | creationDate |
Integer | Fecha de registro del pedido. |
| Opcional | orderDescription |
String [1..600] | Descripción del pedido transmitida al gateway de pago durante el registro. En este campo no está permitido transmitir datos personales o datos de pago (números de tarjetas, etc.). Este requisito está relacionado con el hecho de que la descripción del pedido no se enmascara en ningún lugar. |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Obligatorio | resultCode |
Integer | Código de error al ejecutar la solicitud. Valores posibles:
|
| Opcional | orderParams |
Object | Objeto con atributos del vendedor. En la respuesta puede presentarse más de un bloque orderParams.El objeto debe transmitirse de la siguiente manera: {"param":"value","param2":"value2"}. |
| Opcional | operationList |
Object | Objeto que contiene información sobre las transacciones completadas en el pedido. En la respuesta puede estar presente más de un bloque operationList.Los parámetros que se pueden transmitir están descritos abajo. |
| Opcional | binding |
String | Identificador de enlace (si ya ha sido creado). Este parámetro se devuelve solo si la versión de getP2PStatus es igual a 3 o superior. |
| Opcional | detokenizedPanRepresentation |
String [1..19] | Número de tarjeta destokenizado (últimos 4 dígitos o en forma enmascarada). |
| Opcional | detokenizedPanExpiryDate |
String | Fecha de vencimiento de la tarjeta destokenizada en el siguiente formato: YYYYMM. |
| Opcional | paymentNetRefNum |
String [1..512] | Original Network Reference Number - es un identificador que asigna la red de pagos (Mastercard, Visa, etc.) al realizar la primera transacción (por ejemplo, compra). Al ejecutar la operación inversa (devolución, contracargo, pago repetido), este número:
getP2PStatus version versión 7 o superior.
|
Ejemplos
Ejemplo de solicitud
curl -X POST 'https://dev.bpcbt.com/payment/rest/api/p2p/performP2PByBinding.do'
-H 'Content-Type: application/json'
--data-raw '{
"amountInput" : 1000,
"fromCard" : {
"seToken": "ofVx1r3aIJ3Mlx3nkfeOIJgFOnwfsgFK+V6Yzm+KxJgsq19l74GChhX0We/LEFq78Rhn9uFAEZGdeyDhnIc/KfuvObf0EzoDA65Uj1Z8FjwWyjnEwTBHZL4KmdFBCSk8jLxHt70mXwyjiHYyCVH1fT/UVOnsrkZVGrqmEG4MTi5dX9Znzf24DwRg4iezvdT8vf0dUW5lJdvY1tgOsOnBulwy6kH/YbHVsnR6yxO6d6IsdnT5f8PxaB+7ZyUqgrd6VA88FGJKJgdoxk4721pqKSG5dYroLJG96s23EDJ2Hpi4e9wU2rP7E6dlFw+qzATqX/eaJbaQ9eakkdMWnkj7aQ=="
},
"toCard": {
"cardholderName": "TEST CARDHOLDER",
"expirationMonth": 12,
"expirationYear": 2029,
"pan": "5555555555555599"
},
"orderId" : "3dbaf8bb-1d68-76b3-b4e6-784700f26b04",
"password" : "test_user_password",
"type" : "WITHOUT_TO_CARD",
"username" : "test_user"
}'Ejemplo de primera solicitud en caso de autenticación por protocolo 3DS2
curl -X POST 'https://dev.bpcbt.com/payment/rest/api/p2p/performP2PByBinding.do'
-H 'Content-Type: application/json'
--data-raw '{
"amountInput" : 1000,
"currency" : "978",
"fromCard" : {
"bindingId" : "fd3afc57-c6d0-4e08-aaef-1b7cfeb093dc"
},
"orderId" : "38b7a9e0-7cfa-46f7-8655-f206a8898e7a",
"password" : "test_user_password",
"type" : "WITHOUT_TO_CARD",
"username" : "test_user",
"params" : {
"name" : "payerAddress",
"value" : "payer Address"
}
}'Ejemplo de segunda solicitud en caso de autenticación por protocolo 3DS2
curl -X POST 'https://dev.bpcbt.com/payment/rest/api/p2p/performP2PByBinding.do'
-H 'Content-Type: application/json'
--data-raw '{
"amountInput" : 1000,
"currency" : "978",
"fromCard" : {
"bindingId" : "fd3afc57-c6d0-4e08-aaef-1b7cfeb093dc"
},
"orderId" : "38b7a9e0-7cfa-46f7-8655-f206a8898e7a",
"password" : "test_user_password",
"type" : "WITHOUT_TO_CARD",
"username" : "test_user",
"params" : {
"name" : "payerAddress",
"value" : "payer Address"
},
"threeDSServerTransId" : "f44d6d21-1874-45a5-aeb0-1c710dd6e134",
"threeDSVer2FinishUrl" : "https://example.com/acs2/acs/3dsMethod"
}'Ejemplo de respuesta
{
"errorCode" : 0,
"errorMessage" : "Successful",
"info" : "Your order is proceeded, redirecting...",
"redirect" : "https://example.com/?orderId=47743354-be15-7c70-b9ef-4bfc482e68dc&lang=en",
"is3DSVer2" : false
}Ejemplo de respuesta a la primera solicitud en caso de autenticación por protocolo 3DS2
{
"errorCode": 0,
"is3DSVer2": true,
"threeDSServerTransId": "f44d6d21-1874-45a5-aeb0-1c710dd6e134",
"threeDSMethodURLServer": "https://example.com/3dsserver/api/v1/client/gather?threeDSServerTransID=f44d6d21-1874-45a5-aeb0-1c710dd6e134",
}Ejemplo de respuesta a la segunda solicitud en caso de autenticación por protocolo 3DS2
{
"errorCode": 0,
"info": "Your order is proceeded, redirecting...",
"acsUrl": "https://example.com/acs2/acs/creq",
"is3DSVer2": true,
"packedCReq" : "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjVmMzEyMjdlLTljZmQtNDQwYi1hNDNjLTE4NjljMzNhNGI5YiIsImFjc1RyYW5zSUQiOiI5YTQyYzQ4ZC1hNWRiLTQ3NjEtYmI4Mi05ZmY5MmM0NzZiM2QiLCJjaGFsbGVuZ2VXaW5kb3dTaXplIjoiMDQiLCJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIn0="
}Transferencia instantánea P2P
Para realizar una transferencia instantánea P2P sin invocar una solicitud de registro de pedido, utilice la solicitud https://dev.bpcbt.com/payment/rest/api/p2p/instantPerformP2P.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
La estructura de la solicitud instantPerformP2P.do presupone la presencia del bloque fromCard para transmitir los atributos de la tarjeta para el cargo y del bloque toCard para transmitir los atributos de la tarjeta para el abono. Dependiendo de los procesos de negocio definidos para el banco y la tienda, al realizar la transferencia de tarjeta a tarjeta pueden ser posibles las siguientes variantes.
- La tienda transmite a la pasarela los datos de la tarjeta de cargo y los datos de la tarjeta de abono de fondos monetarios. En este caso en la solicitud deben estar presentes ambos bloques de parámetros —
fromCardytoCard. - Si el abono a la tarjeta se produce por un sistema externo (operación AFT), entonces la tienda transmite a la pasarela solo los datos de la tarjeta de cargo. En este caso debe haber solo un bloque de parámetros –
fromCard - Si el cargo de la tarjeta se produce por un sistema externo (operación OCT), entonces la tienda transmite a la pasarela solo los datos de la tarjeta de abono. En este caso debe haber solo un bloque de parámetros –
toCard
Parámetros de la solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | username |
String [1..30] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Opcional | language |
String [2] | Clave de idioma según ISO 639-1. Si no se especifica el idioma, se utiliza el idioma predeterminado especificado en la configuración de la tienda. Idiomas soportados: en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv. |
| Obligatorio | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Opcional | clientId |
String [0..255] | Número de cliente (ID) en el sistema del comerciante — hasta 255 caracteres. Se utiliza para implementar la funcionalidad de vinculaciones. Puede devolverse en la respuesta, si al comerciante se le permite crear vinculaciones. La especificación de este parámetro al procesar pagos por vinculación es obligatoria. En caso contrario, el pago será imposible. |
| Opcional | bindingId |
String [1..255] | Identificador de una vinculación ya existente (identificador de tarjeta tokenizada por el gateway). Solo se puede usar si el comerciante tiene permiso para trabajar con vinculaciones. Si este parámetro se transmite en esta solicitud, significa que:
|
| Opcional | creditBindingId |
String [0..255] | Identificador de vinculación de tarjeta para acreditación. Se utiliza en transferencias de tarjeta a tarjeta, cuando se conoce de antemano la tarjeta del destinatario. Este parámetro debe ser transmitido primero en la solicitud de registro de pago (registerP2P.do - aquí también debe ser transmitido el parámetro clientId), luego en la solicitud de transferencia de fondos por vinculación (performP2PByBinding.do - el valor del parámetro creditBindingId, transmitido en registerP2P.do, debe ser transmitido en el parámetro bindingId en el bloque toCard). |
| Opcional | email |
String [1..40] | Correo electrónico del pagador. |
| Obligatorio | amount |
String [0..12] | Importe de la transferencia en unidades mínimas de moneda (por ejemplo, en kopeks). Este parámetro se transmite si el pagador decide cambiar el importe de la transferencia al realizar la transferencia monetaria. |
| Obligatorio | currency |
String [3] | Código de moneda del pago ISO 4217. Si no se especifica, se utiliza el valor por defecto. Solo se permiten dígitos. |
| Opcional | type |
String | En caso de transferencia monetaria con datos solo de una tarjeta es necesario transmitir en este parámetro el valor correspondiente:WITHOUT_FROM_CARD - sin indicación de tarjeta para el débito de fondos.WITHOUT_TO_CARD - sin indicación de tarjeta para el abono. Si se trata de una transferencia monetaria ordinaria de tarjeta a tarjeta, entonces aquí es necesario transmitir el siguiente valor: STANDARD. |
| Opcional | orderDescription |
String [1..600] | Descripción del pedido transmitida al gateway de pago durante el registro. En este campo no está permitido transmitir datos personales o datos de pago (números de tarjetas, etc.). Este requisito está relacionado con el hecho de que la descripción del pedido no se enmascara en ningún lugar. |
| Opcional | params |
Object | Campos de información adicional para almacenamiento posterior, se transmiten de la siguiente forma: "params": [ {"name": "param1", "value": "value1"}, {"name": "param2", "value": "value2"} ].Estos campos pueden ser transmitidos al procesamiento del banco para su posterior visualización en los registros del banco. Por defecto se transmiten orderNumber (número de pedido) y orderDescription (descripción del pedido).orderDescription no debe exceder 99 caracteres, no utilice los siguientes caracteres: %, +, retorno de carro \r y salto de línea
|
| ). Para habilitar esta funcionalidad, contacte al banco. |
|||
| Opcional | feeInput |
Integer [0..8] | Tamaño de la comisión en unidades mínimas de moneda. La funcionalidad debe estar habilitada a nivel del comerciante en el gateway. |
| Obligatorio | returnUrl |
String [1..512] | Dirección a la que se requiere redirigir al usuario en caso de pago exitoso. La dirección debe especificarse completamente, incluyendo el protocolo utilizado (por ejemplo, https://mybestmerchantreturnurl.com en lugar de mybestmerchantreturnurl.com). De lo contrario, el usuario será redirigido a una dirección del siguiente tipo: https://dev.bpcbt.com/payment/<merchant_address>. |
| Opcional | failUrl |
String [1..512] | Dirección a la que se debe redirigir al usuario en caso de pago fallido. La dirección debe especificarse completamente, incluyendo el protocolo utilizado (por ejemplo, https://mybestmerchantreturnurl.com en lugar de mybestmerchantreturnurl.com). De lo contrario, el usuario será redirigido a una dirección del siguiente tipo: https://dev.bpcbt.com/payment/<merchant_address>. |
| Obligatorio | transactionTypeIndicator |
String | Se utiliza en tipos de transacciones unidireccionales. Son posibles los siguientes valores:
|
| Condicional | features |
Object | Contenedor para el parámetro feature, obligatorio para operaciones unidireccionales.Si se ejecuta una operación AFT (transferencia de tarjeta a cuenta) - en el parámetro feature debe pasarse WITHOUT_TO_CARD. Además, si después de esta operación AFT se prevé ejecutar una operación OCT, es necesario pasar el valor OCT_EXPECTED. Ejemplo: "features" : { "feature" : ["WITHOUT_TO_CARD"] } Si se ejecuta una operación OCT (transferencia de cuenta a tarjeta) - en el parámetro feature debe pasarse WITHOUT_FROM_CARD. Ejemplo: "features" : { "feature" : ["WITHOUT_FROM_CARD"] } |
| Opcional | mcc |
Integer [4] | Merchant Category Code (código de categoría del comerciante). Para transmitir este parámetro es necesario un permiso especial. Solo se pueden usar valores de la lista permitida de MCC. Para obtener información más detallada, contacte al soporte técnico. |
| Opcional | merchantLogin |
String [1..255] | Para registrar un pedido en nombre de otro comerciante, especifica su login (para la cuenta API) en este parámetro. Se puede usar solo si tienes permiso para ver las transacciones de otros vendedores o si el vendedor especificado es tu vendedor subsidiario. |
| Opcional | dynamicCallbackUrl |
String [1..512] | Parámetro para transmitir la dirección dinámica para recibir notificaciones callback de "pago" por pedido, activadas para el comerciante (autorización exitosa, débito exitoso, devolución, cancelación, rechazo de pago por timeout, rechazo de pago card present). Las notificaciones callback "no de pago" (activación/desactivación de vinculación, creación de vinculación), serán enviadas a la dirección callback estática. |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Opcional | type |
String | En caso de transferencia monetaria con datos solo de una tarjeta es necesario transmitir en este parámetro el valor correspondiente:WITHOUT_FROM_CARD - sin indicación de tarjeta para el débito de fondos.WITHOUT_TO_CARD - sin indicación de tarjeta para el abono. Si se trata de una transferencia monetaria ordinaria de tarjeta a tarjeta, entonces aquí es necesario transmitir el siguiente valor: STANDARD. |
| Opcional | captcha |
String | CAPTCHA (texto destinado a distinguir la entrada humana de la entrada de máquina) |
| Opcional | threeDSSDK |
Boolean | Valores posibles: true o false Bandera que indica que el pago proviene del 3DS SDK. |
| Opcional | threeDSSDKEncData |
String | Datos cifrados del dispositivo. Parámetro es obligatorio para SDK. |
| Opcional | threeDSSDKReferenceNumber |
String | Identificador oficial del 3DS2 SDK |
| Opcional | threeDSSDKEphemPubKey |
String | Parte pública de la clave efímera. Requerida para establecer sesión con ACS. Parámetro es obligatorio para SDK. |
| Opcional | threeDSSDKAppId |
String | Identificador único del SDK. Parámetro es obligatorio para SDK. |
| Opcional | threeDSSDKTransId |
String | Identificador único de la transacción en el SDK. Parámetro es obligatorio para SDK. |
| Opcional | threeDSMethodNotificationUrl |
String [1..512] | URL para envío de notificación sobre la verificación completada en ACS. |
| Condicional | threeDSServerTransId |
String [1..36] | Identificador de transacción creado en el servidor 3DS. Obligatorio para la autenticación 3DS. |
| Opcional | threeDSVer2FinishUrl |
String [1..512] | URL al que el cliente debe ser redirigido después de la autenticación en el servidor ACS. |
| Condicional | threeDSVer2MdOrder |
String [1..36] | Número de pedido que fue registrado en la primera parte de la solicitud en el marco de la operación 3DS2. Obligatorio para la autenticación 3DS. Si este parámetro está presente en la solicitud, entonces se utiliza mdOrder, que se transmite en el presente parámetro. En tal caso no ocurre el registro del pedido, sino que ocurre inmediatamente el pago del pedido.Este parámetro se transmite solo al utilizar métodos de pago instantáneo, es decir, cuando el pedido se registra y se paga en el marco de una solicitud. |
| Opcional | bindingNotNeeded |
Boolean | Valores permitidos:
|
| Opcional | externalScaExemptionIndicator |
String | Tipo de excepción SCA (Strong Customer Authentication). Se utiliza para transacciones AFT. Si se especifica este parámetro, la transacción será procesada dependiendo de su configuración en la pasarela de pagos: o se ejecutará una operación SSL forzada, o el banco emisor recibirá información sobre la excepción SCA y tomará la decisión de realizar la operación con autenticación 3DS o sin ella (para obtener información detallada contacte con nuestro servicio de soporte). Valores permitidos:
Para transmitir este parámetro debe tener derechos suficientes en la pasarela de pagos. |
| Condicional | originalPaymentNetRefNum |
String | Identificador de la transacción original o anterior exitosa en el sistema de pago en relación con la operación ejecutada por vinculación - TRN ID. Se transmite si el valor del parámetro tii = R,U o F.Obligatorio al usar las vinculaciones del comerciante en transferencias por vinculación. |
| Condicional | tii |
String | Identificador del iniciador de la transacción. Parámetro que indica qué tipo de operación ejecutará el iniciador (Cliente o Comerciante). Obligatorio para operaciones AFT y transferencia utilizando vinculación en el bloque fromCard o vinculación propia del comerciante.Para operaciones OCT este parámetro no se transmite. Valores posibles |
| Opcional | shippingPayerData |
Object | Objeto que contiene datos sobre la entrega al cliente. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Ver parámetros anidados. |
| Opcional | preOrderPayerData |
Object | Objeto que contiene datos del pedido preliminar. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Ver parámetros anidados. |
| Opcional | orderPayerData |
Object | Objeto que contiene datos sobre el pagador del pedido. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Ver parámetros anidados. |
| Opcional | billingAndShippingAddressMatchIndicator |
String [1] | Indicador de coincidencia de la dirección de facturación del titular de la tarjeta y la dirección de envío. Este parámetro se utiliza para la posterior autenticación 3DS del cliente. Valores posibles:
|
| Condición | billingPayerData |
Object | Bloque con datos de registro del cliente (dirección, código postal), necesario para pasar la verificación de dirección en el marco de los servicios AVS/AVV. Obligatorio si la función está habilitada para el vendedor en el lado de la Pasarela de Pago. Ver parámetros anidados. |
| Condición | billingRecipientData |
Object | Bloque con datos sobre el destinatario. Obligatorio si la función está habilitada para el vendedor en el lado de la Pasarela de Pago. Ver parámetros anidados. |
| Obligatorio | fromCard |
Object | Bloque con atributos de tarjeta de débito. Ver parámetros anidados. |
| Obligatorio | toCard |
Object | Bloque con atributos de la tarjeta de acreditación. Ver parámetros anidados. |
| Opcional | debitMdOrder |
String [1..36] | Número único de pedido para el cual se ejecutó la transferencia AFT en iPay. Este parámetro se utiliza para operaciones OCT en transferencias P2P (AFT+OCT). |
Valores posibles del parámetro tii:
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Datos de tarjeta se guardan después de transacción | Comentario |
|---|---|---|---|---|---|---|
| CI | Iniciante - Normal (CIT) | Iniciante | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de vinculación. |
| F | Pago no programado (CIT) | Subsecuente | Comprador | Cliente selecciona tarjeta en lugar de ingreso manual | No | Transacción de comercio electrónico, utilizando vinculación normal previamente guardada. |
Descripción de los parámetros del objeto shippingPayerData:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | shippingCity |
String [1..50] | Ciudad del cliente (de la dirección de entrega) |
| Opcional | shippingCountry |
String [1..50] | País del cliente |
| Opcional | shippingAddressLine1 |
String [1..50] | Dirección principal del cliente (de la dirección de entrega) |
| Opcional | shippingAddressLine2 |
String [1..50] | Dirección principal del cliente (de la dirección de entrega) |
| Opcional | shippingAddressLine3 |
String [1..50] | Dirección principal del cliente (de la dirección de entrega) |
| Opcional | shippingPostalCode |
String [1..16] | Código postal del cliente para entrega |
| Opcional | shippingState |
String [1..50] | Estado/región del comprador (de la dirección de entrega) |
| Opcional | shippingMethodIndicator |
Integer [2] | Indicador del método de entrega. Valores posibles:
|
| Opcional | deliveryTimeframe |
Integer [2] | Plazo de entrega del producto. Valores posibles:
|
| Opcional | deliveryEmail |
String [1..254] | Dirección de correo electrónico de destino para la entrega de distribución digital. Es preferible transmitir el correo electrónico en el parámetro de solicitud independiente email (pero si lo transmite en este bloque, se aplicarán las mismas reglas). |
Descripción de los parámetros del objeto preOrderPayerData:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | preOrderDate |
String [10] | Fecha esperada de entrega (para compras de preorden) en formato AAAAMMDD. |
| Opcional | preOrderPurchaseInd |
Integer [2] | Indicador de colocación por el cliente de un pedido para entrega disponible o futura. Valores posibles:
|
| Opcional | reorderItemsInd |
Integer [2] | Indicador de que el cliente vuelve a reservar una entrega previamente pagada como parte de un nuevo pedido. Valores posibles:
|
Descripción de los parámetros del objeto orderPayerData.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | homePhone |
String [7..15] | Teléfono de casa del propietario de la tarjeta. Es necesario indicar siempre el código del país, pero el signo + o 00 al inicio se puede indicar u omitir. El número debe tener una longitud de 7 a 15 dígitos. De este modo, son posibles los siguientes valores:
|
| Opcional | workPhone |
String [7..15] | Teléfono de trabajo del propietario de la tarjeta. Es necesario indicar siempre el código del país, pero el signo + o 00 al inicio se puede indicar u omitir. El número debe tener una longitud de 7 a 15 dígitos. De este modo, son posibles los siguientes valores:
|
| Opcional | mobilePhone |
String [7..15] | Número de teléfono móvil del propietario de la tarjeta. Es necesario indicar siempre el código del país, pero el signo + o 00 al inicio se puede indicar u omitir. El número debe tener una longitud de 7 a 15 dígitos. De este modo, son posibles los siguientes valores:
Para los pagos por VISA con autorización 3DS es necesario indicar el correo electrónico o el número de teléfono del propietario de la tarjeta. Si tiene configurada la visualización del número de teléfono en la página de pago y usted indicó un número de teléfono incorrecto, el cliente podrá corregirlo en la página de pago. |
A continuación se muestran los parámetros del bloque billingPayerData (datos sobre la dirección de registro del cliente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | billingCity |
String [0..50] | Ciudad registrada para una tarjeta específica en el Banco Emisor. Obligatorio para transacciones AFT con Visa. |
| Condición | billingCountry |
String [0..50] | País registrado para una tarjeta específica del banco emisor. Formato: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) o nombre del país. Recomendamos transmitir el código ISO de dos/tres letras del país. Obligatorio para transacciones AFT con Visa. |
| Condición | billingAddressLine1 |
String [0..50] | Dirección registrada para una tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio de transmitir para verificación AVS. Obligatorio para transacciones AFT con Visa. |
| Opcional | billingAddressLine2 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor. Línea 2. |
| Opcional | billingAddressLine3 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor. Línea 3. |
| Opcional | billingPostalCode |
String [0..9] | Código postal registrado para la tarjeta específica en el Banco Emisor. Obligatorio para la verificación AVS. |
| Opcional | billingState |
String [0..50] | Estado registrado para la tarjeta específica en el Banco Emisor. Formato: valor completo del código ISO 3166-2, su parte o nombre del estado/región. Puede contener letras solo del alfabeto latino. Recomendamos transmitir el código ISO de dos letras del estado/región. |
| Obligatorio | payerAccount |
String [1..32] | Número de cuenta del remitente. |
| Condición | payerLastName |
String [1..64] | Apellido del remitente. Obligatorio para transacciones AFT con Visa. |
| Condición | payerFirstName |
String [1..35] | Nombre del remitente. Obligatorio para transacciones AFT con Visa. |
| Opcional | payerMiddleName |
String [1..35] | Patronímico del remitente. |
| Opcional | payerCombinedName |
String [1..99] | Nombre completo del remitente. |
| Opcional | payerIdType |
String [1..8] | Tipo de documento de identificación proporcionado del remitente. Valores posibles:
|
| Opcional | payerIdNumber |
String [1..99] | Número del documento de identificación proporcionado del remitente. |
| Condición | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. Obligatorio para transacciones AFT con Visa. |
A continuación se presentan los parámetros del bloque billingRecipientData (datos sobre el destinatario).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | recipientCity |
String [0..40] | Código de ciudad del destinatario. Formato ISO 3166-1 alpha-3. Puede contener letras solo del alfabeto latino. |
| Condición | recipientCountry |
String [0..50] | Código del país del destinatario. Formato: ISO 3166-1 (Alpha 2 / Alpha 3 / Number-3) o nombre del país. Recomendamos transmitir el código ISO de país de dos/tres letras. Obligatorio para transacciones AFT con Mastercard. |
| Opcional | recipientAddressLine1 |
String [0..50] | Dirección del destinatario. Puede contener letras solo del alfabeto latino. |
| Opcional | recipientPostalCode |
String [0..9] | Código postal del destinatario. |
| Opcional | recipientState |
String [0..50] | Código del estado del destinatario. Formato: valor completo del código ISO 3166-2, su parte o denominación del estado/región. Puede contener letras únicamente del alfabeto latino. Recomendamos transmitir el código ISO de dos letras del estado/región. |
| Condición | recipientAccount |
String [0..32] | Número de cuenta del destinatario. Obligatorio para transacciones AFT con Mastercard. |
| Condición | recipientAccountNumberType |
Integer [1..2] | Tipo de cuenta del destinatario. Valores posibles:
Obligatorio para transacciones AFT con Mastercard. |
| Obligatorio | recipientLastName |
String [0..35] | Apellido del destinatario. |
| Obligatorio | recipientFirstName |
String [0..35] | Nombre del destinatario. |
| Opcional | recipientMiddleName |
String [0..35] | Nombre patronímico del destinatario. |
| Opcional | recipientCombinedName |
String [0..99] | Nombre completo del destinatario. |
| Opcional | recipientIdType |
String [1..8] | Tipo de documento de identificación proporcionado del destinatario. Valores posibles:
|
| Opcional | recipientIdNumber |
String [1..99] | Número del documento de identificación proporcionado del destinatario. |
| Opcional | recipientBirthday |
String [1..20] | Fecha de cumpleaños del destinatario en formato YYYYMMDD. |
El bloque fromCard incluye los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | pan |
String [1..19] | Número de tarjeta de débito de fondos monetarios. |
| Condición | cvc |
String [3] | Código CVC/CVV2 en el reverso de la tarjeta de débito. Obligatorio, si el pago no se realiza por vinculación y/o si el vendedor no tiene permiso para el pago sin CVC. Solo se permiten dígitos. |
| Condición | expirationYear |
Integer [4] | Año de vencimiento de la tarjeta de débito. Se aceptan valores de 2000 a 2200. |
| Condición | expirationMonth |
Integer [2] | Mes de vencimiento de la tarjeta de débito. Valores disponibles: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12. |
| Opcional | cardholderName |
String [1..26] | Nombre del titular de la tarjeta de débito. |
| Condición | seToken |
String | Datos encriptados de la tarjeta. Obligatorio, si se usa en lugar de los datos de la tarjeta. Parámetros obligatorios para la cadena seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Más detalles sobre la generación de seToken véase aquí. |
| Condición | threeDsAuthResult |
Object | Bloque con datos sobre el resultado de autenticación 3 DS utilizando MPI/3DS Server del comerciante. Obligatorio para transacciones de transferencia de tarjeta a tarjeta y AFT utilizando MPI/3DS Server del comerciante. Ver parámetros anidados. |
Al realizar pagos utilizando tokens (APPLE, SAMSUNG, GOOGLE) en lugar de los datos de la tarjeta en el bloque fromCard se transmite:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | vendor |
String | Parámetro utilizado al realizar pagos mediante tokens. Como valor se transmite la denominación del proveedor del servicio de pago: APPLE, GOOGLE, SAMSUNG.Este parámetro debe transmitirse simultáneamente con el parámetro paymentToken (valor del token).Este parámetro no puede estar presente simultáneamente con los parámetros: pan, cvc, expiry, bindingId, seToken. |
| Condición | paymentToken |
String [1..8192] | Valor del token del proveedor especificado en el parámetro vendor (APPLE, GOOGLE, SAMSUNG). Si vendor está especificado, el parámetro es obligatorio.Este parámetro no puede estar presente simultáneamente con los parámetros: pan, cvc, expiry, bindingId, seToken. |
| No obligatorio | decryptedToken |
Boolean | Token descifrado para pagos a través de vendedores (ApplePay, GooglePay, etc.). Valores posibles:
Si no se pasa este parámetro, por defecto se considerará que se pasó decryptedToken = false. |
| No obligatorio | protocolVersion |
String | Versión del protocolo definida por Google para el token de pago: ECv1 (por defecto) o ECv2
|
A continuación se enumeran los parámetros del bloque threeDsAuthResult (datos sobre el resultado de autenticación 3 DS).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | cavv |
String [0..200] | Valor de verificación de autenticación del titular de la tarjeta. Se especifica solo después del pago del pedido y en caso de tener el permiso correspondiente. |
| Opcional | xid |
String [1..80] | Identificador comercial electrónico de la transacción. Se especifica solo después del pago del pedido y en caso de tener el permiso correspondiente. |
| Opcional | eci |
Integer [1..4] | Indicador de comercio electrónico. Especificado solo después del pago del pedido y en caso de tener el permiso correspondiente. A continuación se proporciona la descripción de los códigos ECI.
|
| Condicional | threeDsType |
String | Tipo de autenticación 3DS. Este parámetro es obligatorio para el pago a través de su servidor 3DS con 3DS 2. Para pagos SSL este parámetro es opcional y se determina dependiendo del valor ECI. Valores permitidos:
|
| Opcional | threeDSProtocolVersion |
String | Versión del protocolo 3DS. Valores posibles: "2.1.0", "2.2.0" para 3DS2. Si en la solicitud no se transmite threeDSProtocolVersion, entonces para la autorización 3D Secure se utilizará el valor por defecto (2.1.0 - para 3DS 2). |
El bloque toCard incluye los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | pan |
String [1..19] | |
| Opcional | expirationYear |
Integer [4] | Año de vencimiento de la tarjeta de acreditación. Se aceptan valores de 2000 a 2200. |
| Opcional | expirationMonth |
Integer [2] | Mes de vencimiento de la tarjeta de acreditación. Valores disponibles: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12. |
| Opcional | cardholderName |
String [1..26] | Nombre del titular de la tarjeta de acreditación. |
| Condición | seToken |
String | Datos cifrados de la tarjeta. Obligatorio si se utiliza en lugar de los datos de la tarjeta. Parámetros obligatorios para la cadena seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Más detalles sobre la generación de seToken ver aquí. |
En algunos casos, la solicitud para transacción AFT incluye el bloque toCard con bloque anidado replacementData con datos para reemplazar el destino de transferencia en transacciones AFT. Contiene el número de tarjeta y el número de cuenta de tránsito del destinatario. Algunos sistemas de pago requieren la transmisión de estos datos en transacciones AFT, es decir, estos datos se utilizan para autenticación en ACS durante la autorización 3DS.
Para utilizar este bloque, el comerciante necesita tener permiso especial (consulte con el equipo de soporte).
A continuación se enumeran los parámetros del bloque replacementData (datos para reemplazar el destino en transacciones AFT):
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | card | String [1..19] | Número de tarjeta del destinatario, si es conocido al momento de la transferencia. |
| Opcional | account | String [1..30] | Número de cuenta de tránsito (cualquier número proporcionado por el banco). |
Durante la autenticación por protocolo 3DS2 también se transmiten los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | threeDSServerTransId |
String [1..36] | Identificador de transacción creado en el servidor 3DS. Obligatorio para la autenticación 3DS. |
| Opcional | threeDSVer2FinishUrl |
String [1..512] | URL al que el cliente debe ser redirigido después de la autenticación en el servidor ACS. |
| Opcional | threeDSMethodNotificationUrl |
String [1..512] | URL para envío de notificación sobre la verificación completada en ACS. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| Obligatorio | errorMessage |
String [1..512] | Parámetro informativo que es la descripción del error en caso de que ocurra un error. El valor de errorMessage puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. El idioma de descripción se especifica en el parámetro language de la solicitud. |
| Opcional | info |
String | Resultado del intento de transferencia de fondos. Valor en caso de transferencia exitosa: "Su pago ha sido procesado, se está realizando la redirección..." Valor en caso de error: "Se está realizando la redirección..." |
| Opcional | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Opcional | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Opcional | acsUrl |
String [1..512] | Dirección URL para redirección a ACS. Se devuelve en respuesta exitosa en caso de pago 3D-Secure, si se requiere redirección a ACS. Para más detalles ver Redirección a ACS. |
| Opcional | redirect |
String [1..512] | Este parámetro se devuelve si el pago fue exitoso y no se realizó una verificación de la tarjeta para su participación en 3-D Secure. Los vendedores pueden usarlo si quieren redirigir al usuario a la página del gateway de pago. Si el vendedor usa su propia página, este valor puede ignorarse. |
| Opcional | threeDSSDKKey |
String | Clave de cifrado de datos del dispositivo. Parámetro es obligatorio para SDK. |
| Opcional | threeDSAcsTransactionId |
String | Identificador de transacción 3DS en ACS. Parámetro es obligatorio para SDK. |
| Opcional | threeDSAcsRefNumber |
String | Número de referencia en ACS. |
| Opcional | threeDSAcsSignedContent |
String | Contenido firmado para SDK, el contenido incluye la URL de ACS. Parámetro es obligatorio para SDK. |
| Opcional | threeDSDsTransID |
String | Identificador único de transacción dentro del MPS. Parámetro es obligatorio para SDK. |
| Condicional | statusResponse |
Object | Parámetros del estado de respuesta. Este bloque se devuelve solo si tiene habilitada la configuración correspondiente. Para habilitar esta funcionalidad, póngase en contacto con el soporte técnico. Consulte parámetros anidados. |
Parámetros del bloque statusResponse:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| Obligatorio | errorMessage |
String [1..512] | Parámetro informativo que es la descripción del error en caso de que ocurra un error. El valor de errorMessage puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. El idioma de descripción se especifica en el parámetro language de la solicitud. |
| Opcional | orderStatus |
Integer | El valor de este parámetro indica el estado del pedido en la pasarela de pago. Ausente si el pedido no fue encontrado. A continuación se presenta la lista de valores disponibles:
|
| Opcional | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Opcional | panMaskedFrom |
String [1..19] | Número de tarjeta enmascarado para el débito de fondos. |
| Opcional | panMaskedTo |
String [1..19] | Número de tarjeta enmascarado para el depósito de fondos. |
| Opcional | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
| Opcional | currency |
String [3] | Código de moneda del pago ISO 4217. Si no se especifica, se utiliza el valor por defecto. Solo se permiten dígitos. |
| Opcional | creationDate |
Integer | Fecha de registro del pedido. |
| Opcional | orderDescription |
String [1..600] | Descripción del pedido transmitida al gateway de pago durante el registro. En este campo no está permitido transmitir datos personales o datos de pago (números de tarjetas, etc.). Este requisito está relacionado con el hecho de que la descripción del pedido no se enmascara en ningún lugar. |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Obligatorio | resultCode |
Integer | Código de error al ejecutar la solicitud. Valores posibles:
|
| Opcional | orderParams |
Object | Objeto con atributos del vendedor. En la respuesta puede presentarse más de un bloque orderParams.El objeto debe transmitirse de la siguiente manera: {"param":"value","param2":"value2"}. |
| Opcional | operationList |
Object | Objeto que contiene información sobre las transacciones completadas en el pedido. En la respuesta puede estar presente más de un bloque operationList.Los parámetros que se pueden transmitir están descritos abajo. |
| Opcional | binding |
String | Identificador de enlace (si ya ha sido creado). Este parámetro se devuelve solo si la versión de getP2PStatus es igual a 3 o superior. |
| Opcional | detokenizedPanRepresentation |
String [1..19] | Número de tarjeta destokenizado (últimos 4 dígitos o en forma enmascarada). |
| Opcional | detokenizedPanExpiryDate |
String | Fecha de vencimiento de la tarjeta destokenizada en el siguiente formato: YYYYMM. |
| Opcional | paymentNetRefNum |
String [1..512] | Original Network Reference Number - es un identificador que asigna la red de pagos (Mastercard, Visa, etc.) al realizar la primera transacción (por ejemplo, compra). Al ejecutar la operación inversa (devolución, contracargo, pago repetido), este número:
getP2PStatus version versión 7 o superior.
|
Durante la autenticación por protocolo 3DS2 en respuesta a la primera solicitud llegan los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | threeDSServerTransId |
String [1..36] | Identificador de transacción creado en el servidor 3DS. Obligatorio para la autenticación 3DS. |
| Opcional | threeDSMethodUrl |
String [1..512] | URL del servidor ACS para la recopilación de datos del navegador. |
| Obligatorio | threeDSMethodUrlServer |
String [1..512] | Dirección URL del servidor 3DS para la recopilación de datos del navegador que se incluirán en AReq (Authentication Request) desde el servidor 3DS al servidor ACS. |
| Opcional | threeDSMethodDataPacked |
String [1..1024] | Datos CReq (Challenge Response) en codificación Base-64 para envío al servidor ACS. |
| Opcional | threeDSMethodURLServerDirect |
String [1..512] | Dirección URL 3dsmethod.do para ejecutar el método 3DS en el servidor 3DS a través de la pasarela de pago (si existe el permiso correspondiente a nivel de comerciante). |
A continuación se presentan los parámetros que deben estar presentes en la respuesta, después de la solicitud repetida de pago y la necesidad de redirigir al cliente al ACS durante la autenticación por protocolo 3DS2:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condicional | acsUrl |
String [1..512] | Dirección URL para redirección a ACS. Se devuelve en respuesta exitosa en caso de pago 3D-Secure, si se requiere redirección a ACS. Para más detalles ver Redirección a ACS. |
| Condicional | packedCReq |
String | Datos empaquetados de challenge request. Se devuelve en respuesta exitosa en caso de pago 3D-Secure, si se requiere redirección a ACS. Este valor debe usarse como valor del parámetro creq del enlace a ACS (acsUrl), para redirigir el cliente a ACS. Para más detalles ver Redirección a ACS. |
Para completar la transacción utilice el método /p2p/finishThreeDsVer2.do.
Ejemplos
Ejemplo de transacción AFT:
curl -X POST 'https://dev.bpcbt.com/payment/rest/api/p2p/instantPerformP2P.do' '
--header 'Content-Type: application/json' \
--data '{
"username": "test_user",
"password": "test_user_password",
"email" : "test@example.com",
"orderNumber" : "abcd1234abchh",
"amount" : 1500,
"currency" : "978",
"returnUrl" : "https://mybestmerchantreturnurl.com",
"failUrl" : "https://failUrl.com",
"transactionTypeIndicator": "A",
"features" : {
"feature" : ["WITHOUT_TO_CARD"]
},
"fromCard" : {
"cardholderName": "TEST CARDHOLDER",
"pan" : "5000001111111115",
"cvc" : "123",
"expirationYear" : "2024",
"expirationMonth" : "12"
},
"amountInput": "6000",
"billingPayerData": {
"billingCountry":"CYP",
"billingCity":"Larnaka",
"billingAddressLine1":"Stadiou 1",
"payerBirthday": "20211512",
"payerAccount": "DE1051078567",
"payerLastName": "Kostas",
"payerFirstName": "Parnas",
"payerMiddleName": "Illigel",
"payerCombinedName": "Kostas Parnas Illigel"
},
"billingRecipientData": {
"recipientFirstName": "Rodetos",
"recipientLastName": "Castinos",
"recipientMiddleName": "Internal",
recipientCombinedName": "Rodetos Castinos Internal",
"recipientCountry": "CYP",
"recipientAccount": "DE3840401048",
"recipientAccountNumberType": 1
},
}'Ejemplo de transacción OCT
curl -X POST 'https://dev.bpcbt.com/payment/rest/api/p2p/instantPerformP2P.do' '
--header 'Content-Type: application/json' \
--data '{
"username": "test_user",
"password": "test_user_password",
"email" : "test@example.com",
"orderNumber" : "abcd1234abchh",
"amount" : 1500,
"currency" : "978",
"returnUrl" : "https://mybestmerchantreturnurl.com",
"failUrl" : "https://failUrl.com",
"toCard": {
"pan": "4000001111111118"
},
"transactionTypeIndicator": "G",
"features": {
"feature": [
"WITHOUT_FROM_CARD"
]
}
}'Ejemplo de respuesta a la solicitud:
{
"errorCode": 0,
"info": "Your order is proceeded, redirecting...",
"acsUrl": "https://example.com/acs2/acs/creq",
"is3DSVer2": true,
"packedCReq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjNhZmMxNjhhLTk0YjQtNGViMy04ZTJlLTgwZjZjMTg2NjY5ZCIsIm1lc3NhZ2VUeXBlIjoiQ1JlcSIsIm1lc3NhZ2VWZXJzaW9uIjoiMi4xLjAiLCJhY3NUcmFuc0lEIjoiOWM3NTkxMmEtZTg0NC00ODgyLWI5YzctYzZmYmMzNjIyNGQ3IiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0"
}Reembolso de fondos para AFT
Utilice el método https://dev.bpcbt.com/payment/rest/api/p2p/refund.do para enviar solicitudes de reembolso de fondos por transacción AFT.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json.
Con esta solicitud los fondos del pedido indicado serán devueltos al pagador. La solicitud finalizará con error si los fondos de este pedido no fueron debitados. El sistema permite devolver fondos más de una vez, pero en total no más que el importe inicial del débito.
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | username |
String [1..30] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Opcional | amount |
String [0..12] | Importe del reembolso en unidades mínimas de la moneda (por ejemplo, en céntimos). El importe del reembolso debe ser menor o igual al importe del pedido. Si este parámetro no se transmite, el reembolso se ejecuta por el importe total del pedido. |
| Opcional | language |
String [2] | Clave de idioma según ISO 639-1. Si no se especifica el idioma, se utiliza el idioma predeterminado especificado en la configuración de la tienda. Idiomas soportados: en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| Opcional | errorMessage |
String [1..512] | Parámetro informativo que es la descripción del error en caso de que ocurra un error. El valor de errorMessage puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. El idioma de descripción se especifica en el parámetro language de la solicitud. |
Ejemplos
Ejemplo de solicitud
curl --location --request POST 'https://dev.bpcbt.com/payment/rest/api/p2p/refund.do'
--header 'Content-Type: application/json'
--data-raw '{
"username":"test_user",
"password":"test_user_password",
"orderId":"4c1a9960-a59a-763b-93ea-a6de09631b58",
"amount": 200,
"language": "en"
}'Ejemplo de respuesta
{
"errorCode": 0,
"errorMessage":"Success"
}Cancelación de pago AFT
Para cancelar el pago por transacción AFT se utiliza la solicitud https://dev.bpcbt.com/payment/rest/api/p2p/reverse.do.
La cancelación es posible solo durante un período determinado de tiempo después del pago. Póngase en contacto con el equipo de soporte para conocer el período exacto, ya que varía.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | username |
String [1..30] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Opcional | amount |
String [0..12] | Importe de cancelación en unidades mínimas de la moneda (por ejemplo, en centavos). Este parámetro le permite realizar cancelaciones parciales y debe ser menor o igual al importe autorizado del pedido. Si este parámetro no se transmite, se realiza la cancelación de todo el importe del pedido. |
| Opcional | language |
String [2] | Clave de idioma según ISO 639-1. Si no se especifica el idioma, se utiliza el idioma predeterminado especificado en la configuración de la tienda. Idiomas soportados: en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| Opcional | errorMessage |
String [1..512] | Parámetro informativo que es la descripción del error en caso de que ocurra un error. El valor de errorMessage puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. El idioma de descripción se especifica en el parámetro language de la solicitud. |
Ejemplos
Ejemplo de solicitud
curl --location --request POST 'https://dev.bpcbt.com/payment/rest/api/p2p/reverse.do'
--header 'Content-Type: application/json'
--data-raw '{
"username":"test_user",
"password":"test_user_password",
"orderId":"4c1a9960-a59a-763b-93ea-a6de09631b58",
"amount": 200,
"language": "en"
}'Ejemplo de respuesta
{
"errorCode": 0,
"errorMessage":"Success"
}Estado de transferencia P2P
Para obtener el estado de un pedido P2P registrado, utilice la solicitud https://dev.bpcbt.com/payment/rest/api/p2p/getP2PStatus.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | username |
String [1..30] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Opcional | language |
String [2] | Clave de idioma según ISO 639-1. Si no se especifica el idioma, se utiliza el idioma predeterminado especificado en la configuración de la tienda. Idiomas soportados: en,el,ro,bg,pt,sw,hu,it,pl,de,fr,kh,cn,es,ka,da,et,fi,lt,lv,nl,sv. |
| Condicional | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Condicional | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| Obligatorio | errorMessage |
String [1..512] | Parámetro informativo que es la descripción del error en caso de que ocurra un error. El valor de errorMessage puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. El idioma de descripción se especifica en el parámetro language de la solicitud. |
| Opcional | orderStatus |
Integer | El valor de este parámetro indica el estado del pedido en la pasarela de pago. Ausente si el pedido no fue encontrado. A continuación se presenta la lista de valores disponibles:
|
| Opcional | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Opcional | panMaskedFrom |
String [1..19] | Número de tarjeta enmascarado para el débito de fondos. |
| Opcional | panMaskedTo |
String [1..19] | Número de tarjeta enmascarado para el depósito de fondos. |
| Opcional | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
| Opcional | currency |
String [3] | Código de moneda del pago ISO 4217. Si no se especifica, se utiliza el valor por defecto. Solo se permiten dígitos. |
| Opcional | creationDate |
Integer | Fecha de registro del pedido. |
| Opcional | orderDescription |
String [1..600] | Descripción del pedido transmitida al gateway de pago durante el registro. En este campo no está permitido transmitir datos personales o datos de pago (números de tarjetas, etc.). Este requisito está relacionado con el hecho de que la descripción del pedido no se enmascara en ningún lugar. |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Obligatorio | resultCode |
Integer | Código de error al ejecutar la solicitud. Valores posibles:
|
| Opcional | orderParams |
Object | Objeto con atributos del vendedor. En la respuesta puede presentarse más de un bloque orderParams.El objeto debe transmitirse de la siguiente manera: {"param":"value","param2":"value2"}. |
| Opcional | operationList |
Object | Objeto que contiene información sobre las transacciones completadas en el pedido. En la respuesta puede estar presente más de un bloque operationList.Los parámetros que se pueden transmitir están descritos abajo. |
| Opcional | binding |
String | Identificador de enlace (si ya ha sido creado). Este parámetro se devuelve solo si la versión de getP2PStatus es igual a 3 o superior. |
| Opcional | detokenizedPanRepresentation |
String [1..19] | Número de tarjeta destokenizado (últimos 4 dígitos o en forma enmascarada). |
| Opcional | detokenizedPanExpiryDate |
String | Fecha de vencimiento de la tarjeta destokenizada en el siguiente formato: YYYYMM. |
| Opcional | paymentNetRefNum |
String [1..512] | Original Network Reference Number - es un identificador que asigna la red de pagos (Mastercard, Visa, etc.) al realizar la primera transacción (por ejemplo, compra). Al ejecutar la operación inversa (devolución, contracargo, pago repetido), este número:
getP2PStatus version versión 7 o superior.
|
El elemento payerData contiene los siguientes parámetros.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | paymentAccountReference |
String [1..29] | Número único de cuenta del cliente que vincula todos sus medios de pago dentro del marco del MPS (tarjetas y tokens). |
A continuación se presentan los posibles parámetros del bloque operationList.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | operationType |
String | Tipo de transacción. Están disponibles los siguientes valores:
|
| Opcional | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
| Opcional | currency |
String [3] | Código de moneda del pago ISO 4217. Si no se especifica, se utiliza el valor por defecto. Solo se permiten dígitos. |
| Opcional | datetime |
String | Fecha y hora de realización de la operación. |
| Opcional | resultCode |
Integer | Código de error al ejecutar la solicitud. Valores posibles:
|
| Opcional | resultCodeDescription |
String [1..512] | Descripción del código de error de la transacción. |
| Opcional | maskedPan |
String [1..19] | Número enmascarado de la tarjeta o token utilizado para el pago. |
| Opcional | cardholderName |
String [1..26] | Nombre del titular de la tarjeta (si está disponible). |
| Opcional | refNum |
String [12] | Identificador único de operación, asignado por el banco adquirente al procesar el pago con tarjeta bancaria. RRN es creado exclusivamente por el banco adquirente y se utiliza para la búsqueda posterior, verificación y liquidación de operaciones (incluyendo devoluciones, contracargos e investigaciones). |
Ejemplos
Ejemplo de solicitud
curl -X POST 'https://dev.bpcbt.com/payment/rest/api/p2p/getP2PStatus.do'
-H 'Content-Type: application/json'
--data-raw '{
"username": "test_user",
"password": "test_user_password",
"orderId" : "0a4eaae8-653a-71a9-8259-46fc00a8ea58"
}'Ejemplo de respuesta
{
"orderStatus": 0,
"errorCode": 0,
"errorMessage": "Successful",
"orderNumber": "2009",
"amount": 50000,
"currency": "978",
"creationDate": 1674137044330,
"orderParams": [],
"operationList": [],
"resultCode": 0
}Finalización de transacción P2P 3DS2 a través de API
Para finalizar una transacción P2P, el vendedor envía el identificador de transacción a la pasarela, utilizando el método https://dev.bpcbt.com/payment/rest/api/p2p/finishThreeDsVer2.do.
Al ejecutar la consulta es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de consulta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | username |
String [1..30] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | tDsTransId |
String [1..36] | Identificador único de transacción obtenido del servidor 3DS. |
Parámetros de respuesta
La respuesta a esta consulta no contiene ningún parámetro JSON. En su lugar, redirige al cliente a una de las siguientes direcciones URL:
- Si el procesamiento de la consulta fue exitoso, la pasarela de pago redirige al cliente a la dirección URL especificada en el parámetro
returnUrldurante el registro del pedido, con los parámetros añadidosorderIdylang; - Si el procesamiento de la consulta no fue exitoso, la pasarela de pago redirige al cliente a la dirección URL especificada en el parámetro
failUrldurante el registro del pedido, con los parámetros añadidosorderIdylang.
Ejemplos
Ejemplo de consulta
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/api/p2p/finishThreeDsVer2.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data '{
"username": "test_user",
"password": "test_user_password",
"threeDSServerTransId": "65020d0c-2627-4a45-8eab-b93b58fc52ae"
}'Ejemplo de URL de redirección
https://mybestmerchantreturnurl.com/finish.html?orderId=906bf262-bd53-4ac7-983c-07127954681b&lang=en