Descripción general
Puede utilizar nuestro API de vendedor para crear el escenario de pago que necesite. Por ejemplo, puede crear su propia página de pago completamente configurada y conectarla a nuestra pasarela de pago.
Puede descargar la colección de solicitudes API para Postman para probar las funcionalidades básicas del API. Asegúrese de enviar las solicitudes como POST con atributos en el cuerpo de la solicitud.
Obligatoriedad de parámetros
La obligatoriedad de presencia del parámetro en la solicitud/respuesta puede tomar los siguientes valores:
- Obligatorio - el parámetro debe estar presente siempre. En caso de ausencia del valor se requiere transmitir un valor vacío dependiendo del formato;
- No obligatorio - el parámetro puede tanto estar presente como ausente, mientras que su presencia redundante no llevará a un error del sistema;
- Condición - el parámetro puede tanto estar presente (ser obligatorio) como ausente dependiendo de una o varias condiciones.
La obligatoriedad de transmisión del parámetro en la descripción de solicitud/respuesta se indica en la columna del mismo nombre "Obligatoriedad".
Autenticación
Para la autenticación del comerciante en la pasarela de pagos se pueden utilizar dos métodos.
- Utilizando el login y contraseña del usuario API del comerciante (cuenta con sufijo
-api), obtenido durante el registro. Estos valores se transmiten en los parámetrosuserNameypasswordrespectivamente (ver tabla a continuación).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | userName |
String [1..30] | Login de la cuenta API del vendedor. Si se utiliza un token público (parámetro token) para la autenticación durante el registro en lugar del login y la contraseña, no es necesario transmitir la contraseña. |
| Condición | password |
String [1..30] | Contraseña de la cuenta API del vendedor. Si para la autenticación durante el registro se utiliza un token público (parámetro token) en lugar de login y contraseña, no es necesario transmitir la contraseña. |
- Con ayuda de un token especial - su valor puede solicitarlo en el servicio de soporte técnico. En las solicitudes su valor se transmite en el parámetro
token(ver tabla a continuación).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | token |
String [1..256] | Valor utilizado para la autenticación del vendedor al enviar solicitudes al gateway de pago. Si transmites este parámetro, no transmitas userName y password. |
URL para llamadas API
TEST: https://dev.bpcbt.com/payment/rest/
PROD: https://dev.bpcbt.com/payment/rest/
Errores
Códigos de estado HTTP:
200- en caso de llamadas API del gateway de pago es necesario analizar JSON de la respuesta para determinar si el procesamiento de la transacción fue exitoso o no. El éxito se indica por:
- valor del parámetrosuccessigual atrue
- valor del parámetroerrorCodeigual a0
Si están presentes ambos parámetros,successtiene prioridad sobreerrorCode.400- ocurrió un error interno en el sistema.404- error en la llamada API - URL incorrecta (no existe).429- este código significa que el sistema está sobrecargado. Muy frecuentemente la razón principal es que se alcanzó el límite de solicitudes por segundo o el límite de solicitudes simultáneas. Pero también puede estar relacionado con que el sistema en general está sobrecargado (independientemente de sus solicitudes).500 o 502- este código significa que algo salió mal de nuestro lado.
Si la solicitud relacionada con el pago del pedido se procesó exitosamente, esto aún no significa que el pago mismo fue exitoso.
Para determinar si el pago fue exitoso o no, puede referirse a la descripción de la solicitud utilizada. También para determinar el estado del pago siempre se puede usar el algoritmo descrito a continuación
- Hacer una llamada getOrderStatusExtended.do;
- Verificar el campo
orderStatusen la respuesta: el pedido se considera pagado solo si el valororderStatuses igual a1o2.
Firma de solicitud API
En algunos casos para garantizar el intercambio seguro de datos puede ser necesario implementar una firma asimétrica de solicitud. Generalmente este requisito se aplica solo si está ejecutando solicitudes P2P/AFT/OCT.
Para tener la posibilidad de firmar solicitudes, necesita ejecutar los siguientes pasos:
- Cree y cargue un certificado.
- Calcule hash y firma, usando su clave privada, y transmita el hash generado (X-Hash) y valor de firma (X-Signature) en el encabezado de la solicitud.
Estos pasos están descritos detalladamente abajo.
Creación y carga de certificado
-
Cree una clave privada RSA de 2048 bits. El método de generación depende de la política de confidencialidad en su empresa. Por ejemplo, puede hacer esto con ayuda de OpenSSL:
openssl genrsa -des3 -out private.key 2048 -
Cree un CSR público (solicitud de firma de certificado), usando la clave privada generada:
openssl req -key private.key -new -out public.csr -
Cree un certificado, usando la clave privada generada y CSR. Ejemplo de formación de certificado por 5 años:
openssl x509 -signkey private.key -in public.csr -req -days 1825 -out public.cer Cargue el certificado generado en el Gabinete Personal. Para esto vaya a Certificados de billeteras > Merchant API, presione Agregar certificado y cargue el certificado público generado.

Cálculo de hash y firma
-
Calcule el hash SHA256 del cuerpo de la solicitud de la siguiente manera:
- Use el cuerpo de la solicitud en forma de cadena (en nuestro ejemplo esto es
amount=10000&password=gcjgcW1&returnUrl=http&userName=signature-api). - Calcule el hash SHA256 de esta cadena en bytes sin procesar.
- Convierta los bytes sin procesar a codificación base64.
- Use el cuerpo de la solicitud en forma de cadena (en nuestro ejemplo esto es
Genere una firma para el hash SHA256 calculado con ayuda del algoritmo RSA, usando la clave privada.
En nuestro ejemplo usamos la siguiente clave privada con contraseña 12345:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,C502560EDE8F82B7
O4+bY1Q1ZcXFLDGVE8s9G2iVISHR/c/IMZKZEjkBED/TbuOCUGVjcav2ZaZO2dO0
lm771N6JNB01uhJbTHScVQ6R0UnGezHFTcsJlAlBa9RQyOwujs4Pk6riOGnLliIs
urnTXD0oskBR1wLRA2kp8+V0UPOAMXQaoLxFGE/o8taDGSrkyIcYTBoh9o7ZBxvO
SqUWAt2vPbGVyc6XspyuVtgHgEctaJO+E26QTweqdpN5JITF+fDFPNwUrFHoho4N
pxpKRWbiCJSpbvbsvhdizkmfgvRw+qYJvTirF3JTfGr14DttudFwjm7sNrr0JILR
XPKDUhRyWjkthZM+oDjF2HwISAGkbxcpn4PU7Tywq0uax+5KCQQn2uz4jLM2P6+9
000cvVLwhMnoUdOxuISRXeOcOWVyTO1mPfKiWnHaoO4yS3Y36OCIOe9RHGP8TTmq
acb3LUIF30eQyk3KxH/tUB0ScPDKEKMiww13/Kcfr0JkdIe/BWCvV+hSQm38TLQe
bTFy+wnD9kHACCwTSVVSOO+rHgJGVIyLgnpClZKWQyyJ4clH7/cORA7mTmp85Ckx
IjV5Egu0bPPUMudOB5BnQ4u85RnqXavasgrLRA3JZM4+Jzl8MNy/fsFXnVBQLJJC
Wlz/B7S7W8sabRogFuiqkkPmXE/QcpdKQoY3yh748QqMSl8vkA6WgndyYv1EnDDl
jA5j7vSf0wKI8BHgdHBEWuEjn3X/s0S/BiPPI6puboYY90tYVJTWSQCR83QrMF3N
BIcMu4+RIYu6GWnPx9npZpt0858c670ZII56np24iMse3qgHCOZxsGOenK2x7ta6
163gvaD8bu8xoeQcGVfd6IMbXWVb0+z1hvWR5HWHSalof4lMzZrDsQDKc2UA0ygh
hA1+VAl1MAEHVLNCCmyG1SwRwg1PI7FfftW7YARngCZRWkJ1haj1fgy7rtYolrdv
lEz/vjFD6diABx67omGgfiJhWdiKIlzsYlX1SW7yaik/Uxf1j8gTFwY34y8ekVd9
6pQTzV2V/4a48ELZl4LvelLWyt1AB3AR+/fM7YG6LYIqlo+qnLtro7Bqu8RNTNRP
wcWCd04r/20ulFWMIH8pVa60C98pSdOXriWEI1KDLc0E/fCdhjW2kL+FTPLC7ORe
cuzmfI27+06P/BvLZq/FAVBrDAmkioKwe6XYzTjpK1p5jZ3IrNwjAiasY1MNxCRy
5ufhQwkW//d+VUdU5m8Sm30/kXe9UkxMaetXgzPxbB7+5QFFr0bi7D1MjIrJNtTx
5g5E+UfOhqrp8ztBht9csQeFYSYabyyGX4Lh7ymVWrKCVdHlJib3M36nvOjpV/lA
zf35sxFz9kaQqNK7xJdQ9Bx6TBUzLjpYhNry37vKk+SIB6Weo+LJ99mALMeX79CB
osRqZqX5yrZhaQ8bbpo981nvLy5xFnpRqCuSWVZrVMBq3LQLaOvaCeyGC0V+ZN0C
CU6lHlR6XQqd/IjoEN8+8aiVp6Ubw8FuD28TDaEvCltrX3ARL0xFpABsa42LgV1F
09Vi+ju7SSNDvbezN8q0EILq9xp/zNCVhMpyRCIXBq9fzHkyCZ5qMw==
-----END RSA PRIVATE KEY-----
Obtenemos la firma:
pJ/gM4PR1/mKGuIxMvTl5pYDDjJslb0BcXFnIxijFn5qKdPd7W+2ueoctziU7omnkYp01/BlracukH1GOPWMSO+9zKuTDdFueFm1utsS0zaPFU+dmc1niGDRWE0CbCXcti/rGSTDPsnR58mwqgVkbCWxKyCDtuo5LxiKPK9mzgWTUuJ8LX6f6u42MURi5tRG6a9dc8l/+J94g0YOk911R6Lqv2jcluEvZ9ZeMMt8hyxowb0eDaCHlussu2CAyqpE9V+EUAc81Jkwv96MMSsA6UnFwEaCV/k+kwYd0jHCx94m2yWX734p9cWsBW7Fr5F0zox9Yck4GOjqe9nJMMB9jQ==
3. Ahora debe pasar el hash generado (X-Hash) y el valor de la firma (X-Signature) en el encabezado de la solicitud. La solicitud se verá así:
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/register.do \
--header 'content-type: application/x-www-form-urlencoded' \
--header 'X-Hash: eYkMUF+xaYJhsETTIGsctl6DBNZha1ITN8muCcWQtZk=' \
--header 'X-Signature: pJ/gM4PR1/mKGuIxMvTl5pYDDjJslb0BcXFnIxijFn5qKdPd7W+2ueoctziU7omnkYp01/BlracukH1GOPWMSO+9zKuTDdFueFm1utsS0zaPFU+dmc1niGDRWE0CbCXcti/rGSTDPsnR58mwqgVkbCWxKyCDtuo5LxiKPK9mzgWTUuJ8LX6f6u42MURi5tRG6a9dc8l/+J94g0YOk911R6Lqv2jcluEvZ9ZeMMt8hyxowb0eDaCHlussu2CAyqpE9V+EUAc81Jkwv96MMSsA6UnFwEaCV/k+kwYd0jHCx94m2yWX734p9cWsBW7Fr5F0zox9Yck4GOjqe9nJMMB9jQ==' \
--data 'amount=10000&password=gcjgcW1&returnUrl=http&userName=signature-api'La solicitud debe cumplir con los siguientes requisitos:
- Todos los parámetros de la solicitud se incluyen en el cuerpo de la solicitud (no en la URL)
-
Si los parámetros de la solicitud se pasan en formato JSON, debe usarse el siguiente encabezado:
--header 'content-type: application/json' -
Si los parámetros de la solicitud se pasan en formato Query (por ejemplo,
parameterA=valueA&parameterB=valueB), debe usarse el siguiente encabezado:--header 'content-type: application/x-www-form-urlencoded' La solicitud contiene el usuario y contraseña correctos del usuario API.
El encabezado
X-Hashcontiene el hash SHA256 del cuerpo de la solicitud (se calcula en el Paso 1).El encabezado
X-Signaturecontiene la firma para el hash SHA256, calculada usando el algoritmo RSA con la clave privada (se genera en el Paso 2).
Ejemplo de código Java
A continuación se muestra un ejemplo de código Java que carga la clave privada, calcula el hash SHA256, lo firma con la clave privada con contraseña 12345, y luego envía la solicitud register.do correcta:
import javax.net.ssl.HttpsURLConnection;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.KeyStore;
import java.security.MessageDigest;
import java.security.PrivateKey;
import java.security.Signature;
import java.util.Base64;
import static java.net.HttpURLConnection.HTTP_OK;
public class SimpleSignatureExample {
// Este ejemplo no está listo para producción. Solo muestra cómo usar firmas en API.
public static void main(String[] args) throws Exception {
// cargar clave privada desde jks
KeyStore ks = KeyStore.getInstance("JKS");
char[] pwd = "123456".toCharArray();
ks.load(Files.newInputStream(Paths.get("/path/to/certificates.jks")), pwd);
PrivateKey privateKey = (PrivateKey) ks.getKey("111111", pwd);
// Firmar
String httpBody = "amount=10000&password=gcjgcW1&returnUrl=http&userName=signature-api";
MessageDigest digest = MessageDigest.getInstance("SHA-256");
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(privateKey);
byte[] sha256 = digest.digest(httpBody.getBytes());
signature.update(sha256);
byte[] sign = signature.sign();
// Enviar
Base64.Encoder encoder = Base64.getEncoder();
HttpsURLConnection connection = (HttpsURLConnection) new URL("https://<YOUR_DOMAIN>/payment/rest/register.do").openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.addRequestProperty("content-type", "application/x-www-form-urlencoded");
connection.addRequestProperty("X-Hash", encoder.encodeToString(sha256));
connection.addRequestProperty("X-Signature", encoder.encodeToString(sign));
connection.addRequestProperty("Content-Length", String.valueOf(httpBody.getBytes().length));
try (final DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) {
outputStream.write(httpBody.getBytes());
outputStream.flush();
}
connection.connect();
InputStream inputStream = connection.getResponseCode() == HTTP_OK ? connection.getInputStream() : connection.getErrorStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}Ejemplo de código Python
A continuación se muestra un ejemplo de código Python que genera la firma:
import OpenSSL
from OpenSSL import crypto
import base64
from hashlib import sha256
key_file = open("./priv.pem", "r")
key = key_file.read()
key_file.close()
if key.startswith('-----BEGIN '):
pkey = crypto.load_privatekey(crypto.FILETYPE_PEM, key)
else:
pkey = crypto.load_pkcs12(key, password).get_privatekey()
data = "amount=2000¤cy=978&userName=test_user&password=test_user_password&returnUrl=https%3A%2F%2Fmybestmerchantreturnurl.com&description=my_first_order&language=en"
sha256_hash = sha256(data.encode()).digest()
base64_hash = base64.b64encode(sha256_hash)
print(base64_hash)
sign = OpenSSL.crypto.sign(pkey, sha256_hash, "sha256")
signed_base64 = base64.b64encode(sign)
print(signed_base64)El archivo de clave privada para el ejemplo de Python debe tener el formato:
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDdpOwhY/p9x0WmBd3HaDfCD+KYung3M8Cxrw0ozF+h//GltRdnkJD7ejsBDB6/YeIVXZeU3AyqWvsi/IfeHwnokGxVg2IMw8OPacY6o1x7W0EQtfRoZa2Cn2PMCpZhEHlIVraXZDDeg4HY26YP0FZxRbpNnpXhGbiop+Bq0wHeE3JIk53cRmwYhxdxMmvFpgNd6C3dYhmnQqLv6WSpVNDFbQxBVU+JDNyR9FQwB1dU2MadgYwFJnEssbhUkM+sXAC4Wv3qhcZek6MWeWsbFIIlyTPa1T3yrWSXIb4qFJEro4pRMmwQ72qG02p8EPx1tlveQo22TojV9WbTPtaVwQtxAgMBAAECggEBANheTGkYOYsZwgMdzPAB7BSU/0bLGdoBuoV6dqUyRdVWjqaOTwe519625uzR0R5RRqxGzlfyLKcM5Aa2cUhEEp8mhatA87G0Va8lue66VOjTH4RZq/tR7v0J7hlc6Ipe05brl5nYo+BEjriNS+I6Jnizcfid7IBvZJW4NFr0G+mWTxl2BhUK/Mk895n8hg9QtgSRoMNO4jK2f0vJrH4hBHehTYpjHx+QhbUyIvsp60bEnNOXzl054TuWBVCYAQHcHTTZowWMY0s1Z0kGNxwsqQm4amW/v+1EqCF4fjRDrU6v/kjDKxGFx9GJUktKZAe2T8e2LySjgGpJO5g4AdxIVpUCgYEA8x9te+i2ijxoS3kIUSwXaPq5EdKGWGl5mW8KZHzmt9LB/CqTKvSOiDkMGoAx/76t5QmKOYojP+Vsc2XdfQfhT6d00MGTdiPBd+8//MmQQ07/D1/PV58Jd1O8bQFU4fZCMpQl/8Azp9ix/NEx0sHDv2KigLfFMBVGeJxwSoU2JzMCgYEA6WJC0BDTA9vx+i+p9i/41f7ozpQuYey5sxdZa2emOSYen6ptxUFLAYXMxVDaBJ89PMUa8GzWoXHhgXzbuRJk74IzUhWgPpneS4HTr5KDStJh2TqWWVLwEIgLwxvtuw0i9uSEU64D/Czzm801lrOhVgmZsWwNpFtP8ujz0v84MssCgYEA1P4YhbB3kx2e5VfwgGSXUcIttr5wMi6deF0+hpCh9DNw/QEzkzNTV2ZbAzCCHSKo5/n2nbg2b3kIDQUWCL6JlqYHAghErwBeMztoHIddmoovjAGM/Z93xJGYhwremWOL1RHTRH7XAlomfG2tL43PdvDrmsbkut44sdujyLVxnt8CgYBirK3tBMADKLJVgmOM+FlwORe7iAFYW9tj8iJXe/pWvVxDS66fsOyCl0ytvHKBc8ZTdE7gilPw7JJYyi6oQDO25EjIkuYusaXALQMQf5TNRMgkLVY2LA/eHXdDpgJMjNBUrOeZ7cA3ldXl8MyQjCBRnTuDPVlDPWw/GulEM65SIwKBgQDIEv8XK2YBkZrr+0fZSFTQAeK4R7Ve3z4hbpHhJi41YanCNaEWoeYAuQd6/b/QLwABllvfJBDYCNnF8heUxqISpyWd+FZ8nhZtxBoKj5l80czTcutIz/M+ETcvl8FqnMBsoCdp1wodqaLkOx6DIldgKLze6AqKXl5lHUsU4mvVqg==
-----END PRIVATE KEY-----
Registro de pedido
Registro de pedido
Para el registro de pedido se utiliza la solicitud https://dev.bpcbt.com/payment/rest/register.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | userName |
String [1..30] | Login de la cuenta API del vendedor. Si se utiliza un token público (parámetro token) para la autenticación durante el registro en lugar del login y la contraseña, no es necesario transmitir la contraseña. |
| Condición | password |
String [1..30] | Contraseña de la cuenta API del vendedor. Si para la autenticación durante el registro se utiliza un token público (parámetro token) en lugar de login y contraseña, no es necesario transmitir la contraseña. |
| Condición | token |
String [1..256] | Valor utilizado para la autenticación del vendedor al enviar solicitudes al gateway de pago. Si transmites este parámetro, no transmitas userName y password. |
| 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). |
| No 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>. |
| No obligatorio | 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>. |
| No obligatorio | 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. |
| No obligatorio | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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. |
| 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 | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| No obligatorio | 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. |
| No obligatorio | 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. |
| No obligatorio | cardholderName |
String [1..150] | Nombre del titular de la tarjeta en letras latinas. Al transmitir este parámetro, el nombre del titular de la tarjeta se mostrará en la página de pago. |
| No obligatorio | jsonParams |
Object | Conjunto de atributos adicionales de forma arbitraria, estructura:jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}Pueden ser transmitidos al Centro de Procesamiento, para el procesamiento posterior (se requiere configuración adicional - póngase en contacto con el soporte). Algunos atributos predefinidos de jsonParams:
|
| No obligatorio | 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. |
| No obligatorio | expirationDate |
String [19] | 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. |
| No obligatorio | 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:
|
| No obligatorio | features |
String | Funciones del pedido. Para especificar varias funciones, use este parámetro varias veces en una sola solicitud. A continuación se muestran los valores posibles.
|
| No obligatorio | postAddress |
String [1..255] | Dirección de entrega. |
| No obligatorio | orderBundle |
Object | Objeto que contiene la cesta de productos. La descripción de los elementos anidados se proporciona a continuación. |
| No obligatorio | 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. |
| Condición | email |
String [1..40] | Correo electrónico para mostrar en la página de pago. Si las notificaciones del cliente están configuradas para el comerciante, es necesario especificar el correo electrónico. Ejemplo: client_mail@email.com. La dirección de correo electrónico no se verifica durante el registro, será verificada más tarde durante el pago. |
| 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 | mvv |
String [1..10] | Confirmación del comerciante de Mastercard para transacciones tokenizadas. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte con soporte técnico). |
| No obligatorio | paymentFacilitator |
Object | Bloque con información sobre el facilitador de pagos, es decir, sobre el comerciante que permite a varios subcomerciantes aceptar pagos bajo su cuenta. Para transmitir este parámetro debe estar activada una configuración especial (contacte con el soporte técnico). Ver parámetros anidados. |
| No obligatorio | 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á activada para el vendedor en el lado de la Pasarela de Pagos. Ver parámetros anidados. |
| No obligatorio | 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. |
| No obligatorio | 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. |
| No obligatorio | 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. |
| No obligatorio | 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:
|
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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. |
Descripción de parámetros en el objeto orderBundle:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | orderCreationDate |
String [19] | Fecha de creación del pedido en formato YYYY-MM-DDTHH:MM:SS. |
| Opcional | customerDetails |
Object | Bloque que contiene los atributos del cliente. La descripción de los atributos de la etiqueta se proporciona a continuación. |
| Obligatorio | cartItems |
Object | Objeto que contiene atributos de productos en el carrito. La descripción de elementos anidados se proporciona a continuación. |
Descripción de parámetros en el objeto customerDetails:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | contact |
String [0..40] | Método de contacto preferido por el cliente. |
| Opcional | fullName |
String [1..100] | Nombres y apellidos del pagador. |
| Opcional | passport |
String [1..100] | Serie y número del pasaporte del pagador en el siguiente formato: 2222888888
|
| Opcional | deliveryInfo |
Object | Objeto que contiene los atributos de la dirección de entrega. La descripción de los elementos anidados se proporciona a continuación. |
Descripción de los parámetros en el objeto deliveryInfo:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | deliveryType |
String [1..20] | Método de entrega. |
| Obligatorio | country |
String [2] | Código de país de dos letras para la entrega. |
| Obligatorio | city |
String [0..40] | Ciudad de destino. |
| Obligatorio | postAddress |
String [1..255] | Dirección de entrega. |
Descripción de parámetros en el objeto cartItems:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | items |
Object | Elemento del array con atributos de la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
Descripción de parámetros en el objeto items:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | positionId |
Integer [1..12] | Identificador único de la posición del producto en el carrito. |
| Obligatorio | name |
String [1..255] | Denominación o descripción de la partida de mercancía en forma libre. |
| No obligatorio | itemDetails |
Object | Objeto con parámetros de descripción de la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
| Obligatorio | quantity |
Object | Elemento que describe la cantidad total de posiciones de mercancías de un positionId y sus unidades de medida. La descripción de los elementos anidados se presenta a continuación. |
| No obligatorio | itemAmount |
Integer [1..12] | Suma del costo de todas las posiciones de mercancías de un positionId en unidades mínimas de moneda. itemAmount es obligatorio para la transmisión, solo si no se transmitió el parámetro itemPrice. En caso contrario, la transmisión de itemAmount no es requerida. Si en la solicitud se transmiten ambos parámetros: itemPrice e itemAmount, entonces itemAmount debe ser igual a itemPrice * quantity, en caso contrario la solicitud finalizará con error. |
| No obligatorio | itemPrice |
Integer [1..18] | Suma del costo de la posición de mercancía de un positionId en dinero en unidades mínimas de moneda. |
| No obligatorio | depositedItemAmount |
String [1..18] | Importe del débito para un positionId en unidades mínimas de moneda (por ejemplo, en copecks). |
| No obligatorio | itemCurrency |
Integer [3] | Código de moneda ISO 4217. Si no se especifica, se considera igual a la moneda del pedido. |
| Obligatorio | itemCode |
String [1..100] | Número (identificador) de la posición de mercancía en el sistema de la tienda. |
Descripción de los parámetros en el objeto quantity:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | value |
Number [1..18] | Cantidad de posiciones de mercancías de dicho positionId. Para indicar números fraccionarios utilice el punto decimal. Se permite un máximo de 3 dígitos después del punto. |
| Obligatorio | measure |
String [1..20] | Unidad de medida de la cantidad por posición. |
Descripción de parámetros en el objeto itemDetails:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | itemDetailsParams |
Object | Parámetro que describe información adicional sobre la posición de mercancía. La descripción de los elementos anidados se presenta a continuación. |
Descripción de parámetros en el objeto itemDetailsParams:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | value |
String [1..2000] | Información adicional sobre la posición de mercancías. |
| Obligatorio | name |
String [1..255] | Denominación del parámetro de descripción de detalle de la posición de mercancía |
Descripción de los parámetros del objeto paymentFacilitator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | pfId |
String [1..11] | Identificador del facilitador de pagos. |
| Obligatorio | name |
String [1..40] | Nombre del facilitador de pago. |
| Opcional | isoId |
String [1..11] | Identificador ISO. |
| Obligatorio | subMerchants |
Array of objects | Matriz de objetos con información adicional sobre los subcomerciantes. Ver parámetros anidados a continuación. |
Parámetros del elemento de la matriz subMerchants:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | subMerchantId |
String [1..20] | Identificador del subcomerciante. |
| Obligatorio | name |
String [1..40] | Nombre del subcomerciante. |
| Obligatorio | address |
Object | Bloque con información sobre la dirección del subcomerciante. Ver parámetros anidados a continuación. |
Parámetros del objeto address:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | city |
String [1..50] | Ciudad del subcomerciante. |
| Obligatorio | postalCode |
String [1..16] | Código postal del subcomerciante. |
| Obligatorio | country |
Integer [2] | Código de país del subcomerciante en formato ISO 3166-1. |
| Opcional | street |
String [1..40] | Calle del subcomerciante. |
Ejemplo del objeto paymentFacilitator:
"paymentFacilitator" :{
"pfId": "PF123456",
"name": "Payment Facilitator Name",
"isoId": "ISO789",
"subMerchants": [
{
"subMerchantId": "SM001",
"name": "Sub Merchant 1",
"address": {
"city": "City 1",
"postalCode": "101000",
"country": "US",
"street": "Street 1"
}
},
{
"subMerchantId": "SM002",
"name": "Sub Merchant 2",
"address": {
"city": "City 2",
"postalCode": "190000",
"country": "US",
"street": "Street 2"
}
}
]
}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. |
| 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. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/register.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data amount=123456 \
--data userName=test_user \
--data password=test_user_password \
--data orderNumber=1234567890ABCDEF \
--data returnUrl=https://mybestmerchantreturnurl.com \
--data failUrl=https://mybestmerchantfailurl.com \
--data email=test@test.com \
--data clientId=259753456 \
--data features=FORCE_SSL \
--data features=FORCE_TDS \
--data language=en \
--data 'jsonParams={"param_1_name":"param_1_value","param_2_name":"param_2_value"}'Ejemplo de respuesta - éxito
{
"orderId": "01491d0b-c848-7dd6-a20d-e96900a7d8c0",
"formUrl": "https://dev.bpcbt.com/payment/payment/merchants/ecom/payment_en.html?mdOrder=01491d0b-c848-7dd6-a20d-e96900a7d8c0"
}Ejemplo de respuesta - error
{
"errorCode": "1",
"errorMessage": "Order number is duplicated, order with given order number is processed already"
}Registro de pedido con preautorización
Para la solicitud de registro de pedido con preautorización se utiliza el método https://dev.bpcbt.com/payment/rest/registerPreAuth.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | userName |
String [1..30] | Login de la cuenta API del vendedor. Si se utiliza un token público (parámetro token) para la autenticación durante el registro en lugar del login y la contraseña, no es necesario transmitir la contraseña. |
| Condición | password |
String [1..30] | Contraseña de la cuenta API del vendedor. Si para la autenticación durante el registro se utiliza un token público (parámetro token) en lugar de login y contraseña, no es necesario transmitir la contraseña. |
| Condición | token |
String [1..256] | Valor utilizado para la autenticación del vendedor al enviar solicitudes al gateway de pago. Si transmites este parámetro, no transmitas userName y password. |
| 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). |
| 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. |
| 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 | 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 | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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). |
| 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 | cardholderName |
String [1..150] | Nombre del titular de la tarjeta en letras latinas. Al transmitir este parámetro, el nombre del titular de la tarjeta se mostrará en la página de pago. |
| Opcional | jsonParams |
Object | Conjunto de atributos adicionales de forma arbitraria, estructura:jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}Pueden ser transmitidos al Centro de Procesamiento, para el procesamiento posterior (se requiere configuración adicional - póngase en contacto con el soporte). Algunos atributos predefinidos de jsonParams:
|
| 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 | expirationDate |
String [19] | 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 | 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 | features |
String | Funciones del pedido. Para especificar varias funciones, use este parámetro varias veces en una sola solicitud. A continuación se muestran los valores posibles.
|
| Opcional | autocompletionDate |
String [19] | Fecha y hora de finalización automática del pago de dos etapas en el siguiente formato: 2025-12-29T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | autoReverseDate |
String [19] | Fecha y hora de cancelación automática del pago de dos etapas en el siguiente formato: 2025-06-23T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | postAddress |
String [1..255] | Dirección de entrega. |
| Opcional | orderBundle |
Object | Objeto que contiene la cesta de productos. La descripción de los elementos anidados se proporciona a continuación. |
| 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. |
| Condición | email |
String [1..40] | Correo electrónico para mostrar en la página de pago. Si las notificaciones del cliente están configuradas para el comerciante, es necesario especificar el correo electrónico. Ejemplo: client_mail@email.com. La dirección de correo electrónico no se verifica durante el registro, será verificada más tarde durante el pago. |
| 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 | mvv |
String [1..10] | Confirmación del comerciante de Mastercard para transacciones tokenizadas. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte con soporte técnico). |
| Opcional | paymentFacilitator |
Object | Bloque con información sobre el facilitador de pago, es decir, sobre el comerciante que permite a varios subcomerciantes aceptar pagos bajo su cuenta. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte al soporte técnico). Ver parámetros anidados. |
| Opcional | 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. |
| 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:
|
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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. |
Descripción de parámetros en el objeto orderBundle:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | orderCreationDate |
String [19] | Fecha de creación del pedido en formato YYYY-MM-DDTHH:MM:SS. |
| Opcional | customerDetails |
Object | Bloque que contiene los atributos del cliente. La descripción de los atributos de la etiqueta se proporciona a continuación. |
| Obligatorio | cartItems |
Object | Objeto que contiene atributos de productos en el carrito. La descripción de elementos anidados se proporciona a continuación. |
Descripción de parámetros en el objeto customerDetails:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | contact |
String [0..40] | Método de contacto preferido por el cliente. |
| Opcional | fullName |
String [1..100] | Nombres y apellidos del pagador. |
| Opcional | passport |
String [1..100] | Serie y número del pasaporte del pagador en el siguiente formato: 2222888888
|
| Opcional | deliveryInfo |
Object | Objeto que contiene los atributos de la dirección de entrega. La descripción de los elementos anidados se proporciona a continuación. |
Descripción de los parámetros en el objeto deliveryInfo:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | deliveryType |
String [1..20] | Método de entrega. |
| Obligatorio | country |
String [2] | Código de país de dos letras para la entrega. |
| Obligatorio | city |
String [0..40] | Ciudad de destino. |
| Obligatorio | postAddress |
String [1..255] | Dirección de entrega. |
Descripción de parámetros en el objeto cartItems:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | items |
Object | Elemento del array con atributos de la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
Descripción de parámetros en el objeto items:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | positionId |
Integer [1..12] | Identificador único de la posición del producto en el carrito. |
| Obligatorio | name |
String [1..255] | Denominación o descripción de la partida de mercancía en forma libre. |
| No obligatorio | itemDetails |
Object | Objeto con parámetros de descripción de la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
| Obligatorio | quantity |
Object | Elemento que describe la cantidad total de posiciones de mercancías de un positionId y sus unidades de medida. La descripción de los elementos anidados se presenta a continuación. |
| No obligatorio | itemAmount |
Integer [1..12] | Suma del costo de todas las posiciones de mercancías de un positionId en unidades mínimas de moneda. itemAmount es obligatorio para la transmisión, solo si no se transmitió el parámetro itemPrice. En caso contrario, la transmisión de itemAmount no es requerida. Si en la solicitud se transmiten ambos parámetros: itemPrice e itemAmount, entonces itemAmount debe ser igual a itemPrice * quantity, en caso contrario la solicitud finalizará con error. |
| No obligatorio | itemPrice |
Integer [1..18] | Suma del costo de la posición de mercancía de un positionId en dinero en unidades mínimas de moneda. |
| No obligatorio | depositedItemAmount |
String [1..18] | Importe del débito para un positionId en unidades mínimas de moneda (por ejemplo, en copecks). |
| No obligatorio | itemCurrency |
Integer [3] | Código de moneda ISO 4217. Si no se especifica, se considera igual a la moneda del pedido. |
| Obligatorio | itemCode |
String [1..100] | Número (identificador) de la posición de mercancía en el sistema de la tienda. |
Descripción de los parámetros en el objeto quantity:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | value |
Number [1..18] | Cantidad de posiciones de mercancías de dicho positionId. Para indicar números fraccionarios utilice el punto decimal. Se permite un máximo de 3 dígitos después del punto. |
| Obligatorio | measure |
String [1..20] | Unidad de medida de la cantidad por posición. |
Descripción de parámetros en el objeto itemDetails:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | itemDetailsParams |
Object | Parámetro que describe información adicional sobre la posición de mercancía. La descripción de los elementos anidados se presenta a continuación. |
Descripción de parámetros en el objeto itemDetailsParams:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | value |
String [1..2000] | Información adicional sobre la posición de mercancías. |
| Obligatorio | name |
String [1..255] | Denominación del parámetro de descripción de detalle de la posición de mercancía |
Descripción de los parámetros del objeto paymentFacilitator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | pfId |
String [1..11] | Identificador del facilitador de pagos. |
| Obligatorio | name |
String [1..40] | Nombre del facilitador de pago. |
| Opcional | isoId |
String [1..11] | Identificador ISO. |
| Obligatorio | subMerchants |
Array of objects | Matriz de objetos con información adicional sobre los subcomerciantes. Ver parámetros anidados a continuación. |
Parámetros del elemento de la matriz subMerchants:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | subMerchantId |
String [1..20] | Identificador del subcomerciante. |
| Obligatorio | name |
String [1..40] | Nombre del subcomerciante. |
| Obligatorio | address |
Object | Bloque con información sobre la dirección del subcomerciante. Ver parámetros anidados a continuación. |
Parámetros del objeto address:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | city |
String [1..50] | Ciudad del subcomerciante. |
| Obligatorio | postalCode |
String [1..16] | Código postal del subcomerciante. |
| Obligatorio | country |
Integer [2] | Código de país del subcomerciante en formato ISO 3166-1. |
| Opcional | street |
String [1..40] | Calle del subcomerciante. |
Ejemplo del objeto paymentFacilitator:
"paymentFacilitator" :{
"pfId": "PF123456",
"name": "Payment Facilitator Name",
"isoId": "ISO789",
"subMerchants": [
{
"subMerchantId": "SM001",
"name": "Sub Merchant 1",
"address": {
"city": "City 1",
"postalCode": "101000",
"country": "US",
"street": "Street 1"
}
},
{
"subMerchantId": "SM002",
"name": "Sub Merchant 2",
"address": {
"city": "City 2",
"postalCode": "190000",
"country": "US",
"street": "Street 2"
}
}
]
}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. |
| Opcional | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| 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. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/registerPreAuth.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data amount=2000 \
--data userName=test_user \
--data password=test_user_password \
--data returnUrl=https://mybestmerchantreturnurl.com \
--data orderNumber=1255555555555 \
--data clientId=259753456 \
--data language=enEjemplo de respuesta
{
"orderId": "01492437-d2fb-77fa-8db7-9e2900a7d8c0",
"formUrl": "https://dev.bpcbt.com/payment/merchants/pay/payment_en.html?mdOrder=01492437-d2fb-77fa-8db7-9e2900a7d8c0"
}Pagos directos
Pago del pedido
Para el pago de un pedido previamente registrado se utiliza la solicitud https://dev.bpcbt.com/payment/rest/paymentorder.do.
La solicitud se utiliza en modo MPI/3DS Server interno, para esto no se requiere la presencia de permisos adicionales y/o certificaciones.
La solicitud se utiliza en modo MPI/3DS Server externo si tiene un contrato con un sistema de pago internacional o un certificado que permite realizar autenticación 3DS de forma independiente.
Esto significa que puede utilizar su propio MPI/3DS Server para la autenticación del cliente utilizando la tecnología 3D Secure. Información adicional sobre el pago con MPI/3DS Server propio está disponible aquí.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Pago del pedido (MPI/3DS Server interno)
El pago del pedido ocurre con la transmisión de datos de pago de tarjeta, así como con el uso de la tecnología de autenticación 3DS (la aplicación de autenticación se regula por configuraciones reguladas por el servicio de soporte).
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. Si para la autenticación durante el registro se utiliza un token público (parámetro token) en lugar de login y contraseña, no es necesario transmitir la contraseña. |
| Obligatorio | MDORDER |
String [1..36] | Número de pedido en la pasarela de pago. |
| Obligatorio | $PAN |
Integer [1..19] | Número de tarjeta de pago. Obligatorio, si no se transmite seToken. |
| Obligatorio | $CVC |
String [3] | Código CVC/CVV2 en el reverso de la tarjeta. Obligatorio, si no se transmite seToken. Se permiten solo dígitos. |
| Obligatorio | YYYY |
Integer [4] | Año de vencimiento de la tarjeta de pago. Si seToken no se transmite, es obligatorio transmitir $EXPIRY, o YYYY y MM. |
| Obligatorio | MM |
Integer [2] | Mes de vencimiento de la tarjeta de pago. Si seToken no se transmite, es obligatorio transmitir $EXPIRY, o YYYY y MM. |
| Condición | $EXPIRY |
Integer [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. Redefine los parámetros YYYY y MM. Si seToken no se transmite, es obligatorio transmitir $EXPIRY o YYYY y MM. |
| Condición | seToken |
String | Datos cifrados de la tarjeta que reemplazan los parámetros $PAN, $CVC y $EXPIRY (o YYYY,MM). Obligatorio si se utiliza en lugar de los datos de la tarjeta.Parámetros obligatorios para la cadena seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Para más detalles sobre la generación de seToken ver aquí. Si seToken contiene datos cifrados sobre el enlace (bindingId), para el pago se debe utilizar la solicitud paymentOrderBinding.do. |
| Obligatorio | TEXT |
String [1..512] | Nombre del portador de la tarjeta. |
| 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. |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Opcional | bindingNotNeeded |
Boolean | Valores permitidos:
|
| Opcional | jsonParams |
Object | Campos de información adicional para almacenamiento posterior, se transmiten de la siguiente forma: jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}.Pueden ser transmitidos al Centro de Procesamiento, para procesamiento posterior (se requiere configuración adicional - contacte con soporte). Si utiliza un MPI/3DS Server externo, la pasarela de pago espera que cada solicitud paymentOrder incluya una serie de parámetros adicionales, tales como eci, xid, cavv y otros. Información más detallada aquí.Para iniciar la autenticación 3RI, puede ser necesario que transmita una serie de parámetros adicionales (ver autenticación 3RI). Algunos atributos predefinidos de jsonParams:
|
| Opcional | threeDSSDK |
Boolean | Valores posibles: true o false Bandera que indica que el pago proviene del 3DS SDK. |
| 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 | mvv |
String [1..10] | Confirmación del comerciante de Mastercard para transacciones tokenizadas. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte con soporte técnico). |
| Opcional | paymentFacilitator |
Object | Bloque con información sobre el facilitador de pagos, es decir, sobre el comerciante que permite a múltiples subcomerciantes aceptar pagos bajo su cuenta. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte al soporte técnico). Ver parámetros anidados. |
| Condición | email |
String [1..40] | Correo electrónico para mostrar en la página de pago. Si las notificaciones del cliente están configuradas 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. |
| Opcional | 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. |
| 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 previo. 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 | tii |
String | Identificador del iniciador de la transacción. Parámetro que indica qué tipo de operación realizará el iniciador (Cliente o Comerciante). Valores posibles |
| Opcional | externalScaExemptionIndicator |
String | Tipo de excepción SCA (Strong Customer Authentication). Si se especifica este parámetro, la transacción será procesada dependiendo de sus configuraciones en la pasarela de pago: ya sea 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 pago. |
| Opcional | clientBrowserInfo |
Object | Bloque de datos sobre el navegador del cliente, que se envía al ACS durante la autenticación 3DS. Este bloque se puede transmitir solo si está habilitada una configuración especial (contacte al equipo de soporte). Ver parámetros anidados. |
| 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. |
| Condición | originalPaymentDate |
String | Fecha de la transacción iniciadora. Valor en formato Unix timestamp en milisegundos. Se transmite si el valor del parámetro tii = R,U o F. |
| Opcional | acsInIFrame |
Boolean | Bandera que muestra que para la URL final se devolverá la versión iFrame. Valores posibles true or false. Para conectar esta funcionalidad, póngase en contacto con el servicio de soporte. |
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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. |
Valores posibles de tii (Lea más sobre los tipos de datos de pago guardados soportados por la pasarela de pagos aquí).
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Guardado de datos de tarjeta después de transacción | Nota |
|---|---|---|---|---|---|---|
| Vacío | Normal | Comprador | Ingresado por comprador | No | Transacción de comercio electrónico sin guardado de datos de pago guardados. | |
| CI | Iniciador - Normal (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| F | Pago no programado (CIT) | Subsecuente | Comprador | Cliente selecciona tarjeta en lugar de ingreso manual | No | Transacción de comercio electrónico, usando datos de pago guardados normales previamente guardados. |
| U | Pago no programado (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Transacción de comercio electrónico, usando datos de pago guardados normales previamente guardados. Se usa solo para pagos de una etapa. |
| RI | Iniciador - Recurrentes (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| R | Pago recurrente (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Operación recurrente, usando datos de pago guardados guardados. Se usa solo para pagos de una etapa. |
| II | Iniciador - Cuotas (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| I | Pago a plazos (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Operación a plazos, usando datos de pago guardados guardados. Se usa solo para pagos de una etapa. |
A continuación se presentan los parámetros del bloque clientBrowserInfo (datos sobre el navegador del cliente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | userAgent |
String [1..2048] | Agente del navegador. |
| Opcional | OS |
String | Sistema operativo. |
| Opcional | OSVersion |
String | Versión del sistema operativo. |
| Opcional | browserAcceptHeader |
String [1..2048] | Cabecera Accept, que informa al servidor qué formatos (o tipos MIME) soporta el navegador. |
| Opcional | browserIpAddress |
String [1..45] | Dirección IP del navegador. |
| Opcional | browserLanguage |
String [1..8] | Idioma del navegador. |
| Opcional | browserTimeZone |
String | Zona horaria del navegador. |
| Opcional | browserTimeZoneOffset |
String [1..5] | Desplazamiento de zona horaria en minutos entre la hora local del usuario y UTC. |
| Opcional | colorDepth |
String [1..2] | Profundidad de color de la pantalla, en bits. |
| Opcional | fingerprint |
String | Huella digital del navegador - identificador digital único del navegador. |
| Opcional | isMobile |
Boolean | Valores posibles: true o false. Bandera que indica que se utiliza un dispositivo móvil. |
| Opcional | javaEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para java está habilitado en el navegador. |
| Opcional | javascriptEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para javascript está habilitado en el navegador. |
| Opcional | plugins |
String | Lista de plugins utilizados en el navegador, separados por comas. |
| Opcional | screenHeight |
Integer [1..6] | Altura de la pantalla en píxeles. |
| Opcional | screenWidth |
Integer [1..6] | Ancho de la pantalla en píxeles. |
| Opcional | screenPrint |
String | Datos sobre los parámetros de impresión del navegador, incluyendo resolución, profundidad de color, densidad de píxeles. |
Ejemplo del bloque clientBrowserInfo:
"clientBrowserInfo":
{
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
"fingerprint":850891523,
"OS":"Windows",
"OSVersion":"10",
"isMobile":false,
"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
"colorDepth":24,
"screenHeight":"864",
"screenWidth":"1536",
"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
"javaEnabled":false,
"javascriptEnabled":true,
"browserLanguage":"it-IT",
"browserTimeZone":"Europe/Rome",
"browserTimeZoneOffset":-120,
"browserAcceptHeader":"gzip",
"browserIpAddress":"x.x.x.x"
}Descripción de los parámetros del objeto paymentFacilitator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | pfId |
String [1..11] | Identificador del facilitador de pagos. |
| Obligatorio | name |
String [1..40] | Nombre del facilitador de pago. |
| Opcional | isoId |
String [1..11] | Identificador ISO. |
| Obligatorio | subMerchants |
Array of objects | Matriz de objetos con información adicional sobre los subcomerciantes. Ver parámetros anidados a continuación. |
Parámetros del elemento de la matriz subMerchants:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | subMerchantId |
String [1..20] | Identificador del subcomerciante. |
| Obligatorio | name |
String [1..40] | Nombre del subcomerciante. |
| Obligatorio | address |
Object | Bloque con información sobre la dirección del subcomerciante. Ver parámetros anidados a continuación. |
Parámetros del objeto address:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | city |
String [1..50] | Ciudad del subcomerciante. |
| Obligatorio | postalCode |
String [1..16] | Código postal del subcomerciante. |
| Obligatorio | country |
Integer [2] | Código de país del subcomerciante en formato ISO 3166-1. |
| Opcional | street |
String [1..40] | Calle del subcomerciante. |
Ejemplo del objeto paymentFacilitator:
"paymentFacilitator" :{
"pfId": "PF123456",
"name": "Payment Facilitator Name",
"isoId": "ISO789",
"subMerchants": [
{
"subMerchantId": "SM001",
"name": "Sub Merchant 1",
"address": {
"city": "City 1",
"postalCode": "101000",
"country": "US",
"street": "Street 1"
}
},
{
"subMerchantId": "SM002",
"name": "Sub Merchant 2",
"address": {
"city": "City 2",
"postalCode": "190000",
"country": "US",
"street": "Street 2"
}
}
]
}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 | En caso de respuesta exitosa. Resultado del intento de pago. A continuación se presentan los posibles valores.
|
| 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 | 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. |
| 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 | 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. |
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). |
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 muestran 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 |
|---|---|---|---|
| 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. |
Ejemplos
Ejemplo de solicitud
Ejemplo de primera solicitud:
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/paymentorder.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data MDORDER=64d3b8c2-5d87-7d92-bd20-d8db011b4f5b \
--data '$PAN=4000001111111118' \
--data '$CVC=123' \
--data YYYY=2030 \
--data MM=12 \
--data 'TEXT=TEST CARDHOLDER' \
--data language=en
--data 'jsonParams={"param_1_name":"param_1_value","param_2_name":"param_2_value"}'Ejemplo de segunda solicitud:
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/paymentorder.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data MDORDER=64d3b8c2-5d87-7d92-bd20-d8db011b4f5b \
--data '$PAN=4000001111111118' \
--data '$CVC=123' \
--data YYYY=2030 \
--data MM=12 \
--data 'TEXT=TEST CARDHOLDER' \
--data language=en \
--data threeDSServerTransID=5802746e-3393-40c3-929a-dc966ebf08c6Ejemplos de respuesta
Ejemplo de respuesta a la primera solicitud:
{
"errorCode": 0,
"is3DSVer2": true,
"threeDSServerTransId": "5802746e-3393-40c3-929a-dc966ebf08c6",
"threeDSMethodURL": "https://example.com/acs2/acs/3dsMethod",
"threeDSMethodURLServer": "example.com/3dsserver/api/v1/client/gather?threeDSServerTransID=5802746e-3393-40c3-929a-dc966ebf08c6",
"threeDSMethodDataPacked": "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9hY3F1aXJlci5jb20vM2Rzc2VydmVyL2FwaS92MS9hY3Mvbm90aWZpY2F0aW9uP3RocmVlRFNTZXJ2ZXJUcmFuc0lEPTNhZmMxNjhhLTk0YjQtNGViMy04ZTJlLTgwZjZjMTg2NjY5ZCIsInRocmVlRFNTZXJ2ZXJUcmFuc0lEIjoiM2FmYzE2OGEtOTRiNC00ZWIzLThlMmUtODBmNmMxODY2NjlkIn0="
}Ejemplo de respuesta a la segunda solicitud:
{
"info": "Your order is proceeded, redirecting...",
"errorCode": 0,
"acsUrl": "https://example.com/acs2/acs/creq",
"is3DSVer2": true,
"packedCReq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjU4MDI3NDZlLTMzOTMtNDBjMy05MjlhLWRjOTY2ZWJmMDhjNiIsIm1lc3NhZ2VUeXBlIjoiQ1JlcSIsIm1lc3NhZ2VWZXJzaW9uIjoiMi4xLjAiLCJhY3NUcmFuc0lEIjoiODFmZTU1ODUtZmZhOS00Y2NkLTljMjAtY2QzYWFiZDQwNTllIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0"
}Pago de pedido (en modo MPI/3DS Server externo)
Para usar la solicitud paymenOrder.do en modo MPI/3DS Server externo necesita realizar la autenticación 3DS usando su propio servidor MPI/3DS.
También necesita un permiso adicional, asignado por el servicio de soporte.
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | MDORDER |
String [1..36] | Número de pedido en la pasarela de pago. |
| Condición | $PAN |
Integer [1..19] | Número de tarjeta de pago. Obligatorio, si no se transmite seToken. |
| Condición | $CVC |
String [3] | Código CVC/CVV2 en el reverso de la tarjeta. Obligatorio, si no se transmite seToken. Se permiten solo dígitos. |
| Condición | YYYY |
Integer [4] | Año de vencimiento de la tarjeta de pago. Si seToken no se transmite, es obligatorio transmitir $EXPIRY, o YYYY y MM. |
| Condición | MM |
Integer [2] | Mes de vencimiento de la tarjeta de pago. Si seToken no se transmite, es obligatorio transmitir $EXPIRY, o YYYY y MM. |
| Condición | $EXPIRY |
Integer [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. Redefine los parámetros YYYY y MM. Si seToken no se transmite, es obligatorio transmitir $EXPIRY o YYYY y MM. |
| Condición | seToken |
String | Datos cifrados de la tarjeta que reemplazan los parámetros $PAN, $CVC y $EXPIRY (o YYYY,MM). Obligatorio si se utiliza en lugar de los datos de la tarjeta.Parámetros obligatorios para la cadena seToken: timestamp, UUID, PAN, EXPDATE, MDORDER. Para más detalles sobre la generación de seToken ver aquí. Si seToken contiene datos cifrados sobre el enlace (bindingId), para el pago se debe utilizar la solicitud paymentOrderBinding.do. |
| Obligatorio | TEXT |
String [1..512] | Nombre del portador de la tarjeta. |
| 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. |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Opcional | bindingNotNeeded |
Boolean | Valores permitidos:
|
| Opcional | jsonParams |
Object | Campos de información adicional para almacenamiento posterior, se transmiten de la siguiente forma: jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}.Pueden ser transmitidos al Centro de Procesamiento, para procesamiento posterior (se requiere configuración adicional - contacte con soporte). Si utiliza un MPI/3DS Server externo, la pasarela de pago espera que cada solicitud paymentOrder incluya una serie de parámetros adicionales, tales como eci, xid, cavv y otros. Información más detallada aquí.Para iniciar la autenticación 3RI, puede ser necesario que transmita una serie de parámetros adicionales (ver autenticación 3RI). Algunos atributos predefinidos de jsonParams:
|
| Opcional | tii |
String | Identificador del iniciador de la transacción. Parámetro que indica qué tipo de operación realizará el iniciador (Cliente o Comerciante). Valores posibles |
| 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). |
| Condición | email |
String [1..40] | Correo electrónico para mostrar en la página de pago. Si las notificaciones del cliente están configuradas 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. |
| 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 | mvv |
String [1..10] | Confirmación del comerciante de Mastercard para transacciones tokenizadas. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte con soporte técnico). |
| Opcional | paymentFacilitator |
Object | Bloque con información sobre el facilitador de pago, es decir, sobre el comerciante que permite a varios submercantes aceptar pagos bajo su cuenta. Para pasar este parámetro debe estar habilitada una configuración especial (contacte con el soporte técnico). Ver parámetros anidados. |
| Opcional | 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. |
| Opcional | shippingPayerData |
Object | Objeto que contiene datos sobre la entrega al cliente. Este parámetro se utiliza para la autenticación 3DS posterior del cliente. Ver parámetros anidados. |
| Opcional | preOrderPayerData |
Object | Objeto que contiene datos del pedido preliminar. Este parámetro se utiliza para la autenticación 3DS posterior 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 autenticación 3DS posterior 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:
|
| Opcional | clientBrowserInfo |
Object | Bloque de datos sobre el navegador del cliente, que se envía al ACS durante la autenticación 3DS. Este bloque se puede transmitir solo si está habilitada la configuración especial (comuníquese con el equipo de soporte). Ver parámetros anidados. |
| Opcional | acsInIFrame |
Boolean | Bandera que muestra que para la URL final se devolverá la versión iFrame. Valores posibles true or false. Para conectar esta funcionalidad, póngase en contacto con el servicio de soporte. |
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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 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. |
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. |
Valores posibles de tii (Lea más sobre los tipos de datos de pago guardados soportados por la pasarela de pagos aquí).
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Guardado de datos de tarjeta después de transacción | Nota |
|---|---|---|---|---|---|---|
| Vacío | Normal | Comprador | Ingresado por comprador | No | Transacción de comercio electrónico sin guardado de datos de pago guardados. | |
| CI | Iniciador - Normal (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| F | Pago no programado (CIT) | Subsecuente | Comprador | Cliente selecciona tarjeta en lugar de ingreso manual | No | Transacción de comercio electrónico, usando datos de pago guardados normales previamente guardados. |
| U | Pago no programado (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Transacción de comercio electrónico, usando datos de pago guardados normales previamente guardados. Se usa solo para pagos de una etapa. |
| RI | Iniciador - Recurrentes (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| R | Pago recurrente (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Operación recurrente, usando datos de pago guardados guardados. Se usa solo para pagos de una etapa. |
| II | Iniciador - Cuotas (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| I | Pago a plazos (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Operación a plazos, usando datos de pago guardados guardados. Se usa solo para pagos de una etapa. |
A continuación se presentan los parámetros del bloque clientBrowserInfo (datos sobre el navegador del cliente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | userAgent |
String [1..2048] | Agente del navegador. |
| Opcional | OS |
String | Sistema operativo. |
| Opcional | OSVersion |
String | Versión del sistema operativo. |
| Opcional | browserAcceptHeader |
String [1..2048] | Cabecera Accept, que informa al servidor qué formatos (o tipos MIME) soporta el navegador. |
| Opcional | browserIpAddress |
String [1..45] | Dirección IP del navegador. |
| Opcional | browserLanguage |
String [1..8] | Idioma del navegador. |
| Opcional | browserTimeZone |
String | Zona horaria del navegador. |
| Opcional | browserTimeZoneOffset |
String [1..5] | Desplazamiento de zona horaria en minutos entre la hora local del usuario y UTC. |
| Opcional | colorDepth |
String [1..2] | Profundidad de color de la pantalla, en bits. |
| Opcional | fingerprint |
String | Huella digital del navegador - identificador digital único del navegador. |
| Opcional | isMobile |
Boolean | Valores posibles: true o false. Bandera que indica que se utiliza un dispositivo móvil. |
| Opcional | javaEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para java está habilitado en el navegador. |
| Opcional | javascriptEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para javascript está habilitado en el navegador. |
| Opcional | plugins |
String | Lista de plugins utilizados en el navegador, separados por comas. |
| Opcional | screenHeight |
Integer [1..6] | Altura de la pantalla en píxeles. |
| Opcional | screenWidth |
Integer [1..6] | Ancho de la pantalla en píxeles. |
| Opcional | screenPrint |
String | Datos sobre los parámetros de impresión del navegador, incluyendo resolución, profundidad de color, densidad de píxeles. |
Ejemplo del bloque clientBrowserInfo:
"clientBrowserInfo":
{
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
"fingerprint":850891523,
"OS":"Windows",
"OSVersion":"10",
"isMobile":false,
"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
"colorDepth":24,
"screenHeight":"864",
"screenWidth":"1536",
"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
"javaEnabled":false,
"javascriptEnabled":true,
"browserLanguage":"it-IT",
"browserTimeZone":"Europe/Rome",
"browserTimeZoneOffset":-120,
"browserAcceptHeader":"gzip",
"browserIpAddress":"x.x.x.x"
}Descripción de los parámetros del objeto paymentFacilitator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | pfId |
String [1..11] | Identificador del facilitador de pagos. |
| Obligatorio | name |
String [1..40] | Nombre del facilitador de pago. |
| Opcional | isoId |
String [1..11] | Identificador ISO. |
| Obligatorio | subMerchants |
Array of objects | Matriz de objetos con información adicional sobre los subcomerciantes. Ver parámetros anidados a continuación. |
Parámetros del elemento de la matriz subMerchants:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | subMerchantId |
String [1..20] | Identificador del subcomerciante. |
| Obligatorio | name |
String [1..40] | Nombre del subcomerciante. |
| Obligatorio | address |
Object | Bloque con información sobre la dirección del subcomerciante. Ver parámetros anidados a continuación. |
Parámetros del objeto address:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | city |
String [1..50] | Ciudad del subcomerciante. |
| Obligatorio | postalCode |
String [1..16] | Código postal del subcomerciante. |
| Obligatorio | country |
Integer [2] | Código de país del subcomerciante en formato ISO 3166-1. |
| Opcional | street |
String [1..40] | Calle del subcomerciante. |
Ejemplo del objeto paymentFacilitator:
"paymentFacilitator" :{
"pfId": "PF123456",
"name": "Payment Facilitator Name",
"isoId": "ISO789",
"subMerchants": [
{
"subMerchantId": "SM001",
"name": "Sub Merchant 1",
"address": {
"city": "City 1",
"postalCode": "101000",
"country": "US",
"street": "Street 1"
}
},
{
"subMerchantId": "SM002",
"name": "Sub Merchant 2",
"address": {
"city": "City 2",
"postalCode": "190000",
"country": "US",
"street": "Street 2"
}
}
]
}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 | En caso de respuesta exitosa. Resultado del intento de pago. A continuación se presentan los posibles valores.
|
Ejemplos
Ejemplo de solicitud
curl --request POST \\
--url https://dev.bpcbt.com/payment/rest/paymentorder.do \\
--header 'content-type: application/x-www-form-urlencoded' \\
--data userName=test_user \\
--data password=test_user_password \\
--data MDORDER=0140dda0-71ed-7706-a61f-36bd00a7d8c0 \\
--data '$PAN=4000001111111118' \\
--data '$CVC=123' \\
--data YYYY=2030 \\
--data MM=12 \\
--data 'TEXT=TEST CARDHOLDER' \\
--data language=en \\
--data 'jsonParams={"eci": "02", "cavv": "AkZO5XQAA0rhBxoaufa+MAABAAA=", "xid": "5010857f-8d3f-74e1-9c5a-54a000cc4110", "threeDSProtocolVersion": "2.2.0", "threeDsType": "5"}'Ejemplo de respuesta
{
"redirect": "https://dev.bpcbt.com/payment/merchants/temp/finish.html?orderId=01493844-d4d3-703f-9f7e-a73900a7d8c0",
"info": "Your order is proceeded, redirecting...",
"errorCode": 0
}Pago del pedido con características de transacción Industry Practice
Para el pago del pedido con características de transacción Industry Practice se utiliza la solicitud https://dev.bpcbt.com/payment/industryPractice/paymentOrder.do.
Al ejecutar la solicitud es necesario utilizar la cabecera:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | userName |
String [1..30] | Login de la cuenta API del vendedor. Si se utiliza un token público (parámetro token) para la autenticación durante el registro en lugar del login y la contraseña, no es necesario transmitir la contraseña. |
| Condición | password |
String [1..30] | Contraseña de la cuenta API del vendedor. Si para la autenticación durante el registro se utiliza un token público (parámetro token) en lugar de login y contraseña, no es necesario transmitir la contraseña. |
| Condición | token |
String [1..256] | Valor utilizado para la autenticación del vendedor al enviar solicitudes al gateway de pago. Si transmites este parámetro, no transmitas userName y password. |
| Obligatorio | originalMdOrder |
String [1..36] | Número del pedido original en la Pasarela de Pagos, para el cual se ejecuta el pago Industry Practice. |
| Obligatorio | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Condición | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks) del pago original para las operaciones Incremental, Delayed Charges, No show. El parámetro es obligatorio para las operaciones Incremental, Delayed Charges, No show. El parámetro no debe especificarse para Resubmission y Reauthorization. |
| No obligatorio | jsonParams |
Object | Etiqueta adicional con atributos para transmitir parámetros adicionales. Ver abajo. El parámetro antiguo params es un alias de este parámetro, es decir, las consultas con params también funcionan. |
| Obligatorio | tii |
String | Identificador del iniciador (para) transacción. Parámetro que indica qué tipo de operación realizará el iniciador (Cliente o Comerciante). |
| No obligatorio | features |
String | Funciones del pedido. Para especificar varias funciones, use este parámetro varias veces en una sola solicitud. A continuación se muestran los valores posibles.
|
Valores posibles de tii.
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Nota |
|---|---|---|---|---|---|
| IPI | Industry Practice Incremental (MIT) | Subsecuente | Vendedor | No introducidos, cargados del registro transaccional correspondiente o vinculación de pasarela de pago | Transacción de aumento del monto de pago en el marco de pedido ya pagado. |
| IPS | Industry Practice Resubmission (MIT) | Subsecuente | Vendedor | No introducidos, cargados del registro transaccional correspondiente o vinculación de pasarela de pago | Transacción de intento de pago repetido, cuando el pago original terminó con error. |
| IPD | Industry Practice Delayed Charges (MIT) | Subsecuente | Vendedor | No introducidos, cargados del registro transaccional correspondiente o vinculación de pasarela de pago | Funcionalidad de cargos diferidos. |
| IPA | Industry Practice Reauthorization (MIT) | Subsecuente | Vendedor | No introducidos, cargados del registro transaccional correspondiente o vinculación de pasarela de pago | Intento repetido de autorización, si la finalización o ejecución del pedido/servicio original sale del marco del plazo de vigencia de autorización establecido por Visa/MC. |
| IPN | Industry Practice No Show (MIT) | Subsecuente | Vendedor | No introducidos, cargados del registro transaccional correspondiente o vinculación de pasarela de pago | Se ejecuta por Comerciantes para facturar al Cliente multas por no presentarse en reservas de hoteles y automóviles Car Sharing. |
El bloque jsonParams contiene campos de información adicional para almacenamiento posterior. Para transmitir N parámetros, en la solicitud deben encontrarse N etiquetas jsonParams, donde el atributo name contiene el nombre, y el atributo value contiene el valor (ver tabla a continuación).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | name |
String [1..255] | Nombre del parámetro adicional. |
| Obligatorio | value |
String [1..1024] | Valor del parámetro adicional - hasta 1024 caracteres. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| No obligatorio | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| No 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. |
| No obligatorio | mdOrder |
String [1..36] | Número del pedido en la pasarela de pagos con el pago Industry Practice ejecutado. |
| No obligatorio | actionCode |
String | Código de respuesta del procesamiento del banco. Contiene un valor numérico. Ver la lista de códigos de respuesta aquí. |
| No obligatorio | approvalCode |
String [6] | Código de autorización del sistema de pagos internacionales. Este campo tiene una longitud fija (seis caracteres) y puede contener dígitos y letras latinas. |
| No obligatorio | rrn |
Integer [1..12] | Reference Retrieval Number - identificador de transacción asignado por el banco adquirente. |
Ejemplos
Ejemplo de solicitud
curl --request POST \\
--url https://dev.bpcbt.com/payment/industryPractice/paymentOrder.do \\
--header 'content-type: application/x-www-form-urlencoded' \\
--data '{
"originalMdOrder":"f252eee4-5598-728a-a023-af6e09078dd0",
"orderNumber":"testOrderNumber1",
"tii":"IPI",
"amount":"10",
"username":"test_user",
"password":"test_user_password"
}'Ejemplo de respuesta - Pago exitoso del pedido con características de transacción Industry Practice
{
"errorCode": "0",
"errorMessage": "Successful",
"mdOrder": "d88680c4-54e9-7115-80ae-3cc709017350",
"actionCode": "0",
"approvalCode": "000000",
"rrn": "111111111113"
}Ejemplo de respuesta - Pago no exitoso del pedido con características de transacción Industry Practice (el procesamiento devolvió error)
{
"errorCode": "5",
"errorMessage": "Unsuccessful",
"mdOrder": "d88680c4-54e9-7115-80ae-3cc709017350",
"actionCode": "116",
"approvalCode": "000000",
"rrn": "111111111113"
}Pago no exitoso del pedido con características de transacción Industry Practice (por ejemplo, error de validación)
{
"errorCode": "5",
"errorMessage": "Operation is not allowed for original order"
}Pago instantáneo
Solicitud utilizada para registrar un pedido y realizar el pago simultáneamente – https://dev.bpcbt.com/payment/rest/instantPayment.do.
Al ejecutar la solicitud es necesario usar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | userName |
String [1..30] | Login de la cuenta API del vendedor. Si se utiliza un token público (parámetro token) para la autenticación durante el registro en lugar del login y la contraseña, no es necesario transmitir la contraseña. |
| Condición | password |
String [1..30] | Contraseña de la cuenta API del vendedor. Si para la autenticación durante el registro se utiliza un token público (parámetro token) en lugar de login y contraseña, no es necesario transmitir la contraseña. |
| Condición | token |
String [1..256] | Valor utilizado para la autenticación del vendedor al enviar solicitudes al gateway de pago. Si transmites este parámetro, no transmitas userName y password. |
| Obligatorio | 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 | 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 | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Opcional | bindingNotNeeded |
Boolean | Valores admitidos:
|
| Condición | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante, debe ser único para cada comerciante registrado en la pasarela de pago. Si el número de pedido se genera en el lado de la pasarela de pago, este parámetro no es obligatorio de transmitir. |
| Opcional | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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 | 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 | preAuth |
Boolean | Parámetro que determina la necesidad de autorización previa (bloqueo de fondos en la cuenta del cliente antes de su débito). Están disponibles los siguientes valores:
|
| Opcional | pan |
String [1..19] | Número de tarjeta de pago (obligatorio, si bindinId no se transmite). El valor pan reemplaza el valor bindingId. |
| Opcional | cvc |
String [3] | La transmisión del parámetro se determina por el tipo de pago:
|
| Opcional | cardHolderName |
String [1..26] | Nombre del titular de la tarjeta en letras latinas. Este parámetro se transmite solo después del pago del pedido. |
| 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 | 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 | autocompletionDate |
String [19] | Fecha y hora de finalización automática del pago de dos etapas en el siguiente formato: 2025-12-29T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | autoReverseDate |
String [19] | Fecha y hora de cancelación automática del pago de dos etapas en el siguiente formato: 2025-06-23T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | expirationDate |
String [19] | 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. |
| Condición | seToken |
String [1..8192] | Datos cifrados de la tarjeta que reemplazan los parámetros $PAN, $CVC y $EXPIRY (o YYYY,MM). Obligatorio si se utiliza en lugar de los datos de la tarjeta. Parámetros obligatorios para la cadena seToken: timestamp, UUID, bindingId(o PAN,EXPDATE). Para más detalles sobre la generación de seToken ver aquí. |
| 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 | jsonParams |
Object | Campos de información adicional para almacenamiento posterior, se transmiten de la siguiente forma: jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}.Pueden ser transmitidos al Centro de Procesamiento, para procesamiento posterior (se requiere configuración adicional - contacte con soporte). Si utiliza un MPI/3DS Server externo, la pasarela de pago espera que cada solicitud paymentOrder incluya una serie de parámetros adicionales, tales como eci, xid, cavv y otros. Información más detallada aquí.Para iniciar la autenticación 3RI, puede ser necesario que transmita una serie de parámetros adicionales (ver autenticación 3RI). Algunos atributos predefinidos de jsonParams:
|
| Opcional | features |
String | Funciones del pedido. Para especificar varias funciones, use este parámetro varias veces en una sola solicitud. A continuación se muestran los valores posibles.
|
| Opcional | orderBundle |
Object | Objeto que contiene la cesta de productos. La descripción de los elementos anidados se proporciona a continuación. |
| 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 | 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. |
| 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 | threeDSSDK |
Boolean | Valores posibles: true o false Bandera que indica que el pago proviene del 3DS SDK. |
| 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). |
| Opcional | expiry |
Integer [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. Obligatorio, si no se han transmitido ni seToken, ni bindingId. |
| Condición | email |
String [1..40] | Correo electrónico para mostrar en la página de pago. Si las notificaciones del cliente están configuradas 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. |
| 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 | mvv |
String [1..10] | Confirmación del comerciante de Mastercard para transacciones tokenizadas. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte con soporte técnico). |
| Opcional | paymentFacilitator |
Object | Bloque con información sobre el facilitador de pago, es decir, sobre el comerciante que permite a múltiples subcomerciantes aceptar pagos bajo su cuenta. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte al soporte técnico). Ver parámetros anidados. |
| Opcional | tii |
String | Identificador del iniciador de la transacción. Parámetro que indica qué tipo de operación realizará el iniciador (Cliente o Comerciante). Valores posibles |
| 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. |
| Condición | originalPaymentDate |
String | Fecha de la transacción iniciadora. Valor en formato Unix timestamp en milisegundos. Se transmite si el valor del parámetro tii = R,U o F. |
| Opcional | externalScaExemptionIndicator |
String | Tipo de excepción SCA (Strong Customer Authentication). Si se especifica este parámetro, la transacción será procesada dependiendo de sus configuraciones en la pasarela de pago: ya sea 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 pago. |
| Opcional | 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 Pagos. Ver parámetros anidados. |
| 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:
|
Descripción de parámetros en el objeto orderBundle:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | orderCreationDate |
String [19] | Fecha de creación del pedido en formato YYYY-MM-DDTHH:MM:SS. |
| Opcional | customerDetails |
Object | Bloque que contiene los atributos del cliente. La descripción de los atributos de la etiqueta se proporciona a continuación. |
| Obligatorio | cartItems |
Object | Objeto que contiene atributos de productos en el carrito. La descripción de elementos anidados se proporciona a continuación. |
Descripción de parámetros en el objeto customerDetails:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | contact |
String [0..40] | Método de contacto preferido por el cliente. |
| Opcional | fullName |
String [1..100] | Nombres y apellidos del pagador. |
| Opcional | passport |
String [1..100] | Serie y número del pasaporte del pagador en el siguiente formato: 2222888888
|
| Opcional | deliveryInfo |
Object | Objeto que contiene los atributos de la dirección de entrega. La descripción de los elementos anidados se proporciona a continuación. |
Descripción de los parámetros en el objeto deliveryInfo:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | deliveryType |
String [1..20] | Método de entrega. |
| Obligatorio | country |
String [2] | Código de país de dos letras para la entrega. |
| Obligatorio | city |
String [0..40] | Ciudad de destino. |
| Obligatorio | postAddress |
String [1..255] | Dirección de entrega. |
Descripción de parámetros en el objeto cartItems:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | items |
Object | Elemento del array con atributos de la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
Descripción de parámetros en el objeto items:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | positionId |
Integer [1..12] | Identificador único de la posición del producto en el carrito. |
| Obligatorio | name |
String [1..255] | Denominación o descripción de la partida de mercancía en forma libre. |
| No obligatorio | itemDetails |
Object | Objeto con parámetros de descripción de la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
| Obligatorio | quantity |
Object | Elemento que describe la cantidad total de posiciones de mercancías de un positionId y sus unidades de medida. La descripción de los elementos anidados se presenta a continuación. |
| No obligatorio | itemAmount |
Integer [1..12] | Suma del costo de todas las posiciones de mercancías de un positionId en unidades mínimas de moneda. itemAmount es obligatorio para la transmisión, solo si no se transmitió el parámetro itemPrice. En caso contrario, la transmisión de itemAmount no es requerida. Si en la solicitud se transmiten ambos parámetros: itemPrice e itemAmount, entonces itemAmount debe ser igual a itemPrice * quantity, en caso contrario la solicitud finalizará con error. |
| No obligatorio | itemPrice |
Integer [1..18] | Suma del costo de la posición de mercancía de un positionId en dinero en unidades mínimas de moneda. |
| No obligatorio | depositedItemAmount |
String [1..18] | Importe del débito para un positionId en unidades mínimas de moneda (por ejemplo, en copecks). |
| No obligatorio | itemCurrency |
Integer [3] | Código de moneda ISO 4217. Si no se especifica, se considera igual a la moneda del pedido. |
| Obligatorio | itemCode |
String [1..100] | Número (identificador) de la posición de mercancía en el sistema de la tienda. |
Descripción de parámetros en el objeto itemDetails:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | itemDetailsParams |
Object | Parámetro que describe información adicional sobre la posición de mercancía. La descripción de los elementos anidados se presenta a continuación. |
Descripción de parámetros en el objeto itemDetailsParams:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | value |
String [1..2000] | Información adicional sobre la posición de mercancías. |
| Obligatorio | name |
String [1..255] | Denominación del parámetro de descripción de detalle de la posición de mercancía |
Descripción de los parámetros en el objeto quantity:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | value |
Number [1..18] | Cantidad de posiciones de mercancías de dicho positionId. Para indicar números fraccionarios utilice el punto decimal. Se permite un máximo de 3 dígitos después del punto. |
| Obligatorio | measure |
String [1..20] | Unidad de medida de la cantidad por posición. |
Valores posibles de tii (Lea más sobre los tipos de datos de pago guardados soportados por la pasarela de pagos aquí).
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Guardado de datos de tarjeta después de transacción | Nota |
|---|---|---|---|---|---|---|
| Vacío | Normal | Comprador | Ingresado por comprador | No | Transacción de comercio electrónico sin guardado de datos de pago guardados. | |
| CI | Iniciador - Normal (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| F | Pago no programado (CIT) | Subsecuente | Comprador | Cliente selecciona tarjeta en lugar de ingreso manual | No | Transacción de comercio electrónico, usando datos de pago guardados normales previamente guardados. |
| U | Pago no programado (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Transacción de comercio electrónico, usando datos de pago guardados normales previamente guardados. Se usa solo para pagos de una etapa. |
| RI | Iniciador - Recurrentes (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| R | Pago recurrente (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Operación recurrente, usando datos de pago guardados guardados. Se usa solo para pagos de una etapa. |
| II | Iniciador - Cuotas (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| I | Pago a plazos (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Operación a plazos, usando datos de pago guardados guardados. Se usa solo para pagos de una etapa. |
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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 presentan los parámetros del bloque clientBrowserInfo (datos sobre el navegador del cliente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | userAgent |
String [1..2048] | Agente del navegador. |
| Opcional | OS |
String | Sistema operativo. |
| Opcional | OSVersion |
String | Versión del sistema operativo. |
| Opcional | browserAcceptHeader |
String [1..2048] | Cabecera Accept, que informa al servidor qué formatos (o tipos MIME) soporta el navegador. |
| Opcional | browserIpAddress |
String [1..45] | Dirección IP del navegador. |
| Opcional | browserLanguage |
String [1..8] | Idioma del navegador. |
| Opcional | browserTimeZone |
String | Zona horaria del navegador. |
| Opcional | browserTimeZoneOffset |
String [1..5] | Desplazamiento de zona horaria en minutos entre la hora local del usuario y UTC. |
| Opcional | colorDepth |
String [1..2] | Profundidad de color de la pantalla, en bits. |
| Opcional | fingerprint |
String | Huella digital del navegador - identificador digital único del navegador. |
| Opcional | isMobile |
Boolean | Valores posibles: true o false. Bandera que indica que se utiliza un dispositivo móvil. |
| Opcional | javaEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para java está habilitado en el navegador. |
| Opcional | javascriptEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para javascript está habilitado en el navegador. |
| Opcional | plugins |
String | Lista de plugins utilizados en el navegador, separados por comas. |
| Opcional | screenHeight |
Integer [1..6] | Altura de la pantalla en píxeles. |
| Opcional | screenWidth |
Integer [1..6] | Ancho de la pantalla en píxeles. |
| Opcional | screenPrint |
String | Datos sobre los parámetros de impresión del navegador, incluyendo resolución, profundidad de color, densidad de píxeles. |
Ejemplo del bloque clientBrowserInfo:
"clientBrowserInfo":
{
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
"fingerprint":850891523,
"OS":"Windows",
"OSVersion":"10",
"isMobile":false,
"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
"colorDepth":24,
"screenHeight":"864",
"screenWidth":"1536",
"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
"javaEnabled":false,
"javascriptEnabled":true,
"browserLanguage":"it-IT",
"browserTimeZone":"Europe/Rome",
"browserTimeZoneOffset":-120,
"browserAcceptHeader":"gzip",
"browserIpAddress":"x.x.x.x"
}Descripción de los parámetros del objeto paymentFacilitator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | pfId |
String [1..11] | Identificador del facilitador de pagos. |
| Obligatorio | name |
String [1..40] | Nombre del facilitador de pago. |
| Opcional | isoId |
String [1..11] | Identificador ISO. |
| Obligatorio | subMerchants |
Array of objects | Matriz de objetos con información adicional sobre los subcomerciantes. Ver parámetros anidados a continuación. |
Parámetros del elemento de la matriz subMerchants:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | subMerchantId |
String [1..20] | Identificador del subcomerciante. |
| Obligatorio | name |
String [1..40] | Nombre del subcomerciante. |
| Obligatorio | address |
Object | Bloque con información sobre la dirección del subcomerciante. Ver parámetros anidados a continuación. |
Parámetros del objeto address:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | city |
String [1..50] | Ciudad del subcomerciante. |
| Obligatorio | postalCode |
String [1..16] | Código postal del subcomerciante. |
| Obligatorio | country |
Integer [2] | Código de país del subcomerciante en formato ISO 3166-1. |
| Opcional | street |
String [1..40] | Calle del subcomerciante. |
Ejemplo del objeto paymentFacilitator:
"paymentFacilitator" :{
"pfId": "PF123456",
"name": "Payment Facilitator Name",
"isoId": "ISO789",
"subMerchants": [
{
"subMerchantId": "SM001",
"name": "Sub Merchant 1",
"address": {
"city": "City 1",
"postalCode": "101000",
"country": "US",
"street": "Street 1"
}
},
{
"subMerchantId": "SM002",
"name": "Sub Merchant 2",
"address": {
"city": "City 2",
"postalCode": "190000",
"country": "US",
"street": "Street 2"
}
}
]
}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 | error |
String [1..512] | Mensaje de error (si se devolvió un error en la respuesta) en el idioma transmitido en la solicitud. |
| Opcional | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Opcional | info |
String | En caso de respuesta exitosa. Resultado del intento de pago. A continuación se presentan los posibles valores.
|
| 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 | 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. |
| 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 | 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 | orderStatus |
Object | Contiene parámetros de estado del pedido y se devuelve solo en el caso de que la pasarela de pagos reconozca todos los parámetros de la solicitud como correctos. Ver descripción abajo. |
Cuando es necesaria la autenticación utilizando el protocolo 3DS v2.0, los siguientes parámetros se recibirán en respuesta a la solicitud:
| 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). |
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). |
El bloque orderStatus contiene los siguientes elementos.
| 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 establece en el parámetro language de la solicitud. |
| Opcional | OrderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| 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 | expiration |
Integer [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. |
| Opcional | cardholderName |
String [1..26] | Nombre del titular de la tarjeta (si está disponible). |
| Opcional | approvedAmount |
Integer [0..12] | Suma en unidades mínimas de moneda (por ejemplo, en centavos), que fue bloqueada en la cuenta del comprador. Se utiliza solo en pagos de dos etapas. En caso de autorización parcial esta suma puede ser menor que la suma, solicitada durante el registro del pedido. |
| Opcional | depositAmount |
Integer [1..12] | Suma de débito en unidades mínimas de moneda (por ejemplo, en kopeks). En caso de autorización parcial esta suma puede ser menor que la suma solicitada durante el registro del pedido. |
| 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 | approvalCode |
String [6] | Código de autorización del sistema de pagos internacionales. Este campo tiene una longitud fija (seis caracteres) y puede contener dígitos y letras latinas. |
| Opcional | authCode |
Integer [6] | Parámetro obsoleto (no se utiliza). Su valor siempre es 2 independientemente del estado del pedido y del código de autorización del sistema de procesamiento. |
| Opcional | Pan |
String [1..19] | Número de tarjeta enmascarado que se utilizó para el pago. Se indica solo después del pago del pedido. Al pagar con Apple Pay se utiliza DPAN. Este es un número vinculado al dispositivo móvil del comprador y que realiza las funciones del número de tarjeta de pago en el sistema Apple Pay. |
| Opcional | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
| Opcional | Ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Opcional | originalActionCode |
String [1..15] | Código de respuesta recibido del procesamiento. Para habilitar la recepción de este campo, contacte al servicio de soporte técnico. |
| Opcional | rrn |
Integer [1..12] | Reference Retrieval Number - identificador de transacción asignado por el banco adquirente. |
| Opcional | paymentNetRefNum |
String [1..512] | Original Network Reference Number - este es un identificador que asigna la red de pagos (Mastercard, Visa, etc.) al realizar la primera transacción (por ejemplo, una compra). Al ejecutar una operación inversa (devolución, chargeback, pago repetido), este número:
|
| Opcional | tokenizationInfo |
Object | Bloque con parámetros para el servicio Tokenizer, que permite realizar tokenización de tarjetas mediante los servicios VTS (Visa Token Service) o MCS (Mastercard Checkout Solutions). Este bloque se devuelve si tuvo lugar un pago tokenizado. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque tokenizationInfo (datos sobre la tokenización de la tarjeta).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | tokenId |
String | Identificador único del token, generado por el servicio Tokenizer. |
| Obligatorio | tokenizationProvider |
String | Proveedor de servicios de tokenización. Valores permitidos: vts,mcs. |
| Obligatorio | panReference |
String | Referencia al PAN original (número de tarjeta). |
| Obligatorio | dpan |
String | PAN digital. |
| Obligatorio | tokenExpiry |
Integer | Fecha de vencimiento del token en formato YYYYMM. |
Ejemplo del bloque tokenizationInfo:
"tokenizationInfo": {
"tokenId": "8d577a01-55f7-45d4-add5-bfe0e8e6c571",
"tokenizationProvider": "vts",
"panReference": "f441492a-5b0a-453d-af97-e897e1148dc5",
"dpan": "5435982500356335",
"tokenExpiry": "202912"
}- Si
errorCode<> 0, la transacción debe ser rechazada. - Si
errorCode= 0 yOrderStatusno (1,2), la transacción debe ser rechazada. - Si
errorCode= 0 yOrderStatus= 1 o 2 yacsUrltiene valor null, la transacción se confirma. - Si
errorCode= 0 yOrderStatus= 0, yacsUrlno null, la transacción debe ser rechazada. - Si
errorCode= 0 yOrderStatus= 0 yacsUrlno null, debe iniciarse el escenario 3DS.
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/instantPayment.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data amount=100 \
--data currency=978 \
--data description=my_first_order \
--data orderNumber=1218637308 \
--data pan=4000001111111118 \
--data cvc=123 \
--data expiry=203012 \
--data cardHolderName="TEST CARDHOLDER" \
--data email="demo@example.com" \
--data phone="+449998887766" \
--data language=en \
--data returnUrl=https://mybestmerchantreturnurl.com \
--data failUrl=https://mybestmerchantreturnurl.comEjemplo de respuesta
{
"errorCode": "0",
"orderId": "eee72f6e-b980-79c5-92e8-6f4200b1eae0",
"info": "Your order is proceeded, redirecting...",
"redirect": "https://www.test.com/payment/merchants/gateway/finish.html?orderId=eee72f6e-b980-79c5-92e8-6f4200b1eae0&lang=en",
"orderStatus": {
"expiration": "202412",
"cardholderName": "TEST CARDHOLDER",
"depositAmount": 100,
"currency": "978",
"approvalCode": "123456",
"authCode": 2,
"originalActionCode": "S1",
"rrn": "311489272111",
"ErrorCode": "0",
"ErrorMessage": "Success",
"OrderStatus": 2,
"OrderNumber": "2011",
"Pan": "500000**1115",
"Amount": 100,
"Ip": "x.x.x.x"
}
}Pago MOTO
Para realizar pagos MOTO se utiliza el método https://dev.bpcbt.com/payment/rest/motoPayment.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | userName |
String [1..30] | Login de la cuenta API del vendedor. Si se utiliza un token público (parámetro token) para la autenticación durante el registro en lugar del login y la contraseña, no es necesario transmitir la contraseña. |
| Opcional | password |
String [1..30] | Contraseña de la cuenta API del vendedor. Si para la autenticación durante el registro se utiliza un token público (parámetro token) en lugar de login y contraseña, no es necesario transmitir la contraseña. |
| Opcional | token |
String [1..256] | Valor utilizado para la autenticación del vendedor al enviar solicitudes al gateway de pago. Si transmites este parámetro, no transmitas userName y password. |
| Opcional | 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). |
| 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. |
| 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 | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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 realizar un pago MOTO en nombre de otro comerciante, especifique en este parámetro el login de la cuenta API del vendedor. Se puede usar solo si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. |
| Opcional | postAddress |
String [1..255] | Dirección de entrega. |
| Opcional | jsonParams |
Object | Conjunto de atributos adicionales de forma arbitraria, estructura:jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}Pueden ser transmitidos al Centro de Procesamiento, para el procesamiento posterior (se requiere configuración adicional - póngase en contacto con el soporte). Algunos atributos predefinidos de jsonParams:
|
| Opcional | features |
String | Funciones del pedido. Para especificar varias funciones, use este parámetro varias veces en una sola solicitud. A continuación se muestran los valores posibles.
|
| 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. |
| Condición | email |
String [1..40] | Correo electrónico para mostrar en la página de pago. Si las notificaciones del cliente están configuradas 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. |
| Opcional | 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. |
| 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 previo. 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 | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Opcional | preAuth |
Boolean | Parámetro que determina la necesidad de autorización previa (bloqueo de fondos en la cuenta del cliente antes de su débito). Están disponibles los siguientes valores:
|
| Opcional | autocompletionDate |
String [19] | Fecha y hora de finalización automática del pago de dos etapas en el siguiente formato: 2025-12-29T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | autoReverseDate |
String [19] | Fecha y hora de cancelación automática del pago de dos etapas en el siguiente formato: 2025-06-23T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Obligatorio | pan |
String [1..19] | Número de tarjeta enmascarado que se utilizó para el pago. Este parámetro se especifica solo después del pago del pedido. Al pagar a través de Apple Pay como número de tarjeta se utiliza DPAN - este es el número vinculado al dispositivo móvil del cliente, que funciona como número de tarjeta de pago en el sistema Apple Pay. |
| Obligatorio | expiry |
Integer [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. Obligatorio, si no se han transmitido ni seToken, ni bindingId. |
| Obligatorio | cardholder |
String [1..26] | Nombre del titular de la tarjeta en letras latinas. Este parámetro se transmite solo después del pago del pedido. |
| Opcional | cvc |
String [3] | La transmisión del parámetro se determina por el tipo 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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | success |
Boolean | Parámetro principal que indica que la solicitud se procesó exitosamente. Están disponibles los siguientes valores:
Tenga en cuenta que el valor true significa que la solicitud fue procesada, no que el pedido fue pagado.Información más detallada sobre cómo saber si el pago fue exitoso o no, está disponible aquí. |
| 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. |
| Obligatorio | mdOrder |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Obligatorio | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Opcional | userMessage |
String [1..512] | Mensaje al usuario con descripción del código de resultado. |
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). |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/motoPayment.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data amount=2000 \
--data currency=978 \
--data userName=test_user \
--data password=test_user_password \
--data returnUrl=https://mybestmerchantreturnurl.com \
--data description=my_first_order \
--data pan=4000001111111118 \
--data expiry=203012 \
--data cvc=123 \
--data cardholder="TEST CARDHOLDER" \
--data language=enEjemplo de respuesta - pago exitoso
{
"errorCode":"0",
"success":true,
"mdOrder":"088433e9-e34d-769e-9366-696200a7d8c0",
"orderNumber":"62001"
}Redirección a ACS (simplificada)
Si se requiere 3-D Secure, entonces después de recibir la respuesta a la solicitud de pago el cliente debe ser redirigido a ACS. En este caso la respuesta a la solicitud de pago contiene el parámetro acsUrl, que se utilizará para la redirección.
La solicitud https://dev.bpcbt.com/payment/acsRedirect.do?orderId={orderId} permite redirigir al cliente a la página de autenticación ACS de manera simplificada - simplemente usando el parámetro orderId, obtenido después del registro del pedido.
También es posible la redirección del cliente a ACS mediante solicitud POST (redirección normal). La descripción de este método está disponible aquí.
Sin ninguna otra acción requerida del cliente, la pasarela de pagos lo redirige a la página ACS, donde el cliente se autentica.
Luego, dependiendo del resultado de la autenticación, el cliente es redirigido a la siguiente URL:
- si la autenticación fue exitosa -
returnUrlcon el parámetroorderIdañadido; - si la autenticación falló -
failUrl(oreturnUrl, sifailUrlno fue enviado) con el parámetroorderIDañadido.
Para redirigir al cliente a ACS, utilice la siguiente URL:
https://dev.bpcbt.com/payment/acsRedirect.do?orderId={Número de pedido en la pasarela de pagos}
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
Parámetros de respuesta
Ejemplo
Ejemplo de solicitud
curl -X GET https://dev.bpcbt.com/payment/acsRedirect.do?orderId=85eb9a84-2a47-7cca-b0ae-662c000016d1
Ejemplo de URL de redirección
https://mybestmerchantreturnurl.com/?orderId=85eb9a84-2a47-7cca-b0ae-662c000016d1
Billeteras
Registro de pedido Apple Pay
Para el registro y pago del pedido se utiliza el método https://dev.bpcbt.com/payment/applepay/payment.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | merchant |
String [1..255] | Para registrar y pagar el pedido en nombre de otro comerciante, indique su login (para la cuenta API) en este parámetro. Se puede usar solo si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. |
| Obligatorio | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Opcional | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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 | additionalParameters |
Object | Parámetros adicionales del pedido, que se almacenan en el panel personal del vendedor para su posterior visualización. Cada nuevo par de nombre de parámetro y su valor debe estar separado por una coma. A continuación se muestra un ejemplo de uso.{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"} Al crear una vinculación en esta etiqueta pueden transmitirse parámetros que definen el tipo de vinculación que se crea. Ver lista de parámetros. |
| Opcional | preAuth |
Boolean | Parámetro que determina la necesidad de autorización previa (bloqueo de fondos en la cuenta del cliente antes de su débito). Están disponibles los siguientes valores:
|
| Opcional | autocompletionDate |
String [19] | Fecha y hora de finalización automática del pago de dos etapas en el siguiente formato: 2025-12-29T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | autoReverseDate |
String [19] | Fecha y hora de cancelación automática del pago de dos etapas en el siguiente formato: 2025-06-23T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Obligatorio | paymentToken |
String [1..8192] | El parámetro paymentToken debe contener el valor descifrado y codificado en Base64 de la propiedad paymentData, obtenido del objeto PKPaymentToken Object del sistema Apple Pay (para más detalles ver documentación Apple Pay). De esta manera, para realizar una solicitud de pago a la pasarela de pagos, el vendedor debe:
|
| Opcional | tii |
String | Identificador del iniciador de la transacción. Parámetro que indica qué tipo de operación realizará el iniciador (Cliente o Comerciante). Valores posibles. |
| Condicional | 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. |
| Condicional | email |
String [1..40] | Correo electrónico para mostrar en la página de pago. Si las notificaciones del cliente están configuradas 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. |
| 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 | mvv |
String [1..10] | Confirmación del comerciante de Mastercard para transacciones tokenizadas. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte con soporte técnico). |
| Opcional | paymentFacilitator |
Object | Bloque con información sobre el facilitador de pagos, es decir, sobre el comerciante que permite a múltiples subcomerciantes aceptar pagos bajo su cuenta. Para transmitir este parámetro debe estar activada una configuración especial (contacte al soporte técnico). Ver parámetros anidados. |
| Condicional | phone |
String [7..15] | Número de teléfono del titular 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 esta manera, son posibles los siguientes valores:
Para pagos por VISA con autorización 3DS es necesario indicar el correo electrónico o el número de teléfono del titular de la tarjeta. |
| 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). |
| Opcional | externalScaExemptionIndicator |
String | Tipo de excepción SCA (Strong Customer Authentication). Si se especifica este parámetro, la transacción será procesada dependiendo de sus configuraciones en la pasarela de pago: ya sea 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 pago. |
Parámetros adicionales que determinan el tipo de enlace creado y se transmiten en additionalParameters:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | installments |
Integer [3] | Número máximo de autorizaciones permitidas para pagos a plazos. Se especifica en caso de crear una vinculación para realizar pagos a plazos. |
| Condición | recurringFrequency |
Integer [2] | Cantidad mínima de días entre autorizaciones. Número entero positivo del 1 al 28 inclusive. Se especifica en caso de crear un enlace para realizar pagos recurrentes. Obligatorio para transmisión en caso de crear un enlace para realizar pagos a plazos con 3DS2 habilitado. |
| Condición | recurringExpiry |
String [8] | Fecha después de la cual no se deben realizar más autorizaciones. Formato: YYYYMMDD. Se especifica en caso de crear un enlace para realizar pagos recurrentes. Obligatorio para la transmisión en caso de crear un enlace para realizar pagos a plazos con 3DS2 habilitado. |
Valores posibles de tii (Lea más sobre los tipos de enlaces soportados por la pasarela de pagos aquí).
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Guardado de datos de tarjeta después de transacción | Nota |
|---|---|---|---|---|---|---|
| Vacío | Ordinaria | Comprador | Introducido por comprador | No | Transacción de comercio electrónico sin guardado de enlace. | |
| CI | Iniciador - Ordinaria (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. Este valor es posible transmitir solo con el permiso "Permitida creación de enlaces vendor pays common". |
| RI | Iniciador - Recurrentes (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. |
| II | Iniciador - Cuotas (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. |
Descripción de los parámetros del objeto paymentFacilitator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | pfId |
String [1..11] | Identificador del facilitador de pagos. |
| Obligatorio | name |
String [1..40] | Nombre del facilitador de pago. |
| Opcional | isoId |
String [1..11] | Identificador ISO. |
| Obligatorio | subMerchants |
Array of objects | Matriz de objetos con información adicional sobre los subcomerciantes. Ver parámetros anidados a continuación. |
Parámetros del elemento de la matriz subMerchants:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | subMerchantId |
String [1..20] | Identificador del subcomerciante. |
| Obligatorio | name |
String [1..40] | Nombre del subcomerciante. |
| Obligatorio | address |
Object | Bloque con información sobre la dirección del subcomerciante. Ver parámetros anidados a continuación. |
Parámetros del objeto address:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | city |
String [1..50] | Ciudad del subcomerciante. |
| Obligatorio | postalCode |
String [1..16] | Código postal del subcomerciante. |
| Obligatorio | country |
Integer [2] | Código de país del subcomerciante en formato ISO 3166-1. |
| Opcional | street |
String [1..40] | Calle del subcomerciante. |
Ejemplo del objeto paymentFacilitator:
"paymentFacilitator" :{
"pfId": "PF123456",
"name": "Payment Facilitator Name",
"isoId": "ISO789",
"subMerchants": [
{
"subMerchantId": "SM001",
"name": "Sub Merchant 1",
"address": {
"city": "City 1",
"postalCode": "101000",
"country": "US",
"street": "Street 1"
}
},
{
"subMerchantId": "SM002",
"name": "Sub Merchant 2",
"address": {
"city": "City 2",
"postalCode": "190000",
"country": "US",
"street": "Street 2"
}
}
]
}Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | success |
Boolean | Parámetro principal que indica que la solicitud se procesó exitosamente. Están disponibles los siguientes valores:
Tenga en cuenta que el valor true significa que la solicitud fue procesada, no que el pedido fue pagado.Información más detallada sobre cómo saber si el pago fue exitoso o no, está disponible aquí. |
| Condicional | data |
Object | Este parámetro se devuelve solo en caso de procesamiento exitoso del pago. Ver descripción abajo. |
| Condicional | error |
Object | Este parámetro se devuelve solo en caso de error de pago. Ver descripción abajo. |
| Condicional | orderStatus |
Object | Contiene parámetros del estado del pedido y se devuelve solo en el caso de que la pasarela de pagos haya reconocido todos los parámetros de la solicitud como correctos. Ver descripción abajo. |
El bloque data contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
El bloque error contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
code |
String [1..3] | Código como parámetro informativo que informa sobre el error. | |
description |
String [1..598] | Explicación técnica detallada del error - el contenido de este parámetro no está destinado a ser mostrado al usuario. | |
message |
String [1..512] | Parámetro informativo que es la descripción del error para mostrar al usuario. El parámetro puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. | |
El bloque orderStatus contiene los siguientes elementos.
| 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. |
| Opcional | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| 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 | actionCode |
String | Código de respuesta del procesamiento del banco. Contiene un valor numérico. Ver la lista de códigos de respuesta aquí. |
| Opcional | actionCodeDescription |
String [1..512] | Descripción de actionCode, devuelta por el procesamiento del banco. |
| 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 | date |
Integer | Fecha de registro del pedido como cantidad de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Condicional | merchantOrderParams |
Object | Objeto con atributos en los que se transmiten parámetros adicionales del comerciante. Ver descripción abajo. |
| Condicional | attributes |
Object | Atributos del pedido en el sistema de pagos (número de pedido). Ver descripción abajo. |
| Condicional | cardAuthInfo |
Object | Información sobre la tarjeta de pago del comprador. Ver descripción abajo. |
| Opcional | authDateTime |
Integer | Fecha y hora de autorización, mostradas como el número de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| Opcional | terminalId |
String [1..10] | Identificador del terminal en el sistema que procesa el pago. |
| Opcional | authRefNum |
String [1..24] | Número de autorización del pago, asignado durante el registro del pago. |
| Condicional | paymentAmountInfo |
Object | Parámetro que contiene parámetros anidados con información sobre las sumas de confirmación, cargo y devolución. Ver descripción abajo. |
| Condicional | bankInfo |
Object | Contiene el parámetro anidado bankCountryName. Ver descripción abajo. |
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). |
El bloque merchantOrderParams contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | name |
String [1..255] | Nombre del parámetro adicional del comerciante. |
| Obligatorio | value |
String [1..1024] | Valor del parámetro adicional del vendedor - hasta 1024 caracteres. |
El bloque attributes contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | name |
String [1..255] | Nombre del parámetro adicional. |
| Obligatorio | value |
String [1..1024] | Valor del parámetro adicional - hasta 1024 caracteres. |
El bloque cardAuthInfo contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | expiration |
Integer [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. |
| Obligatorio | cardholderName |
String [1..26] | Nombre del titular de la tarjeta en letras latinas. Símbolos permitidos: letras latinas, punto, espacio. |
| Obligatorio | approvalCode |
String [6] | Código de autorización del sistema de pagos internacionales. Este campo tiene una longitud fija (seis caracteres) y puede contener dígitos y letras latinas. |
| Obligatorio | pan |
String [1..19] | DPAN enmascarado: número vinculado al dispositivo móvil del comprador y que desempeña las funciones del número de tarjeta de pago en el sistema Apple Pay. |
| 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. |
El bloque paymentAmountInfo contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | paymentState |
String | Estado del pedido, el parámetro puede tomar los siguientes valores:
|
| Obligatorio | approvedAmount |
Integer [0..12] | Suma en unidades mínimas de moneda (por ejemplo, en centavos), que fue bloqueada en la cuenta del comprador. Se utiliza solo en pagos de dos etapas. En caso de autorización parcial esta suma puede ser menor que la suma, solicitada durante el registro del pedido. |
| Obligatorio | depositedAmount |
Integer [1..12] | Importe del débito en unidades mínimas de moneda (por ejemplo, en kopeks). En caso de autorización parcial, este importe puede ser menor que el importe solicitado durante el registro del pedido. |
| Obligatorio | refundedAmount |
Integer [1..12] | Monto del reembolso en unidades mínimas de moneda. |
El bloque bankInfo contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | bankCountryName |
String [1..160] | País del banco emisor. |
- Si
success=trueyorderStatus.orderStatus=1o2, entonces la transacción se confirma. - Si
success=trueyorderStatus.orderStatus<>1o2, entonces la transacción se rechaza. - Si
success=falseoerrorCode<>0, entonces la transacción se rechaza.
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/applepay/payment.do \
--header 'Content-Type: application/json' \
--data-raw '{
"additionalParameters" : {
"phone" : "9521235847",
"order-pain" : "111",
"email" : "apple@pay.com"
},
"language" : "en",
"clientId" : "259753456",
"orderNumber" : "281477871",
"paymentToken" : "eyJkYXRhIjoiYPhK3M1bEtm...YjM2NWMzZWNmYjE5fIkVDX3YxIn0=",
"preAuth" : false
}'Respuesta en caso de pago exitoso
{
"success": true,
"data": {
"orderId": "b926351f-a634-49cf-9484-ccb0a3b8cfad"
},
"orderStatus": {
"errorCode": "0",
"orderNumber": "229",
"orderStatus": 1,
"actionCode": 0,
"actionCodeDescription": "",
"amount": 960000,
"currency": "978",
"date": 1478682458102,
"ip": "x.x.x.x",
"merchantOrderParams": [
{
"name": "param2",
"value": "param2"
},
{
"name": "param1",
"value": "param1"
}
],
"attributes": [
{
"name": "mdOrder",
"value": "b926351f-a634-49cf-9484-ccb0a3b8cfad"
}
],
"cardAuthInfo": {
"expiration": "203012",
"cardholderName": "TEST CARDHOLDER",
"approvalCode": "123456",
"pan": "500000**1115"
},
"authDateTime": 1478682459082,
"terminalId": "12345678",
"authRefNum": "111111111111",
"paymentAmountInfo": {
"paymentState": "APPROVED",
"approvedAmount": 960000,
"depositedAmount": 0,
"refundedAmount": 0
},
"bankInfo": {
"bankCountryName": "<UNKNOWN>"
}
}
}Respuesta en caso de pago fallido
{
"error": {
"code": 10,
"description": "Processing Error",
"message": "Auth is invalid"
},
"success": false
}Apple Pay Direct
Solicitud utilizada para realizar un pago directo a través de Apple Pay - https://dev.bpcbt.com/payment/applepay/paymentDirect.do. Se utiliza para registrar y pagar un pedido.
Esta solicitud se puede utilizar para integraciones que suponen el descifrado de datos de pago en el lado del vendedor.
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..100] | 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. |
| Opcional | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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 | 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 | mvv |
String [1..10] | Confirmación del comerciante de Mastercard para transacciones tokenizadas. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte con soporte técnico). |
| Opcional | paymentFacilitator |
Object | Bloque con información sobre el facilitador de pagos, es decir, sobre el comerciante que permite a varios subcomerciantes aceptar pagos bajo su cuenta. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte al soporte técnico). Ver parámetros anidados. |
| 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. |
| Opcional | additionalParameters |
Object | Parámetros adicionales del pedido que se almacenan en el panel personal del vendedor para su posterior visualización. Cada nuevo par de nombre de parámetro y su valor debe estar separado por una coma. A continuación se muestra un ejemplo de uso.{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"} Al crear la vinculación en esta etiqueta pueden pasarse parámetros que definen el tipo de vinculación a crear. Ver lista de parámetros. |
| Opcional | preAuth |
Boolean | Parámetro que determina la necesidad de autorización previa (bloqueo de fondos en la cuenta del cliente antes de su débito). Están disponibles los siguientes valores:
|
| Opcional | autocompletionDate |
String [19] | Fecha y hora de finalización automática del pago de dos etapas en el siguiente formato: 2025-12-29T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | autoReverseDate |
String [19] | Fecha y hora de cancelación automática del pago de dos etapas en el siguiente formato: 2025-06-23T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Obligatorio | paymentToken |
String [1..8192] | Datos de pago obtenidos de Apple Pay y descifrados por el comerciante. Secuencia de acciones:
|
| Opcional | merchant |
String [1..255] | Para registrar y pagar el pedido en nombre de otro comerciante, indique su login (para la cuenta API) en este parámetro. Se puede usar solo si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. |
| Opcional | features |
String | En este parámetro se puede transmitir el valor VERIFY. Entonces no se realizará el pago, en su lugar se creará una vinculación (se guardará la tarjeta del cliente).Si se transmite features, paymentToken.transactionAmount debe ser 0. En caso contrario se devolverá un error. |
| Condición | 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 | tii |
String | Identificador del iniciador de la transacción. Parámetro que indica qué tipo de operación realizará el iniciador (Cliente o Comerciante). Valores posibles. |
| 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. |
| Condición | originalPaymentDate |
String | Fecha de la transacción iniciadora. Valor en formato Unix timestamp en milisegundos. Se transmite si el valor del parámetro tii = R,U o F. |
| 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). |
| Opcional | externalScaExemptionIndicator |
String | Tipo de excepción SCA (Strong Customer Authentication). Si se especifica este parámetro, la transacción será procesada dependiendo de sus configuraciones en la pasarela de pago: ya sea 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 pago. |
| Condición | email |
String [1..40] | Correo electrónico para mostrar en la página de pago. Si las notificaciones del cliente están configuradas 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. |
| Opcional | 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. |
| 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:
|
Valores posibles de tii (Lea más sobre los tipos de enlaces soportados por la pasarela de pagos aquí).
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Guardado de datos de tarjeta después de transacción | Nota |
|---|---|---|---|---|---|---|
| Vacío | Ordinaria | Comprador | Introducido por comprador | No | Transacción de comercio electrónico sin guardado de enlace. | |
| CI | Iniciador - Ordinaria (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. Este valor es posible transmitir solo con el permiso "Permitida creación de enlaces vendor pays common". |
| RI | Iniciador - Recurrentes (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. |
| II | Iniciador - Cuotas (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. |
Parámetros adicionales que determinan el tipo de enlace creado y se transmiten en additionalParameters:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | installments |
Integer [3] | Número máximo de autorizaciones permitidas para pagos a plazos. Se especifica en caso de crear una vinculación para realizar pagos a plazos. |
| Condición | recurringFrequency |
Integer [2] | Cantidad mínima de días entre autorizaciones. Número entero positivo del 1 al 28 inclusive. Se especifica en caso de crear un enlace para realizar pagos recurrentes. Obligatorio para transmisión en caso de crear un enlace para realizar pagos a plazos con 3DS2 habilitado. |
| Condición | recurringExpiry |
String [8] | Fecha después de la cual no se deben realizar más autorizaciones. Formato: YYYYMMDD. Se especifica en caso de crear un enlace para realizar pagos recurrentes. Obligatorio para la transmisión en caso de crear un enlace para realizar pagos a plazos con 3DS2 habilitado. |
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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. |
Descripción de los parámetros del objeto paymentFacilitator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | pfId |
String [1..11] | Identificador del facilitador de pagos. |
| Obligatorio | name |
String [1..40] | Nombre del facilitador de pago. |
| Opcional | isoId |
String [1..11] | Identificador ISO. |
| Obligatorio | subMerchants |
Array of objects | Matriz de objetos con información adicional sobre los subcomerciantes. Ver parámetros anidados a continuación. |
Parámetros del elemento de la matriz subMerchants:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | subMerchantId |
String [1..20] | Identificador del subcomerciante. |
| Obligatorio | name |
String [1..40] | Nombre del subcomerciante. |
| Obligatorio | address |
Object | Bloque con información sobre la dirección del subcomerciante. Ver parámetros anidados a continuación. |
Parámetros del objeto address:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | city |
String [1..50] | Ciudad del subcomerciante. |
| Obligatorio | postalCode |
String [1..16] | Código postal del subcomerciante. |
| Obligatorio | country |
Integer [2] | Código de país del subcomerciante en formato ISO 3166-1. |
| Opcional | street |
String [1..40] | Calle del subcomerciante. |
Ejemplo del objeto paymentFacilitator:
"paymentFacilitator" :{
"pfId": "PF123456",
"name": "Payment Facilitator Name",
"isoId": "ISO789",
"subMerchants": [
{
"subMerchantId": "SM001",
"name": "Sub Merchant 1",
"address": {
"city": "City 1",
"postalCode": "101000",
"country": "US",
"street": "Street 1"
}
},
{
"subMerchantId": "SM002",
"name": "Sub Merchant 2",
"address": {
"city": "City 2",
"postalCode": "190000",
"country": "US",
"street": "Street 2"
}
}
]
}Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | success |
Boolean | Parámetro principal que indica que la solicitud se procesó exitosamente. Están disponibles los siguientes valores:
Tenga en cuenta que el valor true significa que la solicitud fue procesada, no que el pedido fue pagado.Información más detallada sobre cómo saber si el pago fue exitoso o no, está disponible aquí. |
| Obligatorio | data |
Object | Devuelto solo en caso de pago exitoso. |
| Obligatorio | error |
Object | Este parámetro se devuelve solo en caso de error de pago. |
| 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:
|
Parámetros en el bloque data:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
Parámetros en el bloque error:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | code |
String [1..3] | Código como parámetro informativo que informa sobre el error. |
| Obligatorio | message |
String [1..512] | Parámetro informativo que es la descripción del error para mostrar al usuario. El parámetro puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. |
| Obligatorio | description |
String [1..598] | Explicación técnica detallada del error - el contenido de este parámetro no está destinado a ser mostrado al usuario. |
Parámetros en el bloque orderStatus:
| 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. |
| Opcional | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| 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 | actionCode |
String | Código de respuesta del procesamiento del banco. Contiene un valor numérico. Ver la lista de códigos de respuesta aquí. |
| Opcional | actionCodeDescription |
String [1..512] | Descripción de actionCode, devuelta por el procesamiento del banco. |
| 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 | date |
Integer | Fecha de registro del pedido como cantidad de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Opcional | merchantOrderParams |
Object | Sección con atributos en la que se transmiten parámetros adicionales del comerciante. |
| Opcional | cardAuthInfo |
Object | Bloque con datos sobre la tarjeta del pagador ver parámetros anidados. |
| Opcional | authDateTime |
Integer | Fecha y hora de autorización, mostradas como el número de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| Opcional | terminalId |
String [1..10] | Identificador del terminal en el sistema que procesa el pago. |
| Opcional | authRefNum |
String [1..24] | Número de autorización del pago, asignado durante el registro del pago. |
| Opcional | paymentAmountInfo |
Object | Objeto con información sobre los montos de confirmación, débito, devolución. Lista de parámetros anidados ver abajo. |
| Opcional | bankInfo |
Object | Objeto que contiene el parámetro anidado bankCountryName, en el cual se transmite la denominación del país del banco emisor (si está disponible). El idioma utilizado coincide con el idioma transmitido en el parámetro de solicitud language. Si no se transmite el idioma, se utilizará el idioma del usuario que invoca el método. |
El bloque orderStatus también puede incluir el elemento payerData, que 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). |
Parámetros en el bloque cardAuthInfo:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | expiration |
Integer | Año y mes de vencimiento de la tarjeta. |
| Opcional | cardholderName |
String [1..26] | Nombre del titular de la tarjeta (si está disponible). |
| Opcional | approvalCode |
String [6] | Código de autorización del sistema de pagos internacionales. Este campo tiene una longitud fija (seis caracteres) y puede contener dígitos y letras latinas. |
| Opcional | pan |
String [1..19] | DPAN enmascarado: número vinculado al dispositivo móvil del comprador y que desempeña las funciones del número de tarjeta de pago en el sistema Apple Pay. |
| 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. |
Parámetros en el bloque paymentAmountInfo:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | paymentState |
String | Estado del pedido, el parámetro puede tomar los siguientes valores:
|
| Opcional | approvedAmount |
Integer [0..12] | Suma en unidades mínimas de moneda (por ejemplo, en centavos), que fue bloqueada en la cuenta del comprador. Se utiliza solo en pagos de dos etapas. En caso de autorización parcial esta suma puede ser menor que la suma, solicitada durante el registro del pedido. |
| Opcional | depositedAmount |
Integer [1..12] | Importe del débito en unidades mínimas de moneda (por ejemplo, en kopeks). En caso de autorización parcial, este importe puede ser menor que el importe solicitado durante el registro del pedido. |
| Opcional | refundedAmount |
Integer [1..12] | Monto del reembolso en unidades mínimas de moneda. |
| Opcional | totalAmount |
Integer [1..20] | Importe del pedido más comisión, si la hubiera. |
Ejemplos
Ejemplo de solicitud
curl --location --request POST 'https://dev.bpcbt.com/payment/applepay/paymentDirect.do' \
--header 'Content-Type: application/json' \
--data-raw '{
"username": "test_user",
"password": "test_user_password",
"orderNumber": "947664b3-4a42-4cdf-9f8c-2e9679bad9e4",
"description": "description of the order",
"language": "en",
"paymentToken": "eyJhcHBsaWNhPT...0ifX0="
}'Ejemplos de respuesta - pago exitoso
{
"success": true,
"data": {
"orderId": "b926351f-a634-49cf-9484-ccb0a3b8cfad"
},
"orderStatus": {
"errorCode": "0",
"orderNumber": "229",
"orderStatus": 1,
"actionCode": 0,
"actionCodeDescription": "",
"amount": 960000,
"currency": "978",
"date": 1478682458102,
"ip": "x.x.x.x",
"merchantOrderParams": [
{
"name": "param2",
"value": "param2"
},
{
"name": "param1",
"value": "param1"
}
],
"attributes": [
{
"name": "mdOrder",
"value": "b926351f-a634-49cf-9484-ccb0a3b8cfad"
}
],
"cardAuthInfo": {
"expiration": "203012",
"cardholderName": "TEST CARDHOLDER",
"approvalCode": "123456",
"pan": "500000**1115"
},
"authDateTime": 1478682459082,
"terminalId": "12345678",
"authRefNum": "111111111111",
"paymentAmountInfo": {
"paymentState": "APPROVED",
"approvedAmount": 960000,
"depositedAmount": 0,
"refundedAmount": 0
},
"bankInfo": {
"bankCountryName": "<UNKNOWN>"
}
}
}Ejemplo de respuesta - error de pago
{
"error": {
"code": 1,
"description": "Processing Error",
"message": "Insufficient amount on card"
},
"success": false
}Registro de pedido Google Pay
Para el registro y pago del pedido se utiliza la solicitud https://dev.bpcbt.com/payment/google/payment.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | merchant |
String [1..255] | Para registrar y pagar el pedido en nombre de otro comerciante, indique su login (para la cuenta API) en este parámetro. Se puede usar solo si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. |
| Obligatorio | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Opcional | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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 | additionalParameters |
Object | Parámetros adicionales del pedido, que se almacenan en el panel de control del vendedor para su posterior visualización. Cada nuevo par de nombre de parámetro y su valor debe estar separado por comas. A continuación se muestra un ejemplo de uso.{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"} Al crear la vinculación en esta etiqueta pueden pasarse parámetros que determinen el tipo de vinculación que se crea. Ver lista de parámetros. |
| Opcional | preAuth |
Boolean | Parámetro que determina la necesidad de autorización previa (bloqueo de fondos en la cuenta del cliente antes de su débito). Están disponibles los siguientes valores:
|
| Opcional | autocompletionDate |
String [19] | Fecha y hora de finalización automática del pago de dos etapas en el siguiente formato: 2025-12-29T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | autoReverseDate |
String [19] | Fecha y hora de cancelación automática del pago de dos etapas en el siguiente formato: 2025-06-23T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Obligatorio | 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 | tii |
String | Identificador del iniciador de la transacción. Parámetro que indica qué tipo de operación realizará el iniciador (Cliente o Comerciante). Valores posibles. |
| Obligatorio | paymentToken |
String [1..8192] | Token obtenido de Google Pay y codificado en Base64. |
| Obligatorio | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Obligatorio | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
| Opcional | currencyCode |
String [3] | Código digital de la divisa del pago ISO 4217. |
| 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 | 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. |
| Condicional | email |
String [1..40] | Correo electrónico para mostrar en la página de pago. Si las notificaciones del cliente están configuradas 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. |
| 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 | mvv |
String [1..10] | Confirmación del comerciante de Mastercard para transacciones tokenizadas. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte con soporte técnico). |
| Opcional | paymentFacilitator |
Object | Bloque con información sobre el facilitador de pago, es decir, sobre el comerciante que permite a varios subcomerciantes aceptar pagos bajo su cuenta. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte al soporte técnico). Ver parámetros anidados. |
| Opcional | 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. Ver parámetros anidados. |
| 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:
|
| Opcional | clientBrowserInfo |
Object | Bloque de datos sobre el navegador del cliente, que se envía al ACS durante la autenticación 3DS. Este bloque se puede transmitir solo si está habilitada la configuración especial (contacte al equipo de soporte). Ver parámetros anidados. |
En la autenticación por protocolo 3DS2 también se transmiten los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| 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. |
| Opcional | threeDSMethodNotificationUrl |
String [1..512] | URL para envío de notificación sobre la verificación completada en ACS. |
Valores posibles de tii (Lea más sobre los tipos de enlaces soportados por la pasarela de pagos aquí).
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Guardado de datos de tarjeta después de transacción | Nota |
|---|---|---|---|---|---|---|
| Vacío | Ordinaria | Comprador | Introducido por comprador | No | Transacción de comercio electrónico sin guardado de enlace. | |
| CI | Iniciador - Ordinaria (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. Este valor es posible transmitir solo con el permiso "Permitida creación de enlaces vendor pays common". |
| RI | Iniciador - Recurrentes (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. |
| II | Iniciador - Cuotas (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. |
Parámetros adicionales que determinan el tipo de enlace creado y se transmiten en additionalParameters:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | installments |
Integer [3] | Número máximo de autorizaciones permitidas para pagos a plazos. Se especifica en caso de crear una vinculación para realizar pagos a plazos. |
| Condición | recurringFrequency |
Integer [2] | Cantidad mínima de días entre autorizaciones. Número entero positivo del 1 al 28 inclusive. Se especifica en caso de crear un enlace para realizar pagos recurrentes. Obligatorio para transmisión en caso de crear un enlace para realizar pagos a plazos con 3DS2 habilitado. |
| Condición | recurringExpiry |
String [8] | Fecha después de la cual no se deben realizar más autorizaciones. Formato: YYYYMMDD. Se especifica en caso de crear un enlace para realizar pagos recurrentes. Obligatorio para la transmisión en caso de crear un enlace para realizar pagos a plazos con 3DS2 habilitado. |
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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 presentan los parámetros del bloque clientBrowserInfo (datos sobre el navegador del cliente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | userAgent |
String [1..2048] | Agente del navegador. |
| Opcional | OS |
String | Sistema operativo. |
| Opcional | OSVersion |
String | Versión del sistema operativo. |
| Opcional | browserAcceptHeader |
String [1..2048] | Cabecera Accept, que informa al servidor qué formatos (o tipos MIME) soporta el navegador. |
| Opcional | browserIpAddress |
String [1..45] | Dirección IP del navegador. |
| Opcional | browserLanguage |
String [1..8] | Idioma del navegador. |
| Opcional | browserTimeZone |
String | Zona horaria del navegador. |
| Opcional | browserTimeZoneOffset |
String [1..5] | Desplazamiento de zona horaria en minutos entre la hora local del usuario y UTC. |
| Opcional | colorDepth |
String [1..2] | Profundidad de color de la pantalla, en bits. |
| Opcional | fingerprint |
String | Huella digital del navegador - identificador digital único del navegador. |
| Opcional | isMobile |
Boolean | Valores posibles: true o false. Bandera que indica que se utiliza un dispositivo móvil. |
| Opcional | javaEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para java está habilitado en el navegador. |
| Opcional | javascriptEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para javascript está habilitado en el navegador. |
| Opcional | plugins |
String | Lista de plugins utilizados en el navegador, separados por comas. |
| Opcional | screenHeight |
Integer [1..6] | Altura de la pantalla en píxeles. |
| Opcional | screenWidth |
Integer [1..6] | Ancho de la pantalla en píxeles. |
| Opcional | screenPrint |
String | Datos sobre los parámetros de impresión del navegador, incluyendo resolución, profundidad de color, densidad de píxeles. |
Ejemplo del bloque clientBrowserInfo:
"clientBrowserInfo":
{
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
"fingerprint":850891523,
"OS":"Windows",
"OSVersion":"10",
"isMobile":false,
"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
"colorDepth":24,
"screenHeight":"864",
"screenWidth":"1536",
"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
"javaEnabled":false,
"javascriptEnabled":true,
"browserLanguage":"it-IT",
"browserTimeZone":"Europe/Rome",
"browserTimeZoneOffset":-120,
"browserAcceptHeader":"gzip",
"browserIpAddress":"x.x.x.x"
}Descripción de los parámetros del objeto paymentFacilitator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | pfId |
String [1..11] | Identificador del facilitador de pagos. |
| Obligatorio | name |
String [1..40] | Nombre del facilitador de pago. |
| Opcional | isoId |
String [1..11] | Identificador ISO. |
| Obligatorio | subMerchants |
Array of objects | Matriz de objetos con información adicional sobre los subcomerciantes. Ver parámetros anidados a continuación. |
Parámetros del elemento de la matriz subMerchants:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | subMerchantId |
String [1..20] | Identificador del subcomerciante. |
| Obligatorio | name |
String [1..40] | Nombre del subcomerciante. |
| Obligatorio | address |
Object | Bloque con información sobre la dirección del subcomerciante. Ver parámetros anidados a continuación. |
Parámetros del objeto address:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | city |
String [1..50] | Ciudad del subcomerciante. |
| Obligatorio | postalCode |
String [1..16] | Código postal del subcomerciante. |
| Obligatorio | country |
Integer [2] | Código de país del subcomerciante en formato ISO 3166-1. |
| Opcional | street |
String [1..40] | Calle del subcomerciante. |
Ejemplo del objeto paymentFacilitator:
"paymentFacilitator" :{
"pfId": "PF123456",
"name": "Payment Facilitator Name",
"isoId": "ISO789",
"subMerchants": [
{
"subMerchantId": "SM001",
"name": "Sub Merchant 1",
"address": {
"city": "City 1",
"postalCode": "101000",
"country": "US",
"street": "Street 1"
}
},
{
"subMerchantId": "SM002",
"name": "Sub Merchant 2",
"address": {
"city": "City 2",
"postalCode": "190000",
"country": "US",
"street": "Street 2"
}
}
]
}Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | success |
Boolean | Parámetro principal que indica que la solicitud se procesó exitosamente. Están disponibles los siguientes valores:
Tenga en cuenta que el valor true significa que la solicitud fue procesada, no que el pedido fue pagado.Información más detallada sobre cómo saber si el pago fue exitoso o no, está disponible aquí. |
| Condicional | data |
Object | Este parámetro se devuelve solo en caso de procesamiento exitoso del pago. Ver descripción abajo. |
| Condicional | error |
Object | Este parámetro se devuelve solo en caso de error de pago. Ver descripción abajo. |
El bloque data contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Opcional | 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. |
| 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 | 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 | 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 | 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. |
El bloque data puede incluir además el elemento payerData, que 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). |
Si se utiliza el protocolo 3DS2, la respuesta a la solicitud también incluye los siguientes parámetros en el bloque data:
| 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). |
El bloque error contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | code |
String [1..3] | Código como parámetro informativo que informa sobre el error. |
| Obligatorio | message |
String [1..512] | Parámetro informativo que es la descripción del error para mostrar al usuario. El parámetro puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. |
| Obligatorio | description |
String [1..598] | Explicación técnica detallada del error - el contenido de este parámetro no está destinado a ser mostrado al usuario. |
Use la solicitud getOrderStatusExtended.do, para verificar el estado de la transacción.
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/google/payment.do \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant": "OurBestMerchantLogin",
"orderNumber": "UAF-203974-DE",
"language": "EN",
"preAuth": true,
"description" : "Test description",
"additionalParameters":
{
"firstParamName": "firstParamValue",
"secondParamName": "secondParamValue"
},
"paymentToken": "eyJtZXJjaGFudCI6ICJrdXBpdmlwIiwib3JkZXJOdW1iZXIiOiAyMDUxOTIzMzkxLCJwYXltZW50VG9rZW4iOiAie1wiZXBoZW1lcmFsUHVibGljS2V5XCI6XCJrZXlcIixcImVuY3J5cHRlZE1lc3NhZ2VcIjpcIm1lc3NhZ2VcIixcInRhZ1wiOlwidGFnXCJ9In0=",
"ip" : "127.0.0.1",
"amount" : "230000",
"currencyCode" : 643,
"failUrl" : "https://mybestmerchantfailurl.com"
"returnUrl" : "https://mybestmerchantreturnurl.com"
}'Ejemplo de respuesta
{
"success":true,
"data": {
"orderId": "12312312123"
"is3DSVer2": true,
"threeDSServerTransId": "f44d6d21-1874-45a5-aeb0-1c710dd6e134",
"threeDSMethodURLServer": "https://test.com/3dsserver/gatherClientInfo?threeDSServerTransID=f44d6d21-1874-45a5-aeb0-1c710dd6e134"
}
}Google Pay Direct
La solicitud utilizada para pago directo a través de Google Pay -https://dev.bpcbt.com/payment/google/paymentDirect.do. Se utiliza para registrar y pagar un pedido.
Esta solicitud puede utilizarse para integraciones que requieren descifrado de datos de pago del lado del comerciante.
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 | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Opcional | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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 | additionalParameters |
Object | Parámetros adicionales del pedido que se almacenan en el panel personal del vendedor para su posterior visualización. Cada nueva pareja de nombre de parámetro y su valor debe separarse con una coma. A continuación se muestra un ejemplo de uso.{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"} Al crear una vinculación en esta etiqueta pueden transmitirse parámetros que determinan el tipo de vinculación creada. Ver lista de parámetros. |
| Opcional | preAuth |
Boolean | Parámetro que determina la necesidad de autorización previa (bloqueo de fondos en la cuenta del cliente antes de su débito). Están disponibles los siguientes valores:
|
| Opcional | autocompletionDate |
String [19] | Fecha y hora de finalización automática del pago de dos etapas en el siguiente formato: 2025-12-29T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | autoReverseDate |
String [19] | Fecha y hora de cancelación automática del pago de dos etapas en el siguiente formato: 2025-06-23T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| 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 | protocolVersion |
String | Versión del protocolo definida por Google para el token de pago: ECv1 (por defecto) o ECv2
|
| Obligatorio | paymentToken |
String [1..8192] | Datos de pago obtenidos de Google Pay y descifrados por el comerciante. Secuencia de acciones:
|
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Obligatorio | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
| Opcional | currencyCode |
String [3] | Código digital de la divisa del pago ISO 4217. |
| 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 | merchant |
String [1..255] | Para registrar y pagar el pedido en nombre de otro comerciante, indique su login (para la cuenta API) en este parámetro. Se puede usar solo si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. |
| Opcional | features |
String | Funciones del pedido. Para especificar varias funciones, use este parámetro varias veces en una sola solicitud. A continuación se muestran los valores posibles.
|
| Opcional | tii |
String | Identificador del iniciador de transacción. Parámetro que indica qué tipo de operación realizará el iniciador (Cliente o Comerciante). Valores posibles. |
| 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 | mvv |
String [1..10] | Confirmación del comerciante de Mastercard para transacciones tokenizadas. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte con soporte técnico). |
| Opcional | paymentFacilitator |
Object | Bloque con información sobre el facilitador de pagos, es decir, sobre el comerciante que permite a múltiples subcomerciantes aceptar pagos bajo su cuenta. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte al soporte técnico). Ver parámetros anidados. |
| 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. |
| Condición | originalPaymentDate |
String | Fecha de la transacción iniciadora. Valor en formato Unix timestamp en milisegundos. Se transmite si el valor del parámetro tii = R,U o F. |
| Opcional | externalScaExemptionIndicator |
String | Tipo de excepción SCA (Strong Customer Authentication). Si se especifica este parámetro, la transacción será procesada dependiendo de sus configuraciones en la pasarela de pago: ya sea 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 pago. |
| 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). |
| Opcional | externalScaExemptionIndicator |
String | Tipo de excepción SCA (Strong Customer Authentication). Si se especifica este parámetro, la transacción será procesada dependiendo de sus configuraciones en la pasarela de pago: ya sea 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 pago. |
| Condición | email |
String [1..40] | Correo electrónico para mostrar en la página de pago. Si las notificaciones del cliente están configuradas 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. |
| Opcional | 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 servicios AVS/AVV. Obligatorio si la función está habilitada para el vendedor del lado del Gateway de Pago. Ver parámetros anidados. |
| Opcional | shippingPayerData |
Object | Objeto que contiene datos sobre entrega al cliente. Este parámetro se utiliza para autenticación 3DS posterior del cliente. Ver parámetros anidados. |
| Opcional | preOrderPayerData |
Object | Objeto que contiene datos de pedido preliminar. Este parámetro se utiliza para autenticación 3DS posterior del cliente. Ver parámetros anidados. |
| Opcional | orderPayerData |
Object | Objeto que contiene datos sobre el pagador del pedido. Este parámetro se utiliza para autenticación 3DS posterior 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:
|
| Opcional | clientBrowserInfo |
Object | Bloque de datos sobre el navegador del cliente, que se envía al ACS durante la autenticación 3DS. Este bloque solo se puede transmitir si está habilitada la configuración especial (contacte al equipo de soporte). Ver parámetros anidados. |
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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. |
Valores posibles de tii (Lea más sobre los tipos de enlaces soportados por la pasarela de pagos aquí).
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Guardado de datos de tarjeta después de transacción | Nota |
|---|---|---|---|---|---|---|
| Vacío | Ordinaria | Comprador | Introducido por comprador | No | Transacción de comercio electrónico sin guardado de enlace. | |
| CI | Iniciador - Ordinaria (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. Este valor es posible transmitir solo con el permiso "Permitida creación de enlaces vendor pays common". |
| RI | Iniciador - Recurrentes (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. |
| II | Iniciador - Cuotas (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. |
Parámetros adicionales que determinan el tipo de enlace creado y se transmiten en additionalParameters:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | installments |
Integer [3] | Número máximo de autorizaciones permitidas para pagos a plazos. Se especifica en caso de crear una vinculación para realizar pagos a plazos. |
| Condición | recurringFrequency |
Integer [2] | Cantidad mínima de días entre autorizaciones. Número entero positivo del 1 al 28 inclusive. Se especifica en caso de crear un enlace para realizar pagos recurrentes. Obligatorio para transmisión en caso de crear un enlace para realizar pagos a plazos con 3DS2 habilitado. |
| Condición | recurringExpiry |
String [8] | Fecha después de la cual no se deben realizar más autorizaciones. Formato: YYYYMMDD. Se especifica en caso de crear un enlace para realizar pagos recurrentes. Obligatorio para la transmisión en caso de crear un enlace para realizar pagos a plazos con 3DS2 habilitado. |
A continuación se presentan los parámetros del bloque clientBrowserInfo (datos sobre el navegador del cliente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | userAgent |
String [1..2048] | Agente del navegador. |
| Opcional | OS |
String | Sistema operativo. |
| Opcional | OSVersion |
String | Versión del sistema operativo. |
| Opcional | browserAcceptHeader |
String [1..2048] | Cabecera Accept, que informa al servidor qué formatos (o tipos MIME) soporta el navegador. |
| Opcional | browserIpAddress |
String [1..45] | Dirección IP del navegador. |
| Opcional | browserLanguage |
String [1..8] | Idioma del navegador. |
| Opcional | browserTimeZone |
String | Zona horaria del navegador. |
| Opcional | browserTimeZoneOffset |
String [1..5] | Desplazamiento de zona horaria en minutos entre la hora local del usuario y UTC. |
| Opcional | colorDepth |
String [1..2] | Profundidad de color de la pantalla, en bits. |
| Opcional | fingerprint |
String | Huella digital del navegador - identificador digital único del navegador. |
| Opcional | isMobile |
Boolean | Valores posibles: true o false. Bandera que indica que se utiliza un dispositivo móvil. |
| Opcional | javaEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para java está habilitado en el navegador. |
| Opcional | javascriptEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para javascript está habilitado en el navegador. |
| Opcional | plugins |
String | Lista de plugins utilizados en el navegador, separados por comas. |
| Opcional | screenHeight |
Integer [1..6] | Altura de la pantalla en píxeles. |
| Opcional | screenWidth |
Integer [1..6] | Ancho de la pantalla en píxeles. |
| Opcional | screenPrint |
String | Datos sobre los parámetros de impresión del navegador, incluyendo resolución, profundidad de color, densidad de píxeles. |
Ejemplo del bloque clientBrowserInfo:
"clientBrowserInfo":
{
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
"fingerprint":850891523,
"OS":"Windows",
"OSVersion":"10",
"isMobile":false,
"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
"colorDepth":24,
"screenHeight":"864",
"screenWidth":"1536",
"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
"javaEnabled":false,
"javascriptEnabled":true,
"browserLanguage":"it-IT",
"browserTimeZone":"Europe/Rome",
"browserTimeZoneOffset":-120,
"browserAcceptHeader":"gzip",
"browserIpAddress":"x.x.x.x"
}Descripción de los parámetros del objeto paymentFacilitator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | pfId |
String [1..11] | Identificador del facilitador de pagos. |
| Obligatorio | name |
String [1..40] | Nombre del facilitador de pago. |
| Opcional | isoId |
String [1..11] | Identificador ISO. |
| Obligatorio | subMerchants |
Array of objects | Matriz de objetos con información adicional sobre los subcomerciantes. Ver parámetros anidados a continuación. |
Parámetros del elemento de la matriz subMerchants:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | subMerchantId |
String [1..20] | Identificador del subcomerciante. |
| Obligatorio | name |
String [1..40] | Nombre del subcomerciante. |
| Obligatorio | address |
Object | Bloque con información sobre la dirección del subcomerciante. Ver parámetros anidados a continuación. |
Parámetros del objeto address:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | city |
String [1..50] | Ciudad del subcomerciante. |
| Obligatorio | postalCode |
String [1..16] | Código postal del subcomerciante. |
| Obligatorio | country |
Integer [2] | Código de país del subcomerciante en formato ISO 3166-1. |
| Opcional | street |
String [1..40] | Calle del subcomerciante. |
Ejemplo del objeto paymentFacilitator:
"paymentFacilitator" :{
"pfId": "PF123456",
"name": "Payment Facilitator Name",
"isoId": "ISO789",
"subMerchants": [
{
"subMerchantId": "SM001",
"name": "Sub Merchant 1",
"address": {
"city": "City 1",
"postalCode": "101000",
"country": "US",
"street": "Street 1"
}
},
{
"subMerchantId": "SM002",
"name": "Sub Merchant 2",
"address": {
"city": "City 2",
"postalCode": "190000",
"country": "US",
"street": "Street 2"
}
}
]
}Si se utiliza 3DS2, es necesario también transmitir los siguientes parámetros:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| 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. |
| Opcional | threeDSSDK |
Boolean | Valores posibles: true o false Bandera que indica que el pago proviene del 3DS SDK. |
| 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 | success |
Boolean | Parámetro principal que indica que la solicitud se procesó exitosamente. Están disponibles los siguientes valores:
Tenga en cuenta que el valor true significa que la solicitud fue procesada, no que el pedido fue pagado.Información más detallada sobre cómo saber si el pago fue exitoso o no, está disponible aquí. |
| Obligatorio* | data |
Object | Devuelto solo en caso de pago exitoso. |
| Obligatorio* | error |
Object | Este parámetro se devuelve solo en caso de error de pago. |
El bloque data contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Solo si se utiliza autenticación adicional en ACS del banco emisor | 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. |
| Solo si se utiliza autenticación adicional en ACS del banco emisor | 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. |
| Solo si se utiliza autenticación adicional en ACS del banco emisor | 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. |
| El parámetro se devuelve si se utilizan vínculos | 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 | 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. |
El bloque data también puede incluir el elemento payerData, que 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). |
Si se utiliza el protocolo 3DS2, la respuesta a la solicitud también incluye los siguientes parámetros en el bloque data:
| 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. |
| Opcional | 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). |
Parámetros en el bloque error:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | code |
String [1..3] | Código como parámetro informativo que informa sobre el error. |
| Obligatorio | message |
String [1..512] | Parámetro informativo que es la descripción del error para mostrar al usuario. El parámetro puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. |
| Obligatorio | description |
String [1..598] | Explicación técnica detallada del error - el contenido de este parámetro no está destinado a ser mostrado al usuario. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/google/paymentDirect.do \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": "1000",
"orderNumber": "350467565",
"features": [""],
"language": "EN",
"password": "test_user_password",
"paymentToken": "eyJnYXRldTWVY2hRJ...b25ZZWFyyMD0fX0=",
"preAuth": true,
"returnUrl": "https://mybestmerchantreturnurl.com",
"username": "test_user"
}'Ejemplo de respuesta
{
"success": true,
"data": {
"orderId": "12312312123"
}
}Registro de pedido Samsung Pay
Para el registro y pago de pedidos Samsung Pay se utiliza la solicitud https://dev.bpcbt.com/payment/samsung/payment.do. Ver "Coordenadas de conexión". Esta solicitud se utiliza únicamente al realizar pagos desde la aplicación móvil.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
A continuación se presenta un ejemplo de solicitud de pago a través de Samsung Pay.
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | merchant |
String [1..255] | Para registrar y pagar el pedido en nombre de otro comerciante, indique su login (para la cuenta API) en este parámetro. Se puede usar solo si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. |
| Obligatorio | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Opcional | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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 | additionalParameters |
Object | Parámetros adicionales del pedido que se almacenan en el panel personal del vendedor para su posterior visualización. Cada nuevo par de nombre de parámetro y su valor debe estar separado por una coma. A continuación se muestra un ejemplo de uso.{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"} Al crear la vinculación en esta etiqueta pueden pasarse parámetros que determinen el tipo de vinculación creada. Ver lista de parámetros. |
| Opcional | preAuth |
Boolean | Parámetro que determina la necesidad de autorización previa (bloqueo de fondos en la cuenta del cliente antes de su débito). Están disponibles los siguientes valores:
|
| Opcional | autocompletionDate |
String [19] | Fecha y hora de finalización automática del pago de dos etapas en el siguiente formato: 2025-12-29T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | autoReverseDate |
String [19] | Fecha y hora de cancelación automática del pago de dos etapas en el siguiente formato: 2025-06-23T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| 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 | tii |
String | Identificador del iniciador de transacción. Parámetro que indica qué tipo de operación ejecutará el iniciador (Cliente o Comerciante). Valores posibles. |
| 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 | mvv |
String [1..10] | Confirmación del comerciante de Mastercard para transacciones tokenizadas. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte con soporte técnico). |
| Opcional | paymentFacilitator |
Object | Bloque con información sobre el facilitador de pagos, es decir, sobre el comerciante que permite a varios submercantes aceptar pagos bajo su cuenta. Para transmitir este parámetro debe estar activada una configuración especial (contacte al soporte técnico). Ver parámetros anidados. |
| Obligatorio | paymentToken |
String [1..8192] | Contenido del parámetro 3ds.data de la respuesta obtenida de Samsung Pay. |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Opcional | currencyCode |
String [3] | Código digital de la divisa del pago ISO 4217. |
| Opcional | features |
String | Funciones del pedido. Para especificar varias funciones, use este parámetro varias veces en una sola solicitud. A continuación se muestran los valores posibles.
|
| 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). |
| Opcional | 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á activada para el vendedor del lado del Gateway de Pago. Ver parámetros anidados. |
| 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:
|
Valores posibles de tii (Lea más sobre los tipos de enlaces soportados por la pasarela de pagos aquí).
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Guardado de datos de tarjeta después de transacción | Nota |
|---|---|---|---|---|---|---|
| Vacío | Ordinaria | Comprador | Introducido por comprador | No | Transacción de comercio electrónico sin guardado de enlace. | |
| CI | Iniciador - Ordinaria (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. Este valor es posible transmitir solo con el permiso "Permitida creación de enlaces vendor pays common". |
| RI | Iniciador - Recurrentes (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. |
| II | Iniciador - Cuotas (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. |
Parámetros adicionales que determinan el tipo de enlace creado y se transmiten en additionalParameters:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | installments |
Integer [3] | Número máximo de autorizaciones permitidas para pagos a plazos. Se especifica en caso de crear una vinculación para realizar pagos a plazos. |
| Condición | recurringFrequency |
Integer [2] | Cantidad mínima de días entre autorizaciones. Número entero positivo del 1 al 28 inclusive. Se especifica en caso de crear un enlace para realizar pagos recurrentes. Obligatorio para transmisión en caso de crear un enlace para realizar pagos a plazos con 3DS2 habilitado. |
| Condición | recurringExpiry |
String [8] | Fecha después de la cual no se deben realizar más autorizaciones. Formato: YYYYMMDD. Se especifica en caso de crear un enlace para realizar pagos recurrentes. Obligatorio para la transmisión en caso de crear un enlace para realizar pagos a plazos con 3DS2 habilitado. |
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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. |
Descripción de los parámetros del objeto paymentFacilitator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | pfId |
String [1..11] | Identificador del facilitador de pagos. |
| Obligatorio | name |
String [1..40] | Nombre del facilitador de pago. |
| Opcional | isoId |
String [1..11] | Identificador ISO. |
| Obligatorio | subMerchants |
Array of objects | Matriz de objetos con información adicional sobre los subcomerciantes. Ver parámetros anidados a continuación. |
Parámetros del elemento de la matriz subMerchants:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | subMerchantId |
String [1..20] | Identificador del subcomerciante. |
| Obligatorio | name |
String [1..40] | Nombre del subcomerciante. |
| Obligatorio | address |
Object | Bloque con información sobre la dirección del subcomerciante. Ver parámetros anidados a continuación. |
Parámetros del objeto address:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | city |
String [1..50] | Ciudad del subcomerciante. |
| Obligatorio | postalCode |
String [1..16] | Código postal del subcomerciante. |
| Obligatorio | country |
Integer [2] | Código de país del subcomerciante en formato ISO 3166-1. |
| Opcional | street |
String [1..40] | Calle del subcomerciante. |
Ejemplo del objeto paymentFacilitator:
"paymentFacilitator" :{
"pfId": "PF123456",
"name": "Payment Facilitator Name",
"isoId": "ISO789",
"subMerchants": [
{
"subMerchantId": "SM001",
"name": "Sub Merchant 1",
"address": {
"city": "City 1",
"postalCode": "101000",
"country": "US",
"street": "Street 1"
}
},
{
"subMerchantId": "SM002",
"name": "Sub Merchant 2",
"address": {
"city": "City 2",
"postalCode": "190000",
"country": "US",
"street": "Street 2"
}
}
]
}Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | success |
Boolean | Parámetro principal que indica que la solicitud se procesó exitosamente. Están disponibles los siguientes valores:
Tenga en cuenta que el valor true significa que la solicitud fue procesada, no que el pedido fue pagado.Información más detallada sobre cómo saber si el pago fue exitoso o no, está disponible aquí. |
| Condición | data |
Object | Este parámetro se devuelve únicamente en caso de procesamiento exitoso del pago. Ver descripción a continuación. |
| Condición | error |
Object | Este parámetro se devuelve únicamente en caso de error de pago. Ver descripción a continuación. |
El bloque data contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Optional | detokenizedPanRepresentation |
String [1..19] | Número de tarjeta destokenizado (últimos 4 dígitos o en forma enmascarada). |
| Optional | detokenizedPanExpiryDate |
String | Fecha de vencimiento de la tarjeta destokenizada en el siguiente formato: YYYYMM. |
El bloque data puede incluir además el elemento payerData, que 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). |
El bloque error contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | code |
String [1..3] | Código como parámetro informativo que informa sobre el error. |
| Obligatorio | message |
String [1..512] | Parámetro informativo que es la descripción del error para mostrar al usuario. El parámetro puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. |
| Obligatorio | description |
String [1..598] | Explicación técnica detallada del error - el contenido de este parámetro no está destinado a ser mostrado al usuario. |
Ejemplos
Ejemplo de solicitud
curl --location --request POST 'https://dev.bpcbt.com/payment/samsung/payment.do' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant": "sandbox_merchant_test",
"orderNumber": "1218637308",
"language": "en",
"preAuth": true,
"description": "Test description",
"additionalParameters": {
"firstParamName": "firstParamValue",
"secondParamName": "secondParamValue"
},
"paymentToken": "ew0KICB7DQoJICA...0KICB9DQp9",
"ip": "x.x.x.x"
}'Respuesta en caso de pago exitoso
{
"success":true,
"data": {
"orderId": "12312312123"
}
}Respuesta en caso de pago fallido
{
"error": {
"code": 1,
"description": "Processing Error",
"message": "Not enough money"
},
"success": false
}Samsung Pay Direct
Solicitud utilizada para realizar un pago directo a través de Samsung Pay - https://dev.bpcbt.com/payment/samsung/paymentDirect.do. Se utiliza para registrar y pagar un pedido.
Esta solicitud puede utilizarse para integraciones que implican el descifrado de datos de pago del lado del comerciante.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | merchant |
String [1..255] | Para registrar y pagar el pedido en nombre de otro comerciante, indique su login (para la cuenta API) en este parámetro. Se puede usar solo si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. |
| Obligatorio | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Opcional | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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 | 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. |
| Opcional | additionalParameters |
Object | Parámetros adicionales del pedido, que se almacenan en el panel personal del vendedor para su posterior visualización. Cada nuevo par de nombre de parámetro y su valor debe estar separado por coma. A continuación se presenta un ejemplo de uso.{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"} Al crear un enlace en esta etiqueta pueden ser transmitidos parámetros que determinan el tipo de enlace a crear. Ver lista de parámetros. |
| Opcional | preAuth |
Boolean | Parámetro que determina la necesidad de autorización previa (bloqueo de fondos en la cuenta del cliente antes de su débito). Están disponibles los siguientes valores:
|
| Opcional | autocompletionDate |
String [19] | Fecha y hora de finalización automática del pago de dos etapas en el siguiente formato: 2025-12-29T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | autoReverseDate |
String [19] | Fecha y hora de cancelación automática del pago de dos etapas en el siguiente formato: 2025-06-23T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| 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. |
| Obligatorio | paymentToken |
String [1..8192] | Token obtenido de Samsung Pay y codificado en Base64. Example: {"amount": "100", "currency_code": "USD", "utc": "1490687350988", "eci_indicator": "07", "tokenPAN": "5599014702854883", "tokenPanExpiration": "0420", "cryptogram": "ACF9prZs2wsTAAGysReaAoACFA=="} |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Opcional | tii |
String | Identificador del iniciador de la transacción. Parámetro que indica qué tipo de operación ejecutará el iniciador (Cliente o Comerciante). Valores posibles. |
| 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 | mvv |
String [1..10] | Confirmación del comerciante de Mastercard para transacciones tokenizadas. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte con soporte técnico). |
| Opcional | paymentFacilitator |
Object | Bloque con información sobre el facilitador de pagos, es decir, sobre el comerciante que permite a varios subcomerciantes aceptar pagos bajo su cuenta. Para pasar este parámetro debe estar habilitada una configuración especial (contacte al soporte técnico). Ver parámetros anidados. |
| 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. |
| Condición | originalPaymentDate |
String | Fecha de la transacción iniciadora. Valor en formato Unix timestamp en milisegundos. Se transmite si el valor del parámetro tii = R,U o F. |
| 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). |
| Opcional | externalScaExemptionIndicator |
String | Tipo de excepción SCA (Strong Customer Authentication). Si se especifica este parámetro, la transacción será procesada dependiendo de sus configuraciones en la pasarela de pago: ya sea 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 pago. |
| Opcional | 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 servicios AVS/AVV. Obligatorio si la función está habilitada para el vendedor del lado de la Pasarela de Pago. Ver parámetros anidados. |
| 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 previo. 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:
|
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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. |
Valores posibles de tii (Lea más sobre los tipos de enlaces soportados por la pasarela de pagos aquí).
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Guardado de datos de tarjeta después de transacción | Nota |
|---|---|---|---|---|---|---|
| Vacío | Ordinaria | Comprador | Introducido por comprador | No | Transacción de comercio electrónico sin guardado de enlace. | |
| CI | Iniciador - Ordinaria (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. Este valor es posible transmitir solo con el permiso "Permitida creación de enlaces vendor pays common". |
| RI | Iniciador - Recurrentes (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. |
| II | Iniciador - Cuotas (CIT) | Iniciadora | Comprador | Introducido por comprador | Sí | Transacción de comercio electrónico con guardado de enlace. |
Parámetros adicionales que determinan el tipo de enlace creado y se transmiten en additionalParameters:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | installments |
Integer [3] | Número máximo de autorizaciones permitidas para pagos a plazos. Se especifica en caso de crear una vinculación para realizar pagos a plazos. |
| Condición | recurringFrequency |
Integer [2] | Cantidad mínima de días entre autorizaciones. Número entero positivo del 1 al 28 inclusive. Se especifica en caso de crear un enlace para realizar pagos recurrentes. Obligatorio para transmisión en caso de crear un enlace para realizar pagos a plazos con 3DS2 habilitado. |
| Condición | recurringExpiry |
String [8] | Fecha después de la cual no se deben realizar más autorizaciones. Formato: YYYYMMDD. Se especifica en caso de crear un enlace para realizar pagos recurrentes. Obligatorio para la transmisión en caso de crear un enlace para realizar pagos a plazos con 3DS2 habilitado. |
Descripción de los parámetros del objeto paymentFacilitator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | pfId |
String [1..11] | Identificador del facilitador de pagos. |
| Obligatorio | name |
String [1..40] | Nombre del facilitador de pago. |
| Opcional | isoId |
String [1..11] | Identificador ISO. |
| Obligatorio | subMerchants |
Array of objects | Matriz de objetos con información adicional sobre los subcomerciantes. Ver parámetros anidados a continuación. |
Parámetros del elemento de la matriz subMerchants:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | subMerchantId |
String [1..20] | Identificador del subcomerciante. |
| Obligatorio | name |
String [1..40] | Nombre del subcomerciante. |
| Obligatorio | address |
Object | Bloque con información sobre la dirección del subcomerciante. Ver parámetros anidados a continuación. |
Parámetros del objeto address:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | city |
String [1..50] | Ciudad del subcomerciante. |
| Obligatorio | postalCode |
String [1..16] | Código postal del subcomerciante. |
| Obligatorio | country |
Integer [2] | Código de país del subcomerciante en formato ISO 3166-1. |
| Opcional | street |
String [1..40] | Calle del subcomerciante. |
Ejemplo del objeto paymentFacilitator:
"paymentFacilitator" :{
"pfId": "PF123456",
"name": "Payment Facilitator Name",
"isoId": "ISO789",
"subMerchants": [
{
"subMerchantId": "SM001",
"name": "Sub Merchant 1",
"address": {
"city": "City 1",
"postalCode": "101000",
"country": "US",
"street": "Street 1"
}
},
{
"subMerchantId": "SM002",
"name": "Sub Merchant 2",
"address": {
"city": "City 2",
"postalCode": "190000",
"country": "US",
"street": "Street 2"
}
}
]
}Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | success |
Boolean | Parámetro principal que indica que la solicitud se procesó exitosamente. Están disponibles los siguientes valores:
Tenga en cuenta que el valor true significa que la solicitud fue procesada, no que el pedido fue pagado.Información más detallada sobre cómo saber si el pago fue exitoso o no, está disponible aquí. |
| Obligatorio* | data |
Object | Devuelto solo en caso de pago exitoso. |
| Obligatorio* | error |
Object | Este parámetro se devuelve solo en caso de error de pago. |
El bloque data contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| El parámetro se devuelve si se utilizan vinculaciones | 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 | 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. |
El bloque data puede incluir además el elemento payerData, que 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). |
Parámetros en el bloque error:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | code |
String [1..3] | Código como parámetro informativo que informa sobre el error. |
| Obligatorio | message |
String [1..512] | Parámetro informativo que es la descripción del error para mostrar al usuario. El parámetro puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. |
| Obligatorio | description |
String [1..598] | Explicación técnica detallada del error - el contenido de este parámetro no está destinado a ser mostrado al usuario. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/samsung/paymentDirect.do \
--header 'Content-Type: application/json' \
--data-raw '{
"merchant": "OurBestMerchantLogin",
"orderNumber": "UAF-203974-DE",
"language": "EN",
"preAuth": true,
"description" : "Test description",
"additionalParameters":
{
"firstParamName": "firstParamValue",
"secondParamName": "secondParamValue"
},
"paymentToken": "ew0KICB7DQoJICA...0KICB9DQp9",
"ip" : "127.0.0.1"
}'Ejemplos de respuesta - pago exitoso
{
"success": true,
"data": {
"orderId": "12312312123"
}
}Ejemplo de respuesta - error de pago
{
"error": {
"code": 1,
"description": "Processing Error",
"message": "Insufficint amount on card"
},
"success": false
}Pago tokenizado
Solicitud de pago universal para métodos de pago tokenizados – https://dev.bpcbt.com/payment/token/payment.do.
Esta solicitud solo se puede usar si tienes un permiso especial en la Pasarela de Pagos. Contacta al servicio de soporte técnico para más detalles.
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..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Opcional | merchant |
String [1..255] | Para registrar y pagar el pedido en nombre de otro comerciante, indique su login (para la cuenta API) en este parámetro. Se puede usar solo si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. |
| Obligatorio | 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 | email |
String [1..40] | Correo electrónico para mostrar en la página de pago. Si las notificaciones del cliente están configuradas 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. |
| 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. |
| Obligatorio | tokenType |
String | Valores posibles:
|
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Opcional | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| Condición | orderId |
String [1..36] | Número de pedido en la pasarela de pagos. Único dentro de la pasarela de pagos. Se requiere transmitir en la solicitud de pago repetida (después de ejecutar 3DS-method). |
| Opcional | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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 | 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 | mvv |
String [1..10] | Confirmación del comerciante de Mastercard para transacciones tokenizadas. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte con soporte técnico). |
| Opcional | paymentFacilitator |
Object | Bloque con información sobre el facilitador de pagos, es decir, sobre el comerciante que permite a varios subcomerciantes aceptar pagos bajo su cuenta. Para transmitir este parámetro debe estar habilitada una configuración especial (contacta al soporte técnico). Ver parámetros anidados. |
| Opcional | preAuth |
Boolean | Parámetro que determina la necesidad de autorización previa (bloqueo de fondos en la cuenta del cliente antes de su débito). Están disponibles los siguientes valores:
|
| Condición | cvc |
String [3] | La transmisión del parámetro se determina por el tipo de pago:
|
| Opcional | cardHolderName |
String [1..26] | Nombre del titular de la tarjeta en letras latinas. Este parámetro se transmite solo después del pago del pedido. |
| Opcional | autocompletionDate |
String [19] | Fecha y hora de finalización automática del pago de dos etapas en el siguiente formato: 2025-12-29T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | autoReverseDate |
String [19] | Fecha y hora de cancelación automática del pago de dos etapas en el siguiente formato: 2025-06-23T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| 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 | jsonParams |
Object | Etiqueta adicional con atributos para transmitir parámetros adicionales. Ver más abajo. |
| Opcional | features |
String | Funciones del pedido. A continuación se presentan los valores posibles.
|
| 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 | tii |
String | Identificador del iniciador de la transacción. Parámetro que indica qué tipo de operación realizará el iniciador (Cliente o Comerciante). Valores posibles |
| Opcional | externalScaExemptionIndicator |
String | Tipo de excepción SCA (Strong Customer Authentication). Si se especifica este parámetro, la transacción será procesada dependiendo de sus configuraciones en la pasarela de pago: ya sea 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 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. |
| 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. |
| Obligatorio | paymentData |
object | Contiene información de pago obtenida del servicio de tokenización. Ver parámetros incluidos |
| Opcional | 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. |
| Opcional | shippingPayerData |
Object | Objeto que contiene datos sobre la entrega al cliente. Este parámetro se usa para la posterior autenticación 3DS del cliente. Ver parámetros anidados. |
| Opcional | preOrderPayerData |
Object | Objeto que contiene datos de pedido previo. Este parámetro se usa 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 usa 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:
|
| Opcional | clientBrowserInfo |
Object | Bloque de datos sobre el navegador del cliente, que se envía al ACS durante la autenticación 3DS. Este bloque solo se puede transmitir si está habilitada una configuración especial (póngase en contacto con el equipo de soporte). Ver parámetros anidados. |
El bloque jsonParams contiene campos de información adicional para almacenamiento posterior. Para transmitir N parámetros, en la solicitud deben encontrarse N etiquetas jsonParams, donde el atributo name contiene el nombre, y el atributo value contiene el valor (ver tabla a continuación).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | name |
String [1..255] | Nombre del parámetro adicional. |
| Obligatorio | value |
String [1..1024] | Valor del parámetro adicional - hasta 1024 caracteres. |
A continuación se enumeran los parámetros del bloque paymentData
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | dpan |
String [1..19] | Número de token. |
| Condicional | tokenCryptogram |
String [1..1024] | Criptograma obtenido del servicio de tokenización. En algunos casos el parámetro puede estar ausente (por ejemplo, para transacciones MIT VTS). |
| Obligatorio | MM |
Integer [2] | Mes de vencimiento del token. |
| Obligatorio | YYYY |
Integer [4] | Año de vencimiento del token. |
| 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.
|
Valores posibles de tii (Lea más sobre los tipos de datos de pago guardados soportados por la pasarela de pagos aquí).
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Guardado de datos de tarjeta después de transacción | Nota |
|---|---|---|---|---|---|---|
| Vacío | Normal | Comprador | Ingresado por comprador | No | Transacción de comercio electrónico sin guardado de datos de pago guardados. | |
| CI | Iniciador - Normal (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| F | Pago no programado (CIT) | Subsecuente | Comprador | Cliente selecciona tarjeta en lugar de ingreso manual | No | Transacción de comercio electrónico, usando datos de pago guardados normales previamente guardados. |
| U | Pago no programado (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Transacción de comercio electrónico, usando datos de pago guardados normales previamente guardados. Se usa solo para pagos de una etapa. |
| RI | Iniciador - Recurrentes (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| R | Pago recurrente (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Operación recurrente, usando datos de pago guardados guardados. Se usa solo para pagos de una etapa. |
| II | Iniciador - Cuotas (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| I | Pago a plazos (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Operación a plazos, usando datos de pago guardados guardados. Se usa solo para pagos de una etapa. |
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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 presentan los parámetros del bloque clientBrowserInfo (datos sobre el navegador del cliente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | userAgent |
String [1..2048] | Agente del navegador. |
| Opcional | OS |
String | Sistema operativo. |
| Opcional | OSVersion |
String | Versión del sistema operativo. |
| Opcional | browserAcceptHeader |
String [1..2048] | Cabecera Accept, que informa al servidor qué formatos (o tipos MIME) soporta el navegador. |
| Opcional | browserIpAddress |
String [1..45] | Dirección IP del navegador. |
| Opcional | browserLanguage |
String [1..8] | Idioma del navegador. |
| Opcional | browserTimeZone |
String | Zona horaria del navegador. |
| Opcional | browserTimeZoneOffset |
String [1..5] | Desplazamiento de zona horaria en minutos entre la hora local del usuario y UTC. |
| Opcional | colorDepth |
String [1..2] | Profundidad de color de la pantalla, en bits. |
| Opcional | fingerprint |
String | Huella digital del navegador - identificador digital único del navegador. |
| Opcional | isMobile |
Boolean | Valores posibles: true o false. Bandera que indica que se utiliza un dispositivo móvil. |
| Opcional | javaEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para java está habilitado en el navegador. |
| Opcional | javascriptEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para javascript está habilitado en el navegador. |
| Opcional | plugins |
String | Lista de plugins utilizados en el navegador, separados por comas. |
| Opcional | screenHeight |
Integer [1..6] | Altura de la pantalla en píxeles. |
| Opcional | screenWidth |
Integer [1..6] | Ancho de la pantalla en píxeles. |
| Opcional | screenPrint |
String | Datos sobre los parámetros de impresión del navegador, incluyendo resolución, profundidad de color, densidad de píxeles. |
Ejemplo del bloque clientBrowserInfo:
"clientBrowserInfo":
{
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
"fingerprint":850891523,
"OS":"Windows",
"OSVersion":"10",
"isMobile":false,
"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
"colorDepth":24,
"screenHeight":"864",
"screenWidth":"1536",
"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
"javaEnabled":false,
"javascriptEnabled":true,
"browserLanguage":"it-IT",
"browserTimeZone":"Europe/Rome",
"browserTimeZoneOffset":-120,
"browserAcceptHeader":"gzip",
"browserIpAddress":"x.x.x.x"
}Descripción de los parámetros del objeto paymentFacilitator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | pfId |
String [1..11] | Identificador del facilitador de pagos. |
| Obligatorio | name |
String [1..40] | Nombre del facilitador de pago. |
| Opcional | isoId |
String [1..11] | Identificador ISO. |
| Obligatorio | subMerchants |
Array of objects | Matriz de objetos con información adicional sobre los subcomerciantes. Ver parámetros anidados a continuación. |
Parámetros del elemento de la matriz subMerchants:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | subMerchantId |
String [1..20] | Identificador del subcomerciante. |
| Obligatorio | name |
String [1..40] | Nombre del subcomerciante. |
| Obligatorio | address |
Object | Bloque con información sobre la dirección del subcomerciante. Ver parámetros anidados a continuación. |
Parámetros del objeto address:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | city |
String [1..50] | Ciudad del subcomerciante. |
| Obligatorio | postalCode |
String [1..16] | Código postal del subcomerciante. |
| Obligatorio | country |
Integer [2] | Código de país del subcomerciante en formato ISO 3166-1. |
| Opcional | street |
String [1..40] | Calle del subcomerciante. |
Ejemplo del objeto paymentFacilitator:
"paymentFacilitator" :{
"pfId": "PF123456",
"name": "Payment Facilitator Name",
"isoId": "ISO789",
"subMerchants": [
{
"subMerchantId": "SM001",
"name": "Sub Merchant 1",
"address": {
"city": "City 1",
"postalCode": "101000",
"country": "US",
"street": "Street 1"
}
},
{
"subMerchantId": "SM002",
"name": "Sub Merchant 2",
"address": {
"city": "City 2",
"postalCode": "190000",
"country": "US",
"street": "Street 2"
}
}
]
}Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | success |
Boolean | Parámetro principal que indica que la solicitud se procesó exitosamente. Están disponibles los siguientes valores:
Tenga en cuenta que el valor true significa que la solicitud fue procesada, no que el pedido fue pagado.Información más detallada sobre cómo saber si el pago fue exitoso o no, está disponible aquí. |
| Condición | data |
Object | Este parámetro se devuelve solo en caso de procesamiento exitoso del pago. Ver descripción a continuación. |
| Condición | error |
Object | Este parámetro se devuelve solo en caso de error de pago. Ver descripción a continuación. |
| Condición | orderStatus |
Object | Contiene parámetros del estado del pedido y se devuelve solo en caso de que la pasarela de pago reconozca todos los parámetros de la solicitud como correctos. Ver descripción a continuación. |
El bloque data contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Opcional | 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. |
| 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 | 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. |
Si se utiliza el protocolo 3DS2, la respuesta a la solicitud también incluye los siguientes parámetros en el bloque data:
| 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). |
| Opcional | 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. |
| 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. |
El bloque error contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | code |
String [1..3] | Código como parámetro informativo que informa sobre el error. |
| Obligatorio | message |
String [1..512] | Parámetro informativo que es la descripción del error para mostrar al usuario. El parámetro puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. |
| Obligatorio | description |
String [1..598] | Explicación técnica detallada del error - el contenido de este parámetro no está destinado a ser mostrado al usuario. |
El bloque orderStatus contiene los siguientes elementos.
| 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 ErrorMessage puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. El idioma de la descripción se especifica en el parámetro language de la solicitud. |
| Opcional | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada comerciante. |
| 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 | actionCode |
String | Código de respuesta del procesamiento del banco. Contiene un valor numérico. Ver la lista de códigos de respuesta aquí. |
| Opcional | actionCodeDescription |
String [1..512] | Descripción de actionCode, devuelta por el procesamiento del banco. |
| Opcional | originalActionCode |
String [1..15] | Código de respuesta recibido del procesamiento. Para habilitar la recepción de este campo, contacte al servicio de soporte técnico. |
| 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 | date |
Integer | Fecha de registro del pedido como cantidad de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Condición | cardAuthInfo |
Object | Información sobre la tarjeta de pago del comprador. Ver descripción a continuación. |
| Opcional | authDateTime |
Integer | Fecha y hora de autorización, mostradas como el número de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| Opcional | terminalId |
String [1..10] | Identificador del terminal en el sistema que procesa el pago. |
| Opcional | authRefNum |
String [1..24] | Número de autorización del pago, asignado durante el registro del pago. |
| 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.
|
| Condición | paymentAmountInfo |
Object | Parámetro que contiene parámetros anidados con información sobre los montos de confirmación, débito y devolución. Ver descripción a continuación. |
| Condición | bankInfo |
Object | Contiene el parámetro anidado bankCountryName. Ver descripción a continuación. |
| Condición | payerData |
Object | Contiene el parámetro anidado paymentAccountReference. Ver descripción a continuación. |
El bloque cardAuthInfo contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | expiration |
Integer [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. |
| Obligatorio | cardholderName |
String [1..26] | Nombre del titular de la tarjeta en letras latinas. Símbolos permitidos: letras latinas, punto, espacio. |
| Obligatorio | approvalCode |
String [6] | Código de autorización del sistema de pagos internacionales. Este campo tiene una longitud fija (seis caracteres) y puede contener dígitos y letras latinas. |
| Obligatorio | authCode |
Integer [6] | Parámetro obsoleto (no se utiliza). Su valor siempre es 2 independientemente del estado del pedido y del código de autorización del sistema de procesamiento. |
| Obligatorio | pan |
String [1..19] | Número de tarjeta de pago |
| 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. |
El bloque paymentAmountInfo contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | paymentState |
String | Estado del pedido, el parámetro puede tomar los siguientes valores:
|
| Obligatorio | approvedAmount |
Integer [0..12] | Suma en unidades mínimas de moneda (por ejemplo, en centavos), que fue bloqueada en la cuenta del comprador. Se utiliza solo en pagos de dos etapas. En caso de autorización parcial esta suma puede ser menor que la suma, solicitada durante el registro del pedido. |
| Obligatorio | depositedAmount |
Integer [1..12] | Importe del débito en unidades mínimas de moneda (por ejemplo, en kopeks). En caso de autorización parcial, este importe puede ser menor que el importe solicitado durante el registro del pedido. |
| Obligatorio | refundedAmount |
Integer [1..12] | Monto del reembolso en unidades mínimas de moneda. |
El bloque bankInfo contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | bankCountryName |
String [1..160] | País del banco emisor. |
El bloque payerData contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | 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). |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/token/payment.do \
--header 'Content-Type: application/json' \
--data '{
"username":"test_user",
"password":"test_user_password",
"merchant":"test_merch",
"amount":"1000000",
"tii":"CI",
"clientId":"vtsTestClient",
"tokenType":"VTS",
"cvc":"123",
"cardHolderName":"DOS TESTOS",
"paymentData": {
"dpan":"4572433771970368",
"MM":"12",
"YYYY":"2028",
"tokenCryptogram":"Aetydhdjjdkfkndnd55gd="
},
"orderPayerData":{
"mobilePhone":"+492115684962"
},
"returnUrl":"https://mybestmerchantreturnurl.com",
"failUrl":"https://mybestmerchantfailurl.com",
"dynamicCallbackUrl":"https://test.com/callback",
"externalScaExemptionIndicator":"TRA",
"jsonParams":{
"email":"test@gmail.com"
},
"clientBrowserInfo": {
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
"fingerprint":850891523,
"OS":"Windows",
"OSVersion":"10",
"isMobile":false,
"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
"colorDepth":24,
"screenHeight":"864",
"screenWidth":"1536",
"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
"javaEnabled":false,
"javascriptEnabled":true,
"browserLanguage":"en-US",
"browserTimeZone":"Europe/London",
"browserTimeZoneOffset":-180,
"browserAcceptHeader":"*/*",
"browserIpAddress":"10.99.50.37"
},
}'Ejemplo de respuesta
{
"success": true,
"data": {
"orderId": "2a2b97e0-7284-746a-998a-752f0a8246f8",
"is3DSVer2": false
},
"orderStatus": {
"errorCode": "0",
"orderNumber": "9049",
"orderStatus": 2,
"actionCode": 0,
"actionCodeDescription": "Request is processed successfully",
"amount": 1000000,
"currency": "978",
"date": 1734729964138,
"ip": "10.99.50.37",
"cardAuthInfo": {
"expiration": "202412",
"cardholderName": "DOS TESTOS",
"approvalCode": "123456",
"authCode": 2,
"pan": "4111111111111111"
},
"authDateTime": 1734729964273,
"terminalId": "12346789",
"authRefNum": "111111111111",
"paymentNetRefNum": "54674915300274269950",
"paymentAmountInfo": {
"paymentState": "payment_deposited",
"approvedAmount": 1000000,
"depositedAmount": 1000000,
"refundedAmount": 0
},
"bankInfo": {
"bankCountryName": "<UNKNOWN>"
},
"payerData": {}
}
}Estado del pago
La forma más sencilla de conocer el estado del pago es utilizar una llamada API especial:
- Realizar una llamada getOrderStatusExtended.do;
- Verificar el campo
orderStatusen la respuesta: el pedido se considera pagado solo si el valororderStatuses igual a1o2.
Otra forma de verificar si el pago fue exitoso o no es revisar la notificación de callback.
Estado del pedido
Para obtener el estado del pedido se utiliza el método https://dev.bpcbt.com/payment/rest/getOrderStatusExtended.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Información adicional sobre las causas de rechazo está disponible aquí.
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condicional | userName |
String [1..30] | Login de la cuenta API del vendedor. Si se utiliza un token público (parámetro token) para la autenticación durante el registro en lugar del login y la contraseña, no es necesario transmitir la contraseña. |
| Condicional | password |
String [1..30] | Contraseña de la cuenta API del vendedor. Si para la autenticación durante el registro se utiliza un token público (parámetro token) en lugar de login y contraseña, no es necesario transmitir la contraseña. |
| Condicional | token |
String [1..256] | Valor utilizado para la autenticación del vendedor al enviar solicitudes al gateway de pago. Si transmites este parámetro, no transmitas userName y password. |
| 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 comerciante. |
| 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 | merchantLogin |
String [1..255] | Para obtener el estado del pedido de un comerciante específico en lugar del usuario actual, especifique el login del comerciante (para cuenta API). Se puede usar solo si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. |
Parámetros de respuesta
Existen varios conjuntos de parámetros de respuesta. Qué conjunto de parámetros se devuelve en la respuesta depende de la versión getOrderStatusExtended especificada en la configuración del comerciante en la pasarela de pago.
Descripción de versiones
| Versión | Parámetros añadidos |
|---|---|
| 1 | orderBundle |
| 2 |
|
| 3 |
|
| 4 | Sin cambios |
| 5 | refunds |
| 6 | chargeback |
| 7 |
cardAuthInfo->secureAuthInfo->paResStatus, veResStatus, paResCheckStatus
|
| 8 |
cardAuthInfo->paymentSystem, product
|
| 9 | paymentWay |
| 10 | depositedDate |
| 11 | Sin cambios |
| 12 |
|
| 13 |
payerData->email,phone,postAddress
|
| 14 | transactionAttributes |
| 15 |
|
| 16 | feUtrnno |
| 17 |
cardAuthInfo->productCategory
|
| 18 | totalAmount |
| 19 | avsCode |
| 20 |
bindingInfo->externalCreated
|
| 21 |
refunds->externalRefundId
|
| 22 | Sin cambios |
| 23 | efectyOrderInfo |
| 24 | ofdOrderBundle |
| 25 | Sin cambios |
| 26 |
refunds->approvalCode
|
| 27 | authRefNum |
| 28 | pluginInfo |
| 29 | Sin cambios |
| 30 |
cardAuthInfo->secureAuthInfo->aResTransStatus, rReqTransStatus, threeDsProtocolVersion
|
| 31 | Sin cambios |
| 32 | Sin cambios |
| 33 | displayErrorMessage |
| 34 |
orderBundle->cartItems->items->depostedItemAmount,itemPrice
|
| 35 |
cardAuthInfo->corporateCard
|
| 36 | Sin cambios |
| 37 |
|
| 38 |
payerData ->paymentAccountReference
|
| 39 |
cardAuthInfo -> detokenizedPanRepresentation, detokenizedPanExpiryDate
|
| 40 | Sin cambios |
| 41 | PartialAuthorization |
| 42 |
cardAuthInfo->secureAuthInfo->threeDsType
|
| 43 | No se añadieron nuevos parámetros. Eliminado: cardAuthInfo->secureAuthInfo-> authTypeIndicator
|
| 44 | Sin cambios |
| 45 | tokenizationInfo |
| 46 |
mcc, mvv,paymentFacilitator
|
| Versión | Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|---|
| Todas | Opcional | errorCode |
String [1..2] | Parámetro informativo en caso de error, que puede tener diferentes valores de código:
|
| Todas | 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. |
| Todas | Condición | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante, debe ser único para cada comerciante registrado en la pasarela de pago. Si el número de pedido se genera en el lado de la pasarela de pago, este parámetro no es obligatorio de transmitir. |
| Todas | 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:
|
| Todas | Obligatorio | actionCode |
String | Código de respuesta del procesamiento del banco. Contiene un valor numérico. Ver la lista de códigos de respuesta aquí. |
| Todas | Obligatorio | actionCodeDescription |
String [1..512] | Descripción de actionCode, devuelta por el procesamiento del banco. |
| Todas | Obligatorio | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
| Todas | Opcional | currency |
String [3] | Código de moneda del pago ISO 4217. Si no se especifica, se utiliza el valor por defecto. |
| Todas | Obligatorio | date |
Integer | Fecha de registro del pedido como cantidad de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| 10+ | Opcional | depositedDate |
Integer | Fecha de pago del pedido como cantidad de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| Todas | 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. |
| Todas | Obligatorio | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| 27+ | Opcional | authRefNum |
String [1..24] | Número de autorización del pago, asignado durante el registro del pago. |
| 12+, obligatorio desde 27 | Opcional | refundedDate |
Integer | Fecha y hora del reembolso, mostradas como la cantidad de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| 12+ | Opcional | reversedDate |
Integer | Fecha y hora de cancelación del pago, mostradas como la cantidad de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| 09+ | Obligatorio | paymentWay |
String | Método de realización del pago (pago con introducción de datos de tarjeta, pago por vinculación, etc.). Los valores adicionales posibles del parámetro se presentan abajo |
| 19+ | Opcional | avsCode |
String | Código de respuesta de verificación AVS (verificación de dirección y código postal del portador de la tarjeta). Valores posibles:
|
| 06+ | Opcional | chargeback |
Boolean | Si los fondos fueron devueltos forzosamente al comprador por el banco. Valores posibles:
|
| 02+ | Opcional | authDateTime |
Integer | Fecha y hora de autorización, mostradas como el número de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| 02+ | Opcional | terminalId |
String [1..10] | Identificador del terminal en el sistema que procesa el pago. |
| 01+ | Opcional | orderBundle |
Object | Objeto que contiene la cesta de productos. La descripción de los elementos anidados se proporciona a continuación. |
| 03+ | Opcional | paymentAmountInfo |
Object | Objeto con información sobre los montos de confirmación, débito, devolución. Lista de parámetros anidados ver abajo. |
| 05+ | Opcional | refunds |
Object | Objeto que contiene información sobre el reembolso de fondos. Presente solo cuando hay reembolsos en el pedido. La descripción de los elementos anidados se proporciona a continuación. |
| Todas | Opcional | cardAuthInfo |
Object | Bloque con datos sobre la tarjeta del pagador. La descripción de los elementos anidados se proporciona a continuación. |
| 14+ | Opcional | transactionAttributes |
Object | Conjunto de atributos adicionales de la transacción. Véase la lista de parámetros anidados a continuación. |
| 15+ | Opcional | prepaymentMdOrder |
String | Número del pedido de prepago anterior en la pasarela de pago. |
| 15+ | Opcional | partpaymentMdOrders |
Array of String | Array de pedidos posteriores para pago parcial. |
| 16+ | Opcional | feUtrnno |
Integer [1..18] | Número de transacción FE. |
| Todas | Opcional | bindingInfo |
Object | Objeto que contiene información sobre el enlace por el cual se efectúa el pago. Ver tabla con descripción de bindingInfo. |
| 23+ | Opcional | efectyOrderInfo |
Object | Bloque de parámetros relacionados con el método de pago EFECTY. La descripción de los elementos anidados se proporciona a continuación. |
| 28+ | Opcional | pluginInfo |
Object | Presente en la respuesta si el pago fue realizado a través de un plugin de pago. Ver parámetros anidados a continuación. |
| 33+ | Opcional | displayErrorMessage |
String | Mensaje de error mostrado. |
| 37+ | Opcional | tii |
String | Identificador del iniciador de transacción. Parámetro que indica qué tipo de operación realizará el iniciador (Cliente o Comerciante). La descripción de los elementos anidados se proporciona a continuación. |
| 37+ | Opcional | usedPsdIndicatorValue |
String | Tipo de excepción SCA (Strong Customer Authentication). Contiene el valor, transmitido al pagar el pedido en el parámetro externalScaExemptionIndicator.Valores permitidos:
|
| 41+ | Condición | partialAuthorization |
String [1..255] | Indicador del estado de autorización parcial del pedido. Obligatorio si en los detalles del pedido está presente el parámetro partialAuthorization.Valores permitidos:
|
| 45+ | Opcional | tokenizationInfo |
Object | Bloque con parámetros para el servicio Tokenizer, que permite realizar tokenización de tarjetas utilizando servicios VTS (Visa Token Service) o MCS (Mastercard Checkout Solutions). Este bloque se devuelve si tuvo lugar un pago tokenizado. Ver parámetros anidados. |
| 46+ | 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. |
| 46+ | Opcional | mvv |
String [1..10] | Confirmación del comerciante de Mastercard para transacciones tokenizadas. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte con soporte técnico). |
| 46+ | Opcional | paymentFacilitator |
Object | Bloque con información sobre el facilitador de pagos, es decir, sobre el comerciante que permite a varios subcomerciantes aceptar pagos bajo su cuenta. Para transmitir este parámetro debe estar habilitada una configuración especial (contacte el soporte técnico). Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque tokenizationInfo (datos sobre la tokenización de la tarjeta).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | tokenId |
String | Identificador único del token, generado por el servicio Tokenizer. |
| Obligatorio | tokenizationProvider |
String | Proveedor de servicios de tokenización. Valores permitidos: vts,mcs. |
| Obligatorio | panReference |
String | Referencia al PAN original (número de tarjeta). |
| Obligatorio | dpan |
String | PAN digital. |
| Obligatorio | tokenExpiry |
Integer | Fecha de vencimiento del token en formato YYYYMM. |
Ejemplo del bloque tokenizationInfo:
"tokenizationInfo": {
"tokenId": "8d577a01-55f7-45d4-add5-bfe0e8e6c571",
"tokenizationProvider": "vts",
"panReference": "f441492a-5b0a-453d-af97-e897e1148dc5",
"dpan": "5435982500356335",
"tokenExpiry": "202912"
}Descripción de los parámetros del objeto paymentFacilitator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | pfId |
String [1..11] | Identificador del facilitador de pagos. |
| Obligatorio | name |
String [1..40] | Nombre del facilitador de pago. |
| Opcional | isoId |
String [1..11] | Identificador ISO. |
| Obligatorio | subMerchants |
Array of objects | Matriz de objetos con información adicional sobre los subcomerciantes. Ver parámetros anidados a continuación. |
Parámetros del elemento de la matriz subMerchants:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | subMerchantId |
String [1..20] | Identificador del subcomerciante. |
| Obligatorio | name |
String [1..40] | Nombre del subcomerciante. |
| Obligatorio | address |
Object | Bloque con información sobre la dirección del subcomerciante. Ver parámetros anidados a continuación. |
Parámetros del objeto address:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | city |
String [1..50] | Ciudad del subcomerciante. |
| Obligatorio | postalCode |
String [1..16] | Código postal del subcomerciante. |
| Obligatorio | country |
Integer [2] | Código de país del subcomerciante en formato ISO 3166-1. |
| Opcional | street |
String [1..40] | Calle del subcomerciante. |
Ejemplo del objeto paymentFacilitator:
"paymentFacilitator" :{
"pfId": "PF123456",
"name": "Payment Facilitator Name",
"isoId": "ISO789",
"subMerchants": [
{
"subMerchantId": "SM001",
"name": "Sub Merchant 1",
"address": {
"city": "City 1",
"postalCode": "101000",
"country": "US",
"street": "Street 1"
}
},
{
"subMerchantId": "SM002",
"name": "Sub Merchant 2",
"address": {
"city": "City 2",
"postalCode": "190000",
"country": "US",
"street": "Street 2"
}
}
]
}
Valores del parámetro paymentWay:
-
CARD- Pago con introducción de datos de tarjeta -
CARD_BINDING- Realización de pago por enlace -
CARD_MOTO- Pago a través del call center -
FILE_BINDING- Pago a través de archivo -
P2P- Transferencia de dinero de tarjeta a tarjeta -
P2P_BINDING- Transferencia de tarjeta a tarjeta por enlace -
APPLE_PAY- Pago Apple Pay -
APPLE_PAY_BINDING- Pago por enlace Apple Pay -
GOOGLE_PAY_CARD- Pago con tarjeta no tokenizada Google Pay -
GOOGLE_PAY_CARD_BINDING- Pago por enlace con ayuda de tarjeta no tokenizada Google Pay -
GOOGLE_PAY_TOKENIZED- Pago con tarjeta tokenizada Google Pay -
GOOGLE_PAY_TOKENIZED_BINDING- Pago por enlace con ayuda de tarjeta tokenizada Google Pay -
SAMSUNG_PAY- Pago Samsung Pay -
SAMSUNG_PAY_BINDING- Pago por enlace Samsung Pay -
TOKEN_PAY- Pago con token directamente -
TOKEN_PAY_BINDING- Pago mediante datos de pago guardados tokenizados
Valores posibles de tii (Lea más sobre los tipos de datos de pago guardados soportados por la pasarela de pagos aquí).
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Guardado de datos de tarjeta después de transacción | Nota |
|---|---|---|---|---|---|---|
| Vacío | Normal | Comprador | Ingresado por comprador | No | Transacción de comercio electrónico sin guardado de datos de pago guardados. | |
| CI | Iniciador - Normal (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| F | Pago no programado (CIT) | Subsecuente | Comprador | Cliente selecciona tarjeta en lugar de ingreso manual | No | Transacción de comercio electrónico, usando datos de pago guardados normales previamente guardados. |
| U | Pago no programado (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Transacción de comercio electrónico, usando datos de pago guardados normales previamente guardados. Se usa solo para pagos de una etapa. |
| RI | Iniciador - Recurrentes (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| R | Pago recurrente (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Operación recurrente, usando datos de pago guardados guardados. Se usa solo para pagos de una etapa. |
| II | Iniciador - Cuotas (CIT) | Iniciadora | Comprador | Ingresado por comprador | Sí | Transacción de comercio electrónico con guardado de datos de pago guardados. |
| I | Pago a plazos (MIT) | Subsecuente | Vendedor | No hay ingreso manual, vendedor transmite datos | No | Operación a plazos, usando datos de pago guardados guardados. Se usa solo para pagos de una etapa. |
El bloque refunds contiene los siguientes parámetros.
| Versión | Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|---|
| 05+ | Opcional | date |
String | Fecha de devolución del pedido |
| 21+ | Opcional | externalRefundId |
String [1..32] | Identificador de devolución. Al intentar la devolución se verifica externalRefundId: si existe, se devuelve una respuesta exitosa con los datos sobre la devolución, si no — se efectúa la devolución. |
| 26+ para todos los métodos de pago | Opcional | approvalCode |
String [6] | Código de autorización del sistema de pagos internacionales. Este campo tiene una longitud fija (seis caracteres) y puede contener dígitos y letras latinas. |
| 05+ | Opcional | actionCode |
String | Código de respuesta del procesamiento del banco. Contiene un valor numérico. Ver la lista de códigos de respuesta aquí. |
| 05+ | Opcional | referenceNumber |
String [12] | Número de identificación único que se asigna a la operación al completarse. |
| 05+ | Opcional | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
El bloque attributes contiene información sobre el número de pedido en la pasarela de pagos. El parámetro name siempre toma el valor mdOrder, y el parámetro value - el número de pedido en el sistema de pagos.
| Versión | Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|---|
| Todas | Opcional | name |
String [1..255] | Nombre del parámetro adicional. |
| Todas | Opcional | value |
String [1..1024] | Valor del parámetro adicional - hasta 1024 caracteres. |
El bloque transactionAttributes contiene un conjunto de atributos adicionales de la transacción. Se utiliza para la versión 14 y superior. A continuación se presenta la lista de parámetros incluidos.
| Versión | Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|---|
| 14+ | Opcional | name |
String [1..255] | Nombre del parámetro adicional. |
| 14+ | Opcional | value |
String [1..1024] | Valor del parámetro adicional - hasta 1024 caracteres. |
el bloque merchantOrderParams se transmite en la respuesta, si en el pedido hay parámetros adicionales del comerciante. Cada parámetro adicional se transmite en un elemento separado merchantOrderParams. |
| Versión | Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|---|
| Todas | Opcional | name |
String [1..255] | Nombre del parámetro adicional. |
| Todas | Opcional | value |
String [1..1024] | Valor del parámetro adicional - hasta 1024 caracteres. |
En el elemento cardAuthInfo se encuentra una estructura, compuesta por una lista del elemento secureAuthInfo y los siguientes parámetros.
| Versión | Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|---|
| 01+ | Opcional | maskedPan |
String [1..19] | Número de tarjeta enmascarado utilizado para el pago. Contiene los primeros 6 y últimos 4 dígitos reales del número de tarjeta en formato XXXXXX**XXXX. |
| 01+ | Opcional | expiration |
Integer [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. |
| 01+ | Opcional | cardholderName |
String [1..26] | Nombre del titular de la tarjeta en letras latinas. Símbolos permitidos: letras latinas, punto, espacio. |
| 01+ | Opcional | approvalCode |
String [6] | Código de autorización del sistema de pagos internacionales. Este campo tiene una longitud fija (seis caracteres) y puede contener dígitos y letras latinas. |
| 08+ | Obligatorio | paymentSystem |
String | Nombre del sistema de pago. Son posibles los siguientes valores:
|
| 08+ | Obligatorio | product |
String [1..255] | Información adicional sobre tarjetas corporativas. Esta información es completada por el servicio de soporte técnico. Si dicha información no está disponible, se devuelve un valor vacío. |
| 17+ | Obligatorio | productCategory |
String | Información adicional sobre la categoría de tarjetas corporativas. Esta información es completada por el servicio de soporte técnico. Si dicha información no está disponible, se devuelve un valor vacío. Valores posibles: DEBIT, CREDIT, PREPAID, NON_MASTERCARD, CHARGE, DIFFERED_DEBIT. |
| 35+ | Opcional | corporateCard |
String [1..5] | Indica si esta tarjeta es corporativa. Valores posibles: false - no es una tarjeta corporativa, true - es una tarjeta corporativa. Puede devolver un valor vacío, significa que el valor no fue encontrado. |
| 39+ | Opcional | detokenizedPanRepresentation |
String [1..19] | Número de tarjeta destokenizado (últimos 4 dígitos o en forma enmascarada). |
| 39+ | Opcional | detokenizedPanExpiryDate |
String | Fecha de vencimiento de la tarjeta destokenizada en el siguiente formato: YYYYMM. |
El elemento secureAuthInfo está compuesto por los siguientes elementos (los parámetros cavv y xid están incluidos en el elemento threeDSInfo).
| Versión | Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|---|
| 01+ | 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.
|
| 01 - 42 | Opcional | authTypeIndicator |
String | Tipo de autenticación 3DS (disponible hasta la versión 42). 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:
|
| 42+ | Opcional | 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:
|
| 01+ | 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. |
| 01+ | 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. |
| 30+ | 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). |
| 30+ | Opcional | rreqTransStatus |
String [1] | Estado de la transacción de la solicitud de transmisión de resultados de autenticación del usuario desde ACS (RReq). Se transmite al usar 3DS2. |
| 30+ | Opcional | aresTransStatus |
String | Estado de la transacción de la respuesta ACS a la solicitud de autenticación (ARes). Se transmite al utilizar 3DS2. |
El elemento bindingInfo contiene los siguientes parámetros.
| Versión | Obligatorio | Nombre | Tipo | Descripción |
|---|---|---|---|---|
| Todas | 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. |
| Todas | 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:
|
| 02+ | Opcional | authDateTime |
Integer | Fecha y hora de autorización, mostradas como el número de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| 02+ | Opcional | authRefNum |
String [1..24] | Número de autorización del pago, asignado durante el registro del pago. |
| 02+ | Opcional | terminalId |
String [1..10] | Identificador del terminal en el sistema que procesa el pago. |
| 20+ | Opcional | externalCreated |
Boolean | Indicador que muestra si la vinculación ha sido creada en el servicio externo. |
El elemento paymentAmountInfo contiene los siguientes parámetros.
| Versión | Obligatorio | Nombre | Tipo | Descripción |
|---|---|---|---|---|
| 03+ | Opcional | approvedAmount |
Integer [0..12] | Suma en unidades mínimas de moneda (por ejemplo, en centavos), que fue bloqueada en la cuenta del comprador. Se utiliza solo en pagos de dos etapas. En caso de autorización parcial esta suma puede ser menor que la suma, solicitada durante el registro del pedido. |
| 03+ | Opcional | depositedAmount |
Integer [1..12] | Importe del débito en unidades mínimas de moneda (por ejemplo, en kopeks). En caso de autorización parcial, este importe puede ser menor que el importe solicitado durante el registro del pedido. |
| 03+ | Opcional | refundedAmount |
Integer [1..12] | Monto del reembolso en unidades mínimas de moneda. |
| 03+ | Opcional | paymentState |
String | Estado del pedido, el parámetro puede tomar los siguientes valores:
|
| 18+ | Opcional | totalAmount |
Integer [1..20] | Importe del pedido más comisión, si la hubiera. |
El elemento bankInfo contiene los siguientes parámetros.
| Versión | Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|---|
| 03+ | Opcional | bankName |
String [1..50] | Nombre del banco emisor. |
| 03+ | Opcional | bankCountryCode |
String [1..4] | Código del país del banco emisor. |
| 03+ | Opcional | bankCountryName |
String [1..160] | País del banco emisor. |
El elemento payerData contiene los siguientes parámetros.
| Versión | Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|---|
| 13+ | Opcional | email |
String [1..40] | Correo electrónico del pagador. |
| 13+ | Opcional | phone |
String [7..15] | Número de teléfono del titular 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 esta manera, son posibles los siguientes valores:
Para pagos por VISA con autorización 3DS es necesario indicar el correo electrónico o el número de teléfono del titular de la tarjeta. |
| 13+ | Opcional | postAddress |
String [1..255] | Dirección de entrega. |
| 38+ | 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). |
El bloque efectyOrderInfo contiene los siguientes parámetros.
| Versión | Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|---|
| 23+ | Opcional | referenceNumber |
Integer | Número de referencia Efecty del pedido, generado en el lado de Efecty |
| 23+ | Opcional | referenceDate |
Integer | Fecha/hora de creación de la referencia |
| 23+ | Opcional | referenceStatus |
String | Estado del pedido Efecty |
| 23+ | Opcional | referenceTerm |
Integer | Tiempo de vida del pedido Efecty (en horas) |
| 23+ | Opcional | networkID |
Integer | Identificador de la red de recepción de pago en efectivo (para Efecty valor constante - 1) |
| 23+ | Opcional | networkName |
String | Nombre de la red de recepción de pago en efectivo (para Efecty valor constante - efecty) |
El elemento pluginInfo (objeto JSON) está presente en la respuesta si el pago fue realizado a través de un plugin de pago. Contiene los siguientes parámetros.
| Versión | Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|---|
| 28+ | Opcional | name |
String [1..32] | Denominación única del plugin de pago. |
| 28+ | Opcional | params |
Object | Los parámetros para el método de pago específico deben transmitirse de la siguiente manera {"param":"value","param2":"value2"}. |
Descripción de parámetros en el objeto orderBundle:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | orderCreationDate |
String [19] | Fecha de creación del pedido en formato YYYY-MM-DDTHH:MM:SS. |
| Opcional | customerDetails |
Object | Bloque que contiene los atributos del cliente. La descripción de los atributos de la etiqueta se proporciona a continuación. |
| Obligatorio | cartItems |
Object | Objeto que contiene atributos de productos en el carrito. La descripción de elementos anidados se proporciona a continuación. |
Descripción de parámetros en el objeto loyalties:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | bonusAmountForCredit |
String [0..18] | Suma total de bonos para todos los productos de este positionId para acreditar en la cuenta de bonos del cliente en unidades mínimas de moneda. |
| Opcional | bonusAmountForDebit |
String [0..18] | Cantidad total de bonificaciones para todos los productos de este positionId para el débito de la cuenta de bonificaciones del cliente en unidades mínimas de moneda. |
| Obligatorio | bonusAmountRefunded |
String [0..18] | Suma total de bonos devueltos para el positionId dado en unidades mínimas de moneda. |
Descripción de parámetros en el objeto customerDetails:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | contact |
String [0..40] | Método de contacto preferido por el cliente. |
| Opcional | fullName |
String [1..100] | Nombres y apellidos del pagador. |
| Opcional | passport |
String [1..100] | Serie y número del pasaporte del pagador en el siguiente formato: 2222888888
|
| Opcional | deliveryInfo |
Object | Objeto que contiene los atributos de la dirección de entrega. La descripción de los elementos anidados se proporciona a continuación. |
Descripción de los parámetros en el objeto deliveryInfo:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | deliveryType |
String [1..20] | Método de entrega. |
| Obligatorio | country |
String [2] | Código de país de dos letras para la entrega. |
| Obligatorio | city |
String [0..40] | Ciudad de destino. |
| Obligatorio | postAddress |
String [1..255] | Dirección de entrega. |
Descripción de parámetros en el objeto cartItems:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | items |
Object | Elemento del array con atributos de la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
Descripción de parámetros en el objeto items:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | positionId |
Integer [1..12] | Identificador único de la posición del producto en el carrito. |
| Obligatorio | name |
String [1..255] | Denominación o descripción de la partida de mercancía en forma libre. |
| No obligatorio | itemDetails |
Object | Objeto con parámetros de descripción de la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
| Obligatorio | quantity |
Object | Elemento que describe la cantidad total de posiciones de mercancías de un positionId y sus unidades de medida. La descripción de los elementos anidados se presenta a continuación. |
| No obligatorio | itemAmount |
Integer [1..12] | Suma del costo de todas las posiciones de mercancías de un positionId en unidades mínimas de moneda. itemAmount es obligatorio para la transmisión, solo si no se transmitió el parámetro itemPrice. En caso contrario, la transmisión de itemAmount no es requerida. Si en la solicitud se transmiten ambos parámetros: itemPrice e itemAmount, entonces itemAmount debe ser igual a itemPrice * quantity, en caso contrario la solicitud finalizará con error. |
| No obligatorio | itemPrice |
Integer [1..18] | Suma del costo de la posición de mercancía de un positionId en dinero en unidades mínimas de moneda. |
| No obligatorio | depositedItemAmount |
String [1..18] | Importe del débito para un positionId en unidades mínimas de moneda (por ejemplo, en copecks). |
| No obligatorio | itemCurrency |
Integer [3] | Código de moneda ISO 4217. Si no se especifica, se considera igual a la moneda del pedido. |
| Obligatorio | itemCode |
String [1..100] | Número (identificador) de la posición de mercancía en el sistema de la tienda. |
Descripción de los parámetros en el objeto quantity:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | value |
Number [1..18] | Cantidad de posiciones de mercancías de dicho positionId. Para indicar números fraccionarios utilice el punto decimal. Se permite un máximo de 3 dígitos después del punto. |
| Obligatorio | measure |
String [1..20] | Unidad de medida de la cantidad por posición. |
Descripción de parámetros en el objeto itemDetails:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | itemDetailsParams |
Object | Parámetro que describe información adicional sobre la posición de mercancía. La descripción de los elementos anidados se presenta a continuación. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/getOrderStatusExtended.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data orderId=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
--data language=enEjemplo de respuesta
{
"errorCode": "0",
"errorMessage": "Success",
"orderNumber": "7005",
"orderStatus": 2,
"actionCode": 0,
"actionCodeDescription": "",
"amount": 2000,
"currency": "978",
"date": 1617972915659,
"orderDescription": "",
"merchantOrderParams": [],
"transactionAttributes": [],
"attributes": [
{
"name": "mdOrder",
"value": "01491d0b-c848-7dd6-a20d-e96900a7d8c0"
}
],
"cardAuthInfo": {
"maskedPan": "411111**1111",
"expiration": "203412",
"cardholderName": "TEST CARDHOLDER",
"approvalCode": "12345678",
"pan": "411111**1111"
},
"bindingInfo": {
"clientId": "259753456",
"bindingId": "01491394-63a6-7d45-a88f-7bce00a7d8c0"
},
"authDateTime": 1617973059029,
"terminalId": "123456",
"authRefNum": "714105591198",
"paymentAmountInfo": {
"paymentState": "DEPOSITED",
"approvedAmount": 2000,
"depositedAmount": 2000,
"refundedAmount": 0
},
"bankInfo": {
"bankCountryCode": "UNKNOWN",
"bankCountryName": "Unknown"
}
}Gestión de pedidos
Finalización del pedido
Para finalizar un pedido preautorizado se utiliza la solicitud https://dev.bpcbt.com/payment/rest/deposit.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de la solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Condición | orderId |
String [1..36] | Número de pedido en la pasarela de pagos. Único dentro de la pasarela de pagos. Es necesario transmitir |
| Condición | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. Es necesario transmitir |
| Condición | merchantLogin |
String [1..255] | Para realizar ciertas acciones con el pago del pedido en nombre de otro comerciante, especifique su login (para la cuenta API) en este parámetro. Se puede usar solo si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. Es necesario transmitir |
| Obligatorio | amount |
String [0..12] | Monto de finalización en unidades mínimas de moneda (por ejemplo, en kopecks). El monto de finalización debe corresponder al monto total de todos los productos para los cuales se realiza la finalización. Si en la solicitud se especifica amount=0, se formará una finalización por todo el monto del pedido. |
| Opcional | depositItems |
Object | Objeto que contiene los atributos de los productos en el carrito. A continuación se proporciona la descripción de los atributos incluidos. |
| 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 | 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 | jsonParams |
Object | Conjunto de atributos adicionales de forma arbitraria, estructura:jsonParams={"param_1_name":"param_1_value",...,"param_n_name":"param_n_value"}Pueden ser transmitidos al Centro de Procesamiento, para el procesamiento posterior (se requiere configuración adicional - póngase en contacto con el soporte). Algunos atributos predefinidos de jsonParams:
|
Descripción de los parámetros en el objeto deposititems:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | items |
Object | Elemento del array con atributos de la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
Descripción de parámetros en el objeto items:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | positionId |
Integer [1..12] | Identificador único de la posición del producto en el carrito. |
| Obligatorio | name |
String [1..255] | Denominación o descripción de la partida de mercancía en forma libre. |
| No obligatorio | itemDetails |
Object | Objeto con parámetros de descripción de la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
| Obligatorio | quantity |
Object | Elemento que describe la cantidad total de posiciones de mercancías de un positionId y sus unidades de medida. La descripción de los elementos anidados se presenta a continuación. |
| No obligatorio | itemAmount |
Integer [1..12] | Suma del costo de todas las posiciones de mercancías de un positionId en unidades mínimas de moneda. itemAmount es obligatorio para la transmisión, solo si no se transmitió el parámetro itemPrice. En caso contrario, la transmisión de itemAmount no es requerida. Si en la solicitud se transmiten ambos parámetros: itemPrice e itemAmount, entonces itemAmount debe ser igual a itemPrice * quantity, en caso contrario la solicitud finalizará con error. |
| No obligatorio | itemPrice |
Integer [1..18] | Suma del costo de la posición de mercancía de un positionId en dinero en unidades mínimas de moneda. |
| No obligatorio | depositedItemAmount |
String [1..18] | Importe del débito para un positionId en unidades mínimas de moneda (por ejemplo, en copecks). |
| No obligatorio | itemCurrency |
Integer [3] | Código de moneda ISO 4217. Si no se especifica, se considera igual a la moneda del pedido. |
| Obligatorio | itemCode |
String [1..100] | Número (identificador) de la posición de mercancía en el sistema de la tienda. |
Descripción de parámetros en el objeto itemDetails:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | itemDetailsParams |
Object | Parámetro que describe información adicional sobre la posición de mercancía. La descripción de los elementos anidados se presenta a continuación. |
Descripción de parámetros en el objeto itemDetailsParams:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | value |
String [1..2000] | Información adicional sobre la posición de mercancías. |
| Obligatorio | name |
String [1..255] | Denominación del parámetro de descripción de detalle de la posición de mercancía |
Descripción de los parámetros en el objeto quantity:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | value |
Number [1..18] | Cantidad de posiciones de mercancías de dicho positionId. Para indicar números fraccionarios utilice el punto decimal. Se permite un máximo de 3 dígitos después del punto. |
| Obligatorio | measure |
String [1..20] | Unidad de medida de la cantidad por posición. |
Parámetros de la 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 --request POST \
--url https://dev.bpcbt.com/payment/rest/deposit.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data currency=978\
--data amount=2000 \
--data orderId=01492437-d2fb-77fa-8db7-9e2900a7d8c0 \
--data language=enEjemplo de respuesta
{
"errorCode": 0,
"errorMessage":"Success"
}Cancelación de pago
Para la cancelación de pago se utiliza la solicitud https://dev.bpcbt.com/payment/rest/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 Soporte para conocer el período exacto, ya que varía.
Al ejecutar la solicitud es necesario usar el encabezado:
Content-Type: application/x-www-form-urlencoded
El pago se puede cancelar solo una vez. Si termina con error, entonces las operaciones posteriores de cancelación de pago no funcionarán.
La disponibilidad de esta función es posible por acuerdo con el banco. La cancelación puede ejecutarse solo por usuarios a los que se les otorgaron los permisos de sistema correspondientes.
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..30] | Login de la cuenta API del vendedor. Si se utiliza un token público (parámetro token) para la autenticación durante el registro en lugar del login y la contraseña, no es necesario transmitir la contraseña. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Condición | orderId |
String [1..36] | Número de pedido en la pasarela de pagos. Único dentro de la pasarela de pagos. Es necesario transmitir |
| Condición | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. Es necesario transmitir |
| Condición | merchantLogin |
String [1..255] | Para cancelar un pedido en nombre de otro comerciante, especifique su login (para cuenta API) en este parámetro. Solo se puede usar si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. Es necesario transmitir |
| 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 | jsonParams |
String | Los campos para almacenar datos adicionales deben pasarse de la siguiente manera: {"param":"value","param2":"value2"}. |
| Opcional | amount |
String [0..12] | Importe de cancelación en unidades mínimas de moneda (por ejemplo, en kopeks). El importe de cancelación debe ser menor o igual al importe autorizado del pedido (para pedidos de dos etapas - el importe total preautorizado del pedido). |
| 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. |
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 --request POST \
--url https://dev.bpcbt.com/payment/rest/reverse.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data currency=978\
--data orderId=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
--data language=enEjemplo de respuesta
{
"errorCode": 0,
"errorMessage":"Success"
}Devolución de fondos
Utilice https://dev.bpcbt.com/payment/rest/refund.do` para enviar solicitudes de devolución de fondos.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
No se puede realizar la devolución de fondos para pedidos que inicien pagos regulares, ya que en este caso no se produce el débito de fondos.
Por esta solicitud los fondos del pedido especificado serán devueltos al pagador. La solicitud terminará 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 monto inicial del débito.
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Condición | orderId |
String [1..36] | Número de pedido en la pasarela de pagos. Único dentro de la pasarela de pagos. Es necesario transmitir |
| Condición | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. Es necesario transmitir |
| Condición | merchantLogin |
String [1..255] | Para realizar ciertas acciones con el pago del pedido en nombre de otro comerciante, especifique su login (para la cuenta API) en este parámetro. Se puede usar solo si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. Es necesario transmitir |
| Obligatorio | amount |
String [0..12] | Importe del reembolso en unidades mínimas de moneda (por ejemplo, en kopecs). El importe del reembolso debe ser menor o igual al importe del pedido (para pedidos de dos etapas - el importe total de finalización del pedido). Si en la solicitud se indica amount=0, se devolverá 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. |
| Opcional | jsonParams |
String | Los campos para almacenar datos adicionales deben pasarse de la siguiente manera: {"param":"value","param2":"value2"}. |
| Opcional | expectedDepositedAmount |
Integer [1..12] | El parámetro sirve para determinar que la solicitud es repetida. Si se pasa el parámetro, su valor se compara con el valor actual de depositedAmount en el pedido. La operación se ejecutará solo en el caso de que los valores coincidan. Si dos devoluciones llegan con el mismo expectedDepositedAmount, se ejecutará solo una devolución. Esta devolución cambiará el valor de depositedAmount, y luego la segunda devolución será rechazada. |
| Opcional | externalRefundId |
String [1..32] | Identificador de devolución. Al intentar la devolución se verifica externalRefundId: si existe, se devuelve una respuesta exitosa con los datos sobre la devolución, si no — se efectúa la devolución. |
| 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 | refundItems |
Object | Objeto para transmitir información sobre productos devueltos - número de posición del producto en la solicitud, nombre, detalles, unidad de medida, cantidad, moneda, código del producto, beneficio del agente. |
El parámetro refundItems incluye:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | items |
Object | Elemento del array con atributos de la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
Descripción de parámetros en el objeto items:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | positionId |
Integer [1..12] | Identificador único de la posición del producto en el carrito. |
| Obligatorio | name |
String [1..255] | Denominación o descripción de la partida de mercancía en forma libre. |
| No obligatorio | itemDetails |
Object | Objeto con parámetros de descripción de la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
| Obligatorio | quantity |
Object | Elemento que describe la cantidad total de posiciones de mercancías de un positionId y sus unidades de medida. La descripción de los elementos anidados se presenta a continuación. |
| No obligatorio | itemAmount |
Integer [1..12] | Suma del costo de todas las posiciones de mercancías de un positionId en unidades mínimas de moneda. itemAmount es obligatorio para la transmisión, solo si no se transmitió el parámetro itemPrice. En caso contrario, la transmisión de itemAmount no es requerida. Si en la solicitud se transmiten ambos parámetros: itemPrice e itemAmount, entonces itemAmount debe ser igual a itemPrice * quantity, en caso contrario la solicitud finalizará con error. |
| No obligatorio | itemPrice |
Integer [1..18] | Suma del costo de la posición de mercancía de un positionId en dinero en unidades mínimas de moneda. |
| No obligatorio | depositedItemAmount |
String [1..18] | Importe del débito para un positionId en unidades mínimas de moneda (por ejemplo, en copecks). |
| No obligatorio | itemCurrency |
Integer [3] | Código de moneda ISO 4217. Si no se especifica, se considera igual a la moneda del pedido. |
| Obligatorio | itemCode |
String [1..100] | Número (identificador) de la posición de mercancía en el sistema de la tienda. |
Descripción de parámetros en el objeto itemAttributes:
El parámetro itemAttributes debe contener un array attributes, y ya en este array están ubicados los atributos de la posición de mercancía (ver ejemplo y tabla abajo).
"itemAttributes":{"attributes":[{"name":"paymentMethod","value":"1"},{"name":"paymentObject","value":"1"}]}| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | paymentMethod |
Integer [1..2] | Tipo de pago, valores disponibles:
|
| Obligatorio | |||
| Condición | nomenclature |
String [1..95] | Código de nomenclatura de mercancías en representación hexadecimal con espacios. Longitud máxima – 32 bytes. Obligatorio, si se transmite markQuantity. |
| No obligatorio | markQuantity |
Object | Cantidad fraccionaria del producto marcado. |
| No obligatorio | userData |
String [1..64] | Valor del requisito del usuario. Solo se puede transmitir después de la coordinación con el TAG_N. |
| No obligatorio | agent_info |
Object | Objeto con datos sobre el agente de pago para la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
| No obligatorio | supplier_info |
Object | Objeto con datos sobre el proveedor para la posición de mercancía. La descripción de los elementos anidados se proporciona a continuación. |
Descripción de los parámetros en el objeto agent_info:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | type |
Integer | Tipo de agente, valores disponibles:
|
| Opcional | paying |
Object | Objeto con datos sobre el agente de pago. La descripción de los elementos anidados se proporciona a continuación. |
| Opcional | paymentsOperator |
Object | Objeto con información sobre el operador de recepción de pagos. La descripción de los elementos anidados se proporciona a continuación. |
| Opcional | MTOperator |
Object | Objeto con datos sobre el Operador de traducción. La descripción de los elementos anidados se proporciona a continuación. |
Descripción de parámetros en el objeto paying:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | operation |
String [1..24] | Nombre de la transacción del agente de pago. |
| Opcional | phones |
Array of strings | Matriz de números de teléfono del agente de pagos en formato +N. |
Descripción de parámetros en el objeto paymentsOperator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | phones |
Array of strings | Matriz de números de teléfono del agente de pago en formato +N. |
Descripción de parámetros en el objeto MTOperator:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | phones |
Array of strings | Matriz de números de teléfono del operador de traducción en formato +N. |
| Opcional | name |
String [1..256] | Denominación del operador de transferencia. |
| Opcional | address |
String [1..256] | Dirección del operador de transferencia. |
| Opcional | inn |
String [10..12] | NIF del operador de transferencia. |
Descripción de parámetros en el objeto supplier_info:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | phones |
Array of strings | Matriz de números de teléfono del proveedor en formato +N. |
| Opcional | name |
String [1..256] | Denominación del proveedor. |
| Opcional | inn |
Integer [10..12] | INN del proveedor |
Descripción de los parámetros del objeto markQuantity.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | numerator |
Integer [1..12] | Numerador de la parte fraccionaria del objeto de pago. |
| Obligatorio | denominator |
Integer [1..12] | Denominador de la parte fraccionaria del objeto de pago. |
Descripción de los parámetros en el objeto quantity:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | value |
Number [1..18] | Cantidad de posiciones de mercancías de dicho positionId. Para indicar números fraccionarios utilice el punto decimal. Se permite un máximo de 3 dígitos después del punto. |
| Obligatorio | measure |
String [1..20] | Unidad de medida de la cantidad por posición. |
Valores posibles del parámetro measure:
| Valor | Descripción |
|---|---|
| 0 | Se aplica a posiciones que pueden ser realizadas individualmente o por unidades separadas, así como si el objeto de pago es un artículo sujeto a marcado de identificación obligatorio. |
| 10 | Gramo |
| 11 | Kilogramo |
| 12 | Tonelada |
| 20 | Centímetro |
| 21 | Decímetro |
| 22 | Metro |
| 30 | Centímetro cuadrado |
| 31 | Decímetro cuadrado |
| 32 | Metro cuadrado |
| 40 | Mililitro |
| 41 | Litro |
| 42 | Metro cúbico |
| 50 | Kilovatio hora |
| 51 | Gigacaloría |
| 70 | Día |
| 71 | Hora |
| 72 | Minuto |
| 73 | Segundo |
| 80 | Kilobyte |
| 81 | Megabyte |
| 82 | Gigabyte |
| 83 | Terabyte |
| 255 | Se aplica a otras unidades de medida |
Descripción de parámetros en el objeto itemDetails:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | itemDetailsParams |
Object | Parámetro que describe información adicional sobre la posición de mercancía. La descripción de los elementos anidados se presenta a continuación. |
Descripción de parámetros en el objeto itemDetailsParams:
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | value |
String [1..2000] | Información adicional sobre la posición de mercancías. |
| Obligatorio | name |
String [1..255] | Denominación del parámetro de descripción de detalle de la posición de mercancía |
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 --request POST \
--url https://dev.bpcbt.com/payment/rest/refund.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data currency=978\
--data orderId=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
--data amount=2000 \
--data language=enEjemplo de respuesta
{
"errorCode": 0,
"errorMessage":"Success"
}Reembolso instantáneo
Utilice la solicitud https://dev.bpcbt.com/payment/rest/instantRefund.do para reembolsar fondos por un pedido. Con esta solicitud los fondos del pedido serán devueltos al pagador.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | amount |
Integer [0..12] | Monto del reembolso en unidades mínimas de moneda (por ejemplo, en kopeks). |
| 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 | 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. |
| Condición | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del vendedor debe ser único para cada vendedor registrado en la Pasarela de Pagos. Si el número de pedido se forma del lado del comerciante, este parámetro es opcional. |
| 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:
|
| Condición | seToken |
String [1..8192] | Datos cifrados de la tarjeta, introducidos por el cliente en el lado del comerciante. Deben ser transmitidos si se utilizan en lugar de los datos de la tarjeta: pan, cvc, expiry y cardHolderName. Combinaciones permitidas de seToken:
MdOrder no debe estar presente en seToken. Si se especifica bindingId, entonces en lugar de mdOrder se indica un valor vacío //bindingId.Para más detalles sobre la generación de seToken ver aquí. |
| Condición | pan |
String [1..19] | Número de tarjeta enmascarado. Obligatorio si no se han pasado ni seToken ni bindingId. |
| Condición | cvc |
String [3] | Código CVC/CVV2 en el reverso de la tarjeta. Es obligatorio si el comerciante no tiene permiso para realizar pagos sin CVC. Obligatorio si no se transmiten ni seToken ni bindingId. Se permiten solo dígitos. |
| Condición | expiry |
Integer [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. Obligatorio, si no se han transmitido ni seToken, ni bindingId. |
| Condición | cardHolderName |
String [1..26] | Nombre del portador de la tarjeta en letras latinas. Obligatorio si no se han transmitido ni seToken ni bindingId. |
| Opcional | jsonParams |
String | Los campos para almacenar datos adicionales deben pasarse de la siguiente manera: {"param":"value","param2":"value2"}. |
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. |
| Opcional | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Opcional | orderStatus |
Object | Bloque con información sobre el estado del pedido. Ver parámetros anidados. |
A continuación se presentan los parámetros del bloque orderStatus.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | approvalCode |
String [6] | Código de autorización del sistema de pagos internacionales. Este campo tiene una longitud fija (seis caracteres) y puede contener dígitos y letras latinas. |
| Opcional | rrn |
Integer [1..12] | Reference Retrieval Number - identificador de transacción asignado por el banco adquirente. |
| 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 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 establece en el parámetro language de la solicitud. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/instantRefund.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data amount=2000 \
--data userName=test_user \
--data password=test_user_password \
--data orderNumber=1218637308 \
--data pan=4000001111111118 \
--data cvc=123 \
--data expiry=203012 \
--data cardHolderName=TEST CARDHOLDER \
--data language=enEjemplo de respuesta - Reembolso instantáneo exitoso y obtención exitosa del estado del pedido
{
"errorCode": "0",
"errorMessage": "Success",
"orderId": "04899a8a-3bfd-7ceb-ac10-9e6909017350",
"orderStatus": {
"ErrorCode": "7",
"ErrorMessage": "System error",
}
}Ejemplo de respuesta - Reembolso instantáneo exitoso y obtención NO exitosa del estado del pedido
{
"errorCode": "0",
"errorMessage": "Success",
"orderId": "04899a8a-3bfd-7ceb-ac10-9e6909017350",
"orderStatus": {
"ErrorCode": "7",
"ErrorMessage": "System error",
}
}Ejemplo de respuesta - Reembolso instantáneo no exitoso (por ejemplo, error de validación)
{
"errorCode": "5",
"errorMessage": "Access denied"
}Cancelación de pedido
Para cancelar un pedido aún no pagado, utilice la solicitud https://dev.bpcbt.com/payment/rest/decline.do. Solo se puede rechazar un pedido que no haya sido completado.
Después de la ejecución exitosa de esta solicitud, el pedido pasa al estado DECLINED.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Opcional | merchantLogin |
String [1..255] | Para registrar un pedido a nombre de otro comerciante, especifique su login (para la cuenta API) en este parámetro. Se puede utilizar solo si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. |
| 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. |
| Obligatorio | 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. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/decline.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data orderId=8cf0409e-857e-7f95-8ab1-b6810009d884 \
--data orderNumber=12345678 \
--data merchantLogin=merch_test418 \
--data language=enEjemplo de respuesta
{
"errorCode": 0,
"errorMessage":"Success"
}Datos de pago guardados
Las siguientes solicitudes de API permiten gestionar transacciones con datos de pago guardados. La transacción con datos de pago guardados se utiliza cuando el portador de la tarjeta autoriza al comerciante a almacenar los datos de pago para futuros pagos. Aprenda más sobre los datos de pago guardados aquí.
Pago por vinculación
Para el pago del pedido por vinculación se utiliza la solicitud https://dev.bpcbt.com/payment/rest/paymentOrderBinding.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | mdOrder |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| Obligatorio | 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 | 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 | cvc |
String [3] | La transmisión del parámetro se determina por el tipo de pago:
|
| Opcional | threeDSSDK |
Boolean | Valores posibles: true o false Bandera que indica que el pago proviene del 3DS SDK. |
| Obligatorio | tii |
String | Identificador del iniciador de la transacción. Parámetro que indica qué tipo de operación realizará el iniciador (Cliente o Comerciante). Valores posibles: F, U. Ver descripción de valores. |
| Condición | email |
String [1..40] | Correo electrónico para mostrar en la página de pago. Si las notificaciones del cliente están configuradas 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. |
| 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 | 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). |
| Opcional | externalScaExemptionIndicator |
String | Tipo de excepción SCA (Strong Customer Authentication). Si se especifica este parámetro, la transacción será procesada dependiendo de sus configuraciones en la pasarela de pago: ya sea 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 pago. |
| Condición | seToken |
String [1..8192] | 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, bindingId, MDORDER. Más detalles sobre la generación de seToken ver aquí. |
Es necesario pasar uno de los siguientes conjuntos de parámetros: pan+expirationYear+expirationMonth o seToken.
|
Valores posibles de tii (Para más detalles sobre los tipos de datos de pago guardados soportados por la pasarela de pagos, lea aquí).
Valor tii
|
Descripción | Tipo de transacción | Iniciador de transacción | Datos de tarjeta para transacción | Guardado de datos de tarjeta después de transacción | Nota |
|---|---|---|---|---|---|---|
| F | Pago no programado (CIT) | Subsecuente | Comprador | Cliente selecciona tarjeta en lugar de entrada manual | No | Transacción de comercio electrónico que utiliza datos de pago guardados regulares previamente guardados. |
| U | Pago no programado (MIT) | Subsecuente | Vendedor | Sin entrada manual, vendedor transmite datos | No | Transacción de comercio electrónico que utiliza datos de pago guardados regulares previamente guardados. Se utiliza solo para pagos de una etapa. |
A continuación se presentan los parámetros del bloque clientBrowserInfo (datos sobre el navegador del cliente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | userAgent |
String [1..2048] | Agente del navegador. |
| Opcional | OS |
String | Sistema operativo. |
| Opcional | OSVersion |
String | Versión del sistema operativo. |
| Opcional | browserAcceptHeader |
String [1..2048] | Cabecera Accept, que informa al servidor qué formatos (o tipos MIME) soporta el navegador. |
| Opcional | browserIpAddress |
String [1..45] | Dirección IP del navegador. |
| Opcional | browserLanguage |
String [1..8] | Idioma del navegador. |
| Opcional | browserTimeZone |
String | Zona horaria del navegador. |
| Opcional | browserTimeZoneOffset |
String [1..5] | Desplazamiento de zona horaria en minutos entre la hora local del usuario y UTC. |
| Opcional | colorDepth |
String [1..2] | Profundidad de color de la pantalla, en bits. |
| Opcional | fingerprint |
String | Huella digital del navegador - identificador digital único del navegador. |
| Opcional | isMobile |
Boolean | Valores posibles: true o false. Bandera que indica que se utiliza un dispositivo móvil. |
| Opcional | javaEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para java está habilitado en el navegador. |
| Opcional | javascriptEnabled |
Boolean | Valores posibles: true o false. Bandera que indica que el soporte para javascript está habilitado en el navegador. |
| Opcional | plugins |
String | Lista de plugins utilizados en el navegador, separados por comas. |
| Opcional | screenHeight |
Integer [1..6] | Altura de la pantalla en píxeles. |
| Opcional | screenWidth |
Integer [1..6] | Ancho de la pantalla en píxeles. |
| Opcional | screenPrint |
String | Datos sobre los parámetros de impresión del navegador, incluyendo resolución, profundidad de color, densidad de píxeles. |
Ejemplo del bloque clientBrowserInfo:
"clientBrowserInfo":
{
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.41",
"fingerprint":850891523,
"OS":"Windows",
"OSVersion":"10",
"isMobile":false,
"screenPrint":"Current Resolution: 1536x864, Available Resolution: 1536x824, Color Depth: 24, Device XDPI: undefined, Device YDPI: undefined",
"colorDepth":24,
"screenHeight":"864",
"screenWidth":"1536",
"plugins":"PDF Viewer, Chrome PDF Viewer, Chromium PDF Viewer, Microsoft Edge PDF Viewer, WebKit built-in PDF",
"javaEnabled":false,
"javascriptEnabled":true,
"browserLanguage":"it-IT",
"browserTimeZone":"Europe/Rome",
"browserTimeZoneOffset":-120,
"browserAcceptHeader":"gzip",
"browserIpAddress":"x.x.x.x"
}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 | 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 | info |
String | En caso de respuesta exitosa. Resultado del intento de pago. A continuación se presentan los posibles valores.
|
| Opcional | error |
String [1..512] | Mensaje de error (si se devolvió un error en la respuesta) en el idioma transmitido en la solicitud. |
| Opcional | processingErrorType |
String | Tipo de error de procesamiento. Se transmite si el error surge del lado del procesamiento, no en la pasarela de pagos, mientras que el número de intentos de pago no se ha excedido y aún no ha habido redirección a la página final. |
| Opcional | displayErrorMessage |
String | Mensaje de error mostrado. |
| Opcional* | errorTypeName |
String | Parámetro necesario para la página frontend para determinar el tipo de error. Obligatorio para pagos fallidos. |
| 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 | 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. 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. |
| Opcional | bindingId |
String [1..255] | Identificador del enlace creado al pagar el pedido o utilizado para el pago. Presente solo si el comerciante tiene permiso para trabajar con enlaces. |
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). |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/paymentOrderBinding.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data mdOrder=01491d0b-c848-7dd6-a20d-e96900a7d8c0 \
--data bindingId=01491394-63a6-7d45-a88f-7bce00a7d8c0 \
--data cvc=123 \
--data tii=F \
--data language=enEjemplo de respuesta exitosa para pago SSL (sin 3-D Secure)
{
"redirect": "https://dev.bpcbt.com/payment/merchants/temp/finish.html?orderId=01491d0b-c848-7dd6-a20d-e96900a7d8c0&lang=en",
"info": "Your order is proceeded, redirecting...",
"errorCode": 0
}Ejemplo de respuesta exitosa para pago 3D-Secure
{
"info": "Your order is proceeded, redirecting...",
"errorCode": 0,
"acsUrl": "https://theacsserver.com/acs/auth/start.do",
"paReq": "eJxVUu9vgjAQ/...4BaHYvAI=",
"termUrl": "https://dev.bpcbt.com/payment/rest/finish3ds.do?lang=en"
}Ejemplo de respuesta con error
{
"error": "[clientId] is empty",
"errorCode": 5,
"is3DSVer2": false,
"errorMessage": "[clientId] is empty"
}Obtención de vinculaciones
Para obtener la lista de vinculaciones de cliente se utiliza la solicitud https://dev.bpcbt.com/payment/rest/getBindings.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | 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 | 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 | userName |
String [1..30] | Login de la cuenta API del vendedor. Si se utiliza un token público (parámetro token) para la autenticación durante el registro en lugar del login y la contraseña, no es necesario transmitir la contraseña. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. Si para la autenticación durante el registro se utiliza un token público (parámetro token) en lugar de login y contraseña, no es necesario transmitir la contraseña. |
| 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 | bindingType |
String | Tipo de vinculación que se espera en la respuesta (si no se especifica, se devuelven todos los tipos). Valores posibles:
|
| Opcional | showExpired |
Boolean | Parámetro true/false que determina si mostrar las vinculaciones con tarjetas vencidas. Valor por defecto: false. |
| Opcional | merchantLogin |
String [1..255] | Para obtener la lista de credenciales guardadas por el cliente de otro comerciante, especifique en este parámetro el login del comerciante (para la cuenta API). Se puede usar solo si tiene permiso para ver las transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. Tanto usted como el vendedor especificado deben tener permiso para trabajar con credenciales guardadas (enlaces). |
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 | bindings |
Object | Elemento con bloques que contienen parámetros de enlaces. Ver descripción a continuación. |
El elemento bindings contiene los siguientes parámetros.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | maskedPan |
String [1..19] | Número de tarjeta enmascarado utilizado para el pago. Contiene los primeros 6 y últimos 4 dígitos reales del número de tarjeta en formato XXXXXX**XXXX. |
| Opcional | paymentWay |
String | Método de realización del pago (pago con introducción de datos de tarjeta, pago por vinculación, etc.). Los valores adicionales posibles del parámetro se presentan abajo |
| Obligatorio | 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:
|
| Obligatorio | expiryDate |
String [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. |
| Opcional | bindingCategory |
String | Propósito de la vinculación esperada en la respuesta. Valores posibles: COMMON, INSTALLMENT, RECURRENT. |
| 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 | displayLabel |
String [1..16] | Los últimos 4 dígitos del PAN original antes de la tokenización. |
| Opcional | paymentSystem |
String | Nombre del sistema de pago. Son posibles los siguientes valores:
|
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/getBindings.do \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data clientId=dos-clientos \
--data bindingType=CEjemplo de respuesta exitosa
{
"errorCode":"0",
"errorMessage":"Success",
"bindings": [
{
"bindingId": "44779116-41a5-7798-b072-c0a30760e2b0",
"maskedPan": "411111**1111",
"expiryDate": "203412",
"paymentWay": "TOKEN_PAY",
"paymentSystem": "CARD",
"displayLabel": "XXXXXXXXXXXX1111",
"bindingCategory": "COMMON"
}
]
}Obtención de vinculaciones por número de tarjeta
Para obtener la lista de todas las vinculaciones de tarjeta bancaria se utiliza la solicitud https://dev.bpcbt.com/payment/rest/getBindingsByCardOrId.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Condición | pan |
String [1..19] | Número de tarjeta de pago (obligatorio, si bindinId no se transmite). El valor pan reemplaza el valor bindingId. |
| Condición | 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 | showExpired |
Boolean | Parámetro true/false que determina si mostrar las vinculaciones con tarjetas vencidas. Valor por defecto: false. |
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 | bindings |
Object | Elemento con bloques que contienen parámetros de vínculos: bindingId, maskedPan, expiryDate, clientId
|
| 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 | maskedPan |
String [1..19] | Número de tarjeta enmascarado utilizado para el pago. Contiene los primeros 6 y últimos 4 dígitos reales del número de tarjeta en formato XXXXXX**XXXX. |
| Opcional | expiryDate |
String [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. |
| 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. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/getBindingsByCardOrId.do \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data pan=4000001111111118Ejemplo de solicitud exitosa
{
"errorCode":"0",
"errorMessage":"Success",
"bindings": [
{
"bindingId":"69d6a793-afb5-79be-8ce7-63ff00a8656a",
"maskedPan":"400000**1118",
"expiryDate":"203012",
"clientId":"12"
}
{
"bindingId":"6a8c0738-cc88-4200-acf6-afc264d66cb0",
"maskedPan":"400000**1118",
"expiryDate":"203012",
"clientId":"13"
}
]
}Desactivación de vinculación
Para desactivar una vinculación existente se utiliza la solicitud https://dev.bpcbt.com/payment/rest/unBindCard.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | 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:
|
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 --request POST \
--url https://dev.bpcbt.com/payment/rest/unBindCard.do \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data bindingId=fd3afc57-c6d0-4e08-aaef-1b7cfeb093dcEjemplo de respuesta (error)
{
"errorCode":"2",
"errorMessage":"Vinculación no activa",
}Activación de vinculación
La solicitud utilizada para activar una vinculación existente que fue desactivada se llama https://dev.bpcbt.com/payment/rest/bindCard.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | 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:
|
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 --request POST \
--url https://dev.bpcbt.com/payment/rest/bindCard.do \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data bindingId=fd3afc57-c6d0-4e08-aaef-1b7cfeb093dcEjemplo de respuesta (error)
{
"errorCode":"2",
"errorMessage":"Binging is active",
}Extensión del período de validez de la vinculación
La solicitud utilizada para extender el período de validez de una vinculación existente se llama https://dev.bpcbt.com/payment/rest/extendBinding.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | 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:
|
| Obligatorio | newExpiry |
Integer [6] | Nueva fecha (año y mes) de vencimiento en formato YYYYMM. |
| 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. |
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 --request POST \
--url https://dev.bpcbt.com/payment/rest/extendBinding.do \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data bindingId=fd3afc57-c6d0-4e08-aaef-1b7cfeb093dc
--data newExpiry=202212
--data language=enEjemplo de respuesta
{
"errorCode":"0",
"errorMessage":"Success",
}Pago recurrente
Para realizar un pago recurrente se utiliza la solicitud https://dev.bpcbt.com/payment/recurrentPayment.do. La solicitud se utiliza para registrar y procesar el pago del pedido.
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..100] | 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. |
| 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 | 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 | 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:
|
| Obligatorio | 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 | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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 | preAuth |
Boolean | Parámetro que determina la necesidad de autorización previa (bloqueo de fondos en la cuenta del cliente antes de su débito). Están disponibles los siguientes valores:
|
| Opcional | autocompletionDate |
String [19] | Fecha y hora de finalización automática del pago de dos etapas en el siguiente formato: 2025-12-29T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | autoReverseDate |
String [19] | Fecha y hora de cancelación automática del pago de dos etapas en el siguiente formato: 2025-06-23T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | features |
String | Funciones del pedido. Para especificar varias funciones, use este parámetro varias veces en una sola solicitud. A continuación se muestran los valores posibles.
|
| Opcional | additionalParameters |
Object | Parámetros adicionales del pedido, que se almacenan en el panel personal del vendedor para su posterior visualización. Cada nuevo par de nombre de parámetro y su valor debe estar separado por una coma. A continuación se muestra un ejemplo de uso.{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
|
| Opcional | 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. |
| 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 previo. 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:
|
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | success |
Boolean | Parámetro principal que indica que la solicitud se procesó exitosamente. Están disponibles los siguientes valores:
Tenga en cuenta que el valor true significa que la solicitud fue procesada, no que el pedido fue pagado.Información más detallada sobre cómo saber si el pago fue exitoso o no, está disponible aquí. |
| Condicional | data |
N/A | Este parámetro se devuelve solo en caso de procesamiento exitoso del pago. Ver descripción a continuación. |
| Condicional | error |
N/A | Este parámetro se devuelve solo en caso de error del pago. Ver descripción a continuación. |
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). |
El bloque data contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
El bloque error contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | code |
String [1..3] | Código como parámetro informativo que informa sobre el error. |
| Obligatorio | description |
String [1..598] | Explicación técnica detallada del error - el contenido de este parámetro no está destinado a ser mostrado al usuario. |
| Obligatorio | message |
String [1..512] | Parámetro informativo que es la descripción del error para mostrar al usuario. El parámetro puede variar, por lo que no se debe hacer referencia explícita a sus valores en el código. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/recurrentPayment.do \
--header 'Content-Type: application/json' \
--data-raw '{
"userName" : "test_user",
"password" : "test_user_password",
"orderNumber" : "UAF-203974-DE-12",
"language" : "EN",
"bindingId": "bindingId",
"amount" : 1200,
"currency" : "978",
"description" : "Test description",
"additionalParameters" : {
"firstParamName" : "firstParamValue",
"secondParamName" : "secondParamValue"
"email" : "email@email.com"
}
}'Ejemplo de respuesta - Exitoso
{
"success": true,
"data": {
"orderId": "f7beebe4-7c9a-43cf-8e26-67ab741f9b9e"
},
"orderStatus": {
"errorCode": "0",
"orderNumber": "UAF-203974-DE-12",
"orderStatus": 2,
"actionCode": 0,
"actionCodeDescription": "",
"amount": 12300,
"currency": "978",
"date": 1491333938243,
"orderDescription": "Test description",
"merchantOrderParams": [
{
"name": "firstParamName",
"value": "firstParamValue"
},
{
"name": "secondParamName",
"value": "secondParamValue"
}
],
"attributes": [],
"cardAuthInfo": {
"expiration": "203012",
"cardholderName": "TEST CARDHOLDER",
"approvalCode": "12345678",
"paymentSystem": "VISA",
"pan": "6777770000**0006"
},
"authDateTime": 1491333939454,
"terminalId": "11111",
"authRefNum": "111111111111",
"paymentAmountInfo": {
"paymentState": "DEPOSITED",
"approvedAmount": 12300,
"depositedAmount": 12300,
"refundedAmount": 0
},
"bankInfo": {
"bankCountryName": "<unknown>"
},
"chargeback": false,
"operations": [
{
"amount": 12300,
"cardHolder": "TEST CARDHOLDER",
"authCode": "123456"
}
]
}
}Error
{
"error": {
"code": "10",
"description": "Order with this number is already registered in the system.",
"message": "Order with this number is already registered in the system."
},
"success": false
}Pago a plazos
Para realizar un pago a plazos se utiliza la solicitud https://dev.bpcbt.com/payment/installmentPayment.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de la solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | userName |
String [1..30] | Login de la cuenta API del vendedor. Si se utiliza un token público (parámetro token) para la autenticación durante el registro en lugar del login y la contraseña, no es necesario transmitir la contraseña. |
| Condición | password |
String [1..30] | Contraseña de la cuenta API del vendedor. Si para la autenticación durante el registro se utiliza un token público (parámetro token) en lugar de login y contraseña, no es necesario transmitir la contraseña. |
| Obligatorio | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada 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. |
| Obligatorio | 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:
|
| Obligatorio | 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 | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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 | additionalParameters |
Object | Parámetros adicionales del pedido, que se almacenan en el panel personal del vendedor para su posterior visualización. Cada nuevo par de nombre de parámetro y su valor debe estar separado por una coma. A continuación se muestra un ejemplo de uso.{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
|
| Obligatorio | preAuth |
Boolean | Parámetro que determina la necesidad de autorización previa (bloqueo de fondos en la cuenta del cliente antes de su débito). Están disponibles los siguientes valores:
|
| Opcional | autocompletionDate |
String [19] | Fecha y hora de finalización automática del pago de dos etapas en el siguiente formato: 2025-12-29T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | autoReverseDate |
String [19] | Fecha y hora de cancelación automática del pago de dos etapas en el siguiente formato: 2025-06-23T13:02:51. Zona horaria utilizada: UTC+0. Para habilitar el envío de este campo al sistema de procesamiento, contacte al servicio de soporte técnico. |
| Opcional | features |
String | Funciones del pedido. Para especificar varias funciones, use este parámetro varias veces en una sola solicitud. A continuación se muestran los valores posibles.
|
| Condición | token |
String [1..256] | Valor utilizado para la autenticación del vendedor al enviar solicitudes al gateway de pago. Si transmites este parámetro, no transmitas userName y password. |
| Opcional | 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 Pagos. Ver parámetros anidados. |
| 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:
|
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | orderId |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
| 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. |
| Condición | orderStatus |
Object | Contiene parámetros del estado del pedido y se devuelve solo en el caso de que la pasarela de pagos haya reconocido todos los parámetros de la solicitud como correctos. Ver descripción a continuación. |
El bloque orderStatus contiene los siguientes elementos.
| 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. |
| Opcional | orderNumber |
String [1..36] | Número de pedido (ID) en el sistema del comerciante; debe ser único para cada pedido. |
| 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 | actionCode |
String | Código de respuesta del procesamiento del banco. Contiene un valor numérico. Ver la lista de códigos de respuesta aquí. |
| Opcional | actionCodeDescription |
String [1..512] | Descripción de actionCode, devuelta por el procesamiento del banco. |
| 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 | date |
Integer | Fecha de registro del pedido como cantidad de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| Opcional | ip |
String [1..39] | Dirección IP del pagador. IPv6 es compatible en todas las solicitudes (hasta 39 caracteres). |
| Opcional | chargeback |
Boolean | Si los fondos fueron devueltos forzosamente al comprador por el banco. Valores posibles: true, false. |
| Opcional | merchantOrderParams |
N/A | Sección con atributos en la que se transmiten parámetros adicionales del comerciante. Ver descripción a continuación. |
| Opcional | attributes |
Object | Atributos del pedido en el sistema de pago (número de pedido). Ver descripción a continuación. |
| Opcional | cardAuthInfo |
Object | Información sobre la tarjeta de pago del comprador. Ver descripción a continuación. |
| Opcional | authDateTime |
Integer | Fecha y hora de autorización, mostradas como el número de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| Opcional | terminalId |
String [1..10] | Identificador del terminal en el sistema que procesa el pago. |
| Opcional | authRefNum |
String [1..24] | Número de autorización del pago, asignado durante el registro del pago. |
| Opcional | paymentAmountInfo |
Object | Parámetro que contiene parámetros anidados con información sobre las cantidades de confirmación, débito y devolución. Ver descripción a continuación. |
| Opcional | bankInfo |
Object | Contiene el parámetro anidado bankCountryName. Ver descripción a continuación. |
| Opcional | bindingInfo |
Object | Objeto que contiene información sobre la vinculación por la cual se realiza el pago. Ver descripción a continuación. |
| Opcional | operations |
Object | Objeto que contiene información sobre las operaciones. Ver descripción abajo. |
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). |
El bloque merchantOrderParams contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | name |
String [1..255] | Nombre del parámetro adicional del comerciante. |
| Obligatorio | value |
String [1..1024] | Valor del parámetro adicional del vendedor - hasta 1024 caracteres. |
El bloque attributes contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | name |
String [1..255] | Nombre del parámetro adicional. |
| Obligatorio | value |
String [1..1024] | Valor del parámetro adicional - hasta 1024 caracteres. |
El bloque cardAuthInfo contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | expiration |
Integer [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. |
| Obligatorio | cardholderName |
String [1..26] | Nombre del titular de la tarjeta en letras latinas. Símbolos permitidos: letras latinas, punto, espacio. |
| Obligatorio | approvalCode |
String [6] | Código de autorización del sistema de pagos internacionales. Este campo tiene una longitud fija (seis caracteres) y puede contener dígitos y letras latinas. |
| Obligatorio | pan |
String [1..19] | DPAN enmascarado: número vinculado al dispositivo móvil del comprador y que desempeña las funciones del número de tarjeta de pago en el sistema Apple Pay. |
| Obligatorio | maskedPan |
String [1..19] | Número de tarjeta enmascarado utilizado para el pago. Contiene los primeros 6 y últimos 4 dígitos reales del número de tarjeta en formato XXXXXX**XXXX. |
| Obligatorio | paymentSystem |
String | Nombre del sistema de pago. Son posibles los siguientes valores:
|
El bloque paymentAmountInfo contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | paymentState |
String | Estado del pedido, el parámetro puede tomar los siguientes valores:
|
| Obligatorio | approvedAmount |
Integer [0..12] | Suma en unidades mínimas de moneda (por ejemplo, en centavos), que fue bloqueada en la cuenta del comprador. Se utiliza solo en pagos de dos etapas. En caso de autorización parcial esta suma puede ser menor que la suma, solicitada durante el registro del pedido. |
| Obligatorio | depositedAmount |
Integer [1..12] | Importe del débito en unidades mínimas de moneda (por ejemplo, en kopeks). En caso de autorización parcial, este importe puede ser menor que el importe solicitado durante el registro del pedido. |
| Obligatorio | refundedAmount |
Integer [1..12] | Monto del reembolso en unidades mínimas de moneda. |
| Obligatorio | totalAmount |
Integer [1..20] | Importe del pedido más comisión, si la hubiera. |
El bloque bankInfo contiene los siguientes elementos.
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | bankCountryName |
String [1..160] | País del banco emisor. |
El elemento bindingInfo contiene los siguientes parámetros.
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| 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:
|
El elemento operations contiene los siguientes parámetros.
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Opcional | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
| Opcional | cardHolder |
String [1..26] | Nombre del titular de la tarjeta en letras latinas. Este parámetro se transmite solo después del pago del pedido. |
| Opcional | authCode |
Integer [6] | Parámetro obsoleto (no se utiliza). Su valor siempre es 2 independientemente del estado del pedido y del código de autorización del sistema de procesamiento. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/installmentPayment.do \
--header 'Content-Type: application/json' \
--data '{
"userName": "test_user",
"password": "test_user_password",
"orderNumber": "UAF-203974-DE-12",
"language": "EN",
"bindingId": "8aa4fa8b-4d8a-76ca-b314-7bcc00b4f820",
"amount": 12300,
"currency": "978",
"description" : "Test description",
"additionalParameters": {
"firstParamName": "firstParamValue",
"secondParamName": "secondParamValue"
}
}'Ejemplos de respuesta
{
"errorCode": 0,
"errorMessage": "Success",
"orderId": "0e441115-f3bc-711c-8827-2fdc00b4f820",
"orderStatus": {
"errorCode": "0",
"orderNumber": "7033",
"orderStatus": 2,
"actionCode": 0,
"actionCodeDescription": "",
"amount": 12300,
"currency": "978",
"date": 1618340470944,
"orderDescription": "Test description",
"merchantOrderParams": [
{
"name": "firstParamName",
"value": "firstParamValue"
},
{
"name": "secondParamName",
"value": "secondParamValue"
}
],
"transactionAttributes": [],
"attributes": [
{
"name": "mdOrder",
"value": "0e441115-f3bc-711c-8827-2fdc00b4f820"
}
],
"cardAuthInfo": {
"maskedPan": "400000**1118",
"expiration": "203012",
"cardholderName": "TEST CARDHOLDER",
"approvalCode": "123456",
"paymentSystem": "VISA",
"product": "visa-product",
"secureAuthInfo": {
"eci": 7
},
"pan": "400000**1118"
},
"bindingInfo": {
"clientId": "TEST CARDHOLDER",
"bindingId": "8aa4fa8b-4d8a-76ca-b314-7bcc00b4f820"
},
"authDateTime": 1618340471076,
"authRefNum": "111111111111",
"paymentAmountInfo": {
"paymentState": "DEPOSITED",
"approvedAmount": 12300,
"depositedAmount": 12300,
"refundedAmount": 0,
"totalAmount": 12300
},
"bankInfo": {
"bankName": "ES TEST BANK",
"bankCountryCode": "ES",
"bankCountryName": "Spain"
},
"chargeback": false,
"operations": [
{
"amount": 12300,
"cardHolder": "TEST CARDHOLDER",
"authCode": "123456"
}
]
},
"error": false
}Creación de datos de pago guardados sin pago
Para crear datos de pago guardados sin realizar un pago se utiliza la solicitud https://dev.bpcbt.com/payment/rest/createBindingNoPayment.do.
Al ejecutar la solicitud es necesario usar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | clientId |
String [0..255] | Número de cliente (ID) en el sistema del comerciante. Se utiliza para implementar la funcionalidad de vínculos. |
| Obligatorio | cardholderName |
String [1..26] | Nombre del titular de la tarjeta en letras latinas. Símbolos permitidos: letras latinas, punto, espacio. |
| Obligatorio | expiryDate |
String [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. |
| Obligatorio | pan |
String [1..19] | Número de tarjeta de pago |
| Opcional | additionalParameters |
Object | Parámetros adicionales del pedido, que se almacenan en el panel personal del vendedor para su posterior visualización. Cada nuevo par de nombre de parámetro y su valor debe estar separado por una coma. A continuación se muestra un ejemplo de uso.{ "firstParamName": "firstParamValue", "secondParamName": "secondParamValue"}
|
| 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. |
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 | error |
Boolean | Bandera que muestra que se devolvió un error en la respuesta. Valores permitidos: true o false. Toma el valor true si errorCode contiene un valor diferente de 0. |
| Opcional | bindingId |
String [1..255] | Identificador del enlace creado al pagar el pedido o utilizado para el pago. Presente solo si el comerciante tiene permiso para trabajar con enlaces. |
| 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 | cardholderName |
String [1..26] | Nombre del titular de la tarjeta en letras latinas. Símbolos permitidos: letras latinas, punto, espacio. |
| Opcional | expiryDate |
String [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. |
| Opcional | maskedPan |
String [1..19] | Número de tarjeta enmascarado utilizado para el pago. Contiene los primeros 6 y últimos 4 dígitos reales del número de tarjeta en formato XXXXXX**XXXX. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/createBindingNoPayment.do \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data clientId=159753456
--data pan=5555555555555599
--data expiryDate=203412
--data pan=5555555555555599
--data cardholderName=TEST CARDHOLDEREjemplo de respuesta
{
"maskedPan": "555555**5599",
"expiryDate": "203412",
"cardholderName": "TEST CARDHOLDER",
"clientId": "159753456",
"bindingId": "47dbe208-e531-4997-9c36-25a5707d3cb9",
"errorCode": 0,
"error": false
}3DS
Finalización del pago 3DS2 a través de API
Para finalizar el pedido 3DS2 a través de API se utiliza el método https://dev.bpcbt.com/payment/rest/finish3dsVer2Payment.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | threeDSServerTransId |
String [1..36] | Identificador de transacción creado en el servidor 3DS. Obligatorio para la autenticación 3DS. |
| Opcional | 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. |
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 | 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 | is3DSVer2 |
Boolean | Valores posibles: true o false Bandera que muestra que el pago proviene de 3DS2. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/finish3dsVer2Payment.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data threeDSServerTransId=33b17cb5-b4a5-48ac-a3b8-bc8d6d979a46 \
--data userName=test_user \
--data password=test_user_password \Ejemplo de respuesta
{
"redirect": "http://test.com?orderId=f61e2a41-34b9-7a2d-b4d6-83ac00c305c8&lang=en",
"errorCode": 0,
"is3DSVer2": true
}Ejemplo de solicitud con parámetro threeDSVer2MdOrder
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/finish3dsVer2Payment.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data threeDSServerTransId=33b17cb5-b4a5-48ac-a3b8-bc8d6d979a46 \
--data threeDSVer2MdOrder=fbcb596f-25ba-70e7-a6cf-4fb100c305c8 \
--data userName=test_user \
--data password=test_user_password \Ejemplo de respuesta con parámetro threeDSVer2MdOrder
{
"redirect": "http://test.com?orderId=f61e2a41-34b9-7a2d-b4d6-83ac00c305c8&lang=en",
"errorCode": 0,
"is3DSVer2": true
}Continuación del pago para 3DS2
Para continuar el pago con autorización 3DS2 se utiliza la solicitud https://dev.bpcbt.com/payment/rest/3ds/continue.do.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de la solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Condición | userName |
String [1..30] | Login de la cuenta API del vendedor. Si se utiliza un token público (parámetro token) para la autenticación durante el registro en lugar del login y la contraseña, no es necesario transmitir la contraseña. |
| Condición | password |
String [1..30] | Contraseña de la cuenta API del vendedor. Si para la autenticación durante el registro se utiliza un token público (parámetro token) en lugar de login y contraseña, no es necesario transmitir la contraseña. |
| Condición | token |
String [1..256] | Valor utilizado para la autenticación del vendedor al enviar solicitudes al gateway de pago. Si transmites este parámetro, no transmitas userName y password. |
| Obligatorio | mdOrder |
String [1..36] | Número de pedido en la pasarela de pago. Único dentro de la pasarela de pago. |
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:
|
| 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 | En caso de respuesta exitosa. Resultado del intento de pago. A continuación se presentan los posibles valores.
|
| 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. |
| 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. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/3ds/continue.do \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data mdOrder=eb708f0a-2683-7437-b458-f80400b40dc0 \
--data userName=test-user \
--data password=test-passwordEjemplo de respuesta (3DS2 completo, solicitud exitosa)
{
"info": "Your order is proceeded, redirecting...",
"errorCode": 0,
"acsUrl": "https://bestbank.com/acs2/acs/creq",
"is3DSVer2": true,
"packedCReq": "eyJ0aHJlZURTU...6IjA1In0"
}Ejemplo de respuesta (frictionless 3DS2, solicitud exitosa)
{
"redirect": "https://merchant.com/returnUrl?orderId=9666296c-e4f1-7285-a57c-20eb00b40dc1&lang=en",
"info": "Your order is proceeded, redirecting...",
"errorCode": 0,
"is3DSVer2": true
}Ejemplo de respuesta (error - estado desconocido en ARes)
{
"redirect": "https://merchant.com/failUrl?orderId=b69ac21f-6cd3-7e06-931d-d90100b40dc1&lang=en",
"error": "Error 3-D Secure authorization.",
"errorCode": 0,
"is3DSVer2": true,
"errorTypeName": "TDS_UNKNOWN_ARES_STATUS",
"processingErrorType": "MANDATORY_3DSECURE",
"errorMessage": "Error 3-D Secure authorization."
}Ejemplo de respuesta (error de autorización)
{
"redirect": "https://merchant.com/failUrl?orderId=de056d10-f91d-7c91-a3de-559800b40dc1&lang=en",
"error": "Operation declined. Please check the data and available balance of the account.",
"errorCode": 0,
"is3DSVer2": true,
"errorTypeName": "DATA_INPUT_ERROR",
"processingErrorType": "CLIENT_ERROR",
"errorMessage": "Operation declined. Please check the data and available balance of the account."
}Varios
Verificación de tarjeta
El método https://dev.bpcbt.com/payment/rest/verifyCard.do se utiliza para verificar la tarjeta. No se realiza el pago, y el pedido pasa inmediatamente al estado REVERSED.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/x-www-form-urlencoded
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | userName |
String [1..30] | Login de la cuenta API del vendedor. Si se utiliza un token público (parámetro token) para la autenticación durante el registro en lugar del login y la contraseña, no es necesario transmitir la contraseña. |
| Opcional | password |
String [1..30] | Contraseña de la cuenta API del vendedor. Si para la autenticación durante el registro se utiliza un token público (parámetro token) en lugar de login y contraseña, no es necesario transmitir la contraseña. |
| Opcional | token |
String [1..256] | Valor utilizado para la autenticación del vendedor al enviar solicitudes al gateway de pago. Si transmites este parámetro, no transmitas userName y password. |
| Obligatorio | 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 | pan |
String [1..19] | Número de tarjeta de pago |
| Opcional | cvc |
String [3] | La transmisión del parámetro se determina por el tipo de pago:
|
| Opcional | expiry |
Integer [6] | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. Obligatorio, si no se han transmitido ni seToken, ni bindingId. |
| Opcional | cardholderName |
String [1..26] | Nombre del titular de la tarjeta en letras latinas. Símbolos permitidos: letras latinas, punto, espacio. |
| Opcional | backUrl |
String [1..512] | URL al que será redirigido el usuario en caso de pago exitoso. Utilice la ruta completa especificando el protocolo, por ejemplo https://test.com (y no test.com)).De lo contrario, el usuario será redirigido a un URL del siguiente tipo: http://paymentGatewayURL/merchantURL |
| 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 | description |
String [1..598] | Descripción del pedido en cualquier formato. Para activar el envío de este campo al sistema de procesamiento, contacte con el servicio de soporte técnico. 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 | 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 | 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 | threeDSSDK |
Boolean | Valores posibles: true o false Bandera que indica que el pago proviene del 3DS SDK. |
| Opcional | 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. |
| 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 previo. 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:
|
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 |
|---|---|---|---|
| Opcional | billingCity |
String [0..50] | Ciudad registrada en la tarjeta específica en el Banco Emisor. |
| Opcional | billingCountry |
String [0..50] | País registrado para la 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. |
| Opcional | billingAddressLine1 |
String [0..50] | Dirección registrada para la tarjeta específica en el Banco Emisor (dirección del pagador). Línea 1. Obligatorio para la verificación AVS. |
| 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. |
| Opcional | payerLastName |
String [1..64] | Apellido del remitente. |
| Opcional | payerFirstName |
String [1..35] | Nombre del remitente. |
| 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. |
| Opcional | payerBirthday |
String [1..20] | Fecha de nacimiento del remitente en formato YYYYMMDD. |
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. |
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. |
| 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 | authCode |
Integer [6] | Parámetro obsoleto (no se utiliza). Su valor siempre es 2 independientemente del estado del pedido y del código de autorización del sistema de procesamiento. |
| Opcional | actionCode |
String | Código de respuesta del procesamiento del banco. Contiene un valor numérico. Ver la lista de códigos de respuesta aquí. |
| Opcional | actionCodeDescription |
String [1..512] | Descripción de actionCode, devuelta por el procesamiento del banco. |
| Opcional | time |
Integer | Tiempo de realización de la transacción como cantidad de milisegundos transcurridos desde las 00:00 GMT del 1 de enero de 1970 (tiempo Unix). Ejemplo: 1740392720718 (corresponde al tiempo 24 de febrero de 2025, 10:25:20 (UTC)). |
| 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.
|
| 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 | rrn |
Integer [1..12] | Reference Retrieval Number - identificador de transacción asignado por el banco adquirente. |
| 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 | 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. |
| Opcional | 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. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/verifyCard.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data pan=4000001111111118 \
--data cvc=123 \
--data expiry=203012Ejemplo de respuesta
{
"errorCode": "0",
"errorMessage": "Success",
"orderId": "cfc238ca-68f9-745c-ba7e-eb9100af79e0",
"orderNumber": "12017",
"rrn": "111111111115",
"authCode": "123456",
"actionCode": 0,
"actionCodeDescription": "",
"time": 1595284781180,
"eci": "07",
"amount": 0,
"currency": "978"
}API de cargos recurrentes
Las siguientes solicitudes de API permiten configurar tareas para cargos recurrentes. En adelante, los cargos se ejecutan automáticamente según el horario establecido.
Creación de tarea
Para la creación de tarea recurrente se utiliza la solicitud https://dev.bpcbt.com/recurrent/v1/task/create.
Al ejecutar la solicitud es necesario usar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | locale |
String [2] | Clave de idioma por ISO 639-1. Si el idioma no está especificado, se usa el idioma por defecto especificado en la configuración de la tienda. |
| Opcional | merchantLogin |
String [1..30] | Para crear tarea en nombre de otro comerciante, especifique su login (para cuenta API) en este parámetro. Se puede usar solo si tiene permiso para ver transacciones de otros vendedores o si el vendedor especificado es su vendedor subsidiario. |
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | task |
Object | Información sobre la tarea recurrente que se está creando. Ver parámetros anidados. |
A continuación se listan los parámetros del bloque task (datos sobre la tarea recurrente a crear).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
| Opcional | bindingId |
String [1..255] | Identificador de una vinculación ya existente (identificador de tarjeta tokenizada por el gateway). Se puede usar solo si el comerciante tiene permiso para trabajar con vinculaciones. |
| Opcional | cardHolder |
String [1..26] | Nombre del titular de la tarjeta en letras latinas. |
| 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. |
| 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 | expiry |
Integer | Fecha de vencimiento de la tarjeta en el siguiente formato: YYYYMM. |
| Obligatorio | merchantTaskUuid |
String | Identificador único de la tarea en el sistema del comerciante. |
| Opcional | pan |
String [1..19] | Número enmascarado de la tarjeta que se utilizó para el pago. |
| Opcional | attributes |
Object | Conjunto de atributos de la tarea, estructura:{name1:value1,…,nameN:valueN}. El conjunto exacto de atributos debe ser acordado con el Banco. |
| Opcional | params |
Object | Conjunto de parámetros adicionales de forma arbitraria, estructura:{name1:value1,…,nameN:valueN}
|
| Obligatorio | scheduleData |
Object | Conjunto de datos sobre el cronograma de la tarea. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque scheduleData (datos sobre el horario de pagos).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Mandatory | scheduledSince |
String [26] | Fecha y hora en que la tarea debe comenzar a ejecutarse. Formato: yyyy-MM-dd'T'HH:mm:ss.SSSZ
|
| Mandatory | scheduledTill |
String [26] | Fecha y hora para la cual la tarea debe completarse. Formato: yyyy-MM-dd'T'HH:mm:ss.SSSZ
|
| Mandatory | timeUnit |
String | Unidad de tiempo. Valores permitidos: Nanos, Micros, Millis, Seconds, Minutes, Hours, HalfDays, Days, Weeks, Months, Years, Decades, Centuries, Millennia, Eras, Forever
|
| Mandatory | value |
integer | Valor de frecuencia |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | status |
String | Estado de la respuesta. Valores permitidos: SUCCESS, FAIL. |
| Obligatorio | task |
Object | Información sobre la tarea recurrente creada. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque task (datos sobre la tarea recurrente creada).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | created |
String | Fecha y hora de creación de la tarea. |
| Obligatorio | merchantLogin |
String | Login del comerciante. |
| Obligatorio | merchantTaskUuid |
String | Identificador único de la tarea en el sistema del comerciante. |
| Obligatorio | nextPaymentDate |
String | Fecha del siguiente pago. |
| Obligatorio | state |
String | Estado de la tarea. Valores admitidos:
|
| Obligatorio | taskUuid |
String | Identificador único en el servicio de débitos recurrentes. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/task/create \
--header 'Content-Type: application/json' \
--data '{
"username":"test_user",
"password":"test_user_password",
"locale":"en",
"task":{
"merchantTaskUuid":"c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82",
"clientId":"TestClient",
"bindingId": "5eb094e1-4a96-7b33-af5f-a29407a73a93",
"scheduleData": {
"value":"1",
"timeUnit":"DAYS",
"scheduledSince":"2024-01-24T00:00:00.000+0300",
"scheduledTill":"2024-02-24T00:00:00.000+0300"
},
"amount":100,
"currency":643,
"params":{
"description":"desc",
"phone":"576015555556"
}
}
}'Ejemplo de respuesta
{
"status": "SUCCESS",
"task": {
"created": "2024-01-24T10:23:35.434591+03:00",
"merchantLogin": "testMerch",
"taskUuid": "8a6a5350-1be3-456e-8e81-e5c7eafbd699",
"nextPaymentDate": "2024-01-24T00:00:00+03:00",
"state": "CREATED",
"merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82"
}
}Modificación de tarea
Para modificar una tarea recurrente existente se utiliza la solicitud https://dev.bpcbt.com/recurrent/v1/task/modify.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | locale |
String [2] | Clave de idioma según ISO 639-1. Si no se especifica el idioma, se utiliza el idioma por defecto especificado en la configuración de la tienda. |
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | task |
Object | Información sobre la tarea recurrente a modificar. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque task (datos sobre la tarea recurrente modificable).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| 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. |
| Opcional | cardholder |
String | Nombre del titular de la tarjeta en letras latinas. |
| 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 | expiry |
String [6] | Fecha de vencimiento de la tarjeta en formato: YYYYMM. |
| Opcional | pan |
String [1..19] | Número enmascarado de la tarjeta utilizada para el pago. |
| Opcional | attributes |
Object | Conjunto de atributos de la tarea, estructura:{name1:value1,…,nameN:valueN}. El conjunto exacto de atributos debe ser acordado con el Banco. |
| Opcional | params |
Object | Conjunto de parámetros adicionales de forma arbitraria, estructura:{name1:value1,…,nameN:valueN}
|
| Obligatorio | taskIdentifier |
Object | Identificador único o conjunto de identificadores de la tarea. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque taskIdentifier (conjunto de identificadores de tarea recurrente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | merchantLogin |
String | Login del comerciante. Debe establecerse al buscar por merchantTaskUuid. |
| Opcional | merchantTaskUuid |
String | Identificador único de la tarea en el sistema del comerciante. Obligatorio si taskUuid no está establecido. |
| Opcional | taskUuid |
String | Identificador único en el servicio de cobros recurrentes. Obligatorio si merchantTaskUuid no está establecido. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | status |
String | Estado de la respuesta. Valores permitidos: SUCCESS, FAIL. |
| Obligatorio | task |
Object | Información sobre la tarea recurrente modificada. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque task (datos sobre la tarea recurrente modificada).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | updated |
String | Fecha y hora de la última actualización de la tarea. |
| Obligatorio | merchantLogin |
String | Login del comerciante. |
| Obligatorio | merchantTaskUuid |
String | Identificador único de la tarea en el sistema del comerciante. |
| Obligatorio | taskUuid |
String | Identificador único en el servicio de cargos recurrentes. |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/task/modify \
--header 'Content-Type: application/json' \
--data '{
"username":"test_user",
"password":"test_user_password",
"task":{
"taskIdentifier": {
"taskUuid":"9ae9f36d-0ba3-4686-87c4-a5ec77c562a4"
},
"bindingId":"5eb094e1-4a96-7b33-af5f-a29407a73a93",
"clientId":"TestClient",
"params":{
"description":"new description",
"phone":"+576015555558"
}
}'Ejemplo de respuesta
{
"status": "SUCCESS",
"task": {
"updated": "2024-01-23T14:10:03.730644+03:00",
"merchantLogin": "testMerch",
"taskUuid": "9ae9f36d-0ba3-4686-87c4-a5ec77c562a4",
"merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c80"
}
}Obtener información sobre la tarea
Para obtener información sobre la tarea recurrente se utiliza la solicitud https://dev.bpcbt.com/recurrent/v1/task/get.
Al ejecutar la solicitud es necesario usar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | locale |
String [2] | Clave de idioma por ISO 639-1. Si el idioma no está especificado, se utiliza el idioma por defecto especificado en la configuración de la tienda. |
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | taskIdentifier |
Object | Identificador único o conjunto de identificadores de la tarea recurrente. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque taskIdentifier (conjunto de identificadores de tarea recurrente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | merchantLogin |
String | Login del comerciante. Debe establecerse al buscar por merchantTaskUuid. |
| Opcional | merchantTaskUuid |
String | Identificador único de la tarea en el sistema del comerciante. Obligatorio si taskUuid no está establecido. |
| Opcional | taskUuid |
String | Identificador único en el servicio de cobros recurrentes. Obligatorio si merchantTaskUuid no está establecido. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | status |
String | Estado de la respuesta. Valores permitidos: SUCCESS, FAIL. |
| Obligatorio | task |
Object | Información sobre la tarea recurrente. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque task (datos sobre la tarea recurrente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Mandatory | amount |
Integer [0..12] | Importe del pago en unidades mínimas de la moneda (por ejemplo, en kopeks). |
| Optional | attemptsHistory |
Array of objects | Todos los intentos de pago en orden cronológico. Cada intento de pago se representa por un objeto attemptsHistory. Ver parámetros anidados. |
| Optional | 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. |
| Optional | cardHolder |
String [1..26] | Nombre del titular de la tarjeta en letras latinas. |
| Optional | 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. |
| Mandatory | created |
String | Fecha y hora de creación de la tarea. |
| Mandatory | 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. |
| Optional | expiry |
Integer [6] | Fecha de vencimiento de la tarjeta en formato: YYYYMM. |
| Mandatory | lastPaymentDate |
String | Fecha del último pago. |
| Optional | maskedPan |
String | Número enmascarado de la tarjeta. |
| Mandatory | merchantLogin |
String [1..30] | Login del comerciante. |
| Mandatory | merchantTaskUuid |
String | Identificador único de la tarea en el sistema del comerciante. |
| Mandatory | nextPaymentDate |
String | Fecha del siguiente pago. |
| Optional | params |
Object | Conjunto de parámetros adicionales de forma arbitraria, estructura:{name1:value1,…,nameN:valueN}
|
| Mandatory | scheduleData |
Object | Conjunto de datos sobre el cronograma de la tarea. Ver parámetros anidados. |
| Mandatory | state |
String | Estado de la tarea. Valores permitidos:
|
| Mandatory | taskUuid |
String | Identificador único en el servicio de cobros recurrentes. |
| Mandatory | updated |
String | Fecha y hora de la última actualización de la tarea. |
A continuación se enumeran los parámetros del bloque scheduleData (datos sobre el horario de pagos).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Mandatory | scheduledSince |
String [26] | Fecha y hora en que la tarea debe comenzar a ejecutarse. Formato: yyyy-MM-dd'T'HH:mm:ss.SSSZ
|
| Mandatory | scheduledTill |
String [26] | Fecha y hora para la cual la tarea debe completarse. Formato: yyyy-MM-dd'T'HH:mm:ss.SSSZ
|
| Mandatory | timeUnit |
String | Unidad de tiempo. Valores permitidos: Nanos, Micros, Millis, Seconds, Minutes, Hours, HalfDays, Days, Weeks, Months, Years, Decades, Centuries, Millennia, Eras, Forever
|
| Mandatory | value |
integer | Valor de frecuencia |
A continuación se enumeran los parámetros del bloque attemptsHistory (datos sobre la frecuencia de ejecución de la tarea).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | executed |
String | Fecha y hora del intento de pago. Formato: yyyy-MM-dd'T'HH:mm:ss.SSSZ
|
| Opcional | orderId |
String | Identificador único de la transacción en la pasarela de pagos |
| Opcional | orderNumber |
String | Número de pedido en la pasarela de pagos |
| Obligatorio | paymentAttemptUuid |
String | Identificador único del intento de pago |
| Obligatorio | paymentUuid |
String | Identificador único del pago |
| Obligatorio | state |
String | Estado de la tarea. Valores permitidos:
|
| Obligatorio | technicalAttempt |
Boolean | Bandera que indica si el intento fue técnico |
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/task/get \
--header 'Content-Type: application/json' \
--data '{
"username":"test_user",
"password":"test_user_password",
"taskIdentifier": {
"taskUuid":"8a6a5350-1be3-456e-8e81-e5c7eafbd699"
}
}'Ejemplo de respuesta
{
"status": "SUCCESS",
"task": {
"taskUuid": "8a6a5350-1be3-456e-8e81-e5c7eafbd699",
"state": "ACTIVE",
"merchantLogin": "testMerch",
"bindingId": "5eb094e1-4a96-7b33-af5f-a29407a73a93",
"clientId": "TestClient",
"created": "2024-01-24T10:23:35.434591+03:00",
"updated": "2024-01-24T10:23:35.434591+03:00",
"lastPaymentDate": "2024-01-24T00:00:00+03:00",
"nextPaymentDate": "2024-01-25T00:00:00+03:00",
"scheduleData": {
"scheduledSince": "2024-01-24T00:00:00.000+0300",
"scheduledTill": "2024-02-24T00:00:00.000+0300",
"value": 1,
"timeUnit": "DAYS"
},
"amount": 100,
"currency": 643,
"params": {
"phone": "576015555556",
"description": "description"
},
"attemptsHistory": [
{
"paymentAttemptUuid": "6873d7dc-4366-45c5-9de6-bc6e0aa05b3d",
"paymentUuid": "1a450005-ad46-4474-8940-eb154822296c",
"state": "SUCCEEDED",
"executed": "2024-01-24T10:23:41.788436+03:00",
"technicalAttempt": false,
"orderId": "d2d56b04-124b-77ab-9034-9f2307a73a93",
"orderNumber": "E5DFEDE990694FCFB5246AEC2612A355"
}
],
"merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82"
}
}Terminar ejecución de tarea
Para terminar la ejecución de una tarea recurrente se utiliza la solicitud https://dev.bpcbt.com/recurrent/v1/task/terminate.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | locale |
String [2] | Clave de idioma por ISO 639-1. Si el idioma no está especificado, se utiliza el idioma por defecto especificado en la configuración de la tienda. |
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | taskIdentifier |
Object | Identificador único o conjunto de identificadores de la tarea recurrente. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque taskIdentifier (conjunto de identificadores de tarea recurrente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | merchantLogin |
String | Login del comerciante. Debe establecerse al buscar por merchantTaskUuid. |
| Opcional | merchantTaskUuid |
String | Identificador único de la tarea en el sistema del comerciante. Obligatorio si taskUuid no está establecido. |
| Opcional | taskUuid |
String | Identificador único en el servicio de cobros recurrentes. Obligatorio si merchantTaskUuid no está establecido. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | status |
String | Estado de la respuesta. Valores permitidos: SUCCESS, FAIL. |
| Obligatorio | task |
Object | Información sobre la tarea recurrente. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque task (datos sobre la tarea terminada).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | updated |
String | Fecha y hora de la última actualización de la tarea. |
| Obligatorio | merchantLogin |
String | Login del comerciante. |
| Obligatorio | merchantTaskUuid |
String | Identificador único de la tarea en el sistema del comerciante. |
| Obligatorio | taskUuid |
String | Identificador único en el servicio de cobros recurrentes. |
| Obligatorio | state |
String | Estado de la tarea. Valores permitidos:
|
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/task/terminate \
--header 'Content-Type: application/json' \
--data '{
"username":"test_user",
"password":"test_user_password",
"taskIdentifier": {
"merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82",
"merchantLogin": "testMerch"
}
}'Ejemplo de respuesta
{
"status": "SUCCESS",
"task": {
"updated": "2024-01-24T10:23:35.434591+03:00",
"merchantLogin": "testMerch",
"taskUuid": "8a6a5350-1be3-456e-8e81-e5c7eafbd699",
"state": "TERMINATED",
"merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82"
}Activación de tarea
Para la activación de tarea recurrente se utiliza la solicitud https://dev.bpcbt.com/recurrent/v1/task/activate.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | locale |
String [2] | Clave de idioma según ISO 639-1. Si el idioma no está especificado, se utiliza el idioma por defecto indicado en la configuración de la tienda. |
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | taskIdentifier |
Object | Identificador único o conjunto de identificadores de tarea recurrente. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque taskIdentifier (conjunto de identificadores de tarea recurrente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | merchantLogin |
String | Login del comerciante. Debe establecerse al buscar por merchantTaskUuid. |
| Opcional | merchantTaskUuid |
String | Identificador único de la tarea en el sistema del comerciante. Obligatorio si taskUuid no está establecido. |
| Opcional | taskUuid |
String | Identificador único en el servicio de cobros recurrentes. Obligatorio si merchantTaskUuid no está establecido. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | status |
String | Estado de respuesta. Valores permitidos: SUCCESS, FAIL. |
| Obligatorio | task |
Object | Información sobre la tarea recurrente. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque task (datos sobre la tarea activada).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | updated |
String | Fecha y hora de la última actualización de la tarea. |
| Obligatorio | merchantLogin |
String | Login del comerciante. |
| Obligatorio | merchantTaskUuid |
String | Identificador único de la tarea en el sistema del comerciante. |
| Obligatorio | nextPaymentDate |
String | Fecha del siguiente pago. |
| Obligatorio | taskUuid |
String | Identificador único en el servicio de débitos recurrentes. |
| Obligatorio | state |
String | Estado de la tarea. Valores permitidos:
|
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/task/activate \
--header 'Content-Type: application/json' \
--data '{
"username":"test_user",
"password":"test_user_password",
"taskIdentifier": {
"merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82",
"merchantLogin": "testMerch"
}
}'Ejemplo de respuesta
{
"status": "SUCCESS",
"task": {
"updated": "2024-01-24T10:23:35.434591+03:00",
"merchantLogin": "testMerch",
"taskUuid": "8a6a5350-1be3-456e-8e81-e5c7eafbd699",
"state": "ACTIVE",
"nextPaymentDate": "2024-01-25T00:00:00+03:00",
"merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82"
}
}Terminación de la ejecución de tareas
Para terminar la ejecución de varias tareas recurrentes se utiliza la petición https://dev.bpcbt.com/recurrent/v1/task/batchTerminate.
Al ejecutar la petición es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de la petición
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | locale |
String [2] | Clave de idioma según ISO 639-1. Si el idioma no está especificado, se usa el idioma por defecto indicado en la configuración de la tienda. |
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | taskIdentifiers |
Array of Objects | Identificadores de las tareas a terminar. Cada identificador se representa por un objeto taskIdentifier. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque taskIdentifier (conjunto de identificadores de tarea recurrente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | merchantLogin |
String | Login del comerciante. Debe establecerse al buscar por merchantTaskUuid. |
| Opcional | merchantTaskUuid |
String | Identificador único de la tarea en el sistema del comerciante. Obligatorio si taskUuid no está establecido. |
| Opcional | taskUuid |
String | Identificador único en el servicio de cobros recurrentes. Obligatorio si merchantTaskUuid no está establecido. |
Parámetros de la respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | status |
String | Estado de la respuesta. Valores permitidos: SUCCESS, FAIL. |
Ejemplos
Ejemplo de petición
curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/task/batchTerminate \
--header 'Content-Type: application/json' \
--data '{
"locale":"EN",
"username":"testUser",
"password":"testPwd",
"tasksIdentifiers":[
{
"taskUuid":"0ba73819-65f8-43c4-9dc4-3870cb10416b"
},
{
"taskUuid":"0ba73820-65f8-43c4-9dc4-3870cb10416b"
}
]
}'Ejemplo de respuesta
{
"status": "SUCCESS"
}Omisión de pago
Para omitir un pago específico de una tarea recurrente, se utiliza la solicitud https://dev.bpcbt.com/recurrent/v1/payment/skip.
Al ejecutar la solicitud es necesario utilizar el encabezado:
Content-Type: application/json
Parámetros de solicitud
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | locale |
String [2] | Clave de idioma según ISO 639-1. Si no se especifica el idioma, se utiliza el idioma por defecto especificado en la configuración de la tienda. |
| Obligatorio | userName |
String [1..100] | Nombre de usuario de la cuenta API del vendedor. |
| Obligatorio | password |
String [1..30] | Contraseña de la cuenta API del vendedor. |
| Obligatorio | taskIdentifier |
Object | Identificador único o conjunto de identificadores de la tarea recurrente. Ver parámetros anidados. |
| Obligatorio | paymentNumber |
Integer | Número del pago recurrente que debe ser omitido. |
A continuación se enumeran los parámetros del bloque taskIdentifier (conjunto de identificadores de tarea recurrente).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Opcional | merchantLogin |
String | Login del comerciante. Debe establecerse al buscar por merchantTaskUuid. |
| Opcional | merchantTaskUuid |
String | Identificador único de la tarea en el sistema del comerciante. Obligatorio si taskUuid no está establecido. |
| Opcional | taskUuid |
String | Identificador único en el servicio de cobros recurrentes. Obligatorio si merchantTaskUuid no está establecido. |
Parámetros de respuesta
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | status |
String | Estado de la respuesta. Valores permitidos: SUCCESS, FAIL. |
| Obligatorio | task |
Object | Información sobre la tarea recurrente. Ver parámetros anidados. |
A continuación se enumeran los parámetros del bloque task (datos sobre la tarea activada).
| Obligatoriedad | Nombre | Tipo | Descripción |
|---|---|---|---|
| Obligatorio | updated |
String | Fecha y hora de la última actualización de la tarea. |
| Obligatorio | merchantLogin |
String | Login del comerciante. |
| Obligatorio | merchantTaskUuid |
String | Identificador único de la tarea en el sistema del comerciante. |
| Obligatorio | nextPaymentDate |
String | Fecha del siguiente pago. |
| Obligatorio | taskUuid |
String | Identificador único en el servicio de débitos recurrentes. |
| Obligatorio | state |
String | Estado de la tarea. Valores permitidos:
|
Ejemplos
Ejemplo de solicitud
curl --request POST \
--url https://dev.bpcbt.com/recurrent/v1/payment/skip \
--header 'Content-Type: application/json' \
--data '{
"locale":"EN",
"username":"test_user",
"password":"test_user_password",
"taskIdentifier": {
"taskUuid":"7ae881fb-aee0-4446-883c-8087512bd26a"
},
"paymentNumber": 2
}'Ejemplo de respuesta
{
"status": "SUCCESS",
"task": {
"updated": "2024-01-24T10:23:35.434591+03:00",
"merchantLogin": "testMerch",
"taskUuid": "8a6a5350-1be3-456e-8e81-e5c7eafbd699",
"state": "ACTIVE",
"nextPaymentDate": "2024-01-25T00:00:00+03:00",
"merchantTaskUuid": "c0fdc30e-0ba9-4d14-ac0b-44fe9d4d7c82"
}
}Notificaciones de callback
La API de la pasarela de pago permite recibir notificaciones de callback (notificaciones callback) sobre cambios en los estados de los pagos.
Información general
Eventos sobre los que pueden llegar notificaciones
Puede recibir notificaciones sobre cambios en el estado del pago del pedido y sobre otros eventos en la pasarela de pago.
Las notificaciones más comunes describen cambios en el estado del pedido, por ejemplo:
débito de fondos
retención (hold) de fondos
cancelación del pago
devolución de fondos
Integraciones más complejas pueden implicar triggers adicionales de callback, tales como:
- guardado de tarjeta (es decir, creación de vinculación)
- activación/desactivación de vinculación existente
- rechazo de pagos, etc.
El tipo de trigger se transmite en el parámetro operation de la notificación de callback (ver detalles abajo). Para comodidad, las notificaciones para triggers adicionales pueden dirigirse a otra URL usando el parámetro dynamicCallbackUrl en las solicitudes de registro de pedido.
Integración a través de notificaciones de callback
En lugar del último paso de integración a través de redirección puede elegir uno de los siguientes enfoques.
Usar returnUrl
Cuando el código de su sitio, ubicado en la dirección returnUrl (por ejemplo, https://mybestmerchantreturnurl.com/?back&orderId=61c33664-85a0-7d6b-af26-09ee009c4000&lang=en), identifica al portador de tarjeta redirigido desde el gateway después del intento de pago, puede verificar el estado del pedido mediante la solicitud API getOrderStatusExtended.
Esta opción es la más simple, pero no es completamente confiable, ya que la redirección del portador de tarjeta puede terminar con error (por ejemplo, como resultado de la pérdida de conexión o cierre del navegador por el portador de tarjeta), y returnUrl puede no recibir el trigger para llamar getOrderStatusExtended.
curl --request POST \
--url https://dev.bpcbt.com/payment/rest/getOrderStatusExtended.do \
--header 'content-type: application/x-www-form-urlencoded' \
--data userName=test_user \
--data password=test_user_password \
--data orderId=016b6f47-4628-7ea2-80f5-6c6e00a7d8c0 \
--data language=en{
"errorCode": "0",
"errorMessage": "Success",
"orderNumber": "11008",
"orderStatus": 2,
"actionCode": 0,
"actionCodeDescription": "",
"amount": 2000,
"currency": "978",
"date": 1618577250840,
"orderDescription": "my_first_order",
"merchantOrderParams": [
{
"name": "browser_language_param",
"value": "en"
},
{
"name": "browser_os_param",
"value": "UNKNOWN"
},
{
"name": "user_agent",
"value": "curl/7.75.0"
},
{
"name": "browser_name_param",
"value": "DOWNLOAD"
}
],
"transactionAttributes": [],
"attributes": [
{
"name": "mdOrder",
"value": "016b7747-c4ed-70b3-bc36-fdd400a7d8c0"
}
],
"cardAuthInfo": {
"maskedPan": "555555**5599",
"expiration": "202412",
"cardholderName": "TEST CARDHOLDER",
"approvalCode": "123456",
"pan": "555555**5599"
},
"authDateTime": 1618577288377,
"terminalId": "123456",
"authRefNum": "931793605827",
"paymentAmountInfo": {
"paymentState": "DEPOSITED",
"approvedAmount": 2000,
"depositedAmount": 2000,
"refundedAmount": 0
},
"bankInfo": {
"bankCountryCode": "UNKNOWN",
"bankCountryName": "<Unknown>"
}
}Usar callback firmado del gateway
Si sabe cómo trabajar con certificados digitales y firmas, puede usar callback con firma digital y suma de verificación (el gateway permite configurar el envío de tales notificaciones). La suma de verificación se utiliza para verificación y seguridad. Después de que la firma de la notificación ha sido verificada, ya no hay necesidad de enviar getOrderStatusExtended, porque la notificación contiene información sobre el estado del pedido.
https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&orderNumber=0987&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&operation=deposited&status=1Tipos de notificaciones
Notificaciones sin suma de control
Estas notificaciones contienen solo información sobre el pedido, por lo que potencialmente el vendedor corre el riesgo de tomar una notificación enviada por un atacante como auténtica.
Notificaciones con suma de control
Tales notificaciones además de la información sobre el pedido contienen un código de autenticación. El código de autenticación representa una suma de control de la información sobre el pedido. Esta suma de control permite asegurarse de que la notificación callback realmente fue enviada por la pasarela de pago.
Existen dos formas de implementar notificaciones callback con suma de control:
- mediante criptografía simétrica - para formar la suma de control del lado de la pasarela y para su verificación del lado del vendedor se usa la misma clave criptográfica (simétrica);
- Mediante criptografía asimétrica - para formar la suma de control del lado de la pasarela de pago se usa una clave privada conocida solo por la pasarela, y para confirmar la suma de control se usa una clave pública vinculada con la clave privada, que es conocida por los vendedores y puede distribuirse libremente.
La clave pública se puede descargar del panel personal de la pasarela de pago si se tienen los permisos correspondientes. Para mayor seguridad se recomienda usar criptografía asimétrica.
Para activar notificaciones con sumas de control, así como obtener la clave criptográfica correspondiente, contacte con nuestro servicio de soporte técnico.
Requisitos para certificados SSL en el sitio del vendedor
Si la notificación sobre el estado del pedido llega a través de conexión HTTPS, es necesario verificar la autenticidad del sitio mediante certificado SSL emitido y firmado por una autoridad certificadora confiable (ver tabla abajo). No se permite el uso de certificados autofirmados.
| Requisito | Descripción |
|---|---|
| Algoritmo de firma. | No inferior a SHA-256. |
| Autoridades certificadoras soportadas. | Abajo se presentan ejemplos de organizaciones que registran certificados digitales: |
Formato de URL de notificaciones
Se admiten solicitudes POST y GET.
A continuación se muestra un ejemplo de solicitud GET predeterminada, sin parámetros adicionales. Los parámetros se obtienen en la solicitud.
Notificación sin suma de verificación (GET)
https://mybestmerchantreturnurl.com/callback/?mdOrder=
1234567890-098776-234-522&orderNumber=0987&operation=deposited&
callbackCreationDate=Mon Jan 31 21:46:52 UTC 2022&status=0Notificación con suma de verificación (GET)
https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&
orderNumber=0987&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&
operation=deposited&callbackCreationDate=Mon Jan 31 21:46:52 UTC 2022&status=0Para callbacks POST recibirás los mismos parámetros en el cuerpo HTTP (en lugar de parámetros de solicitud).
Notificación sin suma de verificación (POST)
https://mybestmerchantreturnurl.com/callback/
mdOrder=
1234567890-098776-234-522&orderNumber=0987&operation=deposited&
callbackCreationDate=Mon Jan 31 21:46:52 UTC 2022&status=0Notificación con suma de verificación (POST)
https://mybestmerchantreturnurl.com/callback/
mdOrder=1234567890-098776-234-522&
orderNumber=0987&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&operation=deposited&callbackCreationDate=Mon Jan 31 21:46:52 UTC 2022&status=0Los parámetros transmitidos se presentan en la tabla a continuación.
En la tabla se indican solo los parámetros principales. También puedes usar parámetros adicionales, si están configurados en la pasarela de pagos.
| Parámetro | Descripción |
|---|---|
mdOrder |
Número único de pedido almacenado en la pasarela de pagos. |
orderNumber |
Número único de pedido (identificador) en el sistema del comerciante. |
checksum |
Código de autenticación o suma de verificación obtenida del conjunto de parámetros. |
operation |
Tipo de evento que provocó la notificación:
|
status |
Indicador de éxito de la operación especificada en el parámetro operation:
|
Encabezados personalizados de notificaciones callback
Los encabezados personalizados de notificaciones callback se pueden configurar contactando al servicio de soporte técnico. Por ejemplo:
'http://mybestmerchantreturnurl.com/callback.php', headers={Authorization=token, Content-type=plain
/text}, params={orderNumber=349002, mdOrder=5ffb1899-cd1e-7c1e-8750-e98500093c43, operation=deposited, status=1}donde {Authorization=token, Content-type=plain/text} – es el encabezado configurable.
Ejemplos
Ejemplo de URL de notificación sin suma de verificación
https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&orderNumber=0987&operation=deposited&status=0Ejemplo de URL de notificación con suma de verificación
https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&orderNumber=0987&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&operation=deposited&status=0Algoritmo de procesamiento de notificaciones sobre el estado de pedidos
En las secciones siguientes se presenta el algoritmo de procesamiento de notificaciones sobre el estado de pedidos dependiendo del tipo de tales notificaciones.
Notificación sin suma de verificación
- La pasarela de pagos envía la siguiente solicitud al servidor del vendedor.
https://mybestmerchantreturnurl.com/callback/?mdOrder=1234567890-098776-234-522&orderNumber=0987&operation=deposited&status=0 - El servidor del vendedor devuelve el mensaje HTTP
200 OKa la pasarela de pagos.
Notificación con suma de verificación
-
La pasarela de pagos envía una solicitud HTTPS del siguiente tipo al servidor del comerciante, donde:
- al utilizar criptografía simétrica, la suma de control se forma mediante una clave común para la pasarela de pago y el vendedor;
- al utilizar criptografía asimétrica, la suma de control se forma mediante una clave privada conocida solo por la pasarela de pago.
https://mybestmerchantreturnurl.com/path?amount=123456&orderNumber=10747&checksum=DBBE9E54D42072D8CAF32C7F660DEB82086A25C14FD813888E231A99E1220AB3&mdOrder=3ff6962a-7dcc-4283-ab50-a6d7dd3386fe&operation=deposited&status=1
El orden de los parámetros en la notificación puede ser arbitrario.
En el lado del vendedor, de la cadena de parámetros de notificación se eliminan los parámetros
checksumysign_alias, y el valor del parámetrochecksum(suma de control) se guarda para verificar la autenticidad de la notificación;Los parámetros restantes y sus valores se utilizan para crear la siguiente cadena.
nombre_parámetro1;valor_parámetro1;nombre_parámetro2;valor_parámetro2;…;nombre_parámetroN;valor_parámetroN;
En este caso, los paresnombre_parámetro;valor_parámetrodeben estar ordenados en orden alfabético directo (ascendente) por nombres de parámetros.
Ejemplo de cadena de parámetros generada:amount;123456;mdOrder;3ff6962a-7dcc-4283-ab50-a6d7dd3386fe;operation;deposited;orderNumber;10747;status;1;-
La suma de control se calcula en el lado del comerciante, el método de cálculo depende del método de su formación:
- al utilizar criptografía simétrica - mediante el algoritmo HMAC-SHA256 y una clave privada común con la pasarela de pago;
- al utilizar criptografía asimétrica - mediante el algoritmo de hash, que depende del método de creación del par de claves, y la clave pública, que está vinculada con la clave privada ubicada en el lado de la pasarela de pago.
En la cadena resultante de suma de control, todas las letras minúsculas se reemplazan por letras mayúsculas.
Se produce la comparación del valor obtenido con la suma de control extraída anteriormente del parámetro
checksum.Si las sumas de control coinciden, el servidor envía a la pasarela de pago el código HTTP
200 OK.
Si las sumas de control coinciden, esta notificación es auténtica y fue enviada por la pasarela de pago. En caso contrario, es probable que un atacante esté intentando hacer pasar su notificación por una notificación de la pasarela de pago.
Notificación sobre el estado del pago
Para determinar si el pago se realizó con éxito o no, usted necesita:
- Verificar la firma (parámetro
checksumen la notificación); - Verificar dos parámetros de notificación de callback:
operationystatus.
Si el valor del parámetro operation es diferente de approved o deposited, entonces la notificación de callback se refiere al estado del pago.
- Approved Successfully → operation = approved & status = 1 (Successful Operation)
- Approval was Declined → operation = approved & status = 0 (Failed Operation)
- Deposited Successfully → operation = deposited & status = 1 (Successful Operation)
- Deposit was Declined → operation = deposited & status = 0 (Failed Operation)
Notificaciones fallidas
Si a la pasarela de pago se devuelve una respuesta diferente del código HTTP 200 OK, el envío de notificación se considera fallido. En este caso, la pasarela de pago repite la notificación con un intervalo de 30 segundos hasta que se cumpla una de las siguientes condiciones:
- la pasarela de pago recibe
200 OKo - ocurren tres intentos fallidos de notificación consecutivos.
Al alcanzar una de las condiciones indicadas anteriormente, se detienen los intentos de envío de notificaciones callback sobre la operación.
Parámetros adicionales de notificaciones de callback
En las notificaciones de callback puedes usar los siguientes parámetros adicionales, si están configurados en la pasarela de pagos. Si quieres usarlos, contacta con nuestro servicio de soporte.
| Parámetro | Descripción | Tipo de evento |
|---|---|---|
bindingId |
UUIID de las credenciales guardadas creadas/actualizadas (vínculos). | BINDING_CREATED, BINDING_ACTIVITY_CHANGED |
email |
Correo electrónico del cliente. | BINDING_CREATED |
phone |
Teléfono del cliente. | BINDING_CREATED |
panMasked |
PAN enmascarado de la tarjeta del cliente. | BINDING_CREATED |
panCountryCode |
Código de país del cliente. | BINDING_CREATED |
enabled |
Si el vínculo está activo (true/false). |
BINDING_ACTIVITY_CHANGED |
currentReverseAmountFormatted |
Importe formateado de la operación de cancelación. | REVERSED |
currentRefundAmountFormatted |
Importe formateado de la operación de devolución. | REFUNDED |
operationRefundedAmountFormatted |
Importe formateado de la operación de devolución. | REFUNDED |
operationRefundedAmount |
Importe de devolución en unidades monetarias mínimas (por ejemplo, en centavos). | REFUNDED |
externalRefundId |
Identificador externo de la operación de devolución. | REFUNDED |
callbackCreationDate |
Fecha de creación de la notificación de callback. Requiere configuración especial del comerciante. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, BINDING_CREATED, BINDING_ACTIVITY_CHANGED, DECLINED_CARDPRESENT |
status |
Estado de la operación: 1 - éxito, 0 - fallo | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
operation |
Tipo de callback Possible values: deposited, approved, reversed, refunded, bindingCreated, bindingActivityChanged, declinedByTimeout, declinedCardpresent
|
DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT, BINDING_CREATED, BINDING_ACTIVITY_CHANGED |
finishCheckUrl |
URL para generar el recibo | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
sign_alias |
Nombre de la clave utilizada para la firma. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT, BINDING_CREATED, BINDING_ACTIVITY_CHANGED |
checksum |
Suma de verificación de la notificación de devolución de llamada (se utiliza para notificaciones de devolución de llamada con suma de verificación). | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT, BINDING_CREATED, BINDING_ACTIVITY_CHANGED |
cardholderName |
Nombre del titular de la tarjeta. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
amount |
Importe del pedido registrado en unidades monetarias mínimas. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
paymentAmount |
Importe del pedido registrado en unidades monetarias mínimas. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
amountFormatted |
Importe formateado del pedido registrado. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
feeAmount |
Importe de la comisión en unidades mínimas de moneda. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
approvedAmount |
Importe preautorizado en unidades monetarias mínimas. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
depositedAmount |
Importe de finalización en unidades monetarias mínimas. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
refundedAmount |
Importe de reembolso en unidades mínimas de moneda. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
approvedAmountFormatted |
Importe preautorizado formateado. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
depositedAmountFormatted |
Importe formateado de depósito. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
refundedAmountFormatted |
Importe formateado de devolución. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
totalAmountFormatted |
Importe total formateado del pedido (importe registrado + comisión). | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
depositedTotalAmountFormatted |
Monto total formateado de finalización (todos los montos de finalización + todos los montos de reembolso + comisión). | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
approvalCode |
Código de autorización del pago, obtenido del procesamiento. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
authCode |
Código de autorización | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
bankName |
Nombre del banco que emitió la tarjeta del cliente. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
currency |
Moneda del pedido. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
depositFlag |
Bandera que indica el tipo de operación.
|
DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
eci |
Indicador de comercio electrónico. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
ip |
Dirección IP del pagador. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
ipCountryCode |
Código de país del banco emisor. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
maskedPan |
Número de tarjeta enmascarado del cliente. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
mdOrder |
Número de pedido en la pasarela de pagos. Único dentro de la pasarela de pagos. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
mdorder |
Número de pedido en la pasarela de pagos. Único dentro de la pasarela de pagos. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
merchantFullName |
Nombre completo del vendedor. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
merchantLogin |
Login del vendedor. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
orderDescription |
Descripción del pedido. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
orderNumber |
Número de pedido (ID) en el sistema del comerciante. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
threeDSType |
Tipo de transacción (3DS). Valores posibles: SSL, THREE_DS1_FULL, THREE_DS1_ATTEMPT, THREE_DS2_FULL, THREE_DS2_FRICTIONLESS, THREE_DS2_ATTEMPT, THREE_DS2_EXEMPTION_GRANTED, THREE_DS2_3RI, THREE_DS2_3RI_ATTEMPT
|
DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
date |
Fecha de creación del pedido. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
clientId |
Número de cliente (ID) en el sistema del comerciante. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT,BINDING_CREATED, BINDING_ACTIVITY_CHANGED |
actionCode |
Código del resultado de ejecución de la operación. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
actionCodeDescription |
Descripción del código del resultado de ejecución de la operación. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
paymentRefNum |
Reference Retrieval Number - identificador de transacción asignado por el banco adquirente. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
paymentState |
Estado del pedido. Possible values: started, payment_approved, payment_declined, payment_void, payment_deposited, refunded, pending, partly_deposited
|
DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
paymentWay |
Método de pago del pedido. Valores posibles adicionales del parámetro se muestran aquí. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
processingId |
Identificador del cliente en el procesamiento. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
refNum |
Reference Retrieval Number - identificador de transacción asignado por el banco adquirente. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
refnum |
Reference Retrieval Number - identificador de transacción asignado por el banco adquirente. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
terminalId |
Identificador del terminal en el sistema que procesa el pago. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
paymentSystem |
Nombre del sistema de pago. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
currencyName |
Código ISO de tres letras de la moneda. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
transactionAttributes |
Atributos del pedido. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
paymentDate |
Fecha de pago del pedido. | DEPOSITED, APPROVED, REVERSED, REFUNDED |
depositedDate |
Fecha de la operación de finalización del pedido. | DEPOSITED, APPROVED, REVERSED, REFUNDED |
refundedDate |
Fecha de la operación de devolución del pedido. | REFUNDED |
reversedDate |
Fecha de la operación de cancelación del pedido. | DEPOSITED, REVERSED, REFUNDED |
declineDate |
Fecha de cancelación del pedido. | DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
xid |
Indicador de comercio electrónico de la transacción, definido por el vendedor. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
cavv |
Valor de verificación de autenticación del titular de la tarjeta. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
authValue |
Valor de verificación de autenticación del titular de la tarjeta. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
sessionExpiredDate |
Fecha y hora de expiración del pedido. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
tokenizeCryptogram |
Criptograma tokenizado. | DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
creditBankName |
Nombre del banco que emitió la tarjeta para el depósito (en P2P). | DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT |
creditPanCountryCode |
Código de país de la tarjeta del destinatario (en P2P). | DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT |
isInternationalP2P |
Si la transacción P2P es internacional. | DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT |
recipientData |
Información sobre el destinatario P2P. | DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT |
transactionTypeIndicator
|
Información sobre el destinatario P2P. Valores posibles:
|
DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT |
operationType |
Tipo de operación P2P: AFT/OCT. | DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT |
debitBankName |
Nombre del banco que emitió la tarjeta para el débito (en P2P). | DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT |
debitPanCountryCode |
Código de país de la tarjeta para débito (en P2P). | DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT |
p2pDebitRrn |
RRN (Reference Retrieval Number) de la operación de débito P2P. | DEPOSITED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT |
avsCode |
Código de respuesta de verificación AVS (verificación de dirección y código postal del portador de la tarjeta). Valores posibles:
|
DEPOSITED, APPROVED, REVERSED, REFUNDED, DECLINED_BY_TIMEOUT, DECLINED_CARDPRESENT |
Ejemplos de código
Criptografía simétrica
Java
package net.payrdr.test;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Comparator;
import java.util.Map;
import java.util.stream.Collector;
public class SymmetricCryptographyExample {
private static final String secretToken = "ooc7slpvc61k7sf7ma7p4hrefr";
private static final Map<String, String> callbackParams = Map.of(
"checksum", "EAF2FB72CAB99FD5067F4BA493DD84F4D79C1589FDE8ED29622F0F07215AA972",
"mdOrder", "06cf5599-3f17-7c86-bdbc-bd7d00a8b38b",
"operation", "approved",
"orderNumber", "2003",
"status", "1"
);
public static void main(String[] args) throws Exception {
String signedString = callbackParams.entrySet().stream()
.filter(entry -> !entry.getKey().equals("checksum"))
.sorted(Map.Entry.comparingByKey(Comparator.naturalOrder()))
.collect(Collector.of(
StringBuilder::new,
(accumulator, element) -> accumulator
.append(element.getKey()).append(";")
.append(element.getValue()).append(";"),
StringBuilder::append,
StringBuilder::toString
));
byte[] mac = generateHMacSHA256(secretToken.getBytes(), signedString.getBytes());
String signature = callbackParams.get("checksum");
boolean verified = verifyMac(signature, mac);
System.out.println("resultado de verificación de firma: " + verified);
}
private static boolean verifyMac(String signature, byte[] mac) {
return signature.equals(bytesToHex(mac));
}
public static byte[] generateHMacSHA256(byte[] hmacKeyBytes, byte[] dataBytes) throws Exception {
SecretKeySpec secretKey = new SecretKeySpec(hmacKeyBytes, "HmacSHA256");
Mac hMacSHA256 = Mac.getInstance("HmacSHA256");
hMacSHA256.init(secretKey);
return hMacSHA256.doFinal(dataBytes);
}
private static String bytesToHex(byte[] bytes) {
final byte[] HEX_ARRAY = "0123456789ABCDEF".getBytes(StandardCharsets.US_ASCII);
byte[] hexChars = new byte[bytes.length * 2];
for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = HEX_ARRAY[v >>> 4];
hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
}
return new String(hexChars, StandardCharsets.UTF_8);
}
}Criptografía asimétrica
Java
package net.payrdr.test;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.security.Signature;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Base64;
import java.util.Comparator;
import java.util.Map;
import java.util.stream.Collector;
public class AsymmetricCryptographyExample {
private static final Map<String, String> callbackParams = Map.of(
"amount", "35000099",
"sign_alias", "SHA-256 with RSA",
"checksum", "163BD9FAE437B5DCDAAC4EB5ECEE5E533DAC7BD2C8947B0719F7A8BD17C101EBDBEACDB295C10BF041E903AF3FF1E6101FF7DB9BD024C6272912D86382090D5A7614E174DC034EBBB541435C80869CEED1F1E1710B71D6EE7F52AE354505A83A1E279FBA02572DC4661C1D75ABF5A7130B70306CAFA69DABC2F6200A698198F8",
"mdOrder", "12b59da8-f68f-7c8d-12b5-9da8000826ea",
"operation", "deposited",
"status", "1");
private static final String certificate =
"MIICcTCCAdqgAwIBAgIGAWAnZt3aMA0GCSqGSIb3DQEBCwUAMHwxIDAeBgkqhkiG9w0BCQEWEWt6" +
"bnRlc3RAeWFuZGV4LnJ1MQswCQYDVQQGEwJSVTESMBAGA1UECBMJVGF0YXJzdGFuMQ4wDAYDVQQH" +
"EwVLYXphbjEMMAoGA1UEChMDUkJTMQswCQYDVQQLEwJRQTEMMAoGA1UEAxMDUkJTMB4XDTE3MTIw" +
"NTE2MDEyMFoXDTE4MTIwNTE2MDExOVowfDEgMB4GCSqGSIb3DQEJARYRa3pudGVzdEB5YW5kZXgu" +
"cnUxCzAJBgNVBAYTAlJVMRIwEAYDVQQIEwlUYXRhcnN0YW4xDjAMBgNVBAcTBUthemFuMQwwCgYD" +
"VQQKEwNSQlMxCzAJBgNVBAsTAlFBMQwwCgYDVQQDEwNSQlMwgZ8wDQYJKoZIhvcNAQEBBQADgY0A" +
"MIGJAoGBAJNgxgtWRFe8zhF6FE1C8s1t/dnnC8qzNN+uuUOQ3hBx1CHKQTEtZFTiCbNLMNkgWtJ/" +
"CRBBiFXQbyza0/Ks7FRgSD52qFYUV05zRjLLoEyzG6LAfihJwTEPddNxBNvCxqdBeVdDThG81zC0" +
"DiAhMeSwvcPCtejaDDSEYcQBLLhDAgMBAAEwDQYJKoZIhvcNAQELBQADgYEAfRP54xwuGLW/Cg08" +
"ar6YqhdFNGq5TgXMBvQGQfRvL7W6oH67PcvzgvzN8XCL56dcpB7S8ek6NGYfPQ4K2zhgxhxpFEDH" +
"PcgU4vswnhhWbGVMoVgmTA0hEkwq86CA5ZXJkJm6f3E/J6lYoPQaKatKF24706T6iH2htG4Bkjre" +
"gUA=";
public static void main(String[] args) throws Exception {
String signedString = callbackParams.entrySet().stream()
.filter(entry -> !entry.getKey().equals("checksum") && !entry.getKey().equals("sign_alias"))
.sorted(Map.Entry.comparingByKey(Comparator.naturalOrder()))
.collect(Collector.of(
StringBuilder::new,
(accumulator, element) -> accumulator
.append(element.getKey()).append(";")
.append(element.getValue()).append(";"),
StringBuilder::append,
StringBuilder::toString
));
InputStream publicCertificate = new ByteArrayInputStream(Base64.getDecoder().decode(certificate));
String signature = callbackParams.get("checksum");
boolean verified = checkSignature(signedString.getBytes(), signature.getBytes(), publicCertificate);
System.out.println("resultado de verificación de firma: " + verified);
}
private static boolean checkSignature(byte[] signedString, byte[] signature, InputStream publicCertificate) throws Exception {
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
X509Certificate x509Cert = (X509Certificate) certFactory.generateCertificate(publicCertificate);
Signature signatureAlgorithm = Signature.getInstance("SHA512withRSA");
signatureAlgorithm.initVerify(x509Cert.getPublicKey());
signatureAlgorithm.update(signedString);
return signatureAlgorithm.verify(decodeHex(new String(signature)));
}
private static byte[] decodeHex(String hex) {
int l = hex.length();
byte[] data = new byte[l / 2];
for (int i = 0; i < l; i += 2) {
data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
+ Character.digit(hex.charAt(i + 1), 16));
}
return data;
}
}Criptografía simétrica
PHP
<?php
$data = 'amount;123456;mdOrder;3ff6962a-7dcc-4283-ab50-a6d7dd3386fe;operation;deposited;orderNumber;10747;status;1;';
$key = 'yourSecretToken';
$hmac = hash_hmac ( 'sha256' , $data , $key);
echo "[$hmac]
";
?>- Asigne el valor de cadena a la variable
data. - Asigne el valor de la clave privada a la variable
key. - La función
hash_hmac( 'sha256', $data, $key) calcula la suma de verificación de la cadena pasada, utilizando la clave privada según el algoritmo SHA-256. - Guarde el resultado del trabajo de la función en la variable
hmac. - Muestre el resultado del trabajo de la función con el comando
echo. - Compare este valor con el que se pasa en la notificación sobre el estado del pedido.
Criptografía asimétrica
PHP
<?php
// data from response
$data = 'amount;35000099;mdOrder;12b59da8-f68f-7c8d-12b5-9da8000826ea;operation;deposited;status;1;';
$checksum = '9524FD765FB1BABFB1F42E4BC6EF5A4B07BAA3F9C809098ACBB462618A9327539F975FEDB4CF6EC1556FF88BA74774342AF4F5B51BA63903BE9647C670EBD962467282955BD1D57B16935C956864526810870CD32967845EBABE1C6565C03F94FF66907CEDB54669A1C74AC1AD6E39B67FA7EF6D305A007A474F03B80FD6C965656BEAA74E09BB1189F4B32E622C903DC52843C454B7ACF76D6F76324C27767DE2FF6E7217716C19C530CA7551DB58268CC815638C30F3BCA3270E1FD44F63C14974B108E65C20638ECE2F2D752F32742FFC5077415102706FA5235D310D4948A780B08D1B75C8983F22F211DFCBF14435F262ADDA6A97BFEB6D332C3D51010B';
// your public key (e.g. SHA-512 with RSA)
// if you have a CERT, please see openssl_get_publickey()
$publicKey = <<<EOD
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwtuGKbQ4WmfdV1gjWWys
5jyHKTWXnxX3zVa5/Cx5aKwJpOsjrXnHh6l8bOPQ6Sgj3iSeKJ9plZ3i7rPjkfmw
qUOJ1eLU5NvGkVjOgyi11aUKgEKwS5Iq5HZvXmPLzu+U22EUCTQwjBqnE/Wf0hnI
wYABDgc0fJeJJAHYHMBcJXTuxF8DmDf4DpbLrQ2bpGaCPKcX+04POS4zVLVCHF6N
6gYtM7U2QXYcTMTGsAvmIqSj1vddGwvNGeeUVoPbo6enMBbvZgjN5p6j3ItTziMb
Vba3m/u7bU1dOG2/79UpGAGR10qEFHiOqS6WpO7CuIR2tL9EznXRc7D9JZKwGfoY
/QIDAQAB
-----END PUBLIC KEY-----
EOD;
$binarySignature = hex2bin(strtolower($checksum));
$isVerify = openssl_verify($data, $binarySignature, $publicKey, OPENSSL_ALGO_SHA512);
if ($isVerify == 1) {
echo "signature ok
";
} elseif ($isVerify == 0) {
echo "bad (there's something wrong)
";
} else {
echo "error checking signature
";
}
?>