Introducción
La API está diseñada sobre REST, por lo tanto encontrarás que las URL están orientadas a recursos y se usa códigos de respuesta HTTP para indicar los errores en la API.
Todas las respuestas de la API están en formato JSON, incluyendo errores.
En el caso de usar los clientes existentes del API de BBVA (Java, PHP, C#, Ruby), las respuestas son específicamente del tipo definido en dichos clientes en sus respectivos lenguajes.
Guía Rápida
Esta es una guía rápida del flujo de operación y descripción de cada punto con el fin de acompañar el desarrollo de los comercios. Recomendamos ampliamente leer las especificaciones de integración de manera detallada antes de comenzar a desarrollar.
Cargos con VPOS
Diagrama de Flujo de la Operación.
Nota : Todas los comercios nacen por default con autenticación 3d Secure y VPOS
1.- El tarjetahabiente entra a la página web del comercio, selecciona sus productos una vez seleccionados y dentro del carrito de compras da click en la opción pagar.
2.- El comercio genera una petición con un, objeto JSON que contiene los campos enlistados en “Cargos con VPOS”. Dentro del objeto se deberá incluir un campo con la url a donde se redirige el flujo al finalizar la transacción, ya sea autorizada o rechazada.
Ejemplo de la URL: “redirect_url”: “https://micomercio.com”
Nota: los Datos que se incluyen en este objeto son de la compra. No son data sensible.
3.- BBVA devuelve una respuesta con un objeto JSON de nombre “transaction” que contiene la URL a la que se tiene que dirigir al tarjetahabiente para capturar los datos en la VPOS El campo “id” (string) es un Identificador único asignado por BBVA al momento de su creación. El comercio tiene que asociar un número de orden de la venta con este ID.
4.- El comercio redirecciona al tarjetahabiente a la URL que despliega el VPOS, la cual viaja en el objeto Json de nombre “transaction”
Ejemplo: “url” :
“https://sand-api.ecommercebbva.com/v1/mptdggroasfcmqs8plpy/charges/trywj1kyx7vczirifkyw/card_capture”
5.- El tarjetahabiente, ingresa los datos sensibles en el VPOS, número de tarjeta, CVV, fecha de vencimiento, y envía la información directamente a BBVA
5.5.- Se realiza la autenticación 3d Secure, por parte del banco emisor de la Tarjeta de Débito o Crédito
6.- BBVA procesa la transacción y redirecciona al tarjetahabiente a la URL que envió el comercio en el paso “2”
7.- El comercio recibe la petición desde el navegador del cliente y utiliza el id de la transacción para consultar el resultado (Autorizada o Rechazada) mediante el servicio Obtener un Cargo este campo ID se asoció el identificador de orden de la venta en el paso número 3.
Ejemplo de la URL: “redirect_url”: “https://micomercio.com”
Incluyendo en la URL, el Id de la transacción …
Ej .- https://www.micomercio.com?id=tr72356487234bd238d
8 .- El comercio hace una petición al servicio Obtener un Cargo Se pide el estatus de la transacción al servidor de BBVA y se responde un objeto “Objeto transacción“.
Nota .- El comercio genera su recibo de compra en base a la información obtenida del objeto “Obtener un Cargo” Se deberá pedir el estatus de la transacción al servidor de BBVA y este responde un objeto “Objeto transacción “ . con la data que se deberá mostrar en el recibo de pago .
IMPORTANTE
Siempre se debe incluir la llave secreta y el MID así como la Versión
POST https://sand-api.ecommercebbva.com/v1/{MERCHANT_ID}/charges.
Para realizar peticiones a la API, es necesario enviar la llave de API (API Key) en todas tus llamadas a nuestros servidores. La llave la puedes obtener desde el dashboard.
Llave de API:
Privada.- Para llamadas entre servidores y con acceso total a todas las operaciones de la API (nunca debe ser compartida).
Cargos con tarjeta (SIN VPOS)
¡ IMPORTANTE !
Para utilizar el cargo sin Vpos se debe solicitar autorización con su ejecutivo de cuenta!!!
Diagrama de Flujo de la Operación.
1.- El tarjetahabiente entra a la página web del comercio, selecciona sus productos una vez seleccionados y dentro del carrito de compras da click en la opción pagar. Dentro del Checkout del comercio se capturan los data sensible tales como número de tarjeta, CVV, fecha de vencimiento, y se envía la información directamente a BBVA
2.- El comercio crea un un objeto Json que contienen los campos enlistados en cargos “Con tarjeta” y se agrega el objeto “card” con la data sensible del tarjetahabiente.
Dentro del objeto se deberá incluir la url en donde se redirige el flujo al finalizar la transacción, ya sea autorizada o rechazada.
Ejemplo de la URL.- “redirect_url”: “https:/micomercio.com”
3.- BBVA devuelve una respuesta con un objeto JSON de nombre “transaction” que contiene la URL a la que se tiene que dirigir al tarjetahabiente para la autenticación 3D Secure. Esta URL se encuentra dentro de la respuesta en el objeto"payment_method":
Ejemplo de la URL.-
https://sand-api.ecommercebbva.com/v1/md8r38qyiyiprpmim9yy/charges/trrla2nopehlfx31fbrg/redirect/
El campo “id” (string) es un Identificador único asignado por BBVA al momento de su creación. El comercio tiene que asociar un número de orden de la venta con este ID .
3.5.- Se realiza la autenticación del tarjetahabiente por medio de 3d Secure con banco emisor de la Tarjeta de Débito o Crédito
4.- BBVA procesa la transacción y redirecciona al tarjetahabiente a la URL que envió el comercio en el paso “2”
5.- El comercio recibe la petición desde el navegador del cliente y utiliza el id de la transacción para consultar el resultado (Autorizada o Rechazada) mediante el servicio “Obtener un Cargo” este campo ID se asoció el identificador de orden de la venta en el paso número 3.
Ejemplo de la URL.- “redirect_url”: “https://micomercio.com”
Incluyendo en la URL, el Id de la transacción …
Ej .- https://www.micomercio.com?id=tr72356487234bd238d
6.- El comercio hace una petición con el servicio “Obtener un Cargo” Se pide el estatus de la transacción al servidor de BBVA y se responde un objeto “Objeto transacción “ .
Nota.- El comercio genera su recibo de compra en base a la información obtenida del objeto “Obtener un Cargo” Se deberá pedir el estatus de la transacción al servidor de BBVA y este responde un objeto “Objeto transacción “ . con la data que se deberá mostrar en el recibo de pago .
Resolución de dudas
Si tienes alguna duda puedes consultar la sección de reportes de la librería que estas utilizando:
API Endpoints
Recurso disponibles
/v1/{MERCHANT_ID}/charges
/v1/{MERCHANT_ID}/charges/{TRANSACTION_ID}
La API REST tiene un ambiente de pruebas (sandbox) y un ambiente de producción. Usa las credenciales que se generaron al momento de tu registro para realizar la integración de tu sistema. Una vez que estes listo para pasar a producción y tu solicitud sea aprobada, se generarán nuevas credenciales para acceder al ambiente de producción.
La siguientes URIs forman la base de los endpoints para los ambientes soportados:
- Pruebas, URI base:
https://sand-api.ecommercebbva.com/
- Producción, URI base:
https://api.ecommercebbva.com/
Un endpoint completo esta formado por la URI base del ambiente, el identificador del comercio y el recurso.
Por ejemplo, si queremos crear un nuevo cliente, el endpoint sería:
POST https://sand-api.ecommercebbva.com/v1/mptdggroasfcmqs8plpy/customers
Para crear una petición completa es necesario envíar las cabeceras HTTP correctas y la información en formato JSON.
Autenticación
Ejemplo de autenticación
curl https://sand-api.ecommercebbva.com/v1/mptdggroasfcmqs8plpy/charges \
-u sk_326c6d0443f6457aae29ffbd48f7d1be:
El parámetro -u se ocupa para realizar la autenticación HTTP Basic
(al agregar dos puntos después de la llave privada se previene el uso de contraseña)
<?
//Por default se usa el ambiente de sandbox
$bbva = Bbva::getInstance('mptdggroasfcmqs8plpy', 'sk_326c6d0443f6457aae29ffbd48f7d1be');
?>
//Sandbox
final BbvaAPI api = new BbvaAPI(
"https://sand-api.ecommercebbva.com", "mptdggroasfcmqs8plpy", "sk_326c6d0443f6457aae29ffbd48f7d1be");
//Produccion
final BbvaAPI api = new BbvaAPI(
"https://api.ecommercebbva.com", "mptdggroasfcmqs8plpy", "sk_326c6d0443f6457aae29ffbd48f7d1be");
//Sandbox
BbvaAPI bbvaAPI = new BbvaAPI("sk_326c6d0443f6457aae29ffbd48f7d1be", "mptdggroasfcmqs8plpy");
bbvaAPI.Production = false; // Default value = false
//Produccion
BbvaAPI bbvaAPI = new BbvaAPI("sk_326c6d0443f6457aae29ffbd48f7d1be", "mptdggroasfcmqs8plpy");
bbvaAPI.Production = true;
#Sandbox
bbva=BbvaApi.new("mptdggroasfcmqs8plpy","sk_326c6d0443f6457aae29ffbd48f7d1be")
#Produccion
bbva=BbvaApi.new("mptdggroasfcmqs8plpy","sk_326c6d0443f6457aae29ffbd48f7d1be", true)
#Definir timeout para los request's
#Este cliente maneja un timeout por defecto de 90 seg., para configurar el timeout usado para crear los request a los
# servicios, es necesario definir explícitamente el tipo de ambiente, seguido del nuevo valor del timeout para el request:
#Sintaxis:
# bbva_prod=BbvaApi.new(merchant_id,private_key,isProduction,timeout)
#Example:
# bbva_prod=BbvaApi.new(merchant_id,private_key,false,30)
Producción
Solo es necesario usar la URI base https://api.ecommercebbva.com
<?
Bbva::setProductionMode(true);
?>
//Solo es necesario usar la URI base https://api.ecommercebbva.com
bbvaAPI.Production = true;
#Solo es necesario pasar como tercer argumento un "true" cuando se crea el objeto BbvaApi
Para realizar peticiones a la API, es necesario enviar la llave de API (API Key) en todas tus llamadas a nuestros servidores. La llave la puedes obtener desde el dashboard.
Llave de API:
- Privada.- Para llamadas entre servidores y con acceso total a todas las operaciones de la API (nunca debe ser compartida).
Para la autenticación al API debes usar autenticación de acceso básica, donde el nombre de usuario es la llave de API. La contraseña no es requerida y debe dejarse en blanco por fines de simplicidad.
Errores
El API regresa objetos JSON en las respuestas del servicio, incluso en caso de errores por lo que cuando exista un error.
Objeto Error
Ejemplo de objeto
{
"category" : "request",
"description" : "The customer with id 'mptdggroasfcmqs8plpy' does not exist",
"http_code" : 404,
"error_code" : 1005,
"request_id" : "1981cdb8-19cb-4bad-8256-e95d58bc035c",
"fraud_rules": [
"Billing <> BIN Country for VISA/MC"
]
}
//Para el caso de java, toda operación regresara una instancia de la clase "OpenpayServiceException" la cual contendrá esta información del error.
//Para el caso de C Sharp, toda operación regresará una instancia de la clase "OpenpayException" la cual contendrá esta información del error.
#Para el caso de Ruby, toda operación puede regresar cualquiera de las siguientes excepciones:
# => OpenpayException: Para errores genericos, como acceso a recursos invalidos, etc.
# => OpenpayConnectionException: Para errores relacionados con problemas en la conexión al servidor.
# => OpenpayTransactionException: Para errores relacionados durante la ejecución de las operaciones.
Propiedad | Descripción |
---|---|
category | string request: Indica un error causado por datos enviados por el cliente. Por ejemplo, una petición inválida, un intento de una transacción sin fondos, o una transferencia a una cuenta que no existe. internal: Indica un error del lado del API, y ocurrira muy raramente. gateway: Indica un error durante la transacción de los fondos de una tarjeta a la cuenta de BBVA o de la cuenta hacia un banco o tarjeta. |
error_code | numeric El código del error indicando el problema que ocurrió. |
description | string Descripción del error. |
http_code | string Código de error HTTP de la respuesta. |
request_id | string Identificador de la petición. |
fraud_rules | array Arreglo con la lista de coincidencia de reglas definidas para deteccion de fraudes. |
Códigos de error
Generales
Código | Error HTTP | Causa |
---|---|---|
1000 | 500 Internal Server Error | Ocurrió un error interno en el servidor |
1001 | 400 Bad Request | El formato de la petición no es JSON, los campos no tienen el formato correcto, o la petición no tiene campos que son requeridos. |
1002 | 401 Unauthorized | La llamada no esta autenticada o la autenticación es incorrecta. |
1003 | 422 Unprocessable Entity | La operación no se pudo completar por que el valor de uno o más de los parametros no es correcto. |
1004 | 503 Service Unavailable | Un servicio necesario para el procesamiento de la transacción no se encuentra disponible. |
1005 | 404 Not Found | Uno de los recursos requeridos no existe. |
1006 | 409 Conflict | Ya existe una transacción con el mismo ID de orden. |
1007 | 402 Payment Required | La transferencia de fondos entre una cuenta de banco o tarjeta y la cuenta no fue aceptada. |
1008 | 423 Locked | Una de las cuentas requeridas en la petición se encuentra desactivada. |
1009 | 413 Request Entity too large | El cuerpo de la petición es demasiado grande. |
Almacenamiento
Código | Error HTTP | Causa |
---|---|---|
2002 | 409 Conflict | La tarjeta con este número ya se encuentra registrada en el cliente. |
2003 | 409 Conflict | El cliente con este identificador externo (External ID) ya existe. |
2004 | 422 Unprocessable Entity | El dígito verificador del número de tarjeta es inválido de acuerdo al algoritmo Luhn. |
2005 | 400 Bad Request | La fecha de expiración de la tarjeta es anterior a la fecha actual. |
2006 | 400 Bad Request | El código de seguridad de la tarjeta (CVV2) no fue proporcionado. |
2007 | 412 Precondition Failed | El número de tarjeta es de prueba, solamente puede usarse en Sandbox. |
2008 | 412 Precondition Failed | La tarjeta consultada no es valida para puntos. |
2009 | 412 Precondition Failed | El código de seguridad de la tarjeta (CVV2) no no es valido. |
Tarjetas
Código | Error HTTP | Causa |
---|---|---|
3001 | 402 Payment Required | La tarjeta fue declinada. |
3002 | 402 Payment Required | La tarjeta ha expirado. |
3003 | 402 Payment Required | La tarjeta no tiene fondos suficientes. |
3004 | 402 Payment Required | La tarjeta ha sido identificada como una tarjeta robada. |
3005 | 402 Payment Required | La tarjeta ha sido identificada como una tarjeta fraudulenta. |
3006 | 412 Precondition Failed | La operación no esta permitida para este cliente o esta transacción. |
3008 | 412 Precondition Failed | La tarjeta no es soportada en transacciones en linea. |
3009 | 402 Payment Required | La tarjeta fue reportada como perdida. |
3010 | 402 Payment Required | El banco ha restringido la tarjeta. |
3011 | 402 Payment Required | El banco ha solicitado que la tarjeta sea retenida. Contacte al banco. |
3012 | 412 Precondition Failed | Se requiere solicitar al banco autorización para realizar este pago. |
Cargos
Los cargos se pueden realizar a tarjetas de crédito o débito. A cada cargo se le asigna un identificador único en el sistema.
En cargos a tarjeta puedes hacerlo desplegando un formulario para que el usuario capture los datos de la tarjeta.
¡ IMPORTANTE !
El manejo y envío de los datos, así como la captura de respuestas de cada una de las transacciones es responsabilidad del comercio
Con VPOS
Este tipo de cargo no requiere una tarjeta guardada o que hayas generado un token.
Definición
Comercio
POST https://sand-api.ecommercebbva.com/v1/{MERCHANT_ID}/charges
<?
Comercio
$bbva->charges->create(chargeRequest);
?>
//Comercio
bbvaAPI.charges().create(List<Parameter> request);
//Comercio
bbvaAPI.ChargeService.Create(List<IParameter> request);
#Comercio
@charges=@bbva.create(:charges)
@charges.create(request_hash)
Ejemplo de petición con comercio
curl https://sand-api.ecommercebbva.com/v1/mptdggroasfcmqs8plpy/charges \
-u sk_326c6d0443f6457aae29ffbd48f7d1be: \
-H "Content-type: application/json" \
-X POST -d '{
"affiliation_bbva" : "781500",
"amount" : 100,
"description" : "Cargo inicial a mi cuenta",
"currency" : "MXN",
"order_id" : "oid-00051",
"customer": {
"name": "Juan",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.com.mx",
"phone_number": "555-444-3322"
},
"redirect_url": "https://micomercio.com"
}'
BbvaAPI api = new BbvaAPI("sk_326c6d0443f6457aae29ffbd48f7d1be", "mptdggroasfcmqs8plpy");
ParameterContainer customer = new ParameterContainer("customer");
customer.AddValue("name", "Juan");
customer.AddValue("last_name", "Vazquez Juarez");
customer.AddValue("email", "juan.vazquez@empresa.com.mx");
customer.AddValue("phone_number", "554-170-3567");
ParameterContainer request = new ParameterContainer("charge");
request.AddValue("affiliation_bbva", "781500");
request.AddValue("amount", "100.00");
request.AddValue("description", "Cargo inicial a mi merchant");
request.AddValue("currency", "MXN");
request.AddValue("order_id", "oid-00051");
request.AddValue("redirect_url", "https://sand-portal.ecommercebbva.com");
request.AddMultiValue(customer):
Dictionary<String, Object> chargeDictionary = bbvaAPI.ChargeService.Create(request.ParameterValues);
ParameterContainer charge = new ParameterContainer("charge", chargeDictionary);
BbvaAPI api = new BbvaAPI(
"https://sand-api.ecommercebbva.com", "sk_326c6d0443f6457aae29ffbd48f7d1be", "mptdggroasfcmqs8plpy");
ParameterContainer customer = new ParameterContainer("customer");
customer.addValue("name", "Juan");
customer.addValue("last_name", "Vazquez Juarez");
customer.addValue("email", "juan.vazquez@empresa.com.mx");
customer.addValue("phone_number", "554-170-3567");
ParameterContainer charge = new ParameterContainer("charge");
charge.addValue("affiliation_bbva", "781500");
charge.addValue("amount", "100.00");
charge.addValue("description", "Cargo inicial a mi merchant");
charge.addValue("currency", "MXN");
charge.addValue("order_id", "oid-00051");
charge.addValue("redirect_url", "https://sand-portal.ecommercebbva.com");
charge.addMultiValue(customer);
Map chargeAsMap = api.charges().create(charge.getParameterValues());
ParameterContainer charge = new ParameterContainer("charge", chargeAsMap);
<?
$bbva = Bbva::getInstance('mptdggroasfcmqs8plpy', 'sk_326c6d0443f6457aae29ffbd48f7d1be');
$chargeRequest = array(
'affiliation_bbva' => '781500',
'amount' => 100,
'description' => 'Cargo inicial a mi merchant',
'currency' => 'MXN',
'order_id' => 'oid-00051',
'redirect_url' => 'https://sand-portal.ecommercebbva.com',
'customer' => array(
'name' => 'Juan',
'last_name' => 'Vazquez Juarez',
'email' => 'juan.vazquez@empresa.com.mx',
'phone_number' => '554-170-3567')
);
$charge = $bbva->charges->create($chargeRequest);
?>
@bbva=BbvaApi.new("mptdggroasfcmqs8plpy","sk_326c6d0443f6457aae29ffbd48f7d1be")
@charges=@bbva.create(:charges)
customer_hash={
"name" => "Juan",
"last_name" => "Vazquez Juarez",
"phone_number" => "4423456723",
"email" => "juan.vazquez@empresa.com.mx"
}
request_hash={
"affiliation_bbva" => "781500",
"amount" => 100.00,
"currency" => "MXN",
"description" => "Cargo inicial a mi merchant",
"order_id" => "oid-00051",
"redirect_url" => "https://sand-portal.ecommercebbva.com",
"customer" => customer_hash
}
response_hash=@charges.create(request_hash.to_hash)
Ejemplo de respuesta
{
"id": "trz8v1n3g992xtylohts",
"authorization": null,
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"status": "charge_pending",
"conciliated": false,
"creation_date": "2019-04-03T03:57:58-06:00",
"operation_date": "2019-04-03T03:57:58-06:00",
"description": "Pago",
"error_message": null,
"order_id": "oid-00051",
"payment_method": {
"type": "redirect",
"url": "https://sand-api.ecommercebbva.com/v1/mptdggroasfcmqs8plpy/charges/trywj1kyx7vczirifkyw/card_capture"
},
"currency": "MXN",
"amount": 100.00,
"customer": {
"name": "Juan",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.com.mx",
"phone_number": "555-444-3322",
"address": null,
"creation_date": "2019-04-03T03:57:58-06:00",
"external_id": null,
"clabe": null
}
}
Petición
Propiedad | Descripción |
---|---|
affiliation_bbva | string (requerido) Debe contener el número de afiliación. |
amount | numeric (requerido) Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales. |
description | string (requerido, longitud = 250) Una descripción asociada al cargo. |
currency | string (opcional) Tipo de moneda del cargo. Por el momento solo se soportan 2 tipos de monedas: Pesos Mexicanos(MXN) y Dólares Americanos(USD). |
order_id | string (requerido, longitud = 100) Identificador único del cargo. Debe ser único entre todas las transacciones. |
customer | objeto (requerido) Información del cliente al que se le realiza el cargo. Se puede ocupar los mismos parámetros usados en la creación de un cliente pero no se creará una cuenta al cliente. Nota: Este parámetro solo se puede utilizar creando el cargo a nivel comercio Si desea crear un cliente y llevar un historial de sus cargos consulte como Objeto Cliente y realice el cargo a nivel cliente. |
payment_plan | objeto (opcional) Datos del plan de meses sin intereses que se desea utilizar en el cargo. Ver Objeto PaymentPlan. |
redirect_url | string (requerido) Usado para cargos de tipo redirect. Indica la url a la que redireccionar despues de una transaccion exitosa en el fomulario de pago de BBVA. |
use_3d_secure | string (opcional) Por defecto el valor es TRUE, si el comercio tiene habilitada la configuración para no utilizar 3d secure, entonces podrá enviar el parámetro en FALSE. |
Respuesta
Regresa un objeto de transacción con la información del cargo o una respuesta de error.
Con tarjeta
Definición
Comercio
POST https://sand-api.ecommercebbva.com/v1/{MERCHANT_ID}/charges
<?
Comercio
$bbva->charges->create(chargeRequest);
?>
//Comercio
bbvaAPI.charges().create(List<Parameter> request);
//Comercio
bbvaAPI.ChargeService.Create(List<IParameter> request);
#Comercio
@charges=@bbva.create(:charges)
@charges.create(request_hash)
Ejemplo de petición con comercio
curl https://sand-api.ecommercebbva.com/v1/mptdggroasfcmqs8plpy/charges \
-u sk_326c6d0443f6457aae29ffbd48f7d1be: \
-H "Content-type: application/json" \
-X POST -d '{
"affiliation_bbva" : "781500",
"amount" : 100,
"description" : "Cargo inicial a mi cuenta",
"currency" : "MXN",
"order_id" : "oid-00051",
"customer": {
"name": "Juan",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.com.mx",
"phone_number": "555-444-3322"
},
"card" : {
"holder_name" : "Juan Vazquez",
"card_number" : "4242424242424242",
"expiration_month" : "12",
"expiration_year" : "21",
"cvv2" : "842"
}
"redirect_url": "https://micomercio.com"
}'
BbvaAPI api = new BbvaAPI("sk_326c6d0443f6457aae29ffbd48f7d1be", "mptdggroasfcmqs8plpy");
ParameterContainer customer = new ParameterContainer("customer");
customer.AddValue("name", "Juan");
customer.AddValue("last_name", "Vazquez Juarez");
customer.AddValue("email", "juan.vazquez@empresa.com.mx");
customer.AddValue("phone_number", "554-170-3567");
ParameterContainer card = new ParameterContainer("card");
customer.AddValue("holder_name", "Juan Vazquez Juarez");
customer.AddValue("card_number", "4242424242424242");
customer.AddValue("expiration_month", "12");
customer.AddValue("expiration_year", "21");
customer.AddValue("cvv2", "842");
ParameterContainer request = new ParameterContainer("charge");
request.AddValue("affiliation_bbva", "781500");
request.AddValue("amount", "100.00");
request.AddValue("description", "Cargo inicial a mi merchant");
request.AddValue("currency", "MXN");
request.AddValue("order_id", "oid-00051");
request.AddValue("redirect_url", "https://sand-portal.ecommercebbva.com");
request.AddMultiValue(customer);
request.AddMultiValue(card):
Dictionary<String, Object> chargeDictionary = bbvaAPI.ChargeService.Create(request.ParameterValues);
ParameterContainer charge = new ParameterContainer("charge", chargeDictionary);
BbvaAPI api = new BbvaAPI(
"https://sand-api.ecommercebbva.com", "sk_326c6d0443f6457aae29ffbd48f7d1be", "mptdggroasfcmqs8plpy");
ParameterContainer customer = new ParameterContainer("customer");
customer.addValue("name", "Juan");
customer.addValue("last_name", "Vazquez Juarez");
customer.addValue("email", "juan.vazquez@empresa.com.mx");
customer.addValue("phone_number", "554-170-3567");
ParameterContainer card = new ParameterContainer("card");
card.addValue("card_number", "4242424242424242");
card.addValue("holder_name", "Juan Vazquez");
card.addValue("expiration_year", "21");
card.addValue("expiration_month", "12");
card.addValue("cvv2", "842");
ParameterContainer charge = new ParameterContainer("charge");
charge.addValue("affiliation_bbva", "781500");
charge.addValue("amount", "100.00");
charge.addValue("description", "Cargo inicial a mi merchant");
charge.addValue("currency", "MXN");
charge.addValue("order_id", "oid-00051");
charge.addValue("redirect_url", "https://sand-portal.ecommercebbva.com");
charge.addMultiValue(customer);
charge.addMultiValue(card);
Map chargeAsMap = api.charges().create(charge.getParameterValues());
ParameterContainer charge = new ParameterContainer("charge", chargeAsMap);
<?
$bbva = Bbva::getInstance('mptdggroasfcmqs8plpy', 'sk_326c6d0443f6457aae29ffbd48f7d1be');
$chargeRequest = array(
'affiliation_bbva' => '781500',
'amount' => 100,
'description' => 'Cargo inicial a mi merchant',
'currency' => 'MXN',
'order_id' => 'oid-00051',
'redirect_url' => 'https://sand-portal.ecommercebbva.com',
'card' => array(
'holder_name' => 'Juan Vazquez',
'card_number' => '4242424242424242',
'expiration_month' => '12',
'expiration_year' => '21'
'cvv2' => '842'),
'customer' => array(
'name' => 'Juan',
'last_name' => 'Vazquez Juarez',
'email' => 'juan.vazquez@empresa.com.mx',
'phone_number' => '554-170-3567')
);
$charge = $bbva->charges->create($chargeRequest);
?>
@bbva=BbvaApi.new("mptdggroasfcmqs8plpy","sk_326c6d0443f6457aae29ffbd48f7d1be")
@charges=@bbva.create(:charges)
customer_hash={
"name" => "Juan",
"last_name" => "Vazquez Juarez",
"phone_number" => "4423456723",
"email" => "juan.vazquez@empresa.com.mx"
}
card_hash={
"holder_name" => "Juan Vazquez",
"card_number" => "4242424242424242",
"expiration_month" => "12",
"expiration_year" => "21",
"cvv2" => "842"
}
request_hash={
"affiliation_bbva" => "781500",
"amount" => 100.00,
"currency" => "MXN",
"description" => "Cargo inicial a mi merchant",
"order_id" => "oid-00051",
"redirect_url" => "https://sand-portal.ecommercebbva.com",
"customer" => customer_hash,
"card" => card_hash
}
response_hash=@charges.create(request_hash.to_hash)
Ejemplo de respuesta
{
"id": "trocmtrnivm5scpfguvl",
"authorization": "trocmtrnivm5scpfguvl",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"type": "credit",
"brand": "visa",
"address": null,
"card_number": "424242XXXXXX4242",
"holder_name": "Juan Vazquez",
"expiration_year": "21",
"expiration_month": "12",
"allows_charges": true,
"allows_payouts": false,
"bank_name": "BBVA",
"points_type": "BBVA",
"bank_code": "012",
"points_card": true
},
"status": "charge_pending",
"conciliated": true,
"creation_date": "2019-04-24T10:43:06-05:00",
"operation_date": "2019-04-24T10:43:06-05:00",
"description": "Pago",
"error_message": null,
"order_id": "1556120584928",
"amount": 105.32,
"customer": {
"name": "Juan",
"last_name": "Perez",
"email": "juanperez@example.com",
"phone_number": "554-170-3567",
"address": {
"line1": "Calle Morelos #12 - 11",
"line2": "Colonia Centro",
"line3": "Cuauhtémoc",
"state": "Queretaro",
"city": "Queretaro",
"postal_code": "12345",
"country_code": "MX"
},
"creation_date": "2019-04-24T10:43:06-05:00",
"external_id": null,
"clabe": null
},
"payment_method": {
"type": "redirect",
"url": "https://sand-api.ecommercebbva.com/v1/mptdggroasfcmqs8plpy/charges/trocmtrnivm5scpfguvl/redirect/"
},
"currency": "MXN"
}
Petición
Propiedad | Descripción |
---|---|
affiliation_bbva | string (requerido) Debe contener el número de afiliación. |
amount | numeric (requerido) Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales. |
description | string (requerido, longitud = 250) Una descripción asociada al cargo. |
currency | string (opcional) Tipo de moneda del cargo. Por el momento solo se soportan 2 tipos de monedas: Pesos Mexicanos(MXN) y Dólares Americanos(USD). |
order_id | string (requerido, longitud = 100) Identificador único del cargo. Debe ser único entre todas las transacciones. |
customer | objeto (requerido) Información del cliente al que se le realiza el cargo. Se puede ocupar los mismos parámetros usados en la creación de un cliente pero no se creará una cuenta al cliente. Nota: Este parámetro solo se puede utilizar creando el cargo a nivel comercio Si desea crear un cliente y llevar un historial de sus cargos consulte como Objeto Cliente y realice el cargo a nivel cliente. |
card | objeto (requerido) Información de la tarjeta de donde se retirarán los fondos. |
redirect_url | string (requerido) Usado para cargos de tipo redirect. Indica la url a la que redireccionar despues de una transaccion exitosa en el fomulario de pago de BBVA. |
use_3d_secure | string (opcional) Por defecto el valor es TRUE, si el comercio tiene habilitada la configuración para no utilizar 3d secure, entonces podrá enviar el parámetro en FALSE. |
Respuesta
Regresa un objeto de transacción con la información del cargo o una respuesta de error.
Confirmar un cargo
Definición
Comercio
POST https://sand-api.ecommercebbva.com/v1/{MERCHANT_ID}/charges/{TRANSACTION_ID}/capture
<?
Comercio
$charge = $bbva->charges->get(transactionId);
$charge->capture(captureData);
?>
//Comercio
bbvaAPI.charges().confirmCapture(ConfirmCaptureParams request);
//Comercio
bbvaAPI.ChargeService.Capture(string transaction_id, Decimal? amount);
#Comercio
@charges=@bbva.create(:charges)
@charges.capture(transaction_id)
Ejemplo de petición con comercio
curl https://sand-api.ecommercebbva.com/v1/mptdggroasfcmqs8plpy/charges/tryqihxac3msedn4yxed/capture \
-u sk_326c6d0443f6457aae29ffbd48f7d1be: \
-H "Content-type: application/json" \
-X POST -d '{
"amount" : 100.00
} '
<?
$bbva = Bbva::getInstance('mptdggroasfcmqs8plpy', 'sk_326c6d0443f6457aae29ffbd48f7d1be');
$captureData = array('amount' => 100.00);
$customer = $bbva->customers->get('ag4nktpdzebjiye1tlze');
$charge = $customer->charges->get('tryqihxac3msedn4yxed');
$charge->capture($captureData);
?>
BbvaAPI api = new BbvaAPI(
"https://sand-api.ecommercebbva.com", "sk_326c6d0443f6457aae29ffbd48f7d1be", "mptdggroasfcmqs8plpy");
ConfirmCaptureParams request = new ConfirmCaptureParams();
request.chargeId("tryqihxac3msedn4yxed");
request.amount(new BigDecimal("100.00"));
Map chargeAsMap = api.charges().confirmCapture("ag4nktpdzebjiye1tlze", request);
ParameterContainer charge = new ParameterContainer("charge", chargeAsMap);
BbvaAPI api = new BbvaAPI("sk_326c6d0443f6457aae29ffbd48f7d1be", "mptdggroasfcmqs8plpy");
Dictionary<String, Object> chargeDictionary = api.ChargeService
.Capture("ag4nktpdzebjiye1tlze", "tryqihxac3msedn4yxed", new Decimal(100.00));
ParameterContainer charge = new ParameterContainer("charge", chargeDictionary);
@bbva=BbvaApi.new("mptdggroasfcmqs8plpy","sk_326c6d0443f6457aae29ffbd48f7d1be")
@charges=@bbva.create(:charges)
response_hash=@charges.capture("tryqihxac3msedn4yxed", "ag4nktpdzebjiye1tlze")
Ejemplo de respuesta
{
"id":"tryqihxac3msedn4yxed",
"amount":100.00,
"authorization":"801585",
"method":"card",
"operation_type":"in",
"transaction_type":"charge",
"card":{
"type":"debit",
"brand":"visa",
"address":null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"allows_payouts":true,
"bank_name":"Banamex",
"bank_code":"002"
},
"status":"completed",
"currency":"MXN",
"creation_date":"2014-05-26T14:00:17-05:00",
"operation_date":"2014-05-26T14:00:17-05:00",
"description":"Cargo inicial a mi cuenta",
"error_message":null,
"order_id":null,
"customer_id":"ag4nktpdzebjiye1tlze"
}
Confirmar un cargo creado con la propiedad de capture = "false"
, este método es la segunda parte de la creación de un cargo con tarjeta y puede confirmar el monto capturado en la primera llamada o un monto menor.
Nota: Solo se pueden confirmar cargos a tarjeta. Para cancelar el cargo creado se debe hacer una llamada al método Devolver un cargo
Petición
Propiedad | Descripción |
---|---|
amount | numeric (requerido) Cantidad a confirmar. Puede ser menor o igual al monto capturado hasta dos dígitos decimales. |
Respuesta
Regresa un objeto de transacción con la información del cargo o una respuesta de error.
Devolver un cargo
Definición
Comercio
POST https://sand-api.ecommercebbva.com/v1/{MERCHANT_ID}/charges/{TRANSACTION_ID}/refund
<?
Comercio
$charge = $bbva->charges->get(transactionId);
$charge->refund(refundData);
?>
//Comercio
bbvaAPI.charges().refund(RefundParams request);
//Comercio
bbvaAPI.ChargeService.Refund(string transaction_id, string description);
#Comercio
@charges=@bbva.create(:charges)
@charges.refund(transaction_id, request_hash)
Ejemplo de petición con comercio
curl https://sand-api.ecommercebbva.com/v1/mptdggroasfcmqs8plpy/charges/tr6cxbcefzatd10guvvw/refund \
-u sk_326c6d0443f6457aae29ffbd48f7d1be: \
-H "Content-type: application/json" \
-X POST -d '{
"description" : "devolución",
"amount" : 100.00
} '
<?
$bbva = Bbva::getInstance('mptdggroasfcmqs8plpy', 'sk_326c6d0443f6457aae29ffbd48f7d1be');
$refundData = array(
'description' => 'devolución',
'amount' => 100);
$charge = $bbva->charges->get('ag4nktpdzebjiye1tlze');
$charge->refund(refundData);
?>
BbvaAPI api = new BbvaAPI(
"https://sand-api.ecommercebbva.com", "sk_326c6d0443f6457aae29ffbd48f7d1be", "mptdggroasfcmqs8plpy");
RefundParams request = new RefundParams();
request.chargeId("tryqihxac3msedn4yxed");
request.description("Monto de cargo devuelto");
request.amount(new BigDecimal("100.00"));
Map chargeAsMap = api.charges().refund("ag4nktpdzebjiye1tlze", request);
ParameterContainer charge = new ParameterContainer("charge", chargeAsMap);
BbvaAPI api = new BbvaAPI("sk_326c6d0443f6457aae29ffbd48f7d1be", "mptdggroasfcmqs8plpy");
Dictionary<String, Object> chargeDictionary = api.ChargeService
.Refund("ag4nktpdzebjiye1tlze", "tryqihxac3msedn4yxed", "Monto de cargo devuelto", , new Decimal(100.00));
ParameterContainer charge = new ParameterContainer("charge", chargeDictionary);
@bbva=BbvaApi.new("mptdggroasfcmqs8plpy","sk_326c6d0443f6457aae29ffbd48f7d1be")
@charges=@bbva.create(:charges)
request_hash={
"description" => "Monto de cargo devuelto",
"amount" => 100.00
}
response_hash=@charges.refund("tryqihxac3msedn4yxed", request_hash.to_hash, "ag4nktpdzebjiye1tlze")
Ejemplo de respuesta
{
"id":"tr6cxbcefzatd10guvvw",
"amount":100.00,
"authorization":"801585",
"method":"card",
"operation_type":"in",
"transaction_type":"charge",
"card":{
"type":"debit",
"brand":"visa",
"address":null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"allows_payouts":true,
"bank_name":"Banamex",
"bank_code":"002"
},
"status":"completed",
"refund":{
"id":"trcbsmjkroqmjobxqhpb",
"amount":100.00,
"authorization":"801585",
"method":"card",
"operation_type":"out",
"transaction_type":"refund",
"status":"completed",
"currency":"MXN",
"creation_date":"2014-05-26T13:56:21-05:00",
"operation_date":"2014-05-26T13:56:21-05:00",
"description":"devolucion",
"error_message":null,
"order_id":null,
"customer_id":"ag4nktpdzebjiye1tlze"
},
"currency":"MXN",
"creation_date":"2014-05-26T11:56:25-05:00",
"operation_date":"2014-05-26T11:56:25-05:00",
"description":"Cargo inicial a mi cuenta",
"error_message":null,
"order_id":"oid-00052",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Si deseas realizar una devolución de un cargo hecho a tarjeta puedes ocupar este método. El monto a devolver será por el total del cargo o un monto menor. Ten en cuenta que la devolución puede tardar en aparecer en el estado de cuenta de tu cliente de 1 a 3 días hábiles.
Petición
Propiedad | Descripción |
---|---|
description | string (opcional, longitud = 250) Texto libre para describir motivo de la devolución. |
amount | numeric (opcional) Cantidad a reembolsar. Debe ser una cantidad mayor a cero y menor o igual al cargo original, con hasta dos dígitos decimales. |
Respuesta
Regresa un objeto de transacción con la información del cargo o una respuesta de error.
Obtener un cargo
Definición
Comercio
GET https://sand-api.ecommercebbva.com/v1/{MERCHANT_ID}/charges/{TRANSACTION_ID}
<?
Comercio
$charge = $bbva->charges->get(transactionId);
?>
//Comercio
bbvaAPI.charges().get(String transactionId);
//Comercio
bbvaAPI.ChargeService.Get(string transaction_id);
#Comercio
@charges=@bbva.create(:charges)
@charges.get(transaction_id)
Ejemplo de petición con comercio
curl https://sand-api.ecommercebbva.com/v1/mptdggroasfcmqs8plpy/customers/tr6cxbcefzatd10guvvw \
-u sk_326c6d0443f6457aae29ffbd48f7d1be:
<?
$bbva = Bbva::getInstance('mptdggroasfcmqs8plpy', 'sk_326c6d0443f6457aae29ffbd48f7d1be');
$customer = $bbva->customers->get('ag4nktpdzebjiye1tlze');
$charge = $customer->charges->get('tr6cxbcefzatd10guvvw');
?>
BbvaAPI api = new BbvaAPI(
"https://sand-api.ecommercebbva.com", "sk_326c6d0443f6457aae29ffbd48f7d1be", "mptdggroasfcmqs8plpy");
Map chargeAsMap = api.charges().get("ag4nktpdzebjiye1tlze", "tr6cxbcefzatd10guvvw");
ParameterContainer charge = new ParameterContainer("charge", chargeAsMap);
BbvaAPI api = new BbvaAPI("sk_326c6d0443f6457aae29ffbd48f7d1be", "mptdggroasfcmqs8plpy");
Dictionary<String, Object> chargeDictionary = api.ChargeService.Get("ag4nktpdzebjiye1tlze", "tryqihxac3msedn4yxed");
ParameterContainer charge = new ParameterContainer("charge", chargeDictionary);
@bbva=BbvaApi.new("mptdggroasfcmqs8plpy","sk_326c6d0443f6457aae29ffbd48f7d1be")
@charges=@bbva.create(:charges)
response_hash=@charges.get("tr6cxbcefzatd10guvvw", "ag4nktpdzebjiye1tlze")
Ejemplo de respuesta
{
"id":"tr6cxbcefzatd10guvvw",
"amount":100.00,
"authorization":"801585",
"method":"card",
"operation_type":"in",
"transaction_type":"charge",
"card":{
"type":"debit",
"brand":"visa",
"address":null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"allows_payouts":true,
"bank_name":"Banamex",
"bank_code":"002"
},
"status":"completed",
"refund":{
"id":"trcbsmjkroqmjobxqhpb",
"amount":100.00,
"authorization":"801585",
"method":"card",
"operation_type":"out",
"transaction_type":"refund",
"status":"completed",
"currency":"MXN",
"creation_date":"2014-05-26T13:56:21-05:00",
"operation_date":"2014-05-26T13:56:21-05:00",
"description":"devolucion",
"error_message":null,
"order_id":null,
"customer_id":"ag4nktpdzebjiye1tlze"
},
"currency":"MXN",
"creation_date":"2014-05-26T11:56:25-05:00",
"operation_date":"2014-05-26T11:56:25-05:00",
"description":"Cargo inicial a mi cuenta",
"error_message":null,
"order_id":"oid-00052",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Regresa la información de un cargo generado en cualquier momento solo con conocer el id de cargo.
Petición
Propiedad | Descripción |
---|---|
transaction_id | string (requerido, longitud = 45) Identificador del cargo a consultar. |
Respuesta
Regresa un objeto de transacción con la información del cargo o una respuesta de error.
Objetos Comunes
Información de objetos compartidos en peticiones y respuestas.
Objeto Transacción
Ejemplo de Objeto:
{
"id":"trehwr2zarltvae56vxl",
"authorization":null,
"transaction_type":"payout",
"operation_type":"out",
"currency":"MXN",
"method":"bank",
"creation_date":"2013-11-14T18:29:35-06:00",
"order_id":"000001",
"status":"in_progress",
"amount":500,
"description":"Pago de ganancias",
"error_message":null,
"customer_id":"afk4csrazjp1udezj1po",
"bank_account":{
"rfc":ONE316015PM1,
"mobile":null,
"alias":null,
"bank_name":"BBVA",
"creation_date":"2013-11-14T18:29:34-06:00",
"clabe":"012XXXXXXXXXX24616",
"holder_name":"Juan Tapia Trejo",
"bank_code":"012"
}
}
Propiedad | Descripción |
---|---|
id | string Identificador único asignado por BBVA al momento de su creación. |
authorization | string Número de autorización generado por el procesador. |
transaction_type | string Tipo de transacción que fue creada: fee, charge, payout, transfer. |
operation_type | string Tipo de afectación en la cuenta: in, out. |
method | string Tipo de método usado en la transacción: card, bank o customer. |
creation_date | datetime Fecha de creación de la transacción en formato ISO 8601. |
order_id | string Referencia única o número de orden/transacción. |
status | string Estatus actual de la transacción. Posibles valores: completed, in_progress, failed. |
amount | numeric Cantidad de la transacción a dos decimales. |
description | string Descripción de la transacción. |
error_message | string Si la transacción está en status: failed, en este campo se mostrará la razón del fallo. |
customer_id | string Identificar único del cliente al cual pertence la transacción. Si es valor es nulo, la transacción pertenece a la cuenta del comercio. |
currency | string Moneda usada en la operación, por default es MXN. |
bank_account | objeto Datos de la cuenta bancaria usada en la transacción. Ver objeto BankAccoount |
card | objeto Datos de la tarjeta usada en la transacción. Ver objeto Card |
card_points | objeto Datos de los puntos de la tarjeta usados para el pago, si fueron utilizados. Ver objeto CardPoints |
Objeto Dirección
Ejemplo de Objeto:
{
"line1":"Av 5 de Febrero",
"line2":"Roble 207",
"line3":"col carrillo",
"state":"Queretaro",
"city":"Querétaro",
"postal_code":"76900",
"country_code":"MX"
}
Propiedad | Descripción |
---|---|
line1 | string (requerido) Primera línea de dirección del tarjeta habiente. Usada comúnmente para indicar la calle y número exterior e interior. |
line2 | string Segunda línea de la dirección del tarjeta habiente. Usada comúnmente para indicar condominio, suite o delegación. |
line3 | string Tercer línea de la dirección del tarjeta habiente. Usada comúnmente para indicar la colonia. |
postal_code | string (requerido) Código postal del tarjeta habiente |
state | string (requerido) Estado del tarjeta habiente |
city | string (requerido) Ciudad del tarjeta habiente |
country_code | string (requerido) Código del país del tarjeta habiente a dos caracteres en formato ISO_3166-1 |
Objeto PaymentPlan
Ejemplo de Objeto:
{
"payments":"6",
"payments_type": "WITH_INTEREST",
"deferred_months": "3"
}
Propiedad | Descripción |
---|---|
payments | numeric Es el número de pagos en los cuales se pretende realizar un cargo a meses con/sin intereses (3, 6, 9, 12, 18). |
payments_type | string Indica el tipo de pagos: WITHOUT_INTEREST (meses sin intereses) WITH_INTEREST (meses con intereses) |
deferred_months | numeric Indica la cantidad de meses que será diferido el pago inicial (1,2,3,6). |
Objeto CardPoints
Ejemplo de Objeto:
{
"used": 134,
"remaining": 300,
"caption": "TRANSACCION APROBADA. ME OBLIGO EN LOS TERMINOS Y CONDICIONES DEL PROGRAMA RECOMPENSAS SANTANDER. PARA CUALQUIER DUDA O ACLARACION LLAME AL 01800 RECOMPE (73-266-73).",
"amount": 10
}
Propiedad | Descripción |
---|---|
used | numeric Cantidad de puntos usados para realizar este pago. |
remaining | numeric Cantidad de puntos restantes en la tarjeta después de realizar el pago. |
amount | numeric Monto de la transacción que fue pagado mediante puntos. |
caption | string (opcional) Mensaje a mostrar al cliente en su recibo o ticket de compra. |
Objeto Transaction Status
Value | Description |
---|---|
IN_PROGRESS | Transacción en proceso |
COMPLETED | Transacción ejecutadá correctamente |
REFUNDED | Transacción reembolsada |
CHARGE_PENDING | Transacción de cargo que no ha sido pagada |
CANCELLED | Transacción de cargo que no fue pagada y se ha cancelado |
FAILED | Transacción que se intentó pagar pero ocurrió algún error |
Objeto Cliente
Ejemplo de Objeto:
{
"id":"cz4nkhrlcu9k7qd4lwqx",
"creation_date":"2013-11-08T12:04:46-06:00",
"name":"Rodrigo",
"last_name":"Velazco Perez",
"email":"rodrigo.velazco@payments.com",
"phone_number":"4425667045",
"external_id":"cliente1",
"status":"active",
"balance":103,
"address":{
"line1":"Av. 5 de febrero No. 1080 int Roble 207",
"line2":"Carrillo puerto",
"line3":"Zona industrial carrillo puerto",
"postal_code":"06500",
"state":"Querétaro",
"city":"Querétaro",
"country_code":"MX"
},
"clabe": "646180109400423323"
}
Propiedad | Descripción |
---|---|
id | string Identificador único del cliente. |
creation_date | datetime Fecha y hora en que se creó el cliente en formato ISO 8601 |
name | string Nombre del cliente. |
last_name | string Apellidos del cliente. |
string Cuenta de correo electrónico del cliente. |
|
phone_number | numeric Número telefónico del Cliente. |
status | string Estatus de la cuenta del cliente puede ser active o deleted. Si la cuenta se encuentra en estatus deleted no se permite realizar ninguna transacción. |
balance | numeric Saldo en la cuenta con dos decimales. |
clabe | numeric Cuenta CLABE asociada con la que puede recibir fondos realizando una transferencia desde cualquier banco en México. |
address | object Dirección del Cliente. Usada comúnmente como dirección de envío. |
store | object Contiene la referencia que se puede utilizar para realizar depósitos en tiendas de conveniencia, también se incluye la url para generar el código de barra. |
Objeto Tarjeta
Ejemplo de objeto
{
"type":"debit",
"brand":"mastercard",
"address":{
"line1":"Av 5 de Febrero",
"line2":"Roble 207",
"line3":"col carrillo",
"state":"Queretaro",
"city":"Querétaro",
"postal_code":"76900",
"country_code":"MX"
},
"id":"kgipbqixvjg3gbzowl7l",
"card_number":"1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"allows_payouts":false,
"creation_date":"2013-12-12T17:50:00-06:00",
"bank_name":"DESCONOCIDO",
"bank_code":"000",
"customer_id":"a2b79p8xmzeyvmolqfja",
"points_card":true
}
Propiedad | Descripción |
---|---|
id | string Identificador único de la tarjeta. |
creation_date | datetime Fecha y hora en que se creó la tarjeta en formato ISO 8601 |
holder_name | string Nombre del tarjeta habiente. |
card_number | numeric Número de tarjeta, puede ser de 16 o 19 dígitos. |
cvv2 | numeric Código de seguridad como aparece en la parte de atrás de la tarjeta. Generalmente 3 dígitos. |
expiration_month | numeric Mes de expiración tal como aparece en la tarjeta. |
expiration_year | numeric Año de expiración tal como aparece en la tarjeta. |
address | object Dirección de facturación del tarjeta habiente. |
allows_charges | boolean Permite conocer si se pueden realizar cargos a la tarjeta. |
allows_payouts | boolean Permite conocer si se pueden realizar envíos de pagos a la tarjeta. |
brand | string Marca de la tarjeta: visa, mastercard, carnet o american express. |
type | string Tipo de la tarjeta: debit, credit, cash, etc. |
bank_name | string Nombre del banco emisor. |
bank_code | string Código del banco emisor. |
customer_id | string Identificador del cliente al que pertenece la tarjeta. Si la tarjeta es a nivel comercio este valor será null. |
points_card | boolean Indica si la tarjeta soporta el pago con puntos. |