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.

Cargo VPOS

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.

Cargo 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. 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:

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:

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.
email 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.
Powered By