Introducción
La API de Openpay está diseña 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 Openpay (Java, Php, C#, Python, Ruby, NodeJS), las respuestas son específicamente del tipo definido en dichos clientes en sus respectivos lenguajes.
API Endpoints
Recurso disponibles
a) Por Comercio
/v1/{MERCHANT_ID}/...
/fees
/fees/{FEE_ID}
/charges
/charges/{TRANSACTION_ID}
/payouts
/payouts/{TRANSACTION_ID}
/cards
/cards/{CARD_ID}
/customers
/customers/{CUSTOMER_ID}
/plans
/plans/{PLAN_ID}
/tokens
/tokens/{TOKEN_ID}
b) Por Cliente
/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/...
/cards
/cards/{CARD_ID}
/bankaccounts
/bankaccounts/{BANKACCOUNT_ID}
/charges
/charges/{TRANSACTION_ID}
/payouts
/payouts/{TRANSACTION_ID}
/transfers
/transfers/{TRANSACTION_ID}
/subscriptions
/subscriptions/{SUBSCRIPTION_ID}
La API REST de Openpay 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 con Openpay. 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://sandbox-api.openpay.mx
- Producción, URI base:
https://api.openpay.mx
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://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers
Para crear una petición completa es necesaria envíar las cabeceras HTTP correctas y la información en formato JSON.
Autenticación
Ejemplo de autenticación
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
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
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c4875b178ce26348b0fac');
?>
//Sandbox
final OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "moiep6umtcnanql3jrxp", "sk_3433941e467c4875b178ce26348b0fac");
//Produccion
final OpenpayAPI api = new OpenpayAPI("https://api.openpay.mx", "moiep6umtcnanql3jrxp", "sk_3433941e467c4875b178ce26348b0fac");
var Openpay = require('openpay');
var openpay = new Openpay('moiep6umtcnanql3jrxp','sk_3433941e467c4875b178ce26348b0fac');
//Sandbox
OpenpayAPI openpayAPI = new OpenpayAPI("sk_3433941e467c4875b178ce26348b0fac", "moiep6umtcnanql3jrxp");
openpayAPI.Production = false; // Default value = false
//Produccion
OpenpayAPI openpayAPI = new OpenpayAPI("sk_3433941e467c4875b178ce26348b0fac", "moiep6umtcnanql3jrxp");
openpayAPI.Production = true;
#Sandbox
openpay=OpenpayApi.new("moiep6umtcnanql3jrxp","sk_3433941e467c4875b178ce26348b0fac")
#Produccion
openpay=OpenpayApi.new("moiep6umtcnanql3jrxp","sk_3433941e467c4875b178ce26348b0fac", 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 de Openpay, es necesario definir explícitamente el tipo de ambiente, seguido del nuevo valor del timeout para el request:
#Sintaxis:
# openpay_prod=OpenpayApi.new(merchant_id,private_key,isProduction,timeout)
#Example:
# openpay_prod=OpenpayApi.new(merchant_id,private_key,false,30)
Producción
Solo es necesario usar la URI base https://api.openpay.mx
<?
Openpay::setProductionMode(true);
?>
//Solo es necesario usar la URI base https://api.openpay.mx
openpayAPI.Production = true;
openpay.setProductionReady(true);
#Solo es necesario pasar como tercer argumento un "true" cuando se crea el objeto OpenpayApi
Para realizar peticiones a la API de Openpay, es necesario enviar la llave de API (API Key) en todas tus llamadas a nuestros servidores. La llave la puedes obtener desde el dashboard.
Existen 2 tipos de llaves de API:
- Privada.- Para llamadas entre servidores y con acceso total a todas las operaciones de la API (nunca debe ser compartida).
- Pública.- Sólo se debe utilizar en llamadas desde JavaScript. Esta llave sólo tiene permitido realizar crear tarjetas o crear tokens
Para la autenticación al API debes usar autenticación de acceso básica, donde la llave de API es el nombre de usuario. La contraseña no es requerida y debe dejarse en blanco por fines de simplicidad.
Errores
Openpay regresa objetos de 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 'm4hqp35pswl02mmc567' 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 de Openpay, y ocurrira muy raramente. gateway: Indica un error durante la transacción de los fondos de una tarjeta a la cuenta de Openpay o de la cuenta hacia un banco o tarjeta. |
error_code | numeric El código del error de Openpay 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 de Openpay |
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 de Openpay 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. |
1010 | 403 Forbidden | Se esta utilizando la llave pública para hacer una llamada que requiere la llave privada, o bien, se esta usando la llave privada desde JavaScript. |
Almacenamiento
Código | Error HTTP | Causa |
---|---|---|
2001 | 409 Conflict | La cuenta de banco con esta CLABE ya se encuentra registrada en el cliente. |
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. |
Cuentas
Código | Error HTTP | Causa |
---|---|---|
4001 | 412 Preconditon Failed | La cuenta de Openpay no tiene fondos suficientes. |
Cargos
Los cargos se pueden realizar a tarjetas, tiendas y bancos. A cada cargo se le asigna un identificador único en el sistema.
Los cargos a tarjeta puedes hacerlos a una tarjeta guardada usando el id de la tarjeta, usando un token o puedes enviar la información de la tarjeta al momento de la invocación.
Cambios por disposiciones oficiales para la prevención de fraude E-commerce
Toda integración que se realice mediante SDK o peticiones directas al API de Openpay, es de carácter obligatorio enviar el header X-Forwarded-For donde se deberá indicar la IP del dispositivo del cliente. En las pestañas de las diferentes tecnologías ubicadas del lado derecho se encuentra la definición de cómo debe ser enviado.
Con id de tarjeta o token
Definición
Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges
Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
<?
Comercio
$openpay->charges->create(chargeRequest);
Cliente
$customer = $openpay->customers->get($customerId);
$customer->charges->create(chargeRequest);
?>
//Cliente
openpayAPI.charges().create(String customerId, CreateCardChargeParams request);
//Comercio
openpayAPI.charges().create(CreateCardChargeParams request);
// Comercio
openpay.charges.create(chargeRequest, callback);
// Cliente
openpay.customers.charges.create(customerId, chargeRequest, callback);
//Cliente
openpayAPI.ChargeService.Create(string customer_id, ChargeRequest request);
//Comercio
openpayAPI.ChargeService.Create(ChargeRequest request);
#Cliente
@charges=@openpay.create(:charges)
@charges.create(request_hash, customer_id)
#Comercio
@charges=@openpay.create(:charges)
@charges.create(request_hash)
Ejemplo de petición con comercio
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-H "X-Forwarded-For: 129.18.168.184" \
-X POST -d '{
"source_id" : "kqgykn96i7bcs1wwhvgw",
"method" : "card",
"amount" : 100,
"currency" : "MXN",
"description" : "Cargo inicial a mi cuenta",
"order_id" : "oid-00051",
"device_session_id" : "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f",
"customer" : {
"name" : "Juan",
"last_name" : "Vazquez Juarez",
"phone_number" : "4423456723",
"email" : "juan.vazquez@empresa.com.mx"
}
}'
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f',
'sk_e568c42a6c384b7ab02cd47d2e407cab', 'MX', '127.0.0.1');
$customer = array(
'name' => 'Juan',
'last_name' => 'Vazquez Juarez',
'phone_number' => '4423456723',
'email' => 'juan.vazquez@empresa.com.mx');
$chargeRequest = array(
'method' => 'card',
'source_id' => 'kqgykn96i7bcs1wwhvgw',
'amount' => 100,
'currency' => 'MXN'
'description' => 'Cargo inicial a mi merchant',
'order_id' => 'oid-00051',
'device_session_id' => 'kR1MiQhz2otdIuUlQkbEyitIqVMiI16f',
'customer' => $customer);
$charge = $openpay->charges->create($chargeRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx"
, "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf", "127.0.0.1");
CreateCardChargeParams request = new CreateCardChargeParams();
Customer customer = new Customer();
customer.setName("Juan");
customer.setLastName("Vazquez Juarez");
customer.setPhoneNumber("4423456723");
customer.setEmail("juan.vazquez@empresa.com.mx");
request.cardId("kqgykn96i7bcs1wwhvgw"); // =source_id
request.amount(new BigDecimal("100.00"));
request.currency("MXN");
request.description("Cargo inicial a mi merchant");
request.orderId("oid-00051");
request.deviceSessionId("kR1MiQhz2otdIuUlQkbEyitIqVMiI16f");
request.setCustomer(customer);
Charge charge = api.charges().create(request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128"
, "maonhzpqm8xp2ydssovf", "127.0.0.1");
ChargeRequest request = new ChargeRequest();
Customer customer = new Customer();
customer.Name = "Juan";
customer.LastName = "Vazquez Juarez";
customer.PhoneNumber = "4423456723";
customer.Email = "juan.vazquez@empresa.com.mx";
request.Method = "card";
request.SourceId = "kwkoqpg6fcvfse8k8mg2";
request.Amount = new Decimal(100.00);
request.Currency = "MXN";
request.Description = "Cargo inicial a mi merchant";
request.OrderId = "oid-00051";
request.DeviceSessionId = "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f";
request.Customer = customer;
Charge charge = api.ChargeService.Create(request);
var openpay = new Openpay('your merchant id', 'your private key',
'mx', false, '127.0.0.1');
var chargeRequest = {
'source_id' : 'kqgykn96i7bcs1wwhvgw',
'method' : 'card',
'amount' : 100,
'currency' : 'MXN',
'description' : 'Cargo inicial a mi cuenta',
'order_id' : 'oid-00051',
'device_session_id' : 'kR1MiQhz2otdIuUlQkbEyitIqVMiI16f',
'customer' : {
'name' : 'Juan',
'last_name' : 'Vazquez Juarez',
'phone_number' : '4423456723',
'email' : 'juan.vazquez@empresa.com.mx'
}
}
openpay.charges.create(chargeRequest, function(error, charge) {
// ...
});
@openpay=OpenpayApi.new("moiep6umtcnanql3jrxp",
"sk_3433941e467c4875b178ce26348b0fac","127.0.0.1")
@charges=@openpay.create(:charges)
customer_hash={
"name" => "Juan",
"last_name" => "Vazquez Juarez",
"phone_number" => "4423456723",
"email" => "juan.vazquez@empresa.com.mx"
}
request_hash={
"method" => "card",
"source_id" => "kqgykn96i7bcs1wwhvgw",
"amount" => 100.00,
"currency" => "MXN",
"description" => "Cargo inicial a mi merchant",
"order_id" => "oid-00051",
"device_session_id" => "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f",
"customer" => customer_hash
}
response_hash=@charges.create(request_hash.to_hash)
Ejemplo de respuesta
{
"id":"trzjaozcik8msyqshka4",
"amount":100.00,
"authorization":"801585",
"method":"card",
"operation_type":"in",
"transaction_type":"charge",
"card":{
"id":"kqgykn96i7bcs1wwhvgw",
"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,
"creation_date":"2014-05-26T11:02:16-05:00",
"bank_name":"Banamex",
"bank_code":"002"
},
"status":"completed",
"currency":"USD",
"exchange_rate" : {
"from" : "USD",
"date" : "2014-11-21",
"value" : 13.61,
"to" : "MXN"
},
"creation_date":"2014-05-26T11:02:45-05:00",
"operation_date":"2014-05-26T11:02:45-05:00",
"description":"Cargo inicial a mi cuenta",
"error_message":null,
"order_id":"oid-00051"
}
Este tipo de cargo requiere una tarjeta guardada o que hayas generado un token. Para guardar tarjetas consulta como crear una tarjeta y para usar tokens consulta la sección creación de tokens.
Una vez que tengas una tarjeta guardada o un token usa la propiedad source_id
para enviar el identificador.
La propiedad device_session_id
deberá ser generada desde el API JavaScript, véase Fraud detection using device data.
Sistema antifraude personalizado Es posible enviar información adicional a la plataforma Openpay para incrementar su base de conocimientos, esto le permitirá aplicar reglas personalizadas de acuerdo al giro del comercio y de manera oportuna, con el propósito de detectar con la mayor efectividad posible los intentos de fraude.
Petición
Propiedad | Descripción | ||||||
---|---|---|---|---|---|---|---|
method | string (requerido) Debe contener el valor card para indicat que el cargo se hará de una tarjeta. |
||||||
source_id | string (requerido, longitud = 45) ID de la tarjeta guardada o el id del token creado de donde se retirarán los fondos. |
||||||
amount | numeric (requerido) Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales. |
||||||
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). |
||||||
description | string (requerido, longitud = 250) Una descripción asociada al cargo. |
||||||
order_id | string (opcional, longitud = 100) Identificador único del cargo. Debe ser único entre todas las transacciones. |
||||||
device_session_id | string (requerido, longitud = 32) Identificador del dispositivo generado con la herramienta antifraudes |
||||||
capture | boolean (opcional, default = true) Indica si el cargo se hace o no inmediatamente, cuando el valor es false el cargo se maneja como una autorización (o preautorización) y solo se reserva el monto para ser confirmado o cancelado en una segunda llamada. |
||||||
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 crear un 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. |
||||||
metadata | list(key, value) (opcional) Listado de campos personalizados de antifraude, estos campos deben de apegarse a las reglas para creación de campos personalizados de antifraude |
||||||
use_card_points | string (opcional, default = NONE)
|
||||||
send_email | boolean (opcional) Usado para cargos de tipo redirect. Indica si se desea enviar un email que direccione al formulario de pago de Openpay. |
||||||
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 openpay. Nota: Este parámetro solo se puede utilizar si se especifica el manejo de 3D Secure. |
||||||
use_3d_secure | string (opcional) Se debe especificar este parámetro en true para manejar 3D Secure. |
Respuesta
Regresa un objeto de transacción con la información del cargo o una respuesta de error.
Con redireccionamiento
Definición
Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges
Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
<?
Comercio
$openpay->charges->create(chargeRequest);
Cliente
$customer = $openpay->customers->get($customerId);
$customer->charges->create(chargeRequest);
?>
//Cliente
openpayAPI.charges().create(String customerId, CreateCardChargeParams request);
//Comercio
openpayAPI.charges().create(CreateCardChargeParams request);
// Comercio
openpay.charges.create(chargeRequest, callback);
// Cliente
openpay.customers.charges.create(customerId, chargeRequest, callback);
//Cliente
openpayAPI.ChargeService.Create(string customer_id, ChargeRequest request);
//Comercio
openpayAPI.ChargeService.Create(ChargeRequest request);
#Cliente
@charges=@openpay.create(:charges)
@charges.create(request_hash, customer_id)
#Comercio
@charges=@openpay.create(:charges)
@charges.create(request_hash)
Ejemplo de petición con comercio
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"method" : "card",
"amount" : 100,
"description" : "Cargo inicial a mi cuenta",
"order_id" : "oid-00051",
"customer" : {
"name" : "Juan",
"last_name" : "Vazquez Juarez",
"phone_number" : "4423456723",
"email" : "juan.vazquez@empresa.com.mx"
},
"confirm" : "false",
"send_email":"false",
"redirect_url":"http://www.openpay.mx/index.html"
}'
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$customer = array(
'name' => 'Juan',
'last_name' => 'Vazquez Juarez',
'phone_number' => '4423456723',
'email' => 'juan.vazquez@empresa.com.mx');
$chargeRequest = array(
"method" : "card",
'amount' => 100,
'description' => 'Cargo terminal virtual a mi merchant',
'customer' => $customer,
'send_email' => false,
'confirm' => false,
'redirect_url' => 'http://www.openpay.mx/index.html')
;
$charge = $openpay->charges->create($chargeRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
CreateCardChargeParams request = new CreateCardChargeParams();
Customer customer = new Customer();
customer.setName("Juan");
customer.setLastName("Vazquez Juarez");
customer.setPhoneNumber("4423456723");
customer.setEmail("juan.vazquez@empresa.com.mx");
request.amount(new BigDecimal("100.00"));
request.description("Cargo inicial a mi merchant");
request.orderId("oid-00051");
request.setCustomer(customer);
request.setSendEmail(false);
request.setConfirm(false);
request.setRedirectUrl("http://www.openpay.mx/index.html");
Charge charge = api.charges().create(request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
ChargeRequest request = new ChargeRequest();
Customer customer = new Customer();
customer.Name = "Juan";
customer.LastName = "Vazquez Juarez";
customer.PhoneNumber = "4423456723";
customer.Email = "juan.vazquez@empresa.com.mx";
request.Method = "card";
request.Amount = new Decimal(100.00);
request.Description = "Cargo inicial a mi merchant";
request.OrderId = "oid-00051";
request.Confirm = false;
request.SendEmail = false;
request.RedirectUrl = "http://www.openpay.mx/index.html";
request.Customer = customer;
Charge charge = api.ChargeService.Create(request);
var chargeRequest = {
'method' : 'card',
'amount' : 100,
'description' : 'Cargo inicial a mi cuenta',
'order_id' : 'oid-00051',
'customer' : {
'name' : 'Juan',
'last_name' : 'Vazquez Juarez',
'phone_number' : '4423456723',
'email' : 'juan.vazquez@empresa.com.mx'
},
'send_email' : false,
'confirm' : false,
'redirect_url' : 'http://www.openpay.mx/index.html')
}
openpay.charges.create(chargeRequest, function(error, charge) {
// ...
});
@openpay=OpenpayApi.new("moiep6umtcnanql3jrxp","sk_3433941e467c4875b178ce26348b0fac")
@charges=@openpay.create(:charges)
customer_hash={
"name" => "Juan",
"last_name" => "Vazquez Juarez",
"phone_number" => "4423456723",
"email" => "juan.vazquez@empresa.com.mx"
}
request_hash={
"method" => "card",
"amount" => 100.00,
"description" => "Cargo inicial a mi merchant",
"order_id" => "oid-00051",
"customer" => customer_hash,
"send_email" => false,
"confirm" => false,
"redirect_url" => "http://www.openpay.mx/index.html"
}
response_hash=@charges.create(request_hash.to_hash)
Ejemplo de respuesta
{
"id": "trq7yrthx5vc4gtjdkwg",
"authorization": null,
"method": "card",
"operation_type": "in",
"transaction_type": "charge",
"status": "charge_pending",
"conciliated": false,
"creation_date": "2016-09-09T18:52:02-05:00",
"operation_date": "2016-09-09T18:52:02-05:00",
"description": "Cargo desde terminal virtual de 111",
"error_message": null,
"amount": 100,
"currency": "MXN",
"payment_method": {
"type": "redirect",
"url": "https://sandbox-api.openpay.mx/v1/mexzhpxok3houd5lbvz1/charges/trq7yrthx5vc4gtjdkwg/card_capture"
},
"customer": {
"name": "Juan",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.com.mx",
"phone_number": "4423456723",
"creation_date": "2016-09-09T18:52:02-05:00",
"clabe": null,
"external_id": null
}
}
Este tipo de cargo no requiere una tarjeta guardada o que hayas generado un token.
Petición
Propiedad | Descripción |
---|---|
method | string (requerido en card) Debe contener el valor card para indicat que el cargo se hará de una tarjeta. |
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. |
order_id | string (opcional, 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 crear un cliente y realice el cargo a nivel cliente. |
confirm | boolean (requerido en false) El valor false indica que se trata de un cargo con terminal virtual. |
send_email | boolean (opcional) Indica si se desea enviar un email que direccione al formulario de pago de openpay. |
redirect_url | string (requerido) Indica la url a la que redireccionar despues de una transaccion exitosa en el fomulario de pago de openpay. |
Respuesta
Regresa un objeto de transacción con la información del cargo o una respuesta de error.
Cargo en tienda
Definición
Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges
Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
<?
Comercio
$openpay->charges->create(chargeRequest);
Cliente
$customer = $openpay->customers->get(customerId);
$customer->charges->create(chargeRequest;
?>
//Cliente
openpayAPI.charges().create(String customerId, CreateStoreChargeParams request);
//Comercio
openpayAPI.charges().create(CreateStoreChargeParams request);
//Cliente
openpayAPI.ChargeService.Create(string customer_id, ChargeRequest request);
//Comercio
openpayAPI.ChargeService.Create(ChargeRequest request);
//Comercio
openpay.charges.create(chargeRequest, callback);
//Cliente
openpay.customers.charges.create(customerId, chargeRequest, callback);
#Cliente
@charges=@openpay.create(:charges)
@charges.create(request_hash, customer_id)
#Comercio
@charges=@openpay.create(:charges)
@charges.create(request_hash)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"method" : "store",
"amount" : 100,
"description" : "Cargo con tienda",
"order_id" : "oid-00053",
"due_date" : "2014-05-20T13:45:00"
} '
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$chargeRequest = array(
'method' => 'store',
'amount' => 100,
'description' => 'Cargo con tienda',
'order_id' => 'oid-00053',
'due_date' => '2014-05-28T13:45:00');
$customer = $openpay->customers->get('ag4nktpdzebjiye1tlze');
$charge = $customer->charges->create($chargeRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Calendar dueDate = Calendar.getInstance();
dueDate.set(2014, 5, 28, 13, 45, 0);
CreateStoreChargeParams request = new CreateStoreChargeParams();
request.amount(new BigDecimal("100.00"));
request.description("Cargo con tienda");
request.orderId("oid-00053");
request.dueDate(dueDate.getTime());
Charge charge = api.charges().create("ag4nktpdzebjiye1tlze", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
ChargeRequest request = new ChargeRequest();
request.Method = "store";
request.Amount = new Decimal(100.00);
request.Description = "Cargo con tienda";
request.OrderId = "oid-00053";
request.DueDate = new DateTime(2014, 5, 28, 13, 45, 0);
Charge charge = api.ChargeService.Create("ag4nktpdzebjiye1tlze", request);
var storeChargeRequest = {
'method' : 'store',
'amount' : 100,
'description' : 'Cargo con tienda',
'order_id' : 'oid-00053',
'due_date' : '2014-05-28T13:45:00'
};
openpay.customers.charges.create('ag4nktpdzebjiye1tlze', storeChargeRequest, function(error, charge) {
// ...
});
@openpay=OpenpayApi.new("moiep6umtcnanql3jrxp","sk_3433941e467c4875b178ce26348b0fac")
@charges=@openpay.create(:charges)
request_hash={
"method" => "store",
"amount" => 100.00,
"description" => "Cargo con tienda",
"order_id" => "oid-00053"
"due_date" => "2014-05-28T13:45:00"
}
response_hash=@charges.create(request_hash.to_hash, "ag4nktpdzebjiye1tlze")
Ejemplo de respuesta
{
"id":"trnirkiyobo5qfex55ef",
"amount":100.00,
"authorization":null,
"method":"store",
"operation_type":"in",
"transaction_type":"charge",
"status":"in_progress",
"currency":"MXN",
"creation_date":"2014-05-26T13:48:25-05:00",
"operation_date":"2014-05-26T13:48:25-05:00",
"due_date":"2014-05-28T13:45:00-05:00",
"description":"Cargo con tienda",
"error_message":null,
"order_id":"oid-00053",
"customer_id":"ag4nktpdzebjiye1tlze",
"payment_method":{
"type":"store",
"reference":"000020TRNIRKIYOBO5QFEX55EF0100009",
"paybin_reference":"0101990000001065",
"barcode_url":"https://sandbox-api.openpay.mx/barcode/000020TRNIRKIYOBO5QFEX55EF0100009?width=1&height=45&text=false",
"barcode_paybin_url":"https://sandbox-api.openpay.mx/barcode/0101990000001065?width=1&height=45&text=false"
}
}
Para un pago en una tienda de conveniencia se debe crear un petición de tipo cargo indicando como método store. Esto generará una respuesta con un número de referencia y una URL a un código de barras, los cuales debes de utilizar para crear un recibo a tu cliente y que con él pueda realizar el pago en una de las tienda de conveniencia aceptadas. El código de barras es de tipo Code 128.
Petición
Propiedad | Descripción |
---|---|
method | string (requerido) Debe contener el valor store para indicar que el pago se hará en tienda. |
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. |
order_id | string (opcional, longitud = 100) Identificador único del cargo. Debe ser único entre todas las transacciones. |
due_date | datetime (opcional) Fecha de vigencia para hacer el pago en la tienda en formato ISO 8601. Ejemplo (UTC): 2014-08-01T00:50:00Z Nota: Del lado del servidor se cambiara a hora central Ejemplo (Central Time): 2014-08-01T11:51:23-05:00 |
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 crear un cliente y realize el cargo a nivel cliente. |
Respuesta
Regresa un objeto de transacción con la información del cargo o una respuesta de error.
Cargo en banco
Definición
Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges
Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
<?
Comercio
$openpay->charges->create(chargeRequest);
Cliente
$customer = $openpay->customers->get(customerId);
$customer->charges->create(chargeRequest);
?>
//Cliente
openpayAPI.charges().create(String customerId, CreateBankChargeParams request);
//Comercio
openpayAPI.charges().create(CreateBankChargeParams request);
//Cliente
openpayAPI.ChargeService.Create(string customer_id, ChargeRequest request);
//Comercio
openpayAPI.ChargeService.Create(ChargeRequest request);
// Comercio
openpay.charges.create(chargeRequest, callback);
// Cliente
openpay.customers.charges.create(customerId, chargeRequest, callback);
#Cliente
@charges=@openpay.create(:charges)
@charges.create(request_hash, customer_id)
#Comercio
@charges=@openpay.create(:charges)
@charges.create(request_hash)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"method" : "bank_account",
"amount" : 100,
"description" : "Cargo con banco",
"order_id" : "oid-00055",
"due_date"
} '
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$chargeRequest = array(
'method' => 'bank_account',
'amount' => 100,
'description' => 'Cargo con banco',
'order_id' => 'oid-00055');
$customer = $openpay->customers->get('ag4nktpdzebjiye1tlze');
$charge = $customer->charges->create($chargeRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
CreateBankChargeParams request = new CreateBankChargeParams();
request.amount(new BigDecimal("100.00"));
request.description("Cargo con banco");
request.orderId("oid-00053");
Charge charge = api.charges().create("ag4nktpdzebjiye1tlze", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
ChargeRequest request = new ChargeRequest();
request.Method = "bank_account";
request.Amount = new Decimal(100.00);
request.Description = "Cargo con banco";
request.OrderId = "oid-00053";
Charge charge = api.ChargeService.Create("ag4nktpdzebjiye1tlze", request);
var bankChargeRequest = {
'method' : 'bank_account',
'amount' : 100,
'description' : 'Cargo con banco',
'order_id' : 'oid-00055'
};
openpay.customers.charges.create('ag4nktpdzebjiye1tlze', bankChargeRequest, function(error, charge) {
// ...
});
@openpay=OpenpayApi.new("moiep6umtcnanql3jrxp","sk_3433941e467c4875b178ce26348b0fac")
@charges=@openpay.create(:charges)
request_hash={
"method" => "bank_account",
"amount" => 100.00,
"description" => "Cargo con banco",
"order_id" => "oid-00053"
}
response_hash=@charges.create(request_hash.to_hash, "ag4nktpdzebjiye1tlze")
Ejemplo de respuesta
{
"id":"trnzf2xjwpupjfryyj23",
"amount":100.00,
"authorization":null,
"method":"bank_account",
"operation_type":"in",
"transaction_type":"charge",
"status":"in_progress",
"currency":"MXN",
"creation_date":"2014-05-26T13:51:25-05:00",
"operation_date":"2014-05-26T13:51:25-05:00",
"description":"Cargo con banco",
"error_message":null,
"order_id":"oid-00055",
"customer_id":"ag4nktpdzebjiye1tlze",
"payment_method":{
"type":"bank_transfer",
"agreement" : "1411217",
"bank":"BBVA Bancomer",
"clabe":"012914002014112176",
"name":"11030021342311520255"
}
}
Para un cargo a banco se debe crear una petición de tipo cargo indicando como método bank_account. Esto te generará una respuesta con un número de convenio CIE Bancomer, número de CLABE bancaria y una referencia, estos datos los debes de indicar a tu cliente en un recibo para que realice la transferencia vía SPEI.
Petición
Propiedad | Descripción |
---|---|
method | string (requerido) Debe contener el valor bank_account para indicar que se pagará con transferencia bancaria. |
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. |
order_id | string (opcional, longitud = 100) Identificador único del cargo. Debe ser único entre todas las transacciones. |
due_date | datetime (opcional) Indica la fecha de vigencia para hacer el cargo a banco en formato ISO 8601 Nota: Diariamente un proceso automatizado marca como expiradas las transacciones tomando como fecha pivote, el día anterior al día "T" de ejecución (Ejemplo: 18-01-2024 tomaría el dia 17-01-2024) y a partir de esa fecha pivote se marcan las transacciones como expiradas en días previos. Se debe de considerar que el proceso cuando se ejecuta los días viernes, sábado y domingo, siempre tomará como fecha pivote la fecha del día jueves. Cuando se ejecuta el proceso de expiración el día lunes, este toma como fecha pivote el día viernes anterior, por esta razón, se debe tomar en cuenta que si se define una fecha de expiración que sea en viernes, la transacción será marcada como expirada hasta el próximo lunes. |
customer | objeto (opcional) 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 crear un cliente y realize el cargo a nivel cliente. |
Respuesta
Regresa un objeto de transacción con la información del cargo o una respuesta de error.
Cargo en Alipay
Definicion
Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges
Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"description": "Cargo Alipay",
"amount": "2000.00",
"method": "alipay",
"redirect_url" : "http://www.example.com/myRedirectUrl"
} '
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$chargeRequest = array(
'method' => 'alipay',
'amount' => 100,
'description' => 'Cargo Alipay',
'order_id' => 'oid-00055',
'redirect_url' => 'http://www.example.com/myRedirectUrl');
$customer = $openpay->customers->get('ag4nktpdzebjiye1tlze');
$charge = $customer->charges->create($chargeRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "mzdtln0bmtms6o3kck8f");
CreateAlipayChargeParams request = new CreateAlipayChargeParams();
request.amount(new BigDecimal("100.00"));
request.description("Cargo Alipay");
request.orderId("oid-00053");
request.redirectUrl("http://www.example.com/myRedirectUrl")
Charge charge = api.charges().createCharge("ag4nktpdzebjiye1tlze", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
ChargeRequest request = new ChargeRequest();
request.Method = "alipay";
request.Amount = new Decimal(100.00);
request.Description = "Cargo Alipay";
request.OrderId = "oid-00053";
request.RedirectUrl ="http://www.example.com/myRedirectUrl";
Charge charge = api.ChargeService.Create("ag4nktpdzebjiye1tlze", request);
var alipayChargeRequest = {
'method' : 'alipay',
'amount' : 100,
'description' : 'Cargo Alipay',
'order_id' : 'oid-00055',
'redirect_url' : 'http://www.example.com/myRedirectUrl'
};
openpay.customers.charges.create('ag4nktpdzebjiye1tlze', alipayChargeRequest, function(error, charge) {
// ...
});
@openpay=OpenpayApi.new("moiep6umtcnanql3jrxp","sk_3433941e467c4875b178ce26348b0fac")
@charges=@openpay.create(:charges)
request_hash={
"method" => "alipay",
"amount" => 100.00,
"description" => "Cargo Alipay",
"order_id" => "oid-00053",
"redirect_url" => "http://www.example.com/myRedirectUrl"
}
response_hash=@charges.create(request_hash.to_hash, "ag4nktpdzebjiye1tlze")
Ejemplo de respuesta
{
"id": "truq1dwjz0kmssvpbrlj",
"authorization": null,
"operation_type": "in",
"method": "alipay",
"transaction_type": "charge",
"status": "charge_pending",
"conciliated": false,
"creation_date": "2018-06-14T12:42:11-05:00",
"operation_date": "2018-06-14T12:42:11-05:00",
"description": "Cargo Alipay",
"error_message": null,
"order_id": null,
"due_date": "2018-06-15T12:42:11-05:00",
"payment_method": {
"type": "redirect",
"url": "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges/truq1dwjo0kmssvqbrlj/redirect/"
},
"amount": 2000,
"currency": "MXN",
"fee": {
"amount": 2.00 ,
"tax": 0,
"currency": "MXN"
}
}
Para realizar una transacción con un pago mediante Alipay es necesario indicar el método de pago como alipay. La respuesta de esta transacción generará una URL de pago en la que el usuario podrá introducir sus datos de cuenta de Alipay, o escanear un código de barras que le permitirá pagar mediante la aplicación móvil.
Petición
Propiedad | Descripción |
---|---|
method | string (requerido) Debe contener el valor alipay para indicar que el pago se hará en Alipay. |
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. |
order_id | string (opcional, longitud = 100) Identificador único del cargo. Debe ser único entre todas las transacciones. |
due_date | datetime (opcional) Fecha de vigencia para hacer el pago en Alipay en formato ISO 8601. El usuario podría tener hasta 15 minutos adicionales después de esta fecha después de iniciar su sesión para hacer su pago. Ejemplo (UTC): 2014-08-01T00:50:00Z Nota: Del lado del servidor se cambiara a hora central Ejemplo (Central Time): 2014-08-01T11:51:23-05:00 |
customer | objeto 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 crear un cliente y realize el cargo a nivel cliente. |
redirect_url | string (requerido) Indica la url a la que redireccionar despues de una transaccion exitosa, al recibir la llamada en esta url el comercio deberá tomar el atributo id con el id de la transacción para consultar el resultado. |
Respuesta
Regresa un objeto de transacción con la información del cargo o una respuesta de error.
Cargo con IVR
Definición
Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges
Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
<?
Comercio
$openpay->charges->create(chargeRequest);
Cliente
$customer = $openpay->customers->get($customerId);
$customer->charges->create(chargeRequest);
?>
//Cliente
openpayAPI.charges().create(String customerId, CreateCardChargeParams request);
//Comercio
openpayAPI.charges().create(CreateCardChargeParams request);
// Comercio
openpay.charges.create(chargeRequest, callback);
// Cliente
openpay.customers.charges.create(customerId, chargeRequest, callback);
//Cliente
openpayAPI.ChargeService.Create(string customer_id, ChargeRequest request);
//Comercio
openpayAPI.ChargeService.Create(ChargeRequest request);
#Cliente
@charges=@openpay.create(:charges)
@charges.create(request_hash, customer_id)
#Comercio
@charges=@openpay.create(:charges)
@charges.create(request_hash)
Ejemplo de petición con comercio
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"method" : "card",
"confirm": "ivr",
"amount" : 100,
"currency" : "MXN",
"description" : "Cargo IVR",
"order_id" : "oid-00051",
"customer" : {
"name" : "Juan",
"last_name" : "Vazquez Juarez",
"phone_number" : "4423456723",
"email" : "juan.vazquez@empresa.com.mx"
}
}'
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$customer = array(
'name' => 'Juan',
'last_name' => 'Vazquez Juarez',
'phone_number' => '4423456723',
'email' => 'juan.vazquez@empresa.com.mx');
$chargeRequest = array(
'method' => 'card',
'confirm' => 'ivr',
'amount' => 100,
'currency' => 'MXN'
'description' => 'Cargo IVR',
'order_id' => 'oid-00051',
'customer' => $customer);
$charge = $openpay->charges->create($chargeRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
CreateCardChargeParams request = new CreateCardChargeParams();
Customer customer = new Customer();
customer.setName("Juan");
customer.setLastName("Vazquez Juarez");
customer.setPhoneNumber("4423456723");
customer.setEmail("juan.vazquez@empresa.com.mx");
request.method("card");
request.confirm("ivr");
request.amount(new BigDecimal("100.00"));
request.currency("MXN");
request.description("Cargo IVR");
request.orderId("oid-00051");
request.setCustomer(customer);
Charge charge = api.charges().create(request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
ChargeRequest request = new ChargeRequest();
Customer customer = new Customer();
customer.Name = "Juan";
customer.LastName = "Vazquez Juarez";
customer.PhoneNumber = "4423456723";
customer.Email = "juan.vazquez@empresa.com.mx";
request.Method = "card";
request.Confirm = "ivr";
request.Amount = new Decimal(100.00);
request.Currency = "MXN";
request.Description = "Cargo IVR";
request.OrderId = "oid-00051";
request.Customer = customer;
Charge charge = api.ChargeService.Create(request);
var chargeRequest = {
'method' : 'card',
'confirm' : 'ivr',
'amount' : 100,
'currency' : 'MXN',
'description' : 'Cargo IVR',
'order_id' : 'oid-00051',
'customer' : {
'name' : 'Juan',
'last_name' : 'Vazquez Juarez',
'phone_number' : '4423456723',
'email' : 'juan.vazquez@empresa.com.mx'
}
}
openpay.charges.create(chargeRequest, function(error, charge) {
// ...
});
@openpay=OpenpayApi.new("moiep6umtcnanql3jrxp","sk_3433941e467c4875b178ce26348b0fac")
@charges=@openpay.create(:charges)
customer_hash={
"name" => "Juan",
"last_name" => "Vazquez Juarez",
"phone_number" => "4423456723",
"email" => "juan.vazquez@empresa.com.mx"
}
request_hash={
"method" => "card",
"confirm" => "ivr",
"amount" => 100.00,
"currency" => "MXN",
"description" => "Cargo IVR",
"order_id" => "oid-00051",
"customer" => customer_hash
}
response_hash=@charges.create(request_hash.to_hash)
Ejemplo de respuesta
{
"id": "tranxr78lb4i58xaliu2",
"authorization": null,
"operation_type": "in",
"transaction_type": "charge",
"status": "charge_pending",
"conciliated": false,
"creation_date": "2020-10-16T12:22:25-05:00",
"operation_date": "2020-10-16T12:22:25-05:00",
"description": "Cargo IVR",
"error_message": null,
"order_id": "ord-323",
"due_date": "2020-10-17T00:59:59-05:00",
"payment_method": {
"type": "ivr",
"phone_number": "525588969143",
"ivr_key": 676105,
"attempts": 0
},
"amount": 100.00,
"currency": "MXN",
"customer": {
"name": "JUAN",
"last_name": "PEREZ",
"email": "juan.urbina@hotmail.com",
"phone_number": "45155352828",
"address": null,
"creation_date": "2020-10-16T12:22:25-05:00",
"external_id": null,
"clabe": null
},
"method": "card"
}
Sistema antifraude personalizado Es posible enviar información adicional a la plataforma Openpay para incrementar su base de conocimientos, esto le permitirá aplicar reglas personalizadas de acuerdo al giro del comercio y de manera oportuna, con el propósito de detectar con la mayor efectividad posible los intentos de fraude.
Petición
Propiedad | Descripción |
---|---|
method | string (requerido) Debe contener el valor card para indicar que el cargo se hará de una tarjeta. |
confirm | string (requerido) Debe contener el valor ivr para indicar que la confirmación se hará por IVR. |
amount | numeric (requerido) Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales. |
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). |
description | string (requerido, longitud = 250) Una descripción asociada al cargo. |
order_id | string (opcional, 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 crear un cliente y realice el cargo a nivel cliente. |
metadata | list(key, value) (opcional) Listado de campos personalizados de antifraude, estos campos deben de apegarse a las reglas para creación de campos personalizados de antifraude |
send_email | boolean (opcional) Usado para cargos de tipo redirect. Indica si se desea enviar un email que direccione al formulario de pago de Openpay. |
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://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges/{TRANSACTION_ID}/capture
Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges/{TRANSACTION_ID}/capture
<?
Comercio
$charge = $openpay->charges->get(transactionId);
$charge->capture(captureData);
Cliente
$customer = $openpay->customers->get(customerId);
$charge = $customer->charges->get(transactionId);
$charge->capture(captureData);
?>
//Cliente
openpayAPI.charges().confirmCapture(String customerId, ConfirmCaptureParams request);
//Comercio
openpayAPI.charges().confirmCapture(ConfirmCaptureParams request);
//Cliente
openpayAPI.ChargeService.Capture(string customer_id, string transaction_id, Decimal? amount);
//Comercio
openpayAPI.ChargeService.Capture(string transaction_id, Decimal? amount);
// Comercio
openpay.charges.capture(transactionId, captureRequest, callback);
// Cliente
openpay.customers.charges.capture(customerId, transactionId, captureRequest, callback);
#Cliente
@charges=@openpay.create(:charges)
@charges.capture(transaction_id, customer_id)
#Comercio
@charges=@openpay.create(:charges)
@charges.capture(transaction_id)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges/tryqihxac3msedn4yxed/capture \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"amount" : 100.00
} '
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$captureData = array('amount' => 100.00);
$customer = $openpay->customers->get('ag4nktpdzebjiye1tlze');
$charge = $customer->charges->get('tryqihxac3msedn4yxed');
$charge->capture($captureData);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
ConfirmCaptureParams request = new ConfirmCaptureParams();
request.chargeId("tryqihxac3msedn4yxed");
request.amount(new BigDecimal("100.00"));
Charge charge = api.charges().confirmCapture("ag4nktpdzebjiye1tlze", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Charge charge = api.ChargeService.Capture("ag4nktpdzebjiye1tlze", "tryqihxac3msedn4yxed", new Decimal(100.00));
var captureRequest = {
'amount' : 100.00
};
openpay.customers.charges.capture('ag4nktpdzebjiye1tlze', 'tryqihxac3msedn4yxed', captureRequest,
function(error, charge){
// ...
});
@openpay=OpenpayApi.new("moiep6umtcnanql3jrxp","sk_3433941e467c4875b178ce26348b0fac")
@charges=@openpay.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 propieda de capture = "false"
, este método es la segunda parte de la creación de un cargo con tarjeta (id o token) y puede confirmar el monto capturado en la primera llamada o un monto menor.
Petición
Propiedad | Descripción |
---|---|
amount | numeric (opcional) 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://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges/{TRANSACTION_ID}/refund
Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges/{TRANSACTION_ID}/refund
<?
Comercio
$charge = $openpay->charges->get(transactionId);
$charge->refund(refundData);
Cliente
$customer = $openpay->customers->get(customerId);
$charge = $customer->charges->get(transactionId);
$charge->refund(refundData);
?>
//Cliente
openpayAPI.charges().refund(String customerId, RefundParams request);
//Comercio
openpayAPI.charges().refund(RefundParams request);
//Cliente
openpayAPI.ChargeService.Refund(string customer_id, string transaction_id, string description);
//Comercio
openpayAPI.ChargeService.Refund(string transaction_id, string description);
// Comercio
openpay.charges.refund(transactionId, refundRequest, callback);
// Cliente
openpay.customers.charges.refund(customerId, transactionId, refundRequest, callback);
#Cliente
@charges=@openpay.create(:charges)
@charges.refund(transaction_id, request_hash, customer_id)
#Comercio
@charges=@openpay.create(:charges)
@charges.refund(transaction_id, request_hash)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges/tr6cxbcefzatd10guvvw/refund \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"description" : "devolución",
"amount" : 100.00
} '
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$refundData = array(
'description' => 'devolución',
'amount' => 100);
$customer = $openpay->customers->get('ag4nktpdzebjiye1tlze');
$charge = $customer->charges->get('tr6cxbcefzatd10guvvw');
$charge->refund($refundData);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
RefundParams request = new RefundParams();
request.chargeId("tryqihxac3msedn4yxed");
request.description("Monto de cargo devuelto");
request.amount(new BigDecimal("100.00"));
Charge charge = api.charges().refund("ag4nktpdzebjiye1tlze", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Charge charge = api.ChargeService.Refund("ag4nktpdzebjiye1tlze", "tryqihxac3msedn4yxed", "Monto de cargo devuelto", , new Decimal(100.00));
var refundRequest = {
'description' : 'devolución',
'amount' : 100.00
};
openpay.customers.charges.refund('ag4nktpdzebjiye1tlze', 'tryqihxac3msedn4yxed', refundRequest,
function(error, charge) {
// ...
});
@openpay=OpenpayApi.new("moiep6umtcnanql3jrxp","sk_3433941e467c4875b178ce26348b0fac")
@charges=@openpay.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://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges/{TRANSACTION_ID}
Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges/{TRANSACTION_ID}
<?
Comercio
$charge = $openpay->charges->get(transactionId);
Cliente
$customer = $openpay->customers->get(customerId);
$charge = $customer->charges->get(transactionId);
?>
//Cliente
openpayAPI.charges().get(String customerId, String transactionId);
//Comercio
openpayAPI.charges().get(String transactionId);
//Cliente
openpayAPI.ChargeService.Get(string customer_id, string transaction_id);
//Comercio
openpayAPI.ChargeService.Get(string transaction_id);
// Comercio
openpay.charges.get(transactionId, callback);
// Cliente
openpay.customers.charges.get(customerId, transactionId, callback);
#Cliente
@charges=@openpay.create(:charges)
@charges.get(transaction_id, customerId)
#Comercio
@charges=@openpay.create(:charges)
@charges.get(transaction_id)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges/tr6cxbcefzatd10guvvw \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$customer = $openpay->customers->get('ag4nktpdzebjiye1tlze');
$charge = $customer->charges->get('tr6cxbcefzatd10guvvw');
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Charge charge = api.charges().get("ag4nktpdzebjiye1tlze", "tr6cxbcefzatd10guvvw");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Charge charge = api.ChargeService.Get("ag4nktpdzebjiye1tlze", "tryqihxac3msedn4yxed");
openpay.customers.charges.get('ag4nktpdzebjiye1tlze', 'tr6cxbcefzatd10guvvw', function(error, charge){
// ...
});
@openpay=OpenpayApi.new("moiep6umtcnanql3jrxp","sk_3433941e467c4875b178ce26348b0fac")
@charges=@openpay.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.
Listado de cargos
Definición
Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges
Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
<?
Comercio
$chargeList = $openpay->charges->getList(searchParams);
Cliente
$customer = $openpay->customers->get(customerId);
$chargeList = $customer->charges->getList(searchParams);
?>
//Cliente
openpayAPI.charges().list(String customerId, SearchParams request);
//Comercio
openpayAPI.charges().list(SearchParams request);
//Cliente
openpayAPI.ChargeService.List(string customer_id, SearchParams request = null);
//Comercio
openpayAPI.ChargeService.List(SearchParams request = null);
// Comercio
openpay.charges.list(callback);
openpay.charges.list(searchParams, callback);
// Cliente
openpay.customers.charges.list(customerId, callback);
openpay.customers.charges.list(customerId, searchParams, callback);
#Cliente
@charges=@openpay.create(:charges)
@charges.all(customer_id)
#Comercio
@charges=@openpay.create(:charges)
@charges.all
Ejemplo de petición con cliente
curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges?creation[gte]=2013-11-01&limit=2" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$searchParams = array(
'creation[gte]' => '2013-11-01',
'creation[lte]' => '2014-11-01',
'offset' => 0,
'limit' => 2);
$customer = $openpay->customers->get('ag4nktpdzebjiye1tlze');
$chargeList = $customer->charges->getList($searchParams);
?>
final Calendar dateGte = Calendar.getInstance();
final Calendar dateLte = Calendar.getInstance();
dateGte.set(2014, 5, 1, 0, 0, 0);
dateLte.set(2014, 5, 15, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.creationGte(dateGte.getTime());
request.creationLte(dateLte.getTime());
request.offset(0);
request.limit(100);
request.amount(new BigDecimal("100.00"));
List<Charge> charges = api.charges().list("ag4nktpdzebjiye1tlze", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.CreationGte = new Datetime(2014, 5, 1);
request.CreationLte = new DateTime(2014, 5, 15);
request.Offset = 0;
request.Limit = 100;
request.Amount = new Decimal(100.00);
List<Charge> charges= openpayAPI.ChargeService.List("ag4nktpdzebjiye1tlze", request);
var searchParams = {
'creation[gte]' : '2013-11-01',
'limit' : 2
};
openpay.customers.charges.list('ag4nktpdzebjiye1tlze',searchParams, function(error, chargeList) {
// ...
});
@openpay=OpenpayApi.new("moiep6umtcnanql3jrxp","sk_3433941e467c4875b178ce26348b0fac")
@charges=@openpay.create(:charges)
response_hash=@charges.all("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"
},
{
"id":"trnzf2xjwpupjfryyj23",
"amount":100.00,
"authorization":null,
"method":"bank_account",
"operation_type":"in",
"transaction_type":"charge",
"status":"in_progress",
"currency":"MXN",
"creation_date":"2014-05-26T13:51:25-05:00",
"operation_date":"2014-05-26T13:51:25-05:00",
"description":"Cargo con banco",
"error_message":null,
"order_id":"oid-00055",
"customer_id":"ag4nktpdzebjiye1tlze",
"payment_method":{
"type":"bank_transfer",
"agreement" : "1411217",
"bank":"BBVA Bancomer",
"clabe":"012914002014112176",
"name":"11030021342311520255"
}
}
]
Obtiene un listado de los cargos realizados por comercio o cliente.
Petición
Puede realizar una búsqueda utilizando los siguiente parámetros como filtros.
Propiedad | Descripción |
---|---|
order_id | string Identificador único de la orden generado por el comercio y asociado a la transaccion mediante el campo order_id de la petición del cargo. |
creation | date Igual a la fecha de creación. Formato yyyy-mm-dd |
creation[gte] | date Mayor a la fecha de creación. Formato yyyy-mm-dd |
creation[lte] | date Menor a la fecha de creación. Formato yyyy-mm-dd |
offset | numeric Número de registros a omitir al inicio, por defecto 0. |
limit | numeric Número de registros que se requieren, por defecto 10. |
amount | numeric Igual al monto. |
amount[gte] | numeric Mayor o igual al monto. |
amount[lte] | numeric Menor o igual al monto. |
status | TransactionStatus Estado de la transacción (IN_PROGRESS,COMPLETED,REFUNDED,CHARGEBACK_PENDING,CHARGEBACK_ACCEPTED,CHARGEBACK_ADJUSTMENT,CHARGE_PENDING,CANCELLED,FAILED). |
Respuesta
Regresa un arreglo de objetos de transacción de los cargos en orden descendente por fecha de creación.
Pagos o retiros
Un pago es la transacción que permite extraer los fondos de una cuenta Openpay y enviarlos a una cuenta bancaria. Los pagos se pueden realizar desde las cuentas de los clientes o desde tu cuenta de comercio.
Pago a id registrado
Definición
Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/payouts
Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/payouts
<?
Cliente
$customer = $openpay->customers->get(customerId);
$payout = $customer->payouts->create(payoutRequest);
Comercio
$payout = $openpay->payouts->create(payoutRequest);
?>
//Cliente
openpayAPI.payouts().create(String customerId, CreateBankPayoutParams request);
//Comercio
openpayAPI.payouts().create(CreateBankPayoutParams request);
//Cliente
openpayAPI.PayoutService.Create(string customer_id, PayoutRequest request);
//Comercio
openpayAPI.PayoutService.Create(PayoutRequest request);
// Comercio
openpay.payouts.create(payoutRequest, callback);
// Cliente
openpay.customers.payouts.create(customerId, payoutRequest, callback);
#Cliente
@payouts=@openpay.create(:payouts)
@payouts.create(request_hash, customer_id)
#Comercio
@payouts=@openpay.create(:payouts)
@payouts.create(request_hash)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/payouts \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"method": "bank_account",
"destination_id": "b3d54sd3mdjf75udjfvoc",
"amount": 10.50,
"description": "Retiro de saldo semanal",
"order_id": "oid-00021"
}'
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$payoutRequest = array(
'method' => 'bank_account',
'destination_id' => 'a3d54sd3mdjf75udjfvoc',
'amount' => 1000,
'description' => 'Retiro de saldo semanal',
'order_id' => 'ORDEN-00021');
$customer = $openpay->customers->get('ag4nktpdzebjiye1tlze');
$payout = $customer->payouts->create($payoutRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_e568c42a6c384b7ab02cd47d2e407cab", "mzdtln0bmtms6o3kck8f");
CreateBankPayoutParams request = new CreateBankPayoutParams();
request.bankAccountId("b3d54sd3mdjf75udjfvoc"); // = destination_id
request.amount(new BigDecimal("10.50"));
request.description("Retiro de saldo semanal");
request.orderId("oid-00021");
Payout payout = api.payouts().create("ag4nktpdzebjiye1tlze", request);
OpenpayAPI api = new OpenpayAPI("sk_e568c42a6c384b7ab02cd47d2e407cab", "mzdtln0bmtms6o3kck8f");
PayoutRequest request = new PayoutRequest();
request.Method = "bank_account";
request.DestinationId = "b3d54sd3mdjf75udjfvoc";
request.Amount = new Decimal(10.50;
request.Description = "Retiro de saldo semanal";
request.OrderId = "oid-00021;
Payout = api.PayoutService.Create("ag4nktpdzebjiye1tlze", request);
var payoutRequest = {
'method': 'bank_account',
'destination_id': 'b3d54sd3mdjf75udjfvoc',
'amount': 10.50,
'description': 'Retiro de saldo semanal',
'order_id': 'oid-00021'
};
openpay.customers.payouts.create('ag4nktpdzebjiye1tlze', payoutRequest, function(error, payout) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@payouts=@openpay.create(:payouts)
request_hash={
"method" => "bank_account",
"destination_id" => "b3d54sd3mdjf75udjfvoc",
"amount" => 10.50,
"description" => "Retiro de saldo semanal",
"order_id" => "oid-00021"
}
response_hash=@payouts.create(request_hash.to_hash, "ag4nktpdzebjiye1tlze")
Ejemplo de respuesta
{
"amount":10.5,
"authorization":null,
"method":"bank_account",
"currency":"MXN",
"operation_type":"out",
"transaction_type":"payout",
"bank_account":{
"id":"b3d54sd3mdjf75udjfvoc",
"clabe":"012XXXXXXXXXX24616",
"bank_code":"012",
"bank_name":"BANCOMER",
"alias":null,
"holder_name":"Mi empresa"
},
"status":"in_progress",
"id":"tm50pl40gf6awvalw1ei",
"creation_date":"2013-11-15T13:42:00-06:00",
"description":"Retiro de saldo semanal",
"error_message":null,
"order_id":"oid-00021",
"customer_id":"aayr5jjb1fln44yautef"
}
Envío un pago a una cuenta bancaria previamente registrada. Consulte como crear una cuenta de bancaria
Petición
Propiedad | Descripción |
---|---|
method | string (requerido) Debe contener el valor bank_account. |
destination_id | string (requerido, longitud = 45) El ID de la cuenta bancaria previamente registrada. |
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. |
order_id | string (opcional, longitud = 100) Identificador único del cargo. Debe ser único entre todas las transacciones. |
Respuesta
Regresa un objeto de transacción con la información del pago o una respuesta de error.
Pago a cuenta bancaria
Definición
Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/payouts
Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/payouts
<?
Cliente
$customer = $openpay->customers->get(customerId);
$payout = $customer->payouts->create(payoutRequest);
Comercio
$payout = $openpay->payouts->create(payoutRequest);
?>
//Cliente
openpayAPI.payouts().create(String customerId, CreateBankPayoutParams request);
//Comercio
openpayAPI.payouts().create(CreateBankPayoutParams request);
//Cliente
openpayAPI.PayoutService.Create(string customer_id, PayoutRequest request);
//Comercio
openpayAPI.PayoutService.Create(PayoutRequest request);
// Comercio
openpay.payouts.create(payoutRequest, callback);
// Cliente
openpay.customers.payouts.create(customerId, payoutRequest, callback);
#Cliente
@payouts=@openpay.create(:payouts)
@payouts.create(request_hash, customer_id)
#Comercio
@payouts=@openpay.create(:payouts)
@payouts.create(request_hash)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/asynwirguzkgq2bizogo/payouts \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"method":"bank_account",
"bank_account":{
"clabe":"012298026516924616",
"holder_name":"Mi empresa"
},
"amount":100.00,
"description":"Retiro de saldo semanal",
"order_id":"oid-1110011"
}'
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$payoutRequest = array(
'method' => 'bank_account',
'bank_account' => array(
'clabe' => '012298026516924616',
'holder_name' => 'Mi empresa'),
'amount' => 100.00,
'description' => 'Retiro de saldo semanal',
'order_id' => 'ORDEN-00021');
$customer = $openpay->customers->get('asynwirguzkgq2bizogo');
$payout = $customer->payouts->create($payoutRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
CreateBankPayoutParams request = new CreateBankPayoutParams();
BankAccount bankAccount = new BankAccount();
bankAccount.holderName("Mi empresa");
bankAccount.alias(null);
bankAccount.clabe("012XXXXXXXXXX24616");
request.bankAccount(bankAccount);
request.amount(new BigDecimal("10.50"));
request.description("Retiro de saldo semanal");
request.orderId("oid-1110011");
Payout payout = api.payouts().create("ag4nktpdzebjiye1tlze", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
PayoutRequest request = new PayoutRequest();
request.Method = "bank_account";
BankAccount bankAccount = new BankAccount();
bankAccount.HolderName = "Mi empresa";
bankAccount.Alias = null;
bankAccount.CLABE = "012XXXXXXXXXX24616";
request.BankAccount = bankAccount;
request.Amount = new Decimal(10.50);
request.Description = "Retiro de saldo semanal";
request.OrderId = "oid-1110011";
Payout = api.PayoutService.Create("ag4nktpdzebjiye1tlze", request);
var payoutRequest = {
'method':'bank_account',
'bank_account':{
'clabe':'012298026516924616',
'holder_name':'Mi empresa'
},
'amount':10.50,
'description':'Retiro de saldo semanal',
'order_id':'oid-1110011'
};
openpay.customers.payouts.create('ag4nktpdzebjiye1tlze', payoutRequest, function(error, payout) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@payouts=@openpay.create(:payouts)
bank_account_hash={
"holder_name" => "Mi empresa",
"alias" => nil,
"clabe" => "012XXXXXXXXXX24616"
}
request_hash={
"method" => "bank_account",
"bank_account" => bank_account_hash,
"amount" => 10.50,
"description" => "Retiro de saldo semanal",
"order_id" => "oid-1110011"
}
response_hash=@payouts.create(request_hash.to_hash, "ag4nktpdzebjiye1tlze")
Ejemplo de respuesta
{
"id":"tr4f2atubqchinw71vfs",
"amount":10.50,
"authorization":null,
"method":"bank_account",
"operation_type":"out",
"transaction_type":"payout",
"status":"in_progress",
"currency":"MXN",
"creation_date":"2014-05-26T17:23:03-05:00",
"operation_date":"2014-05-26T17:23:03-05:00",
"description":"Retiro de saldo semanal",
"error_message":null,
"order_id":"oid-1110011",
"bank_account":{
"clabe":"012XXXXXXXXXX24616",
"bank_code":"012",
"bank_name":"BANCOMER",
"alias":null,
"holder_name":"Mi empresa"
},
"customer_id":"asynwirguzkgq2bizogo"
}
Envía un pago a una cuenta bancaria.
Petición
Propiedad | Descripción |
---|---|
method | string (requerido) Debe contener el valor bank_account. |
bank_account | object (requerido) Datos de la cuenta bancaria a la que se enviarán los fondos. clabe.- Número de cuenta CLABE de la cuenta a la que se enviarán los fondos. holder_name.- Nombre del propietario de la cuenta. |
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. |
order_id | string (opcional, longitud = 100) Identificador único del cargo. Debe ser único entre todas las transacciones. |
Respuesta
Regresa un objeto de transacción con la información del pago o una respuesta de error.
Obtener un pago
Definición
Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/payouts/{TRANSACTION_ID}
Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/payouts/{TRANSACTION_ID}
<?
Comercio
$payout = $openpay->payouts->get(transactionId);
Cliente
$customer = $openpay->customers->get(customerId);
$payout = $customer->payouts->get(transactionId);
?>
//Cliente
openpayAPI.payouts().get(String customerId, String transactionId);
//Comercio
openpayAPI.payouts().get(String transactionId);
//Cliente
openpayAPI.PayoutService.Get(string customer_id, string transaction_id);
//Comercio
openpayAPI.PayoutService.Get(string transaction_id);
// Comercio
openpay.payouts.get(transactionId, callback);
// Cliente
openpay.customers.payouts.get(customerId, transactionId, callback);
#Cliente
@payouts=@openpay.create(:payouts)
@payouts.get(transaction_id, customer_id)
#Comercio
@payouts=@openpay.create(:payouts)
@payouts.get(transaction_id)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/asynwirguzkgq2bizogo/payouts/trwpxhrgfeub9eqdyvqz \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$customer = $openpay->customers->get('asynwirguzkgq2bizogo');
$payout = $customer->payouts->get('trwpxhrgfeub9eqdyvqz');
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Payout payout = api.payouts().get("ag4nktpdzebjiye1tlze", "tr6cxbcefzatd10guvvw");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Payout = api.PayoutService.Get("ag4nktpdzebjiye1tlze", "tr6cxbcefzatd10guvvw");
openpay.customers.payouts.get('ag4nktpdzebjiye1tlze', 'tr6cxbcefzatd10guvvw', function(error, payout) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@payouts=@openpay.create(:payouts)
response_hash=@payouts.get("tr6cxbcefzatd10guvvw", "asynwirguzkgq2bizogo")
Ejemplo de respuesta
{
"id":"trwpxhrgfeub9eqdyvqz",
"amount":10.50,
"authorization":"TRWPXHRGFEUB9EQDYVQZ",
"method":"bank_account",
"operation_type":"out",
"transaction_type":"payout",
"bank_account":{
"clabe":"012XXXXXXXXXX24616",
"bank_code":"012",
"bank_name":"BANCOMER",
"alias":null,
"holder_name":"Mi empresa"
},
"status":"completed",
"currency":"MXN",
"creation_date":"2014-05-26T17:04:26-05:00",
"operation_date":"2014-05-26T17:06:28-05:00",
"description":"Retiro de saldo semanal",
"error_message":null,
"order_id":"oid-00021",
"customer_id":"asynwirguzkgq2bizogo"
}
Regresa la información de un pago realizado. Es necesario conocer el id del pago.
Petición
Propiedad | Descripción |
---|---|
transaction_id | string (requerido, longitud = 45) Identificador del pago a consultar. |
Respuesta
Regresa un objeto de transacción con la información del pago o una respuesta de error.
Cancelar un pago
Definición
Comercio
DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/payouts/{TRANSACTION_ID}
Comercio
DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/payouts/{TRANSACTION_ID}
<?
Comercio
$payout = $openpay->payouts->delete(transactionId);
Cliente
$customer = $openpay->customers->get(customerId);
$payout = $customer->payouts->delete(transactionId);
?>
//Cliente
openpayAPI.payouts().cancel(String customerId, String transactionId);
//Comercio
openpayAPI.payouts().cancel(String transactionId);
//Cliente
openpayAPI.PayoutService.Cancel(string customer_id, string transaction_id);
//Comercio
openpayAPI.PayoutService.Cancel(string transaction_id);
// Comercio
openpay.payouts.delete(transactionId, callback);
// Cliente
openpay.customers.payouts.delete(customerId, transactionId, callback);
#Cliente
@payouts=@openpay.create(:payouts)
@payouts.delete(transaction_id, customer_id)
#Comercio
@payouts=@openpay.create(:payouts)
@payouts.delete(transaction_id)
Ejemplo de petición con cliente
curl -X DELETE https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/asynwirguzkgq2bizogo/payouts/trozeipf364jqrsbt3ej \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$customer = $openpay->customers->get('asynwirguzkgq2bizogo');
$payout = $customer->payouts->delete('trozeipf364jqrsbt3ej');
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Payout payout = api.payouts().cancel("ag4nktpdzebjiye1tlze", "trozeipf364jqrsbt3ej");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Payout = api.PayoutService.Cancel("ag4nktpdzebjiye1tlze", "trozeipf364jqrsbt3ej");
openpay.customers.payouts.delete('ag4nktpdzebjiye1tlze', 'trozeipf364jqrsbt3ej', function(error, payout) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@payouts=@openpay.create(:payouts)
response_hash=@payouts.delete("trozeipf364jqrsbt3ej", "asynwirguzkgq2bizogo")
Ejemplo de respuesta
{
"id":"trozeipf364jqrsbt3ej",
"amount":10.50,
"authorization":"TROZEIPF364JQRSBT3EJ",
"method":"bank_account",
"operation_type":"out",
"transaction_type":"payout",
"bank_account":{
"clabe":"012XXXXXXXXXX24616",
"bank_code":"012",
"bank_name":"BANCOMER",
"alias":null,
"holder_name":"Mi empresa"
},
"status":"cancelled",
"currency":"MXN",
"creation_date":"2014-05-26T17:04:26-05:00",
"operation_date":"2014-05-26T17:06:28-05:00",
"description":"Retiro de saldo semanal",
"error_message":null,
"order_id":"oid-00021",
"customer_id":"asynwirguzkgq2bizogo"
}
Cancela un pago previamente programado en estado in_progress, es decir el pago no debe estar completado. Es necesario conocer el id del pago.
Petición
Propiedad | Descripción |
---|---|
transaction_id | string (requerido, longitud = 45) Identificador del pago a cancelar. |
Respuesta
Regresa un objeto de transacción con la información del pago cancelado o una respuesta de error.
Listado de pagos
Definición
Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/payouts
Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/payouts
<?
Comercio
$payoutList = $openpay->payouts->getList(searchParams);
Cliente
$customer = $openpay->customers->get(customerId);
$payoutList = $customer->payouts->getList(searchParams);
?>
//Cliente
openpayAPI.payouts().list(String customerId, SearchParams request);
//Comercio
openpayAPI.payouts().list(SearchParams request);
//Cliente
openpayAPI.PayoutService.List(string customer_id, SearchParams request = null);
//Comercio
openpayAPI.PayoutService.List(SearchParams request = null);
// Comercio
openpay.payouts.list(callback);
openpay.payouts.list(searchParams, callback);
// Cliente
openpay.customers.payouts.list(customerId, callback);
openpay.customers.payouts.list(customerId, searchParams, callback);
#Cliente
@payouts=@openpay.create(:payouts)
@payouts.all(customer_id)
#Comercio
@payouts=@openpay.create(:payouts)
@payouts.all
Ejemplo de petición
curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/asynwirguzkgq2bizogo/payouts?creation[gte]=2013-11-01&limit=2&payout_type=AUTOMATIC" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$searchParams = array(
'creation[gte]' => '2013-11-01',
'creation[lte]' => '2017-12-31',
'payout_type' => 'AUTOMATIC',
'offset' => 0,
'limit' => 2);
$customer = $openpay->customers->get('asynwirguzkgq2bizogo');
$payoutList = $customer->payouts->getList($searchParams);
?>
final Calendar dateGte = Calendar.getInstance();
final Calendar dateLte = Calendar.getInstance();
dateGte.set(2014, 5, 1, 0, 0, 0);
dateLte.set(2014, 5, 15, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.creationGte(dateGte.getTime());
request.creationLte(dateLte.getTime());
request.offset(0);
request.limit(100);
request.amount(new BigDecimal("100.00"));
List<Payout> payouts = api.payouts().list("ag4nktpdzebjiye1tlze", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.CreationGte = new Datetime(2014, 5, 1);
request.CreationLte = new DateTime(2014, 5, 15);
request.Offset = 0;
request.Limit = 100;
request.Amount = new Decimal(100.00);
List<Payout> payouts = api.PayoutService.List("ag4nktpdzebjiye1tlze", request);
var searchParams = {
'creation[gte]' : '2013-11-01',
'payout_type' : 'AUTOMATIC',
'limit' : 2
};
openpay.customers.payouts.list('asynwirguzkgq2bizogo', searchParams, function(error, list) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@payouts=@openpay.create(:payouts)
response_hash=@payouts.all("asynwirguzkgq2bizogo")
Ejemplo de respuesta
[
{
"id":"tr4f2atubqchinw71vfs",
"amount":10.50,
"authorization":"TR4F2ATUBQCHINW71VFS",
"method":"bank_account",
"operation_type":"out",
"transaction_type":"payout",
"status":"completed",
"currency":"MXN",
"creation_date":"2014-05-26T17:23:03-05:00",
"operation_date":"2014-05-26T17:26:27-05:00",
"description":"Retiro de saldo semanal",
"error_message":null,
"order_id":"oid-1110011",
"bank_account":{
"clabe":"012XXXXXXXXXX24616",
"bank_code":"012",
"bank_name":"BANCOMER",
"alias":null,
"holder_name":"Mi empresa"
},
"customer_id":"asynwirguzkgq2bizogo"
},
{
"id":"trwpxhrgfeub9eqdyvqz",
"amount":10.50,
"authorization":"TRWPXHRGFEUB9EQDYVQZ",
"method":"bank_account",
"operation_type":"out",
"transaction_type":"payout",
"bank_account":{
"clabe":"012XXXXXXXXXX24616",
"bank_code":"012",
"bank_name":"BANCOMER",
"alias":null,
"holder_name":"Mi empresa"
},
"status":"completed",
"currency":"MXN",
"creation_date":"2014-05-26T17:04:26-05:00",
"operation_date":"2014-05-26T17:06:28-05:00",
"description":"Retiro de saldo semanal",
"error_message":null,
"order_id":"oid-00021",
"customer_id":"asynwirguzkgq2bizogo"
}
]
Obtiene un listado de los pagos realizados a nivel comercio o cliente.
Petición
Puede realizar una búsqueda utilizando los siguiente parámetros como filtros.
Propiedad | Descripción |
---|---|
creation | date Igual a la fecha de creación. Formato yyyy-mm-dd |
creation[gte] | date Mayor a la fecha de creación. Formato yyyy-mm-dd |
creation[lte] | date Menor a la fecha de creación. Formato yyyy-mm-dd |
offset | numeric Número de registros a omitir al inicio, por defecto 0. |
limit | numeric Número de registros que se requieren, por defecto 10. |
amount | numeric Igual al monto. |
amount[gte] | numeric Mayor o igual al monto. |
amount[lte] | numeric Menor o igual al monto. |
payout_type | string (opcional, ALL, AUTOMATIC o MANUAL) Tipo de payout usado para filtrar las transacciones |
Respuesta
Regresa un listado de objetos de transacción de los pagos en orden descendente por fecha de creación.
Resumen de Pagos
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/reports/payout/{TRANSACTION_ID}
<?
$transactionsPayout = $openpay->transactionsPayout->get(transactionId);
?>
openpayAPI.transactionsPayout().getResume(String transactionId);
openpayAPI.PayoutReportService.Get(string transaction_id);
openpay.transactionsPayout.get(transactionId, callback);
@transactionsPayout=@openpay.create(:transactionsPayout)
@transactionsPayout.get(transaction_id)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/reports/payout/trwpxhrgfeub9eqdyvqz \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$payout = $openpay->transactionsPayout->get('trwpxhrgfeub9eqdyvqz');
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
TransactionsPayoutResume payoutResume = transactionsPayout().getResume("tr6cxbcefzatd10guvvw");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
PayoutSummary payoutSummary = api.PayoutReportService.Get("tr6cxbcefzatd10guvvw");
openpay.transactionsPayout.get('tr6cxbcefzatd10guvvw', function(error, payout) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@transactionsPayout=@openpay.create(:transactionsPayout)
response_hash=@transactionsPayout.get("tr6cxbcefzatd10guvvw")
Ejemplo de respuesta
{
"in": 2700,
"out": 2400,
"charged_adjustments": 0,
"refunded_adjustments": 0
}
Regresa el resumen de un pago realizado. Es necesario conocer el id del pago.
Petición
Propiedad | Descripción |
---|---|
transaction_id | string (requerido, longitud = 45) Identificador del pago a consultar. |
Respuesta
Regresa un objeto de resumen de pagos con el resumen del pago o una respuesta de error.
Objeto Resumen de Pagos
Ejemplo de objeto
{
"in":2700,
"out":2400,
"charged_adjustments":0,
"refunded_adjustments":0
}
Propiedad | Descripción |
---|---|
in | numeric Monto total de entrada, Debe ser una cantidad con hasta 2 dígitos decimales. |
out | numeric Monto total de salida, Debe ser una cantidad con hasta 2 dígitos decimales. |
charged_adjustments | numeric Monto total de cargos de ajuste, Debe ser una cantidad con hasta 2 dígitos decimales. |
refunded_adjustments | numeric Monto total de cargos de devolución, Debe ser una cantidad con hasta 2 dígitos decimales. |
Detalle de Pagos
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/reports/payout/{TRANSACTION_ID}/detail
<?
$transactionsPayout = $openpay->transactionsPayout->getDetails(transactionId, searchParams);
?>
openpayAPI.transactionsPayout().getDetails(String transactionId, TransactionsPayoutType transactionsPayoutType, PaginationParams paginationParams);
openpayAPI.PayoutReportService.Detail(string transaction_id, PayoutReportDetailSearchParams searchParams);
openpay.transactionsPayout.getDetails(transactionId, searchParams, callback);
@transactionsPayout=@openpay.create(:transactionsPayout)
@transactionsPayout.getDetails(transaction_id, searchParams)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/reports/payout/trwpxhrgfeub9eqdyvqz/detail?detail_type=IN \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$searchParams = array(
'payout_type' => 'IN',
'offset' => 0,
'limit' => 100);
$payout = $openpay->transactionsPayout->getDetails('trwpxhrgfeub9eqdyvqz', $searchParams);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
PaginationParams paginationParams = new PaginationParams();
paginationParams.offset(0);
paginationParams.limit(100);
List<GenericTransaction> payoutTransactions = transactionsPayout().getDetails("tr6cxbcefzatd10guvvw", TransactionsPayoutType.IN, paginationParams);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
PayoutReportDetailSearchParams searchParams = new PayoutReportDetailSearchParams();
searchParams.DetailType = "IN";
searchParams.Offset = 0;
searchParams.Limit = 100;
List<Transaction> transactions = api.PayoutReportService.Detail("tr6cxbcefzatd10guvvw", searchParam);
var searchParams = {
'detail_type' : 'IN',
'offset' : 0,
'limit' : 100
};
openpay.transactionsPayout.get('tr6cxbcefzatd10guvvw', searchParams, function(error, payout) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@transactionsPayout=@openpay.create(:transactionsPayout)
search_params_hash={
"detail_type" => "IN",
"offset" => 0,
"limit" => 100
}
response_hash=@transactionsPayout.getDetails("tr6cxbcefzatd10guvvw", search_params_hash.to_hash)
Ejemplo de respuesta
[
{
"id": "trqcwapqeilg596zwrvr",
"authorization": "7BXqDL1fjb",
"method": "bank_account",
"operation_type": "in",
"transaction_type": "charge",
"status": "completed",
"conciliated": true,
"creation_date": "2016-09-13T12:57:34-05:00",
"operation_date": "2016-09-13T12:57:34-05:00",
"description": "mexzhpxok3houd5lbvz1",
"error_message": null,
"order_id": null,
"bank_account": {
"clabe": "113XXXXXXXXXX09568",
"bank_code": "113",
"bank_name": "VE POR MAS",
"rfc": "OPE130906HN4",
"holder_name": "persona003"
},
"amount": 700,
"currency": "MXN"
},
{
"id": "tru6lsl6xpvseqp87vjd",
"authorization": "FPVYiN4nyw",
"method": "card",
"operation_type": "in",
"transaction_type": "charge",
"card": {
"type": "debit",
"brand": "mastercard",
"address": null,
"card_number": "555555XXXXXX4444",
"holder_name": "persona003",
"expiration_year": null,
"expiration_month": null,
"allows_charges": false,
"allows_payouts": false,
"bank_name": "MASARI",
"bank_code": "602"
},
"status": "completed",
"conciliated": true,
"creation_date": "2016-09-13T12:57:16-05:00",
"operation_date": "2016-09-13T12:57:16-05:00",
"description": "mexzhpxok3houd5lbvz1",
"error_message": null,
"order_id": null,
"amount": 2000,
"currency": "MXN"
}
]
Regresa el listado las transacciones involucradas en un pago realizado. Es necesario conocer el id del pago.
Petición
Propiedad | Descripción |
---|---|
transaction_id | string (requerido, longitud = 45) Identificador del pago a consultar. |
detail_type | string (IN, OUT, CHARGED_ADJUSTMENTS, REFUNDED_ADJUSTMENTS) Tipo de detalle. |
offset | numeric Número de registros a omitir al inicio, por defecto 0. |
limit | numeric Número de registros que se requieren, por defecto 10. |
Respuesta
Regresa un listado de objetos transacción o una respuesta de error.
Clientes
Los clientes son recursos en Openpay que se manejan dentro de su cuenta de comercio y puede representar usuarios, clientes o socios segun el tipo de negocio.
A los clientes les puedes agregar tarjetas y cuentas de banco para despues realizar transacciones de Cargo, Transferencia o Pago.
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"
},
"store": {
"reference": "OPENPAY02DQ35YOY7",
"barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false"
},
"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 barras. |
Crear un nuevo cliente
Definición
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers
<?
$customer = $openpay->customers->add(customerData);
?>
openpayAPI.customers().create(Customer customer);
openpayAPI.CustomerService.Create(Customer customer);
openpay.customers.create(customerRequest, callback);
@customers=@openpay.create(:customers)
@customers.create(request_hash)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"name": "customer name",
"email": "customer_email@me.com",
"requires_account": false
}'
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$customerData = array(
'external_id' => '',
'name' => 'customer name',
'last_name' => '',
'email' => 'customer_email@me.com',
'requires_account' => false,
'phone_number' => '44209087654',
'address' => array(
'line1' => 'Calle 10',
'line2' => 'col. san pablo',
'line3' => 'entre la calle 1 y la 2',
'state' => 'Queretaro',
'city' => 'Queretaro',
'postal_code' => '76000',
'country_code' => 'MX'
)
);
$customer = $openpay->customers->add($customerData);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Customer request = new Customer();
request.externalId("idExterno0101");
request.name("Julian Gerardo");
request.lastName("López Martínez");
request.email("julian.martinez@gmail.com");
request.phoneNumber("4421432915");
request.requiresAccount(false);
Address address = new Address();
address.city("Queretaro");
address.countryCode("MX");
address.state("Queretaro");
address.postalCode("79125");
address.line1("Av. Pie de la cuesta #12");
address.line2("Desarrollo San Pablo");
address.line3("Qro. Qro.");
request.address(address);
request = api.customers().create(request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Customer request = new Customer();
request.ExternalId = "idExterno0101";
request.Name = "Julian Gerardo";
request.LastName = "López Martínez";
request.Email = "julian.martinez@gmail.com";
request.PhoneNumber = "4421432915";
request.RequiresAccount = false;
Address address = new Address();
address.City = "Queretaro";
address.CountryCode = "MX";
address.State = "Queretaro";
address.PostalCode = "79125";
address.Line1 = "Av. Pie de la cuesta #12";
address.Line2 = "Desarrollo San Pablo";
address.Line3 = "Qro. Qro.";
request.Address = address;
request = api.CustomerService.Create(request);
var customerRequest = {
'name': 'customer name',
'email': 'customer_email@me.com',
'requires_account': false
};
openpay.customers.create(customerRequest, function(error, customer) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@customers=@openpay.create(:customers)
address_hash={
"line1" => "Calle 10",
"line2" => "col. san pablo",
"line3" => "entre la calle 1 y la 2",
"state" => "Queretaro",
"city" => "Queretaro",
"postal_code" => "76000",
"country_code" => "MX"
}
request_hash={
"external_id" => nil,
"name" => "customer name",
"last_name" => nil,
"email" => "customer_email@me.com",
"requires_account" => false,
"phone_number" => "44209087654",
"address" => address_hash
}
response_hash=@customers.create(request_hash.to_hash)
Ejemplo de respuesta
{
"id":"anbnldwgni1way3yp2dw",
"name":"customer name",
"last_name":null,
"email":"customer_email@me.com",
"phone_number":null,
"address":null,
"creation_date":"2014-05-20T16:47:47-05:00",
"external_id":null,
"store": {
"reference": "OPENPAY02DQ35YOY7",
"barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false"
},
"clabe": "646180109400423323"
}
Crea un objeto cliente.
Petición
Propiedad | Descripción |
---|---|
external_id | string (opcional, longitud = 100) Identificador externo único para el cliente asignado por el comercio. |
name | string (requerido, longitud = 100) Nombre(s) del cliente. |
last_name | string (opcional, longitud = 100) Apellidos del cliente. |
string (requerido, longitud = 100) Cuenta de correo electrónico del Cliente. |
|
requires_account | boolean (opcional, default = false) Enviar con valor true si requiere que el cliente se cree con cuenta para manejo del saldo. |
phone_number | string (opcional, longitud = 100) Número telefónico del Cliente. |
address | object (opcional) Dirección del Cliente. Usada comúnmente como dirección de envío. |
Respuesta
Un objeto cliente en caso de que se hayan enviado todos los datos correctamente, o una respuesta de error si ocurrió algún problema en la creación.
Actualizar un cliente
Definición
PUT https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}
<?
$customer = $openpay->customers->get(customerId);
$customer->save();
?>
openpayAPI.customers().update(Customer customer);
openpayAPI.CustomerService.Update(Customer customer);
openpay.customers.update(customerId, customerRequest, callback);
@customers=@openpay.create(:customers)
@customers.update(request_hash)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/anbnldwgni1way3yp2dw \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X PUT -d '{
"name": "customer name",
"email": "customer_email@me.com",
"address":{
"city":"Queretaro",
"state":"Queretaro",
"line1":"Calle 10",
"postal_code":"76000",
"line2":"col. san pablo",
"line3":"entre la calle 1 y la 2",
"country_code":"MX"
},
"phone_number":"44209087654"
}'
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$customer->name = 'Juan';
$customer->last_name = 'Godinez';
$customer->save();
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Customer request = new Customer();
request.name("Julian Gerardo");
request.lastName("López Martínez");
request.email("julian.martinez@gmail.com");
request.phoneNumber("4421432915");
Address address = new Address();
address.city("Queretaro");
address.countryCode("10");
address.state("Queretaro");
address.postalCode("79125");
address.line1("Av. Pie de la cuesta #12");
address.line2("Desarrollo San Pablo");
address.line3("Qro. Qro.");
request.address(address);
request = api.customers().update(request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Customer request = new Customer();
request.Name = "Julian Gerardo";
request.LastName = "López Martínez";
request.Email = "julian.martinez@gmail.com";
request.PhoneNumber = "4421432915";
Address address = new Address();
address.City = "Queretaro";
address.CountryCode = "MX";
address.State = "Queretaro";
address.PostalCode = "79125";
address.Line1 = "Av. Pie de la cuesta #12";
address.Line2 = "Desarrollo San Pablo";
address.Line3 = "Qro. Qro.";
request.Address = address;
request = api.CustomerService.Update(request);
var customerRequest = {
'name': 'customer name',
'email': 'customer_email@me.com',
'address':{
'city':'Queretaro',
'state':'Queretaro',
'line1':'Calle 10',
'postal_code':'76000',
'line2':'col. san pablo',
'line3':'entre la calle 1 y la 2',
'country_code':'MX'
}
};
openpay.customers.update('anbnldwgni1way3yp2dw', customerRequest, function(error, customer) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@customers=@openpay.create(:customers)
address_hash={
"line1" => "Calle 10",
"line2" => "col. san pablo",
"line3" => "entre la calle 1 y la 2",
"state" => "Queretaro",
"city" => "Queretaro",
"postal_code" => "76000",
"country_code" => "MX"
}
request_hash={
"external_id" => nil,
"name" => "customer name",
"last_name" => nil,
"email" => "customer_email@me.com",
"requires_account" => true,
"phone_number" => "44209087654",
"address" => address_hash
}
response_hash=@customers.update(request_hash.to_hash)
Ejemplo de respuesta
{
"id":"anbnldwgni1way3yp2dw",
"name":"customer name",
"last_name":null,
"email":"customer_email@me.com",
"phone_number":"44209087654",
"address":{
"line1":"Calle 10",
"line2":"col. san pablo",
"line3":"entre la calle 1 y la 2",
"state":"Queretaro",
"city":"Queretaro",
"postal_code":"76000",
"country_code":"MX"
},
"store": {
"reference": "OPENPAY02DQ35YOY7",
"barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false"
},
"clabe": "646180109400423323",
"creation_date":"2014-05-20T16:47:47-05:00",
"external_id":null
}
Actualiza uno o más datos del cliente.
Petición
Propiedad | Descripción |
---|---|
name | string (requerido, longitud = 100) Nombre(s) del cliente. |
last_name | string (opcional, longitud = 100) Apellidos del cliente. |
string (requerido, longitud = 100) Cuenta de correo electrónico del Cliente. |
|
phone_number | string (opcional, longitud = 100) Número telefónico del Cliente. |
address | object Dirección del Cliente. Usada comúnmente como dirección de envío. |
Respuesta
Regresa un objeto cliente con la información actualizada, o una respuesta de error si ocurrió algún problema en la actualización.
Obtener un cliente existente
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}
<?
$customer = $openpay->customers->get(customerId);
?>
openpayAPI.customers().get(String customerId);
openpayAPI.CustomerService.Update(string customer_id);
openpay.customers.get(customerId, callback);
@customers=@openpay.create(:customers)
@customers.get(customer_id)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/anbnldwgni1way3yp2dw \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json"
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Customer customer = api.customers().get("a9pvykxz4g5rg0fplze0");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Customer customer = api.CustomerService.Update("a9pvykxz4g5rg0fplze0");
openpay.customers.get('a9pvykxz4g5rg0fplze0', function(error, customer) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@customers=@openpay.create(:customers)
response_hash=@customers.get("asynwirguzkgq2bizogo")
Ejemplo de respuesta
{
"id":"anbnldwgni1way3yp2dw",
"name":"customer name",
"last_name":null,
"email":"customer_email@me.com",
"phone_number":"44209087654",
"address":{
"line1":"Calle 10",
"line2":"col. san pablo",
"line3":"entre la calle 1 y la 2",
"state":"Queretaro",
"city":"Queretaro",
"postal_code":"76000",
"country_code":"MX"
},
"store": {
"reference": "OPENPAY02DQ35YOY7",
"barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false"
},
"clabe": "646180109400423323",
"creation_date":"2014-05-20T16:47:47-05:00",
"external_id":null
}
Obtiene la información actual de un cliente existente. Solo es necesario especificar el identificador que fue regresado al momento de crear el cliente.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador único del cliente que se desea obtener. |
Respuesta
Si el identificador existe regresa un objeto cliente con la información del cliente.
Eliminar un cliente
Definición
DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}
<?
$customer = $openpay->customers->get(customerId);
$customer->delete();
?>
openpayAPI.customers().delete(String customerId);
openpayAPI.CustomerService.Delete(string customer_id);
openpay.customers.delete(customerId, callback);
@customers=@openpay.create(:customers)
@customers.delete(customer_id)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/anbnldwgni1way3yp2dw \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X DELETE
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$customer->delete();
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.customers().delete("a9pvykxz4g5rg0fplze0");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.CustomerService.Delete("a9pvykxz4g5rg0fplze0");
openpay.customers.delete('a9pvykxz4g5rg0fplze0', function(error) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@customers=@openpay.create(:customers)
response_hash=@customers.delete("asynwirguzkgq2bizogo")
Elimina un cliente permanentemente. Openpay mantiene los registros de las operaciones. El cliente no se podrá borrar si su saldo es mayor a 0 (para cliente con manejo de saldo)
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador único del cliente a borrar. |
Respuesta
Si el cliente se borra correctamente la respuesta es vacía, si no se puede borrar se regresa un objeto error indicando el motivo.
Listado de clientes
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers
<?
$customerList = $openpay->customers->getList(findDataRequest);
?>
openpayAPI.customers().list(SearchParams request);
openpayAPI.CustomerService.List(SearchParams request = null);
openpay.customers.list(callback);
openpay.customers.list(searchParams, callback);
@customers=@openpay.create(:customers)
@customers.all
Ejemplo de petición
curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers?creation[gte]=2013-11-01&limit=2" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json"
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$findDataRequest = array(
'creation[gte]' => '2013-01-01',
'creation[lte]' => '2013-12-31',
'offset' => 0,
'limit' => 5);
$customerList = $openpay->customers->getList($findDataRequest);
?>
final Calendar dateGte = Calendar.getInstance();
final Calendar dateLte = Calendar.getInstance();
dateGte.set(2014, 5, 1, 0, 0, 0);
dateLte.set(2014, 5, 15, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.creationGte(dateGte.getTime());
request.creationLte(dateLte.getTime());
request.offset(0);
request.limit(100);
List<Customer> customers = api.customers().list(request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.CreationGte = new Datetime(2014, 5, 1);
request.CreationLte = new DateTime(2014, 5, 15);
request.Offset = 0;
request.Limit = 100;
List<Customer> customers = api.CustomerService.List(request);
var searchParams = {
'creation[gte]' : '2013-11-01',
'limit' : 2
};
openpay.customers.list(searchParams, function(error, list) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@customers=@openpay.create(:customers)
response_hash=@customers.all
Ejemplo de respuesta
[{
"id":"cpjdhf754ythr65yu9k7q",
"creation_date":"2013-11-08T12:04:46-06:00",
"name":"Rodrigo",
"last_name":"Velazco Perez",
"email":"rodrigo.velazco@payments.com",
"phone_number":"4425667045",
"status":"active",
"balance":142.5,
"store": {
"reference": "OPENPAY02DQ35YOY7",
"barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false"
},
"clabe": "646180109400423323"
}, {
"id":"cz4nkhrlcu9k7qd4lwqx",
"creation_date":"2013-11-07T14:54:46-06:00",
"name":"Eriberto",
"last_name":"Rodriguez Lopez",
"email":"eriberto.rodriguez@payments.com",
"phone_number":"442",
"status":"active",
"balance":103,
"store": {
"reference": "OPENPAY02DQWERWJ3",
"barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQWERWJ3?width=1&height=45&text=false"
},
"clabe": "646180109400423323"
}]
Regresa una lista de los cliente registrados, si desea delimitar el resultado se pueden utilizar los filtros.
Petición
Puede realizar una búsqueda utilizando los siguiente parámetros como filtros.
Propiedad | Descripción |
---|---|
external_id | string Identificador único del cliente asignado por el comercio que se desea obtener. |
creation | date Igual a la fecha de creación del cliente. Formato yyyy-mm-dd |
creation[gte] | date Mayor a la fecha de creación del cliente .Formato yyyy-mm-dd |
creation[lte] | date Menor a la fecha de creación del cliente .Formato yyyy-mm-dd |
offset | numeric Número de registros a omitir al inicio, por defecto 0. |
limit | numeric Número de registros que se requieren, por defecto 10. |
Respuesta
Regresa un arreglo de objetos cliente.
Transferencias
El servicio permite transferir fondos entre las cuentas de tus clientes.
Transferir entre clientes
Definición
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/transfers
<?
$customer = $openpay->customers->get(customerId);
$transfer = $customer->transfers->create(transferDataRequest);
?>
openpayAPI.transfers().create(String customerId, CreateTransferParams request);
openpayAPI.TransferService.Create(string from_customer_id, TransferRequest request);
openpay.customers.transfers.create(customerId, transferRequest, callback);
@transfers=@openpay.create(:transfers)
@transfers.create(request_hash, from_customer_id)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/transfers \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"customer_id" : "dvocf97jd20es3tw5laz",
"amount" : 12.50,
"description" : "Transferencia entre cuentas",
"order_id" : "oid-1245"
}'
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$transferDataRequest = array(
'customer_id' => 'aqedin0owpu0kexr2eor',
'amount' => 12.50,
'description' => 'Cobro de Comisión',
'order_id' => 'ORDEN-00061');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$transfer = $customer->transfers->create($transferDataRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
CreateTransferParams request = new CreateTransferParams();
request.toCustomerId("ah1ki9jmb50mvlsf9gqn");
request.amount(new BigDecimal("100.00"));
request.description("Transferencia del Customer 1 al Customer 2");
request.orderId("idOrdExt-0101");
Transfer transfer = api.transfers().create("a9pvykxz4g5rg0fplze0", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
TransferRequest request = new TransferRequest();
request.CustomerId = "ah1ki9jmb50mvlsf9gqn";
request.Amount = new Decimal(100.00);
request.Description = "Transferencia del Customer 1 al Customer 2";
request.OrderId = "idOrdExt-0101";
Transfer transfer = api.TransferService.Create("a9pvykxz4g5rg0fplze0", request);
var transferRequest = {
'customer_id' : 'dvocf97jd20es3tw5laz',
'amount' : 12.50,
'description' : 'Transferencia entre cuentas',
'order_id' : 'oid-1245'
};
openpay.customers.transfers.create('ag4nktpdzebjiye1tlze', transferRequest, function(error, transfer) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@transfers=@openpay.create(:transfers)
request_hash={
"customer_id" => "dvocf97jd20es3tw5laz",
"amount" => 12.50,
"description" => "Transferencia entre cuentas",
"order_id" => "oid-1245"
}
response_hash=@transfers.create(request_hash.to_hash, "ag4nktpdzebjiye1tlze")
Ejemplo de respuesta
{
"amount":12.50,
"authorization":null,
"method":"customer",
"operation_type":"out",
"currency":"MXN",
"transaction_type":"transfer",
"status":"completed",
"id":"twpmbike2jejex3pahzd",
"creation_date":"2013-11-15T10:33:19-06:00",
"description":"Transferencia entre cuentas",
"error_message":null,
"order_id":"oid-1245",
"customer_id":"a9pvykxz4g5rg0fplze0",
"store": {
"reference": "OPENPAY02DQ35YOY7",
"barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false"
},
"clabe": "646180109400423323"
}
Realiza la transferencia de fondos de una cuenta de cliente a otra. Los fondos serán cargos a una cuenta origen y abonados a la cuenta destino, lo cual generá dos transacciones.
Petición
Propiedad | Descripción |
---|---|
customer_id | string (requerido, longitud = 45) El ID de Openpay del cliente al que deseas enviarle los fondos. |
amount | numeric (requerido) Cantidad a transferir. Debe ser una cantidad mayor a un peso, con hasta dos dígitos decimales. |
description | string (requerido, longitud = 250) Una descripción asociada a la transferencia. |
order_id | string (opcional, longitud = 100) Identificador único de la transferencia. Será asignado a la transacción de retiro. |
Respuesta
Si la transacción se realiza correctamente, la respuesta contendrá un objeto de transacción. Este objeto representará el retiro de fondos del cliente actual. En caso de error, se regresará el objeto de error.
Obtener una transferencia
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/transfers/{TRANSACTION_ID}
<?
$customer = $openpay->customers->get(customerId);
$transfer = $customer->transfers->get(transactionId);
?>
openpayAPI.transfers().get(String customerId, String transactionId);
openpayAPI.TransferService.Get(string customer_id, string transaction_id);
openpay.customers.transfers.get(customerId, transactionId, callback);
@transfers=@openpay.create(:transfers)
@transfers.get(transaction_id, customer_id)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/transfers/twpmbike2jejex3pahzd \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json"
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$transfer = $customer->transfers->get('tyxesptjtx1bodfdjmlb');
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Transfer transfer = api.transfers().get("a9pvykxz4g5rg0fplze0", "tr6cxbcefzatd10guvvw");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Transfer transfer = api.TransferService.Get("a9pvykxz4g5rg0fplze0", "tr6cxbcefzatd10guvvw");
openpay.customers.transfers.get('ag4nktpdzebjiye1tlze', 'twpmbike2jejex3pahzd', function(error, transfer) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@transfers=@openpay.create(:transfers)
response_hash=@transfers.get("twpmbike2jejex3pahzd", "ag4nktpdzebjiye1tlze")
Ejemplo de respuesta
{
"amount":12.50,
"authorization":null,
"method":"customer",
"operation_type":"out",
"currency":"MXN",
"transaction_type":"transfer",
"status":"completed",
"id":"twpmbike2jejex3pahzd",
"creation_date":"2013-11-15T10:33:19-06:00",
"description":"Transferencia entre cuentas",
"error_message":null,
"order_id":"oid-1245",
"customer_id":"dvocf97jd20es3tw5laz"
}
Con el identificador del cliente y el identificador de la transferencia, se puede obtener el detalle de la transacción. La transacción de salida se encontrará en el cliente desde el cual se realizó la transferencia, y la transacción de entrada en el cliente que recibió el monto.
Petición
Propiedad | Descripción |
---|---|
customer_id | string (requerido, longitud = 45) Identificador del cliente |
transaction_id | string (requerido, longitud = 45) Identificador de la transferencia |
Respuesta
Regresa un objeto de transacción
Listado de transferencias
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/transfers
<?
$customer = $openpay->customers->get(customerId);
$transferList = $customer->transfers->getList(findDataRequest);
?>
openpayAPI.transfers().list(String customerId, SearchParams request);
openpayAPI.TransferService.List(string customer_id, SearchParams request = null);
openpay.customers.transfers.list(customerId, callback);
openpay.customers.transfers.list(customerId, searchParams, callback);
@transfers=@openpay.create(:transfers)
@transfers.all(customer_id)
Ejemplo de petición
curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/transfers?limit=2" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$findDataRequest = array(
'creation[gte]' => '2013-01-01',
'creation[lte]' => '2013-12-31',
'offset' => 0,
'limit' => 5);
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$transferList = $customer->transfers->getList($findDataRequest);
?>
final Calendar dateGte = Calendar.getInstance();
final Calendar dateLte = Calendar.getInstance();
dateGte.set(2014, 5, 1, 0, 0, 0);
dateLte.set(2014, 5, 15, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.creationGte(dateGte.getTime());
request.creationLte(dateLte.getTime());
request.offset(0);
request.limit(100);
List<Transfer> transfers = api.transfers().list("a9pvykxz4g5rg0fplze0", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.CreationGte = new Datetime(2014, 5, 1);
request.CreationLte = new DateTime(2014, 5, 15);
request.Offset = 0;
request.Limit = 100;
List<Transfer> transfers = api.TransferService.List("a9pvykxz4g5rg0fplze0", request);
var searchParams = {
'limit' : 2
};
openpay.customers.transfers.list('ag4nktpdzebjiye1tlze', searchParams, function(error, list) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@transfers=@openpay.create(:transfers)
response_hash=@transfers.all("asynwirguzkgq2bizogo")
Ejemplo de respuesta
[
{
"amount":130.00,
"authorization":null,
"method":"customer",
"currency":"MXN",
"operation_type":"out",
"transaction_type":"transfer",
"status":"completed",
"id":"a74mbe4e2j5gc6gfahzd",
"creation_date":"2013-09-18T00:31:19-06:00",
"description":"Una descripcion",
"error_message":null,
"order_id":"20131115103317",
"customer_id":"afk4csrazjp1udezj1po"
},
{
"amount":130.00,
"authorization":null,
"method":"customer",
"currency":"MXN",
"operation_type":"in",
"transaction_type":"transfer",
"status":"completed",
"id":"a74mbe4e2j5gc6gfahzd",
"creation_date":"2013-09-18T00:31:19-06:00",
"description":"Una descripcion",
"error_message":null,
"order_id":null,
"customer_id":"agdn58ngcnogqmzruz1i"
}
]
Permite consultar las transacciones de entrada y salida de un cliente.
Petición
Puede realizar una búsqueda utilizando los siguiente parámetros como filtros.
Propiedad | Descripción |
---|---|
creation | date Igual a la fecha de creación. Formato yyyy-mm-dd |
creation[gte] | date Mayor a la fecha de creación. Formato yyyy-mm-dd |
creation[lte] | date Menor a la fecha de creación. Formato yyyy-mm-dd |
offset | numeric Número de registros a omitir al inicio, por defecto 0. |
limit | numeric Número de registros que se requieren, por defecto 10. |
Respuesta
Listado de objetos transacción de las transferencias realizadas, cada uno con el identificador del cliente al que se le realizó. Las transacciones serán listadas en orden descendente por fecha de creación.
Tarjetas
Dentro de la plataforma Openpay podrás agregar tarjetas a la cuenta del cliente, eliminarlas, recuperar alguna en específico y listarlas.
Se pueden almacenar múltiples tarjetas de débito y/o crédito a nivel cliente o a nivel comercio para realizar cargos posteriormente sin la necesidad de introducir nuevamente la información.
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 | string 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. |
Crear una tarjeta
Definición
Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/cards
Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards
<?
//Cliente
$customer = $openpay->customers->get(customerId);
$card = $customer->cards->add(cardDataRequest);
//Comercio
$card = $openpay->cards->add(cardDataRequest);
?>
//Cliente
openpayAPI.cards().create(String customerId, Card request);
//Comercio
openpayAPI.cards().create(Card request);
//Cliente
openpayAPI.CardService.Create(string customer_id, Card card);
//Comercio
openpayAPI.CardService.Create(Card card);
// Comercio
openpay.cards.create(cardRequest, callback);
// Cliente
openpay.customers.cards.create(customerId, cardRequest, callback);
#Cliente
@cards=@openpay.create(:cards)
@cards.create(request_hash, customer_id)
#Comercio
@cards=@openpay.create(:cards)
@cards.create(request_hash)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"card_number":"4111111111111111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"cvv2":"110",
"device_session_id" : "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f"
}'
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$cardDataRequest = array(
'holder_name' => 'Teofilo Velazco',
'card_number' => '4916394462033681',
'cvv2' => '123',
'expiration_month' => '12',
'expiration_year' => '15',
'device_session_id' => 'kR1MiQhz2otdIuUlQkbEyitIqVMiI16f',
'address' => array(
'line1' => 'Privada Rio No. 12',
'line2' => 'Co. El Tintero',
'line3' => '',
'postal_code' => '76920',
'state' => 'Querétaro',
'city' => 'Querétaro.',
'country_code' => 'MX'));
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$card = $customer->cards->add($cardDataRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Card request = new Card();
request.holderName("Juan Perez Ramirez");
request.cardNumber("4111111111111111");
request.cvv2("110");
request.expirationMonth(12);
request.expirationYear(20);
request.deviceSessionId("kR1MiQhz2otdIuUlQkbEyitIqVMiI16f");
Address address = new Address();
address.city("Queretaro");
address.countryCode("10");
address.state("Queretaro");
address.postalCode("79125");
address.line1("Av. Pie de la cuesta #12");
address.line2("Desarrollo San Pablo");
address.line3("Qro. Qro.");
request.address(address);
request = api.cards().create("a9pvykxz4g5rg0fplze0", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Card request = new Card();
request.HolderName = "Juan Perez Ramirez";
request.CardNumber = "4111111111111111";
request.Cvv2 = "110";
request.ExpirationMonth = "12";
request.ExpirationYear = "20";
request.DeviceSessionId = "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f";
Address address = new Address();
address.City = "Queretaro";
address.CountryCode = "MX";
address.State = "Queretaro";
address.PostalCode = "79125";
address.Line1 = "Av. Pie de la cuesta #12";
address.Line2 = "Desarrollo San Pablo";
address.Line3 = "Qro. Qro.";
request.Address = address;
request = api.CardService.Create("a9pvykxz4g5rg0fplze0", request);
var cardRequest = {
'card_number':'4111111111111111',
'holder_name':'Juan Perez Ramirez',
'expiration_year':'20',
'expiration_month':'12',
'cvv2':'110',
'device_session_id':'kR1MiQhz2otdIuUlQkbEyitIqVMiI16f'
};
openpay.customers.cards.create('a9pvykxz4g5rg0fplze0', cardRequest, function(error, card) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@cards=@openpay.create(:cards)
address_hash={
"line1" => "Calle 10",
"line2" => "col. san pablo",
"line3" => "entre la calle 1 y la 2",
"state" => "Queretaro",
"city" => "Queretaro",
"postal_code" => "76000",
"country_code" => "MX"
}
request_hash={
"holder_name" => "Juan Perez Ramirez",
"card_number" => "411111XXXXXX1111",
"cvv2" => "110",
"expiration_month" => "12",
"expiration_year" => "20",
"device_session_id" => "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f",
"address" => address_hash
}
response_hash=@cards.create(request_hash.to_hash, "asynwirguzkgq2bizogo")
Ejemplo de respuesta
{
"id":"ktrpvymgatocelsciak7",
"type":"debit",
"brand":"visa",
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"allows_payouts":true,
"creation_date":"2014-05-21T17:31:01-05:00",
"bank_name":"Banamex",
"customer_id":"ag4nktpdzebjiye1tlze",
"bank_code":"002"
}
Cuando se crea una tarjeta debe especificarse cliente, si no se especifica el cliente la tarjeta quedará registrada para la cuenta del comercio. Una vez guardada la tarjeta no se puede obtener el número y código de seguridad.
Al momento de guardar la tarjeta se generará un id que podrá ser usado para hacer cargos a la tarjeta, envíos a una tarjeta o simplemente obtener la información no sensible de la tarjeta.
Cuando se crea una tarjeta puede usarse o no la implementación del sistema antifraude. La propiedad device_session_id
deberá ser generada desde el API JavaScript, véase Fraud detection using device data.
Petición
Propiedad | Descripción |
---|---|
holder_name | string (requerido, longitud = 80) Nombre del tarjeta habiente. |
card_number | numeric (requerido) Número de tarjeta puede ser de 16 o 19 dígitos. |
cvv2 | string (requerido) Código de seguridad como aparece en la parte de atrás de la tarjeta. Generalmente 3 dígitos. |
expiration_month | numeric (requerido) Mes de expiración tal como aparece en la tarjeta. |
expiration_year | numeric (requerido) Año de expiración tal como aparece en la tarjeta. |
device_session_id | string (opcional, longitud = 255) Identificador del dispositivo generado con la herramienta antifraudes. |
address | object Dirección de facturación del tarjeta habiente. |
Respuesta
Regresa un objeto tarjeta cuando se creó correctamente o una respuesta de error si ocurrió algún problema en la creación.
Crear una tarjeta con token
Definición
Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/cards
Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards
<?
//Cliente
$customer = $openpay->customers->get(customerId);
$card = $customer->cards->add(cardDataRequest);
//Comercio
$card = $openpay->cards->add(cardDataRequest);
?>
//Cliente
openpayAPI.cards().create(String customerId, Card card);
//Comercio
openpayAPI.cards().create(Card card);
//Cliente
openpayAPI.CardService.Create(string customer_id, Card request);
//Comercio
openpayAPI.CardService.Create(Card request);
// Comercio
openpay.cards.create(cardRequest, callback);
// Cliente
openpay.customers.cards.create(customerId, cardRequest, callback);
#Cliente
@cards=@openpay.create(:cards)
@cards.create(request_hash, customer_id)
#Comercio
@cards=@openpay.create(:cards)
@cards.create(request_hash)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"token_id":"tokgslwpdcrkhlgxqi9a",
"device_session_id":"8VIoXj0hN5dswYHQ9X1mVCiB72M7FY9o"
}'
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$cardDataRequest = array(
'token_id' => 'tokgslwpdcrkhlgxqi9a',
'device_session_id' => '8VIoXj0hN5dswYHQ9X1mVCiB72M7FY9o'
);
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$card = $customer->cards->add($cardDataRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Card request = new Card();
request.tokenId("tokgslwpdcrkhlgxqi9a");
request.deviceSessionId("8VIoXj0hN5dswYHQ9X1mVCiB72M7FY9o");
request = api.cards().create("a9pvykxz4g5rg0fplze0", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Card request = new Card();
request.TokenId = "tokgslwpdcrkhlgxqi9a";
request.DeviceSessionId = "8VIoXj0hN5dswYHQ9X1mVCiB72M7FY9o";
request = api.CardService.Create("a9pvykxz4g5rg0fplze0", request);
var cardRequest = {
'token_id' : 'tokgslwpdcrkhlgxqi9a',
'device_session_id' : '8VIoXj0hN5dswYHQ9X1mVCiB72M7FY9o'
}
openpay.customers.cards.create('a9pvykxz4g5rg0fplze0', cardRequest, function(error, card) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@cards=@openpay.create(:cards)
request_hash={
"token_id" => "tokgslwpdcrkhlgxqi9a",
"device_session_id" => "8VIoXj0hN5dswYHQ9X1mVCiB72M7FY9o"
}
response_hash=@cards.create(request_hash.to_hash, "asynwirguzkgq2bizogo")
Ejemplo de respuesta
{
"type":"credit",
"brand":"visa",
"id":"kso4st83wxaibffyt6su",
"card_number":"4242",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"15",
"expiration_month":"12",
"allows_charges":true,
"allows_payouts":false,
"creation_date":"2014-02-12T10:57:09-06:00",
"bank_name":"BANCOMER",
"bank_code":"012",
"customer_id":"a2b79p8xmzeyvmolqfja"
}
Crea una tarjeta a partir de un token obtenido desde el navegador o dispositivo del cliente. Esta forma evita que la información sensible de la tarjeta pase por tus servidores.
Petición
Propiedad | Descripción |
---|---|
token_id | string (requerido, longitud = 45) Identificador del token generado en el navegador o dispositivo del cliente. |
device_session_id | string (requerido, longitud = 255) Identificador del dispositivo generado con la herramienta antifraudes |
Respuesta
Regresa un objeto tarjeta
Obtener una tarjeta
Definición
Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/cards/{CARD_ID}
Cliente
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}
<?
//Cliente
$customer = $openpay->customers->get(customerId);
$card = $customer->cards->get(cardId);
//Comercio
$card = $openpay->cards->get(cardId);
?>
//Cliente
openpayAPI.cards().get(String customerId, String cardId);
//Comercio
openpayAPI.cards().get(String cardId);
//Cliente
openpayAPI.CardService.Get(string customer_id, string card_id);
//Comercio
openpayAPI.CardService.Get(string card_id);
// Comercio
openpay.cards.get(cardId, callback);
// Cliente
openpay.customers.cards.get(customerId, cardId, callback);
#Cliente
@cards=@openpay.create(:cards)
@cards.get(card_id, customer_id)
#Comercio
@cards=@openpay.create(:cards)
@cards.get(card_id)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards/ktrpvymgatocelsciak7 \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json"
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$card = $customer->cards->get('k9pn8qtsvr7k7gxoq1r5');
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Card card = api.cards().get("a9pvykxz4g5rg0fplze0", "ktrpvymgatocelsciak7");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Card card = api.CardService.Get("a9pvykxz4g5rg0fplze0", "ktrpvymgatocelsciak7");
openpay.customers.cards.get('a9pvykxz4g5rg0fplze0', 'ktrpvymgatocelsciak7', function(error, card){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@cards=@openpay.create(:cards)
response_hash=@cards.get("ktrpvymgatocelsciak7", "asynwirguzkgq2bizogo")
Ejemplo de respuesta
{
"id":"ktrpvymgatocelsciak7",
"type":"debit",
"brand":"visa",
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"allows_payouts":true,
"creation_date":"2014-05-21T17:31:01-05:00",
"bank_name":"Banamex",
"customer_id":"ag4nktpdzebjiye1tlze",
"bank_code":"002"
}
Obtiene los detalles de una tarjeta solicitándola con su id.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador único de la tarjeta |
Respuesta
Regresa un objeto tarjeta
Consulta de puntos
Definición
Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/cards/{CARD_ID}/points
Cliente
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}/points
Token
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/tokens/{TOKEN_ID}/points
<?
//Clientes
$customer = $openpay->customers->get(customerId);
$pointsBalance = $customer->cards->get(cardId)->get("points");
//Comercio
$pointsBalance = $openpay->cards->get(cardId)->get("points");
//Token
$pointsBalance = $openpay->get("tokens")->get(tokenId)->get("points");
?>
//Cliente
openpayAPI.cards().points(String customerId, String cardId);
//Comercio
openpayAPI.cards().points(String cardId);
//Cliente
openpayAPI.CardService.Points(string customer_id, string cardId);
//Comercio
openpayAPI.CardService.Points(string cardId);
// Comercio
openpay.cards.getPoints(cardId, callback);
// Cliente
openpay.cards.getPoints(customerId, cardId, callback);
// Comercio
@cards=@openpay.create(:cards)
@cards.getPoints(card_id)
// Cliente
@cards=@openpay.create(:cards)
@cards.getPoints(card_id, customer_id)
Ejemplo de petición con cliente
curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards/ktrpvymgatocelsciak7/points" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$cardId = 'tfghdfghtertdfbsd';
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$pointsBalance = $customer->cards->get(cardId)->get("points");
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128",
"maonhzpqm8xp2ydssovf");
PointsBalance points = api.cards().points("a9pvykxz4g5rg0fplze0", "knasugabhdgq456wr");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
PointsBalance points = api.CardService.Points("a9pvykxz4g5rg0fplze0", "knasugabhdgq456wr");
openpay.customers.cards.getPoints('ag4nktpdzebjiye1tlze', 'tnasugabhdgq456wr', function(error, list){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@cards=@openpay.create(:cards)
response_hash=@cards.getPoints("asynwirguzkgq2bizogo","tnasugabhdgq456wr")
Ejemplo de respuesta
[
{
"points_type": "santander",
"remaining_points":"300",
"remaining_mxn":"22.5"
}
]
Regresa el balance de puntos de la tarjeta. Solo aplicable a puntos Santander, Scotiabank y Bancomer.
Petición
Puedes consultar los puntos de una tarjeta perteneciente a un comercio o un cliente mediante el id de la tarjeta
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador único de la tarjeta |
También puedes consultar los puntos de la tarjeta de un comercio mediante el token de la tarjeta
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador de token |
Respuesta
Propiedad | Descripción |
---|---|
points_type | Tipo de puntos aceptados por la tarjeta (Santander, Scotiabank ó Bancomer) |
remaining_points | Cantidad de puntos restante |
remaining_mxn | Saldo de puntos restante en pesos |
Eliminar una tarjeta
Definición
Comercio
DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/cards/{CARD_ID}
Cliente
DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}
<?
//Cliente
$customer = $openpay->customers->get(customerId);
$card = $customer->cards->get(cardId);
$card->delete();
//Comercio
$card = $openpay->cards->get(cardId);
$card->delete();
?>
//Cliente
openpayAPI.cards().delete(String customerId, String cardId);
//Comercio
openpayAPI.cards().delete(String cardId);
//Cliente
openpayAPI.CardService.Delete(string customer_id, string card_id);
//Comercio
openpayAPI.CardService.Delete(string card_id);
// Comercio
openpay.cards.delete(cardId, callback);
// Cliente
openpay.customers.cards.delete(customerId, cardId, callback);
#Cliente
@cards=@openpay.create(:cards)
@cards.delete(card_id, customer_id)
#Comercio
@cards=@openpay.create(:cards)
@cards.delete(card_id)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards/ktrpvymgatocelsciak7 \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-X DELETE
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$card = $customer->cards->get('k9pn8qtsvr7k7gxoq1r5');
$card->delete();
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.cards().delete("a9pvykxz4g5rg0fplze0", "ktrpvymgatocelsciak7");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.CardService.Delete("a9pvykxz4g5rg0fplze0", "ktrpvymgatocelsciak7");
openpay.customers.cards.delete('a9pvykxz4g5rg0fplze0', 'ktrpvymgatocelsciak7', function(error) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@cards=@openpay.create(:cards)
response_hash=@cards.delete("ktrpvymgatocelsciak7", "asynwirguzkgq2bizogo")
Elimina una tarjeta del cliente o comercio. Una vez eliminada no se permitirá hacer movimientos, sin embargo, se mantendrán todos los registros de operaciones que haya realizado y se podrán consultar en el dashboard.
Para eliminarla sólo es necesario proporcionar el identificador de la tarjeta.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador único de la tarjeta |
Respuesta
Si la tarjeta se borra correctamente la respuesta es vacía, si no se puede borrar se regresa un objeto error indicando el motivo.
Listado de tarjetas
Definición
Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers
Cliente
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards
<?
//Clientes
$customer = $openpay->customers->get(customerId);
$cardList = $customer->cards->getList(findDataRequest);
//Comercio
$cardList = $openpay->cards->getList(findDataRequest);
?>
//Cliente
openpayAPI.cards().list(String customerId, SearchParams request);
//Comercio
openpayAPI.cards().list(SearchParams request);
//Cliente
openpayAPI.CardService.List(string customer_id, SearchParams request = null);
//Comercio
openpayAPI.CardService.List(SearchParams request = null);
// Comercio
openpay.cards.list(callback);
openpay.cards.list(searchParams, callback);
// Cliente
openpay.cards.list(customerId, callback);
openpay.cards.list(customerId, searchParams, callback);
#Cliente
@cards=@openpay.create(:cards)
@cards.all(customer_id)
#Comercio
@cards=@openpay.create(:cards)
@cards.all
Ejemplo de petición con cliente
curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards?limit=2" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$findDataRequest = array(
'creation[gte]' => '2013-01-01',
'creation[lte]' => '2013-12-31',
'offset' => 0,
'limit' => 5);
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$cardList = $customer->cards->getList($findDataRequest);
?>
final Calendar dateGte = Calendar.getInstance();
final Calendar dateLte = Calendar.getInstance();
dateGte.set(2014, 5, 1, 0, 0, 0);
dateLte.set(2014, 5, 15, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.creationGte(dateGte.getTime());
request.creationLte(dateLte.getTime());
request.offset(0);
request.limit(100);
List<Card> cards = api.cards().list("a9pvykxz4g5rg0fplze0", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.CreationGte = new Datetime(2014, 5, 1);
request.CreationLte = new DateTime(2014, 5, 15);
request.Offset = 0;
request.Limit = 100;
List<Card> cards = api.CardService.List("a9pvykxz4g5rg0fplze0", request);
var searchParams = {
'limit' : 2
};
openpay.customers.cards.list('ag4nktpdzebjiye1tlze', searchParams, function(error, list){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@cards=@openpay.create(:cards)
response_hash=@cards.all("asynwirguzkgq2bizogo")
Ejemplo de respuesta
[
{
"id":"kxq1rpdymlcpxekvjsxm",
"card_number":"1118",
"holder_name":"Pedro Paramo",
"expiration_year":"15",
"expiration_month":"12",
"allows_charges":true,
"allows_payouts":true,
"creation_date":"2013-11-20T09:22:25-06:00",
"bank_name":"BBVA BANCOMER",
"bank_code":"012",
"type":"debit",
"brand":"mastercard"
},
{
"id":"kgjy0jiami01kkpdoywr",
"card_number":"1111",
"holder_name":"Pedro Paramo",
"expiration_year":"15",
"expiration_month":"12",
"allows_charges":true,
"allows_payouts":true,
"creation_date":"2013-11-19T13:26:12-06:00",
"bank_name":"BBVA BANCOMER",
"bank_code":"012",
"type":"debit",
"brand":"mastercard"
}
]
Regresa una lista de las tarjetas registrados por comercio o cliente, si desea delimitar el resultado se pueden utilizar los filtros.
Petición
Puede realizar una búsqueda utilizando los siguiente parámetros como filtros.
Propiedad | Descripción |
---|---|
creation | date Igual a la fecha de creación. Formato yyyy-mm-dd |
creation[gte] | date Mayor a la fecha de creación. Formato yyyy-mm-dd |
creation[lte] | date Menor a la fecha de creación. Formato yyyy-mm-dd |
offset | numeric Número de registros a omitir al inicio, por defecto 0. |
limit | numeric Número de registros que se requieren, por defecto 10. |
Respuesta
Listado de objetos tarjeta registrados de acuerdo a los parámetros proporcionados, ordenadas por fecha de creación en orden descendente.
Actualizar tarjeta
Definición
Comercio
PUT https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/cards/{CARD_ID}
Cliente
PUT https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards/kysc8pycq8hnlzivk1x4 \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X PUT -d '{
"cvv2":"000"
}'
Ejemplo de respuesta
{
}
Actualiza los datos de una tarjeta desde el navegador o dispositivo del cliente. También permite enviar un cvv2 que se usará en el próximo cargo que se realice a esta tarjeta. De esta forma evita que la información sensible de la tarjeta pase por tus servidores.
Petición
Propiedad | Descripción |
---|---|
holder_name | string (opcional) Nombre del tarjeta habiente. |
cvv2 | string (opcional) Código de seguridad como aparece en la parte de atrás de la tarjeta. Generalmente 3 dígitos. |
expiration_month | numeric (opcional) Mes de expiración tal como aparece en la tarjeta. |
expiration_year | numeric (opcional) Año de expiración tal como aparece en la tarjeta. |
merchant_id | string (condicional) ID del comercio. Usado solamente cuando se usa un grupo de comercio. |
Respuesta
Actualmente regresa un JSON sin datos. Considerar que se podría extender la respuesta en el futuro.
Cuentas Bancarias
Se pueden almacenar múltiples cuentas bancarias por cliente o por comercio para posteriormente retirar fondos.
Objeto Cuenta Bancaria
Ejemplo de objeto
{
"id":"brppwl9nwmruogk2do0j",
"clabe":"032180000118359719",
"bank_code":"032",
"bank_name":"IXE",
"alias":null,
"holder_name":"Juan Hernández Sánchez",
"creation_date":"2013-11-14T12:29:18-06shell00"
}
Propiedad | Descripción |
---|---|
id | string ID de la cuenta bancaria. |
holder_name | string Nombre completo del titular. |
alias | string Nombre por el cual se identifica a la cuenta bancaria. |
clabe | string Número CLABE asignado a la cuenta bancaria. |
bank_name | string Nombre abreviado del banco donde radica la cuenta, en base al siguiente catálogo de Códigos de Banco. |
bank_code | string Código del banco donde radica la cuenta bancaria, en base al siguiente catálogo de Códigos de Banco. |
creation_date | datetime Fecha y hora en que se creó la cuenta bancaria en formato ISO 8601. |
Crear una cuenta bancaria
Definición
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/bankaccounts
<?
$customer = $openpay->customers->get(customerId);
$bankaccount = $customer->bankaccounts->add(bankDataRequest);
?>
//Cliente
openpayAPI.bankAccounts().create(String customerId, BankAccount request);
//Cliente
openpayAPI.BankAccountService.Create(string customer_id, BankAccount request);
openpay.customers.bankaccounts.create(customerId, bankaccountRequest, callback);
#Cliente
@bank_accounts=@openpay.create(:bankaccounts)
@bank_accounts.create(request_hash, customer_id)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/bankaccounts \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"clabe":"032180000118359719",
"alias":"Cuenta principal",
"holder_name":"Juan Hernández Sánchez"
}'
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$bankDataRequest = array(
'clabe' => '072910007380090615',
'alias' => 'Cuenta principal',
'holder_name' => 'Teofilo Velazco');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$bankaccount = $customer->bankaccounts->add($bankDataRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
BankAccount request = new BankAccount();
request.holderName("Juan Hernández Sánchez");
request.alias("Cuenta principal");
request.clabe("032XXXXXXXXXX59719");
request = api.bankAccounts().create("a9pvykxz4g5rg0fplze0", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
BankAccount request = new BankAccount();
request.HolderName = "Juan Hernández Sánchez";
request.Alias = "Cuenta principal";
request.CLABE = "032XXXXXXXXXX59719";
request = api.BankAccountService.Create("a9pvykxz4g5rg0fplze0", request);
var bankaccountRequest = {
'clabe' : '032180000118359719',
'alias' : 'Cuenta principal',
'holder_name' : 'Juan Hernández Sánchez'
};
openpay.customers.bankaccounts.create('a9pvykxz4g5rg0fplze0', bankaccountRequest, function(error, bankaccount) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@bank_accounts=@openpay.create(:bankaccounts)
request_hash={
"holder_name" => "Juan Hernández Sánchez",
"alias" => "Cuenta principal",
"clabe" => "032XXXXXXXXXX59719"
}
response_hash=@bank_accounts.create(request_hash.to_hash, "asynwirguzkgq2bizogo")
Ejemplo de respuesta
{
"id":"buyj4apkwilpp2jfxr9r",
"clabe":"032XXXXXXXXXX59719",
"bank_code":"032",
"bank_name":"IXE",
"alias":"Cuenta principal",
"holder_name":"Juan Hernández Sánchez",
"creation_date":"2014-05-22T11:02:10-05:00"
}
Crea y asigna una cuenta bancaria al cliente espeficado.
Petición
Propiedad | Descripción |
---|---|
holder_name | string (requerido, longitud = 80) Nombre completo del titular. |
alias | string (opcional, longitud = 45) Nombre por el cual el se identifica a la cuenta bancaria. |
clabe | string (requerido, longitud = 45) Número CLABE asignado a la cuenta bancaria. |
Respuesta
Regresa un objeto cuenta bancaria creado o un error en caso de ocurrir algún problema.
Obtener una cuenta bancaria
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/bankaccounts/{BANK_ACCOUNT_ID}
<?
$customer = $openpay->customers->get(customerId);
$bankaccount = $customer->bankaccounts->get(bankAccountId);
?>
//Cliente
openpayAPI.bankAccounts().get(String customerId, String bankAccountId);
//Cliente
openpayAPI.BankAccountService.Get(string customer_id, string bank_account_id);
openpay.customers.bankaccounts.get(customerId, bankaccountId, callback);
#Cliente
@bank_accounts=@openpay.create(:bankaccounts)
@bank_accounts.get(customer_id, bankaccount_id)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/bankaccounts/buyj4apkwilpp2jfxr9r \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$bankaccount = $customer->bankaccounts->get('b4vcouaavwuvkpufh0so');
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
BankAccount bankAccount = api.bankAccounts().get("a9pvykxz4g5rg0fplze0", "buyj4apkwilpp2jfxr9r");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
BankAccount bankAccount = api.BankAccountService.Get("a9pvykxz4g5rg0fplze0", "buyj4apkwilpp2jfxr9r");
openpay.customers.bankaccounts.get('a9pvykxz4g5rg0fplze0', 'buyj4apkwilpp2jfxr9r', function(error, bankaccount){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@bank_accounts=@openpay.create(:bankaccounts)
response_hash=@bank_accounts.get("asynwirguzkgq2bizogo", "buyj4apkwilpp2jfxr9r")
Ejemplo de respuesta
{
"id":"buyj4apkwilpp2jfxr9r",
"clabe":"032XXXXXXXXXX59719",
"bank_code":"032",
"bank_name":"IXE",
"alias":"Cuenta principal",
"holder_name":"Juan Hernández Sánchez",
"creation_date":"2014-05-22T11:02:10-05:00"
}
Obtiene los detalles de una cuenta bancaria asignada a un cliente.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador único de la cuenta bancaria |
Respuesta
Regresa un objeto cuenta bancaria
Eliminar una cuenta bancaria
Definición
DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/bankaccounts/{BANK_ACCOUNT_ID}
<?
$customer = $openpay->customers->get(customerId);
$bankaccount = $customer->bankaccounts->get(bankAccountId);
$bankaccount->delete();
?>
//Cliente
openpayAPI.bankAccounts().delete(String customerId, String bankAccountId);
//Cliente
openpayAPI.BankAccountService.Delete(string customer_id, string bank_account_id);
openpay.customers.bankaccounts.delete(customerId,bankaccountId, callback);
#Cliente
@bank_accounts=@openpay.create(:bankaccounts)
@bank_accounts.delete(customer_id, bankaccount_id)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/bankaccounts/buyj4apkwilpp2jfxr9r \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-X DELETE
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$bankaccount = $customer->bankaccounts->get('b4vcouaavwuvkpufh0so');
$bankaccount->delete();
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.bankAccounts().delete("a9pvykxz4g5rg0fplze0", "buyj4apkwilpp2jfxr9r");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.BankAccountService.Delete("a9pvykxz4g5rg0fplze0", "buyj4apkwilpp2jfxr9r");
openpay.customers.bankaccounts.delete('a9pvykxz4g5rg0fplze0','buyj4apkwilpp2jfxr9r', function(error){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@bank_accounts=@openpay.create(:bankaccounts)
response_hash=@bank_accounts.delete("asynwirguzkgq2bizogo", "buyj4apkwilpp2jfxr9r")
Elimina la cuenta bancaria asociada al cliente. Las transacciones que se encuentran asociadas a esta cuenta no sufren cambios y se podrán seguir consultando.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador único de la cuenta bancaria. |
Respuesta
Si la cuenta bancaria se borra correctamente la respuesta es vacía, si no se puede borrar se regresa un objeto error indicando el motivo.
Listado de cuentas bancarias
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/bankaccounts
<?
$customer = $openpay->customers->get(customerId);
$bankaccountList = $customer->bankaccounts->getList(findDataRequest);
?>
//Cliente
openpayAPI.bankAccounts().list(String customerId, SearchParams request);
//Cliente
openpayAPI.BankAccountService.List(string customer_id, SearchParams request = null);
openpay.customers.bankaccounts.list(customerId, callback);
openpay.customers.bankaccounts.list(customerId, searchParams, callback);
#Cliente
@bank_accounts=@openpay.create(:bankaccounts)
@bank_accounts.all(customer_id)
Ejemplo de petición con cliente
curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/bankaccounts?limit=2" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$findDataRequest = array(
'creation[gte]' => '2013-01-01',
'creation[lte]' => '2013-12-31',
'offset' => 0,
'limit' => 5);
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$bankaccountList = $customer->bankaccounts->getList($findDataRequest);
?>
final Calendar dateGte = Calendar.getInstance();
final Calendar dateLte = Calendar.getInstance();
dateGte.set(2014, 5, 1, 0, 0, 0);
dateLte.set(2014, 5, 15, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.creationGte(dateGte.getTime());
request.creationLte(dateLte.getTime());
request.offset(0);
request.limit(100);
List<BankAccount> bankAccounts = api.bankAccounts().list("a9pvykxz4g5rg0fplze0", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.CreationGte = new Datetime(2014, 5, 1);
request.CreationLte = new DateTime(2014, 5, 15);
request.Offset = 0;
request.Limit = 100;
List<BankAccount> banckAccounts = api.BankAccountService.List("a9pvykxz4g5rg0fplze0", request);
var searchParams = {
'limit' : 2
};
openpay.customers.bankaccounts.list('ag4nktpdzebjiye1tlze', searchParams, function(error, list){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@bank_accounts=@openpay.create(:bankaccounts)
response_hash=@bank_accounts.all("asynwirguzkgq2bizogo")
Ejemplo de respuesta
[{
"id":"brppwl9nwmruogk2do0j",
"clabe":"032180000118359719",
"bank_code":"032",
"bank_name":"IXE",
"alias":null,
"holder_name":"Juan Hernández Sánchez",
"creation_date":"2013-11-14T12:29:18-06:00"
},
{
"id":"bb0zt72rxoyiwz9jzzai",
"clabe":"012680012426485980",
"bank_code":"012",
"bank_name":"BANCOMER",
"alias":null,
"holder_name":"Juan Hernández Sánchez",
"creation_date":"2013-11-14T18:07:45-06:00"
}]
Regresa los detalles de todas las cuentas bancarias del cliente especificado en la petición.
Petición
Puede realizar una búsqueda utilizando los siguiente parámetros como filtros.
Propiedad | Descripción |
---|---|
creation | date Igual a la fecha de creación. Formato yyyy-mm-dd |
creation[gte] | date Mayor a la fecha de creación. Formato yyyy-mm-dd |
creation[lte] | date Menor a la fecha de creación. Formato yyyy-mm-dd |
offset | numeric Número de registros a omitir al inicio, por defecto 0. |
limit | numeric Número de registros que se requieren, por defecto 10. |
Respuesta
Listado de objetos cuenta bancaria registrados de acuerdo a los parámetros proporcionados, ordenadas por fecha de creación en orden descendente.
Planes
Los planes son recursos en Openpay que permiten crear plantillas para las suscripciones. Con ellos podrás definir la cantidad y frecuencia con la que se realizarán los cargos recurrentes.
Objeto Plan
Ejemplo de objeto
{
"name": "Curso de ingles",
"status": "active",
"amount": 150,
"currency": "MXN",
"id": "patpflacwilazguj6bem",
"creation_date": "2013-12-13T09:43:52-06:00",
"repeat_every": 1,
"repeat_unit": "month",
"retry_times": 2,
"status_after_retry": "cancelled",
"trial_days": 30
}
Propiedad | Descripción |
---|---|
id | string Identificador único del Plan. |
creation_date | datetime Fecha y hora en que se creó el Plan en formato ISO 8601 |
name | string Nombre del Plan. |
amount | numeric Monto que se aplicará cada vez que se cobre la suscripción. Debe ser una cantidad mayor a cero, con hasta 2 dígitos decimales. |
currency | string Moneda usada en la operación, por default es MXN |
repeat_every | numeric Número de unidades tiempo entre los que se cobrará la suscripción. Por ejemplo, repeat_unit=month y repeat_every=2 indica que se cobrará cada 2 meses. |
repeat_unit | string Especifica la frecuencia de cobro. Puede ser semanal(week), mensual(month) o anual(year). |
retry_times | numeric Número de reintentos de cobro de la suscripción. Cuando se agotan los intentos se pone en el estatus determinado por el campo status_after_retry. |
status | string Estatus del Plan puede ser active o deleted. Si el plan se encuentra en estado deleted no se permite registrar nuevas suscripciones, pero las que ya están registradas, se siguen cobrando. |
status_after_retry | string Este campo especifica el status en el que se pondrá la suscripción una vez que se agotaron los intentos. Puede ser: unpaid o cancelled |
trial_days | numeric Número de días de prueba por defecto que tendrá la suscripción. |
Crear un nuevo plan
Definición
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/plans
<?
$plan = $openpay->plans->add(planDataRequest);
?>
openpayAPI.plans().create(Plan request);
openpayAPI.PlanService.Create(Plan plan);
openpay.plans.create(planRequest, callback);
#Cliente
@plans=@openpay.create(:plans)
@plans.create(request_hash)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/plans \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"amount": 150.00,
"status_after_retry": "cancelled",
"retry_times": 2,
"name": "Curso de ingles",
"repeat_unit": "month",
"trial_days": "30",
"repeat_every": "1"
}'
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$planDataRequest = array(
'amount' => 150.00,
'status_after_retry' => 'cancelled',
'retry_times' => 2,
'name' => 'Plan Curso Verano',
'repeat_unit' => 'month',
'trial_days' => '30',
'repeat_every' => '1',
'currency' => 'MXN');
$plan = $openpay->plans->add($planDataRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Plan request = new Plan();
request.name("Curso de ingles");
request.amount(new BigDecimal("100.00"));
request.repeatEvery(1, PlanRepeatUnit.WEEK);
request.retryTimes(3);
request.statusAfterRetry(PlanStatusAfterRetry.UNPAID);
request.trialDays(30);
request = api.plans().create(request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Plan request = new Plan();
request.Name = "Curso de ingles";
request.Amount = new Decimal(100.00);
request.RepeatEvery = 1;
request.RepeatUnit = "week";
request.RetryTimes = 2;
request.StatusAfterRetry = "unpaid";
request.TrialDays = 30;
request = api.PlanService.Create(request);
var planRequest = {
'amount': 150.00,
'status_after_retry': 'cancelled',
'retry_times': 2,
'name': 'Curso de ingles',
'repeat_unit': 'month',
'trial_days': '30',
'repeat_every': '1'
};
openpay.plans.create(planRequest, function(error, plan){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@plans=@openpay.create(:plans)
request_hash={
"name" => "Curso de ingles",
"amount" => 150.00,
"repeat_every" => "1",
"repeat_unit" => "month",
"retry_times" => 2,
"status_after_retry" => "cancelled",
"trial_days" => "30"
}
response_hash=@plans.create(request_hash.to_hash)
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de ingles",
"status":"active",
"amount":150.00,
"currency":"MXN",
"creation_date":"2014-05-22T12:29:31-05:00",
"repeat_every":1,
"repeat_unit":"month",
"retry_times":2,
"status_after_retry":"cancelled",
"trial_days":30
}
Crea un nuevo plan al se podrán suscribir uno o varios clientes.
Petición
Propiedad | Descripción |
---|---|
name | string (requerido, longitud = 255) Nombre del Plan. |
amount | numeric (requerido) Monto que se aplicará cada vez que se cobre la suscripción. Debe ser una cantidad mayor a cero, con hasta 2 dígitos decimales. |
repeat_every | numeric (requerido) Número de unidades tiempo entre los que se cobrara la suscripción. Por ejemplo, repeat_unit=month y repeat_every=2 indica que se cobrara cada 2 meses. |
repeat_unit | numeric (requerido) Especifica la frecuencia de cobro. Puede ser semanal(week), mensual(month) o anual(year). |
retry_times | numeric (opcional) Número de reintentos de cobro de la suscripción. Cuando se agotan los intentos se pone en el estado determinado por el campo status_after_retry. |
status_after_retry | string (requerido, valores = “UNPAID/CANCELLED”) Este campo especifica el status en el que se pondrá la suscripción una vez que se agotaron los intentos. Puede ser: unpaid o cancelled |
trial_days | numeric (requerido) Número de días de prueba por defecto que tendrán las suscripciones que se creen a partir del plan creado. |
Respuesta
Regresa un objeto plan creado o un error en caso de ocurrir algún problema.
Actualizar un plan existente
Definición
PUT https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/plans/{PLAN_ID}
<?
$plan = $openpay->plans->get(planId);
$plan->save();
?>
openpayAPI.plans().update(Plan request);
openpayAPI.PlanService.Update(Plan plan);
openpay.plans.update(planId, planRequest, callback);
#Cliente
@plans=@openpay.create(:plans)
@plans.update(request_hash, plan_id)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/plans/p8e6x3hafqqsbmnoevrt \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X PUT -d '{
"name": "Curso de aleman",
"trial_days": "60"
}'
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$plan = $openpay->plans->get('pduar9iitv4enjftuwyl');
$plan->name = 'Plan Curso de Verano 2014';
$plan->save();
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Plan request = new Plan();
request.setId("p8e6x3hafqqsbmnoevrt");
request.name("Curso de ingles");
request.trialDays(30);
request = api.plans().update(request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Plan request = new Plan();
request.Id = "p8e6x3hafqqsbmnoevrt";
request.Name = "Curso de ingles";
request.TrialDays = 30;
request = api.PlanService.Update(request);
var planRequest = {
'name': 'Curso de aleman',
'trial_days': 60
};
openpay.plans.update(planId, planRequest, function(error, plan){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@plans=@openpay.create(:plans)
request_hash={
"name" => "Curso de ingles",
"trial_days" => "30"
}
response_hash=@plans.update(request_hash.to_hash, "p8e6x3hafqqsbmnoevrt")
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de aleman",
"status":"active",
"amount":150.00,
"currency":"MXN",
"creation_date":"2014-05-22T12:29:31-05:00",
"repeat_every":1,
"repeat_unit":"month",
"retry_times":2,
"status_after_retry":"cancelled",
"trial_days":60
}
Actualiza la información de un plan. Se requiere tener el id del plan y solo se puede actualizar cierta información.
Petición
Propiedad | Descripción |
---|---|
name | string (opcional, longitud = 80) Nombre del Plan. |
trial_days | numeric (opcional) Número de días de prueba por defecto que tendrán las suscripciones que se creen a partir del plan creado. |
Respuesta
Regresa un objeto plan con la información actualizada o una respuesta de error si ocurrió algún problema en la actualización.
Obtener un plan
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/plans/{PLAN_ID}
<?
$plan = $openpay->plans->get(planId);
?>
openpayAPI.plans().get(String planId);
openpayAPI.PlanService.Get(string plan_id);
openpay.plans.get(planId, callback);
#Cliente
@plans=@openpay.create(:plans)
@plans.get(plan_id)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/plans/p8e6x3hafqqsbmnoevrt \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$plan = $openpay->plans->get('pduar9iitv4enjftuwyl');
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Plan plan = api.plans().get("p8e6x3hafqqsbmnoevrt");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Plan plan = api.PlanService.Get("p8e6x3hafqqsbmnoevrt");
openpay.plans.get('p8e6x3hafqqsbmnoevrt', function(error, plan){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@plans=@openpay.create(:plans)
response_hash=@plans.get("p8e6x3hafqqsbmnoevrt")
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de aleman",
"status":"active",
"amount":150.00,
"currency":"MXN",
"creation_date":"2014-05-22T12:29:31-05:00",
"repeat_every":1,
"repeat_unit":"month",
"retry_times":2,
"status_after_retry":"cancelled",
"trial_days":60
}
Obtiene los detalles de un plan.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador del plan. |
Respuesta
Regresa un objeto plan
Eliminar un plan
Definición
DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/plans/{PLAN_ID}
<?
$customer = $openpay->customers->get(customerId);
$plan = $openpay->plans->get(planId);
$plan->delete();
?>
openpayAPI.plans().delete(String planId);
openpayAPI.PlanService.Delete(string plan_id);
openpay.plans.delete(planId, callback);
#Cliente
@plans=@openpay.create(:plans)
@plans.delete(plan_id)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/plans/p8e6x3hafqqsbmnoevrt \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-X DELETE
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$plan = $openpay->plans->get('pduar9iitv4enjftuwyl');
$plan->delete();
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.plans().delete("p8e6x3hafqqsbmnoevrt");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.PlanService.Delete("p8e6x3hafqqsbmnoevrt");
openpay.plans.delete('p8e6x3hafqqsbmnoevrt', function(error){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@plans=@openpay.create(:plans)
response_hash=@plans.delete("p8e6x3hafqqsbmnoevrt")
Al eliminar un plan no se permitirán crear mas suscripciones asociadas a él, sin embargo las suscripciones ya asociadas se mantienen y se continuan cobrando.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador del plan a eliminar |
Respuesta
Si el plan se borra correctamente la respuesta es vacía, si no se puede borrar se regresa un objeto error indicando el motivo.
Listado de planes
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/plans
<?
$planList = $openpay->plans->getList(findDataRequest);
?>
openpayAPI.plans().list(SearchParams request);
openpayAPI.PlanService.List(SearchParams request = null);
openpay.plans.list(callback);
openpay.plans.list(searchParams, callback);
#Cliente
@plans=@openpay.create(:plans)
@plans.all
Ejemplo de petición
curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/plans?limit=10" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$findDataRequest = array(
'creation[gte]' => '2013-01-01',
'creation[lte]' => '2013-12-31',
'offset' => 0,
'limit' => 5);
$planList = $openpay->plans->getList($findDataRequest);
?>
final Calendar dateGte = Calendar.getInstance();
final Calendar dateLte = Calendar.getInstance();
dateGte.set(2014, 5, 1, 0, 0, 0);
dateLte.set(2014, 5, 15, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.creationGte(dateGte.getTime());
request.creationLte(dateLte.getTime());
request.offset(0);
request.limit(100);
List<Plan> plans = api.plans().list(request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.CreationGte = new Datetime(2014, 5, 1);
request.CreationLte = new DateTime(2014, 5, 15);
request.Offset = 0;
request.Limit = 100;
List<Plan> plans = api.PlanService.List(request);
var searchParams = {
'limit' : 10
};
openpay.plans.list(searchParams, function(error, list){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@plans=@openpay.create(:plans)
response_hash=@plans.all
Ejemplo de respuesta
[
{
"name": "Curso de aleman",
"status": "active",
"amount": 150,
"currency": "MXN",
"id": "patpflacwilazguj6bem",
"creation_date": "2013-12-13T09:43:52-06:00",
"repeat_every": 1,
"repeat_unit": "month",
"retry_times": 2,
"status_after_retry": "cancelled",
"trial_days": 60
},
{
"name": "Curso de ingles",
"status": "active",
"amount": 150,
"currency": "MXN",
"id": "pjl7wfryrrd1tznr0fnl",
"creation_date": "2013-12-13T11:36:40-06:00",
"repeat_every": 1,
"repeat_unit": "month",
"retry_times": 2,
"status_after_retry": "cancelled",
"trial_days": 30
}
]
Regresa los detalles de todos los planes que están activos.
Petición
Se pueden realizar búsquedas utilizando los siguiente parámetros.
Propiedad | Descripción |
---|---|
creation | date Igual a la fecha de creación. Formato yyyy-mm-dd |
creation[gte] | date Mayor a la fecha de creación. Formato yyyy-mm-dd |
creation[lte] | date Menor a la fecha de creación. Formato yyyy-mm-dd |
offset | numeric Número de registros a omitir al inicio, por defecto 0. |
limit | numeric Número de registros que se requieren, por defecto 10. |
Respuesta
Listado de objetos plan registrados de acuerdo a los parámetros proporcionados, ordenadas por fecha de creación en orden descendente.
Suscripciones
Las suscripciones permiten asociar un cliente y una tarjeta para que se puedan realizar cargos recurrentes.
Para poder suscribir algún cliente es necesario primero crear un plan.
Objeto Suscripción
Ejemplo de objeto
{
"status": "trial",
"card": {
"type": "debit",
"brand": "mastercard",
"card_number": "1111",
"holder_name": "Juan Perez Ramirez",
"expiration_year": "20",
"expiration_month": "12",
"allows_charges": true,
"allows_payouts": false,
"creation_date": "2013-12-13T12:39:46-06:00",
"bank_name": "DESCONOCIDO",
"customer_id": null,
"bank_code": "000"
},
"id": "svxdm1suclzipbi4pavm",
"cancel_at_period_end": false,
"charge_date": "2014-01-12",
"creation_date": "2013-12-13T12:39:46-06:00",
"current_period_number": 0,
"period_end_date": "2014-01-11",
"trial_end_date": "2014-01-11",
"plan_id": "pjl7wfryrrd1tznr0fnl",
"customer_id": "a2b79p8xmzeyvmolqfja"
}
Propiedad | Descripción |
---|---|
id | string Identificador único del Plan. |
creation_date | datetime Fecha y hora en que se creó la suscripción en formato ISO 8601 |
cancel_at_period_end | string Indica si se cancela la suscripción al terminar el periodo. |
charge_date | numeric Fecha en la que se cobrar la suscripción. |
current_period_number | string Indica el periodo actual a cobrar. |
period_end_date | numeric Fecha en la que se termina el periodo actual, un día antes del siguiente cobro. |
trial_end_date | string Fecha en la que termina el periodo de prueba. Un día después de esta fecha, se realiza el primer cargo. |
plan_id | numeric Identificador del plan sobre el que se crea la suscripción. |
status | string Estado de la suscripción puede ser “active”, “trial”, “past_due”, “unpaid”, o “cancelled”. Si la suscripción tiene periodo de prueba, se pone en status “trial”, si no tiene periodo de prueba, o cuando termino el periodo de prueba y se logro efectuar el primer pago, se pone en “active”, cuando el cobro no logro efectuarse, se coloca en “past_due”, y cuando se agotan los intentos de cobro, se coloca de acuerdo a la configuración del plan, en “unpaid” o en “cancelled”. Cuando se coloca en “unpaid”, y se quiere reactivar la suscripción, es necesario actualizar el medio de pago (tarjeta) de la suscripción. En cualquier otro caso, el status se establece como “cancelled”. |
customer_id | string Identificador del customer al que pertenece la suscripción. |
card | object Medio de pago con el cual se cobrará la suscripción. Ver objeto tarjeta |
Crear una nueva suscripción
Definición
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions
<?
$customer = $openpay->customers->get(customerId);
$subscription = $customer->subscriptions->add(subscriptionDataRequest);
?>
openpayAPI.subscriptions().create(String customerId, Subscription request);
openpayAPI.SubscriptionService.Create(string customer_id, Subscription request);
openpay.customers.subscriptions.create(customerId, subscriptionRequest, callback);
#Cliente
@subscriptions=@openpay.create(:subscriptions)
@subscriptions.create(request_hash, customer_id)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/subscriptions \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"card":{
"card_number":"4111111111111111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"cvv2":"110",
"device_session_id":"kR1MiQhz2otdIuUlQkbEyitIqVMiI16f"
},
"plan_id":"pbi4kb8hpb64x0uud2eb"
}'
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$subscriptionDataRequest = array(
'trial_end_date' => '2014-01-01',
'plan_id' => 'pbi4kb8hpb64x0uud2eb',
'card' => array(
'card_number' => '4111111111111111',
'holder_name' => 'Juan Perez Ramirez',
'expiration_year' => '20',
'expiration_month' => '12',
'cvv2' => '110',
'device_session_id' => 'kR1MiQhz2otdIuUlQkbEyitIqVMiI16f'));
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$subscription = $customer->subscriptions->add($subscriptionDataRequest);
?>
final Calendar trialEndDate = Calendar.getInstance();
trialEndDate.set(2014, 5, 1, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Subscription request = new Subscription();
request.planId("pbi4kb8hpb64x0uud2eb");
request.trialEndDate(trialEndDate.getTime());
Card card = new Card();
card.cardNumber("4111111111111111");
card.holderName("Juan Perez Ramirez");
card.cvv2("110");
card.expirationMonth(12);
card.expirationYear(20);
card.deviceSessionId("kR1MiQhz2otdIuUlQkbEyitIqVMiI16f");
request.card(card);
request = api.subscriptions().create("a9pvykxz4g5rg0fplze0", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Subscription request = new Subscription();
request.PlanId = "idPlan-01001";
request.TrialEndDate = new Datetime(2014, 5, 1);
Card card = new Card();
card.HolderName = "Juan Perez Ramirez";
card.CardNumber = "4111111111111111";
card.Cvv2 = "110";
card.ExpirationMonth = "12";
card.ExpirationYear = "20";
card.DeviceSessionId = "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f";
request.Card = card;
request = api.SubscriptionService.Create("a9pvykxz4g5rg0fplze0", request);
var subscriptionRequest = {
'card':{
'card_number':'4111111111111111',
'holder_name':'Juan Perez Ramirez',
'expiration_year':'20',
'expiration_month':'12',
'cvv2':'110',
'device_session_id':'kR1MiQhz2otdIuUlQkbEyitIqVMiI16f'
},
'plan_id':'pbi4kb8hpb64x0uud2eb'
};
openpay.customers.subscriptions.create(customerId, subscriptionRequest, function(error, subscription){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@subscriptions=@openpay.create(:subscriptions)
card_hash={
"holder_name" => "Juan Perez Ramirez",
"card_number" => "4111111111111111",
"cvv2" => "110",
"expiration_month" => "12",
"expiration_year" => "20",
"device_session_id" => "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f"
}
request_hash={
"plan_id" => "pbi4kb8hpb64x0uud2eb",
"trial_end_date" => "2014-06-20",
"card" => card_hash
}
response_hash=@subscriptions.create(request_hash.to_hash, "a9pvykxz4g5rg0fplze0")
Ejemplo de respuesta
{
"id":"s0gmyor4yqtyv1miqwr0",
"status":"trial",
"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"
},
"cancel_at_period_end":false,
"charge_date":"2014-06-21",
"creation_date":"2014-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2014-06-20",
"trial_end_date":"2014-06-20",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Crea una suscripción para un cliente existente. Se puede ocupar una tarjeta previamente creada o se pueden enviar los datos de la tarjeta en donde se realizarán los cargos, estos últimos pueden incluir la propiedad device_session_id
para usar la herramienta antifraudes, véase Fraud detection using device data.
Petición
Propiedad | Descripción |
---|---|
plan_id | string (requerido, longitud = 45) Identificador del plan sobre el que se crea la suscripción. |
trial_end_date | string (opcional, longitud = 10) Último día de prueba del cliente. Si no se indica se utilizará el valor de trial_days del plan para calcularlo. Si se indica una fecha anterior al día de hoy, se interpretará como una suscripción sin días de prueba. (Con formato yyy-mm-dd) |
source_id | string (requerido si no se envía card, longitud = 45) Identificador del token o la tarjeta previamente registrada al cliente con la que se cobrará la suscripción. |
card | object (requerido si no se envía source_id) Medio de pago con el cual se cobrará la suscripción. Ver objeto tarjeta |
Respuesta
Regresa el objeto suscripción creado o una respuesta de error si ocurrió algún problema en la creación.
Actualizar una suscripción
Definición
PUT https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions
<?
$customer = $openpay->customers->get(customerId);
$subscription = $customer->subscriptions->get(subscriptionId);
$subscription->save();
?>
openpayAPI.subscriptions().update(Subscription request);
openpayAPI.SubscriptionService.Update(string customer_id, Subscription subscription);
openpay.customers.subscriptions.update(customerId, subscriptionId, subscriptionRequest, callback);
#Cliente
@subscriptions=@openpay.create(:subscriptions)
@subscriptions.update(request_hash, customer_id)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/subscriptions/s0gmyor4yqtyv1miqwr0 \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X PUT -d '{
"trial_end_date": "2016-01-11",
"card": {
"card_number": "343434343434343",
"holder_name": "Juan Perez Ramirez",
"expiration_year": "20",
"expiration_month": "12",
"cvv2":"1234"
}
}'
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$subscription = $customer->subscriptions->get('s7ri24srbldoqqlfo4vp');
$subscription->trial_end_date = '2014-12-31';
$subscription->save();
?>
final Calendar trialEndDate = Calendar.getInstance();
trialEndDate.set(2014, 5, 1, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Subscription request = new Subscription();
request.planId("idPlan-01001");
request.trialEndDate(trialEndDate.getTime());
request.sourceId("ktrpvymgatocelsciak7");
request = api.subscriptions().update(request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Subscription request = new Subscription();
request.PlanId = "idPlan-01001";
request.TrialEndDate = new Datetime(2014, 5, 1);;
request.CardId = "ktrpvymgatocelsciak7";
request = api.SubscriptionService.Update("a9pvykxz4g5rg0fplze0", request);
var subscriptionRequest = {
'trial_end_date': '2016-01-11',
'card': {
'card_number': '343434343434343',
'holder_name': 'Juan Perez Ramirez',
'expiration_year': '20',
'expiration_month': '12',
'cvv2':'1234'
}
};
openpay.customers.subscriptions.update('ag4nktpdzebjiye1tlze', 's0gmyor4yqtyv1miqwr0', subscriptionRequest,
function(error, subscription){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@subscriptions=@openpay.create(:subscriptions)
request_hash={
"plan_id" => "pbi4kb8hpb64x0uud2eb",
"cancel_at_period_end" => true,
"trial_end_date" => "2014-06-20",
"source_id" => "ktrpvymgatocelsciak7"
}
response_hash=@subscriptions.update(request_hash.to_hash, "pbi4kb8hpb64x0uud2eb")
Ejemplo de respuesta
{
"id":"s0gmyor4yqtyv1miqwr0",
"status":"trial",
"card":{
"type":"credit",
"brand":"american_express",
"address":null,
"card_number":"343434XXXXX4343",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"allows_payouts":false,
"bank_name":"AMERICAN EXPRESS",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2016-01-12",
"creation_date":"2014-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2016-01-11",
"trial_end_date":"2016-01-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Actualiza la información de una suscripción activa.
Petición
Propiedad | Descripción |
---|---|
cancel_at_period_end | booelan (opcional) Indica si se cancela la suscripción al terminar el periodo. |
trial_end_date | string (opcional, longitud = 10) Último día de prueba del cliente. Si no se indica se utilizará el valor de trial_days del plan para calcularlo. Si se indica una fecha anterior al día de hoy, se interpretará como una suscripción sin días de prueba. (Con formato yyy-mm-dd) |
source_id | string (opcional, longitud = 45) Identificador del token o la tarjeta previamente registrada al cliente con la que se cobrará la suscripción. |
card | object (opcional) Medio de pago con el cual se cobrará la suscripción. Ver objeto tarjeta |
Respuesta
Regresa el objeto suscripción actualizado o una respuesta de error si ocurrió algún problema en la actualización.
Obtener un suscripción
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions/{SUBSCRIPTION_ID}
<?
$customer = $openpay->customers->get(customerId);
$subscription = $customer->subscriptions->get(subscriptionId);
?>
openpayAPI.subscriptions().get(String customerId, String customerId);
openpayAPI.SubscriptionService.Get(string customer_id, string subscription_id);
openpay.customers.subscriptions.get(customerId, subscriptionId, callback);
#Cliente
@subscriptions=@openpay.create(:subscriptions)
@subscriptions.get(subscription_id,customer_id)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/subscriptions/s0gmyor4yqtyv1miqwr0 \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$subscription = $customer->subscriptions->get('s7ri24srbldoqqlfo4vp');
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Subscription subscription = api.subscriptions().get("a9pvykxz4g5rg0fplze0", "s0gmyor4yqtyv1miqwr0");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Subscription subscription = api.SubscriptionService.Get("a9pvykxz4g5rg0fplze0", "s0gmyor4yqtyv1miqwr0");
openpay.customers.subscriptions.get('ag4nktpdzebjiye1tlze', 's0gmyor4yqtyv1miqwr0', function(error, subscription){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@subscriptions=@openpay.create(:subscriptions)
response_hash=@subscriptions.get("s0gmyor4yqtyv1miqwr0", "pbi4kb8hpb64x0uud2eb")
Ejemplo de respuesta
{
"id":"s0gmyor4yqtyv1miqwr0",
"status":"trial",
"card":{
"type":"credit",
"brand":"american_express",
"address":null,
"card_number":"343434XXXXX4343",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"allows_payouts":false,
"bank_name":"AMERICAN EXPRESS",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2016-01-12",
"creation_date":"2014-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2016-01-11",
"trial_end_date":"2016-01-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Obtiene los detalles de la suscripción de un cliente.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador de la suscripción |
Respuesta
Regresa un objeto suscripción
Cancelar suscripción
Definición
DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions/{SUBSCRIPTION_ID}
<?
$customer = $openpay->customers->get(customerId);
$subscription = $customer->subscriptions->get(subscriptionId);
$subscription->delete();
?>
openpayAPI.subscriptions().delete(String customerId, String subscriptionId);
openpayAPI.SubscriptionService.Delete(string customer_id, string subscription_id);
openpay.customers.subscriptions.delete(customerId, subscriptionId, callback);
#Cliente
@subscriptions=@openpay.create(:subscriptions)
@subscriptions.delete(subscription_id, customer_id)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/subscriptions/s0gmyor4yqtyv1miqwr0 \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-X DELETE
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$subscription = $customer->subscriptions->get('s7ri24srbldoqqlfo4vp');
$subscription->delete();
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.subscriptions().delete("a9pvykxz4g5rg0fplze0", "s0gmyor4yqtyv1miqwr0");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.SubscriptionService.Delete("a9pvykxz4g5rg0fplze0", "s0gmyor4yqtyv1miqwr0");
openpay.customers.subscriptions.delete('ag4nktpdzebjiye1tlze', 's0gmyor4yqtyv1miqwr0', function(error){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@subscriptions=@openpay.create(:subscriptions)
@subscriptions.detele("s0gmyor4yqtyv1miqwr0", "pbi4kb8hpb64x0uud2eb")
Cancela inmediatamente la suscrípción del cliente. Ya no se realizarán más cargos a la tarjeta y todos los cargos pendientes se cancelarán.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador del plan a eliminar |
Respuesta
Si la suscripción se cancelo correctamente la respuesta es vacía, si no se regresa un objeto error indicando el motivo.
Listado de suscripciones
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions
<?
$customer = $openpay->customers->get(customerId);
$subscriptionList = $customer->subscriptions->getList(findDataRequest);
?>
openpayAPI.subscriptions().list(String customerId, SearchParams request);
openpayAPI.SubscriptionService.List(string customer_id, SearchParams request = null);
openpay.customers.subscriptions.list(customerId, callback);
openpay.customers.subscriptions.list(customerId, searchParams, callback);
#Cliente
@subscriptions=@openpay.create(:subscriptions)
@subscriptions.all(customer_id)
Ejemplo de petición
curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/subscriptions?limit=10" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$findData = array(
'creation[gte]' => '2013-01-01',
'creation[lte]' => '2013-12-31',
'offset' => 0,
'limit' => 5);
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$subscriptionList = $customer->subscriptions->getList($findData);
?>
final Calendar dateGte = Calendar.getInstance();
final Calendar dateLte = Calendar.getInstance();
dateGte.set(2014, 5, 1, 0, 0, 0);
dateLte.set(2014, 5, 15, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.creationGte(dateGte.getTime());
request.creationLte(dateLte.getTime());
request.offset(0);
request.limit(100);
List<Subscription> subscriptions = api.subscriptions().list("a9pvykxz4g5rg0fplze0", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.CreationGte = new Datetime(2014, 5, 1);
request.CreationLte = new DateTime(2014, 5, 15);
request.Offset = 0;
request.Limit = 100;
List<Subscription> subscriptions = api.SubscriptionService.List("a9pvykxz4g5rg0fplze0", request);
var searchParams = {
'limit' : 2
};
openpay.customers.subscriptions.list('ag4nktpdzebjiye1tlze', searchParams, function(error, list){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@subscriptions=@openpay.create(:subscriptions)
@subscriptions.all("pbi4kb8hpb64x0uud2eb")
Ejemplo de respuesta
[
{
"id":"s0gmyor4yqtyv1miqwr0",
"status":"trial",
"card":{
"type":"credit",
"brand":"american_express",
"address":null,
"card_number":"343434XXXXX4343",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"allows_payouts":false,
"bank_name":"AMERICAN EXPRESS",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2016-01-12",
"creation_date":"2014-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2016-01-11",
"trial_end_date":"2016-01-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
]
Regresa los detalles de todas las suscripciones activas para un cliente en específico.
Petición
Se pueden realizar búsquedas utilizando los siguiente parámetros.
Propiedad | Descripción |
---|---|
creation | date Igual a la fecha de creación. Formato yyyy-mm-dd |
creation[gte] | date Mayor a la fecha de creación. Formato yyyy-mm-dd |
creation[lte] | date Menor a la fecha de creación. Formato yyyy-mm-dd |
offset | numeric Número de registros a omitir al inicio, por defecto 0. |
limit | numeric Número de registros que se requieren, por defecto 10. |
Respuesta
Listado de objetos suscripción que tiene el cliente. Ordenados por fecha de creación en orden descendente.
Comisiones
Si las cuentas de los clientes fueron creadas para que manejarán su propio saldo, se puede realizar el cobro de una comisión el cual se verá reflejado en la cuenta del comercio.
Cobrar Comisión
Definición
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/fees
<?
$fee = $openpay->fees->create(feeDataRequest);
?>
openpayAPI.fees().create(CreateFeeParams request);
openpayAPI.FeeService.Create(FeeRequest request);
openpay.fees.create(feeRequest, callback);
#Cliente
@fees=@openpay.create(:fees)
@fees.create(request_hash)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/fees \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"customer_id" : "dvocf97jd20es3tw5laz",
"amount" : 12.50,
"description" : "Cobro de Comisión",
"order_id" : "oid-1245"
}'
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$feeDataRequest = array(
'customer_id' => 'a9ualumwnrcxkl42l6mh',
'amount' => 12.50,
'description' => 'Cobro de Comisión',
'order_id' => 'ORDEN-00063');
$fee = $openpay->fees->create($feeDataRequest);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
CreateFeeParams request = new CreateFeeParams();
request.customerId("a9pvykxz4g5rg0fplze0");
request.amount(new BigDecimal("100.00"));
request.description("Cobro de comisión");
request.orderId("oid-1245");
Fee fee = api.fees().create(request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
FeeRequest request = new FeeRequest();
request.CustomerId = "a9pvykxz4g5rg0fplze0";
request.Amount = new Decimal(100.00);
request.Description = "Cobro de comisión";
request.OrderId = "oid-1245;
Fee fee = api.FeeService.Create(request);
var feeRequest = {
'customer_id' : 'dvocf97jd20es3tw5laz',
'amount' : 12.50,
'description' : 'Cobro de Comisión',
'order_id' : 'oid-1245'
};
openpay.fees.create(feeRequest, function(error, fee){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@fees=@openpay.create(:fees)
request_hash={
"customer_id" => "dvocf97jd20es3tw5laz",
"amount" => 12.50,
"description" => "Cobro de Comisión",
"order_id" => "oid-1245"
}
response_hash=@fees.create(request_hash.to_hash)
Ejemplo de respuesta
{
"amount":12.50,
"authorization":null,
"method":"customer",
"operation_type":"out",
"currency":"MXN",
"transaction_type":"fee",
"status":"completed",
"id":"th8tafyrkakdbyry3kxi",
"creation_date":"2013-11-18T10:33:03-06:00",
"description":"Cobro de comisión",
"error_message":null,
"order_id":"oid-1245",
"customer_id":"dvocf97jd20es3tw5laz"
}
Cobra una comisión a la cuenta de un cliente.
Petición
Propiedad | Descripción |
---|---|
customer_id | string (requerido, longitud = 45) El identificador único del cliente al que deseas cobrarle la comisió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 cobro de comisión. |
order_id | string (opcional, longitud = 100) Identificador único de la comisión. Debe ser único para todas las transacciones. |
Regresa
El objeto de transacción de la comisión, con su fecha de creación y su id o una respuesta de error.
Devolver Comisión
Definición
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/fees/{TRANSACTION_ID}/refund
<?
$fee = $openpay->fees->get(transactionId);
$fee->refund(refundData);
?>
openpayAPI.fees().refund(String transactionId, RefundParams request);
openpayAPI.FeeService.Refund(string transaction_id, RefundRequest request);
openpay.fees.refund(transactionId, feeRequest, callback);
#Cliente
@fees=@openpay.create(:fees)
@fees.refund(transaction_id, refund_hash)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/fees/trzjaozcik8msyqshka4/refund \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"description" : "Devolución de Comisión"
}'
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$refundData = array(
'description' => 'Devolución de Comisión'
);
$fee = $openpay->fees->get("trzjaozcik8msyqshka4");
$fee->refund($refundData);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
RefundParams request = new RefundParams();
request.description("Devolución de comisión");
Fee fee = api.fees().refund("trzjaozcik8msyqshka4", request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
RefundRequest request = new RefundRequest();
request.Description = "Devolución de comisión";
Fee fee = api.FeeService.Refund("trzjaozcik8msyqshka4", request);
var refundRequest = {
'description' : 'Devolución de Comisión'
};
openpay.fees.refund("trzjaozcik8msyqshka4", refundRequest, function(error, refund){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@fees=@openpay.create(:fees)
refund_hash={
"description" => "Devolución de Comisión"
}
response_hash=@fees.refund("mzdtln0bmtms6o3kck8f", refund_hash.to_hash)
Ejemplo de respuesta
{
"id": "th8tafyrkakdbyry3kxi",
"authorization": null,
"method": "customer",
"operation_type": "in",
"transaction_type": "refund",
"status": "completed",
"conciliated": true,
"creation_date": "2016-09-06T11:56:57-05:00",
"operation_date": "2016-09-06T11:56:57-05:00",
"description": "devolución de comisión merchant03",
"error_message": null,
"order_id": null,
"customer_id": "ar2btmquidjhykdaztp6",
"amount": 11.11,
"currency": "MXN"
}
Devuelve una comisión a la cuenta de un cliente.
Petición
Propiedad | Descripción |
---|---|
description | string (opcional, longitud = 250) Una descripción asociada al reembolso de la comisión. |
Regresa
El objeto de transacción del reembolso, con su fecha de creación y su id o una respuesta de error.
Listado de comisiones
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/fees
<?
$feeList = $openpay->fees->getList(findDataRequest);
?>
openpayAPI.fees().list(SearchParams request);
openpayAPI.FeeService.List(SearchParams request = null);
openpay.fees.list(callback);
openpay.fees.list(searchParams, callback);
#Cliente
@fees=@openpay.create(:fees)
@fees.all
Ejemplo de petición
curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/fees?limit=10" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$findData = array(
'creation[gte]' => '2013-01-01',
'creation[lte]' => '2013-12-31',
'offset' => 0,
'limit' => 5);
$feeList = $openpay->fees->getList($findDataRequest);
?>
final Calendar dateGte = Calendar.getInstance();
final Calendar dateLte = Calendar.getInstance();
dateGte.set(2014, 5, 1, 0, 0, 0);
dateLte.set(2014, 5, 15, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.creationGte(dateGte.getTime());
request.creationLte(dateLte.getTime());
request.offset(0);
request.limit(100);
List<Fee> fees = api.fees().list(request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.CreationGte = new Datetime(2014, 5, 1);
request.CreationLte = new DateTime(2014, 5, 15);
request.Offset = 0;
request.Limit = 100;
List<Fee> fees = api.FeeService.List(request);
var searchParams = {
'limit' : 10
};
openpay.fees.list(searchParams, function(error, list){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@fees=@openpay.create(:fees)
response_hash=@fees.all
Ejemplo de respuesta
[
{
"amount":30.00,
"authorization":null,
"method":"customer",
"operation_type":"out",
"currency":"MXN",
"transaction_type":"fee",
"status":"completed",
"id":"th8tafyrkakdbyry3kxi",
"creation_date":"2013-11-18T10:33:03-06:00",
"description":"Cobro de comisión",
"error_message":null,
"order_id":"oid-1367",
"customer_id":"dvocf97jd20es3tw5laz"
},
{
"amount":12.00,
"authorization":null,
"method":"customer",
"operation_type":"out",
"currency":"MXN",
"transaction_type":"fee",
"status":"completed",
"id":"tdzottaaohuhosf4cdv9",
"creation_date":"2013-11-17T05:35:00-06:00",
"description":"Cobro de comisión",
"error_message":null,
"order_id":"oid-1366",
"customer_id":"afk4csrazjp1udezj1po"
}
]
Regresa los detalles de todas las comisiones cobradas del comercio.
Petición
Se pueden realizar búsquedas utilizando los siguientes parámetros.
Propiedad | Descripción |
---|---|
creation | date Igual a la fecha de creación. Formato yyyy-mm-dd |
creation[gte] | date Mayor a la fecha de creación. Formato yyyy-mm-dd |
creation[lte] | date Menor a la fecha de creación. Formato yyyy-mm-dd |
offset | numeric Número de registros a omitir al inicio, por defecto 0. |
limit | numeric Número de registros que se requieren, por defecto 10. |
Respuesta
Regresa un arreglo de objetos transacción de las comisiones cobradas en orden descendente por fecha, cada uno con el identificador del cliente al que se le realizó.
Webhooks
Estos permiten notificar al cliente cuando un evento ha sucedido en la plataforma, para que el comercio pueda tomar las acciones correspondientes.
Objeto Webhook
Ejemplo de objeto
{
"id" : "wxvanstudf4ssme8khmc",
"url" : "http://requestb.in/11vxrsf1",
"user" : "juanito",
"password" : "passjuanito",
"event_types" : [
"charge.refunded",
"charge.failed",
"charge.cancelled",
"charge.created",
"chargeback.accepted"
],
"status":"verified"
}
Propiedad | Descripción |
---|---|
id | string Identificador único del webhook. |
url | string URL del webhook |
user | string Nombre de usuario para autenticación básica del webhook. |
password | string Contraseña para autenticación básica del webhook. |
event_types | array[string] Listado de eventos a los que responderá el webhook. |
status | string Estado del webhook, indica si está verificado (verified) o no está verificado (unverified). |
Evento | Categoría | Descripción |
---|---|---|
charge.refunded | Cargos | Informa cuando es reembolsado un cargo. |
charge.failed | Cargos | Informa cuando un cargo falló y no se aplico. |
charge.cancelled | Cargos | Informa cuando un cargo es cancelado. |
charge.created | Cargos | Informa cuando un cargo es programado. |
charge.succeeded | Cargos | Informa cuando un cargo es aplicado. |
charge.rescored.to.decline | Cargos | Informa cuando a un cargo le es recalculado su score y es declinado. |
subscription.charge.failed | Suscripción | Informa cuando el cargo de una suscripción falló. |
payout.created | Pagos | Informa cuando un pago fue programado para el siguiente día. |
payout.succeeded | Pagos | Informa cuando un pago programado se ha aplicado. |
payout.failed | Pagos | Informa cuando un pago falló. |
transfer.succeeded | Transferencias | Informa cuando se realiza una transferencia entre dos cuentas Openpay. |
fee.succeeded | Comisiones | Informa cuando se cobra un Fee a un Customer. |
fee.refund.succeeded | Comisiones | Informa cuando se reembolsa un Fee a un Customer. |
spei.received | SPEI | Informa cuando se recibe un pago por SPEI para agregar fondos a la cuenta. |
chargeback.created | Contracargos | Informa cuando se recibió un chargeback de una transacción y se está iniciando la investigación. |
chargeback.rejected | Contracargos | Informa cuando un contracargo fue rechazado. |
chargeback.accepted | Contracargos | Informa cuando un contracargo fue aceptado. |
order.created | Orden | Informa cuando una orden es creada y programada. |
order.activated | Orden | Informa cuando una orden es activada. |
order.payment.received | Orden | Informa cuando el pago de una orden es recibido. |
order.completed | Orden | Informa cuando una orden es completada. |
order.expired | Orden | Informa cuando una orden ha expirado. |
order.cancelled | Orden | Informa cuando una orden es cancelada. |
order.payment.cancelled | Orden | Informa cuando el pago de una orden es cancelado. |
Características de un servicio Webhook válido
- Endpoint: Solo dominios (No IPs). ejemplo: https://notifications.merchant.com
- Puerto: 443/TCP, 8443/TCP y 10443/TCP
- Protocolo: HTTPS/TLS_1.2
- Certificado: Válido (firmado por CA pública y match con dominio).
Crear un Webhook
Definición
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/webhooks
<?
$webhook = $openpay->webhooks->add(webhook);
?>
openpayAPI.webhooks().create(Webhook request);
openpayAPI.WebhooksService.Create(Webhook request);
openpay.webhooks.create(webhook, callback);
@webhooks=@openpay.create(:webhooks)
@webhooks.create(request_hash)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/webhooks \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"url" : "http://requestb.in/11vxrsf1",
"user" : "juanito",
"password" : "passjuanito",
"event_types" : [
"charge.refunded",
"charge.failed",
"charge.cancelled",
"charge.created",
"chargeback.accepted"
]
}'
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$webhook = array(
'url' => 'http://requestb.in/11vxrsf1',
'user' => 'juanito',
'password' => 'passjuanito',
'event_types' => array(
'charge.refunded',
'charge.failed',
'charge.cancelled',
'charge.created',
'chargeback.accepted'
)
);
$webhook = $openpay->webhooks->add($webhook);
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Webhook request = new Webhook();
request.url("http://requestb.in/11vxrsf1");
request.user("juanito");
request.password("passjuanito");
request.addEventType("charge.refunded");
request.addEventType("charge.failed");
Webhook webhook = api.webhooks().create(request);
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Webhook request = new Webhook();
request.Url = "http://requestb.in/11vxrsf1";
request.User = "juanito";
request.Password = "passjuanito";
request.AddEventType("charge.refunded");
request.AddEventType("charge.failed");
Webhook webhook = api.WebhookService.Create(request);
var webhook_params = {
'url' : 'http://requestb.in/11vxrsf1',
'user' : 'juanito',
'password' : 'passjuanito',
'event_types' : [
'charge.refunded',
'charge.failed',
'charge.cancelled',
'charge.created',
'chargeback.accepted'
]
};
openpay.webhooks.create(webhook_params, function(error, webhook){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@webhooks=@openpay.create(:webhooks)
request_hash={
"url" => "http://requestb.in/11vxrsf1",
"user" => "juanito",
"password" => "passjuanito",
"event_types" => [
"charge.refunded",
"charge.failed",
"charge.cancelled",
"charge.created",
"chargeback.accepted"
]
}
response_hash=@webhooks.create(request_hash.to_hash)
Ejemplo de respuesta
{
"id" : "wkn0t30zfxpmhr5usgfa",
"url" : "http://requestb.in/qt3bq0qt",
"user" : "juanito",
"event_types" : [
"charge.succeeded",
"charge.created",
"charge.cancelled",
"charge.failed"
],
"status" : "verified"
}
Al crear un nuevo webhook se hará una petición a la url indicada para verificar el webhook.
Al momento de guardar el webhook se generará un id que podrá ser usado para eliminar o simplemente obtener la información no sensible del webhook.
Petición
Propiedad | Descripción |
---|---|
url | string URL del webhook |
user | string Nombre de usuario para autenticación básica del webhook. |
password | string Contraseña para autenticación básica del webhook. |
event_types | array[string] Listado de eventos a los que responderá el webhook. |
Respuesta
Regresa un objeto webhook cuando se creó correctamente o una respuesta de error si ocurrió algún problema en la creación.
Obtener un Webhook
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/webhooks/{WEBHOOK_ID}
<?
$webhook = $openpay->webhooks->get(webhookId);
?>
openpayAPI.webhooks().get(String webhookId);
openpayAPI.WebhooksService.Get(string webhookId);
openpay.webhooks.get(webhookId, callback);
@webhooks=@openpay.create(:webhooks)
@webhooks.get(webhookId)
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/webhooks/wxvanstudf4ssme8khmc \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json"
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$webhook = $openpay->webhooks->get('wxvanstudf4ssme8khmc');
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Webhook webhook = api.webhooks().get("wxvanstudf4ssme8khmc");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Webhook webhook = api.WebhooksService.Get("wxvanstudf4ssme8khmc");
openpay.webhooks.get('wxvanstudf4ssme8khmc', function(error, webhook){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@webhooks=@openpay.create(:webhooks)
response_hash=@webhooks.get("wxvanstudf4ssme8khmc")
Ejemplo de respuesta
{
"id" : "wxvanstudf4ssme8khmc",
"url" : "http://requestb.in/11vxrsf1",
"user" : "juanito",
"event_types" : [
"verification",
"charge.refunded",
"charge.failed",
"charge.cancelled",
"charge.created",
"charge.succeeded",
"subscription.charge.failed",
"payout.created",
"payout.succeeded",
"payout.failed",
"transfer.succeeded",
"fee.succeeded",
"spei.received",
"chargeback.created",
"chargeback.rejected",
"chargeback.accepted"
],
"status" : "verified"
}
Obtiene los detalles de un webhook solicitándolo con su id.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador único del webhook |
Respuesta
Regresa un objeto webhook
Eliminar un Webhook
Definición
DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/webhooks/{WEBHOOK_ID}
<?
$webhook = $openpay->webhooks->get(webhookId);
$webhook->delete();
?>
openpayAPI.webhooks().delete(String webhookId);
openpayAPI.WebhooksService.Delete(string webhook_id);
openpay.webhooks.delete(webhookId, callback);
@webhooks=@openpay.create(:webhooks)
@webhooks.delete(webhook_id)
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/webhooks/wxvanstudf4ssme8khmc \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-X DELETE
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$webhook = $openpay->webhooks->get('wxvanstudf4ssme8khmc');
$webhook->delete();
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.webhooks().delete("wxvanstudf4ssme8khmc");
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.WebhooksService.Delete("wxvanstudf4ssme8khmc");
openpay.webhooks.delete('wxvanstudf4ssme8khmc', function(error) {
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@webhooks=@openpay.create(:webhooks)
response_hash=@webhooks.delete("wxvanstudf4ssme8khmc")
Elimina un webhook del comercio.
Para eliminarlo sólo es necesario proporcionar el identificador del webhook.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador único del webhook |
Respuesta
Si el webhook se borra correctamente la respuesta es vacía, si no se puede borrar se regresa un objeto error indicando el motivo.
Listado de Webhook
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/webhooks
<?
$webhookList = $openpay->webhooks->getList();
?>
openpayAPI.webhooks().list();
openpayAPI.WebhooksService.List();
openpay.webhooks.list(callback);
@webhooks=@openpay.create(:webhooks)
@webhooks.all
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/webhooks \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json"
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac');
$webhookList = $openpay->webhooks->getList();
?>
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
List<Webhook> webhooks = api.webhooks().list();
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
List<Webhook> webhooks = api.WebhooksService.List();
openpay.webhooks.list(function(error, list){
// ...
});
@openpay=OpenpayApi.new("mzdtln0bmtms6o3kck8f","sk_e568c42a6c384b7ab02cd47d2e407cab")
@webhooks=@openpay.create(:webhooks)
response_hash=@webhooks.all
Ejemplo de respuesta
[
{
"id" : "wDashboard185",
"event_types" : [
"verification",
"charge.refunded",
"charge.failed",
"charge.cancelled",
"charge.created",
"charge.succeeded",
"subscription.charge.failed",
"payout.created",
"payout.succeeded",
"payout.failed",
"transfer.succeeded",
"fee.succeeded",
"spei.received",
"chargeback.created",
"chargeback.rejected",
"chargeback.accepted"
],
"url" : "http://requestb.in/11vxrsf1",
"status" : "verified"
},
{
"id" : "wDashboard186",
"event_types" : [
"verification",
"charge.refunded",
"charge.failed",
"charge.cancelled",
"charge.created",
"charge.succeeded",
"subscription.charge.failed"
],
"url" : "http://requestb.in/1fhpiog1",
"status" : "verified"
}
]
Regresa una lista de webhooks registrados por comercio.
Petición
Respuesta
Listado de objetos objeto webhook registrados de acuerdo a los parámetros proporcionados.
Tokens
El objetivo de generar tokens es que se capture la información de la tarjeta desde el navegador o dispositivo del usuario final para que dicha información no viaje a través de tu servidor y así puede evitar o reducir certificaciones PCI.
Para usar esta funcionalidad de la API, te recomendamos usar nuestra librería en JavaScript para cuando tu aplicación esté en Web y nuestros SDK’s de Android o iOS para cuando esté en móvil.
Características
- Se crean a nivel comercio
- No se ligan a ningún cliente
- Después de crearse solo se puede usar una sola vez, para hacer un cargo con token
Objeto Token
Ejemplo de objeto
{
"id":"tokfa4swch8gr4icy2ma",
"card":{
"card_number":"1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"04",
"address":{
"line1":"Av 5 de febrero",
"line2":"Roble 207",
"line3":"Queretaro",
"state":"Queretaro",
"city":"Queretaro",
"postal_code":"76900",
"country_code":"MX"
},
"creation_date":"2014-01-30T13:53:11-06:00",
"brand":"visa",
"points_card":false
}
}
Propiedad | Descripción |
---|---|
id | string Identificador del token. Esté es el que deberás usar para posteriormente hacer un cargo. |
card | object Datos de la tarjeta asociada al token. Ver objeto tarjeta |
Crear un nuevo token
Definición
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/tokens
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/tokens \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"card_number":"4111111111111111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"cvv2":"110",
"address":{
"city":"Querétaro",
"country_code":"MX",
"postal_code":"76900",
"line1":"Av 5 de Febrero",
"line2":"Roble 207",
"line3":"col carrillo",
"state":"Queretaro"
}
}'
Ejemplo de respuesta
{
"id":"k1n0mscnjwhxqia8q7cm",
"card":{
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"address":{
"line1":"Av 5 de Febrero",
"line2":"Roble 207",
"line3":"col carrillo",
"state":"Queretaro",
"city":"Querétaro",
"postal_code":"76900",
"country_code":"MX"
},
"creation_date":null,
"brand":"visa"
}
}
Para la creación de un token en Openpay es necesario enviar el objeto con la información a registrar. Una vez guardado el token no se puede obtener el número y código de seguridad ya que esta información es encriptada.
Petición
Propiedad | Descripción |
---|---|
holder_name | string (requerido) Nombre del tarjeta habiente. |
card_number | numeric (requerido) Número de tarjeta puede ser de 16 o 19 dígitos. |
cvv2 | string (requerido) Código de seguridad como aparece en la parte de atrás de la tarjeta. Generalmente 3 dígitos. |
expiration_month | numeric (requerido) Mes de expiración tal como aparece en la tarjeta. |
expiration_year | numeric (requerido) Año de expiración tal como aparece en la tarjeta. |
address | object (opcional) Dirección de facturación del tarjeta habiente. |
Repuesta
Regresa el objeto token creado o una respuesta de error si ocurrió algún problema en la creación.
Obtener un token
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/tokens/{TOKEN_ID}
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/tokens/k1n0mscnjwhxqia8q7cm \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
Ejemplo de respuesta
{
"id":"k1n0mscnjwhxqia8q7cm",
"card":{
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"address":{
"line1":"Av 5 de Febrero",
"line2":"Roble 207",
"line3":"col carrillo",
"state":"Queretaro",
"city":"Querétaro",
"postal_code":"76900",
"country_code":"MX"
},
"creation_date":null,
"brand":"visa"
}
}
Obtiene los detalles de un token. Es necesario tener el id.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador de token. |
Respuesta
Regresa un objeto token
Comercio
El objeto comercio permite consultar la información de tu cuenta a través de la API.
Objeto Comercio
Ejemplo de Objeto:
{
"id": "m9lrykwsmljagrfb38rs",
"creationDate": "2013-11-13T16:58:40-06:00",
"name": "Promociones en linea",
"email": "contacto@enlinea.com.mx",
"phone": "(321) 222-2222",
"status": "active",
"balance": 1000,
"clabe": "646180109400000542"
}
Propiedad | Descripción |
---|---|
id | string Identificador único asignado al momento de su creación. |
creation_date | datetime Fecha de creación de la transacción en formato ISO 8601. |
name | string Nombre del comercio con el que se registró el comercio. |
string Cuenta de correo electrónico registrada para el comercio. |
|
phone | string Número teléfonico registrado del comercio. |
status | string Estatus de la cuenta del Comercio 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 vía SPEI. |
Obtener un comercio
Definición
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}
<?
// =============================
// Funcionalidad no implementada
// =============================
?>
openpayAPI.merchant().get();
// =============================
// Funcionalidad no implementada
// =============================
openpay.merchant.get(callback);
# =============================
# Funcionalidad no implementada
# =============================
Ejemplo de petición
curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Merchant merchant = api.merchant().get();
openpay.merchant.get(function(error, merchant){
// ...
});
Ejemplo de respuesta
{
"name":"Demo Openpay",
"email":"demo@openpay.mx",
"phone":"(442) 258-1039",
"status":"active",
"balance":218.73,
"clabe":"646180109400135624",
"id":"mzdtln0bmtms6o3kck8f",
"creation_date":"2014-01-23T10:45:53-06:00"
}
Obtiene los detalles la cuenta del comercio. Solo se requiere indicar el id único del comercio que se quiere obtener.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) identificador único del comercio. |
Respuesta
Si el identificador es correcto regresa un objeto comercio.
Tiendas
El objeto representa una tienda de conveniencia
Objeto Tienda
Ejemplo de Objeto:
{
"id_store": 4913,
"id": 115,
"name": "0503 SAN PABLO -QRO",
"last_update": "2016-02-04T00:52:16-06:00",
"status": "active",
"geolocation": {
"lng": -100.421865,
"lat": 20.618171,
"place_id": "ChIJwSN2wpNa04URsDryLW517lg"
},
"address": {
"line1": "AV. 5 DE FEBRERO KM 7.5 NO 1341",
"line2": "SAN PABLO",
"line3": null,
"state": "QUERETARO",
"city": "QUERETARO",
"postal_code": "76030",
"country_code": "MX"
},
"paynet_chain": {
"name": "EXTRA",
"logo": "http://www.openpay.mx/logotipos/extra.png",
"thumb": "http://www.openpay.mx/thumb/extra.png",
"max_amount": 99999.99
}
}
Propiedad | Descripción |
---|---|
id_store | string Identificador único asignado al momento de su creación. |
id | string Identificador único por cadena. |
name | datetime Nombre de la tienda. |
last_update | string Fecha de la ultima actualización de la tienda en formato ISO 8601. |
geolocation | objeto Representación geográfica de la tienda por medio de coordenadas, Latitud y Longitud. |
address | objeto Dirección de la tienda. |
paynet_chain | objeto Cadena paynet a la que pertence. |
Obtener lista de tiendas por ubicación
Definición
GET https://api.openpay.mx/stores?latitud={latitud}&longitud={longitud}&kilometers={radio}&amount={monto}
<?
// =============================
// Funcionalidad no implementada
// =============================
?>
// =============================
// Funcionalidad no implementada
// =============================
// =============================
// Funcionalidad no implementada
// =============================
// =============================
// Funcionalidad no implementada
// =============================
# =============================
# Funcionalidad no implementada
# =============================
Ejemplo de petición
curl https://api.openpay.mx/stores?latitud=20.618975&longitud=-100.422290&kilometers=1.5&amount=4000 \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
Ejemplo de respuesta
[
{
"id_store": 4913,
"id": 115,
"name": "0503 SAN PABLO -QRO",
"last_update": "2016-02-04T00:52:16-06:00",
"status": "active",
"geolocation": {
"lng": -100.421865,
"lat": 20.618171,
"place_id": "ChIJwSN2wpNa04URsDryLW517lg"
},
"address": {
"line1": "AV. 5 DE FEBRERO KM 7.5 NO 1341",
"line2": "SAN PABLO",
"line3": null,
"state": "QUERETARO",
"city": "QUERETARO",
"postal_code": "76030",
"country_code": "MX"
},
"paynet_chain": {
"name": "EXTRA",
"logo": "http://www.openpay.mx/logotipos/extra.png",
"thumb": "http://www.openpay.mx/thumb/extra.png",
"max_amount": 99999.99
}
},
{
"id_store": 4726,
"id": 68,
"name": "ASTURIANO TECNOLOGICO",
"last_update": "2016-02-04T00:52:16-06:00",
"status": "active",
"geolocation": {
"lng": -100.410136,
"lat": 20.61632,
"place_id": "EktQcm9sIFRlY25vbMOzZ2ljbyBOdGUgOTk5LCBTYW4gUGFibG8sIFNhbnRpYWdvIGRlIFF1ZXLDqXRhcm8sIFFyby4sIE3DqXhpY28"
},
"address": {
"line1": "PROLONGACION TECNOLOGICO NORTE #999",
"line2": "SAN PABLO",
"line3": null,
"state": "QUERETARO",
"city": "QUERETARO",
"postal_code": "76159",
"country_code": "MX"
},
"paynet_chain": {
"name": "EL ASTURIANO",
"logo": "http://www.openpay.mx/logotipos/asturiano.png",
"thumb": "http://www.openpay.mx/thumb/asturiano.png",
"max_amount": 99999.99
}
}
]
Obtiene los detalles la cuenta del comercio. Solo se requiere indicar el id unico del comercio que se quiere obtener.
Petición
Propiedad | Descripción |
---|---|
latitud | numeric (requerido) Latitud de la ubicacion geográfica de la tienda |
longitud | numeric (requerido) Longitud de la ubicacion geográfica de la tienda |
kilometers | numeric (requerido) Distancia del radio de la búsqueda en kilometros |
amount | numeric (requerido) Monto de la compra |
Respuesta
Si se encuentran tiendas cerca del rango se devolverá un arreglo con las tiendas encontradas.
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":"BANCOMER",
"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 Openpay 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 Identificardor único del cliente al cual pertence la transacción. Si el 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 Store
Ejemplo de Objeto:
{
"reference":"OPENPAY02DQ35YOY7",
"barcode_url":"https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false",
"paybin_reference":"0101990000001065",
"barcode_paybin_url":"https://sandbox-api.openpay.mx/barcode/0101990000001065?width=1&height=45&text=false"
}
Propiedad | Descripción |
---|---|
reference | string Es la referencia con la que se puede ir a la tienda y realizar depósitos a la cuenta de Openpay. |
barcode_url | string Es la url con la cual se puede obtener el codigo de barras de la referencia. |
paybin_reference | string Es la referencia con la que se puede ir a cualquier tienda que acepte Paybin. |
barcode_paybin_url | string Es la url con la cual se puede obtener el codigo de barras de la referencia Paybin. |
Objeto PaymentPlan
Ejemplo de Objeto:
{
"payments":"6"
}
Propiedad | Descripción |
---|---|
payments | numeric Es el número de pagos en los cuales se pretende realizar un cargo a meses sin intereses (3, 6, 9, 12, 18). |
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 Geolocation
Ejemplo de Objeto:
{
"lng": -100.421865,
"lat": 20.618171,
"place_id": "ChIJwSN2wpNa04URsDryLW517lg"
}
Propiedad | Descripción |
---|---|
lng | numeric Longitud, coordenada geográfica. |
lat | numeric Latitud, coordenada geográfica. |
place_id | string Identificacdor único en google maps |
Objeto PaynetChain
Ejemplo de Objeto:
{
"name": "EXTRA",
"logo": "http://www.openpay.mx/logotipos/extra.png",
"thumb": "http://www.openpay.mx/thumb/extra.png",
"max_amount": 99999.99
}
Propiedad | Descripción |
---|---|
name | string Nombre de la cadena. |
logo | string Url de la imagen del logotipo de la cadena. |
thumb | string Url de la imagen miniatura del logotipo de la cadena. |
max_amount | numeric Monto máximo de pago que aceptan las tiendas de la cadena |
Objeto Transaction Status
Value | Description |
---|---|
IN_PROGRESS | Transacción en proceso |
COMPLETED | Transacción ejecutada correctamente |
REFUNDED | Transacción reembolsada |
CHARGEBACK_PENDING | Transacción con contracargo pendiente |
CHARGEBACK_ACCEPTED | Transacción con contracargo aceptado |
CHARGEBACK_ADJUSTMENT | Transacción con ajuste de contracargo |
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 |
Facturación Electrónica
Objeto Generación de CFDI
Campo | Descripción |
---|---|
openpay_transaction_id | Opcional Id de la transacción en openpay. |
invoice_id | Requerido Identificador de factura /orden de compra del comercio. |
tipo_comprobante | Opcional (default (I) ingreso) Objeto Tipo de Comprobante. |
serie | Opcional (1-25 Alfanumérico) Serie de la factura en caso de manejar. |
folio | Opcional pago (1-40 Alfanumérico) Folio de la factura en caso de manejar. |
total | Requerido (Decimal) Total de la factura. |
subtotal | Requerido (Decimal) Subtotal de la factura. |
forma_pago | Requerido Forma de pago Se debe enviar solamente la clave de pago que corresponda al método de pago realizado. Objeto Forma de Pago. |
metodo_pago | Requerido Método de pago Objeto Metodo de Pago. |
lugar_expedicion | Requerido (5 dígitos) Código postal del Lugar de expedición. |
descuento | Opcional (Decimal) Monto del descuento. |
observaciones | Opcional (Alfanumérico) Observaciones. |
total_trasladados | Opcional (Decimal) Total de impuestos trasladados en caso que existan. |
total_retenidos | Opcional (Decimal) Total de impuestos retenidos en caso que existan. |
moneda | Requerido (3 Alfanumerico) Moneda en la que se realizó la venta en caso que sea diferente de MXN. (ISO 4217) |
tipo_de_cambio | Requerido (Decimal) Tipo de cambio de la moneda en la que se realizó la venta. 1.00 en caso que la moneda sea MXN. |
receptor | Requerido (Objeto Receptor) Nodo que contiene los datos del receptor de la factura. |
conceptos | Requerido (Arreglo de Objeto Concepto) Arreglo de conceptos incluidos en la factura. |
cfdi_relacionados | Opcional (Objeto Relacionados) Facturas relacionadas. |
complements | Opcional (Objeto Complementos) Complementos. |
Objeto Tipo de Comprobante
Tipo comprobante fiscal | Documento Fiscal |
---|---|
(I) ingreso | |
(E) egreso | |
(T) traslado | |
(N) Nómina | |
(P) Pago |
Objeto Forma de Pago
Clave | Descripción |
---|---|
01 | Efectivo. |
02 | Cheque nominativo. |
03 | Transferencia electrónica de fondos. |
04 | Tarjeta de Crédito. |
05 | Monedero Electrónico. |
06 | Dinero Electrónico. |
08 | Vales de despensa. |
12 | Dación en pago. |
13 | Pago por subrogación. |
14 | Pago por consignación. |
15 | Condonación. |
17 | Compensación. |
23 | Novación. |
24 | Confusión. |
25 | Remisión de deuda. |
26 | Prescripción o caducidad. |
27 | A satisfacción del acreedor. |
28 | Tarjeta de Débito. |
29 | Tarjeta de Servicio. |
30 | Aplicación de anticipos. |
99 | Otros. |
Objeto Metodo de Pago
Clave | Descripción |
---|---|
PUE | Pago única exhibición. |
PPD | Pagos parciales o diferidos. |
Objeto DoctoRelacionado
Clave | Descripción |
---|---|
id_documento | Requerido (16-36 Alfanumérico) Identificador del documento (uuid). |
serie | Opcional (1-25 Alfanumérico) Serie del documento. |
folio | Opcional (1-40 Alfanumérico) Folio del documento. |
moneda_d_r | Requerido (3 Alfabético) Código de Moneda (ISO 4217). |
tipo_cambio_d_r | Opcional (Decimal) Tipo de cambio. |
metodo_de_pago_d_r | Opcional Método de pago. |
num_parcialidad | Opcional Número de la parcialidad. |
imp_saldo_ant | Opcional (Decimal) Importe del saldo anterior. |
imp_pagado | Opcional (Decimal) Importe pagado. |
imp_saldo_insoluto | Opcional (Decimal) Importe del saldo insoluto. |
Objeto Concepto
Clave | Descripción |
---|---|
Identificador | Requerido (1-100 Alfanumérico) Identificador del concepto. |
cantidad | Requerido (Decimal) Cantidad del concepto. |
unidad | Opcional(1-20 Alfanumérico) Unidad del concepto. |
clave_unidad | Requerido (Alfanumérico, Catálogo Clave Unidad) Clave de unidad. |
descripcion | Requerido (1-1000 Alfanumérico) Descripción del concepto. |
valor_unitario | Requerido (Decimal) Valor unitario del concepto. |
importe | Requerido (Decimal) Importe del impuesto trasladado. |
clave | Requerido (1-10 Numérico) Clave del producto. |
descuento | Opcional (Decimal) Monto de descuento. |
traslados | Opcional (Arreglo de Objeto Impuesto) Lista de impuestos de traslado. |
retenciones | Opcional (Arreglo de Objeto Impuesto) Lista de impuestos de retención. |
Objeto Impuesto
Clave | Descripción |
---|---|
impuesto | Requerido Impuesto Objeto Tipo de Impuesto. |
tipo_factor | Requerido Tipo de factor Códigos: |
tasa | Requerido Decimal Tasa que será usada para calcular el impuesto |
importe | Requerido Monto del impuesto calculado |
base | Opcional Monto sobre el cual será aplicado el Impuesto |
Objeto Tipo de Impuesto
Código | Descripción |
---|---|
001 | ISR |
002 | IVA |
003 | IEPS |
Objeto Receptor
Campo | Descripción |
---|---|
nombre | Requerido (1-254 Alfanumérico) Nombre del receptor de la factura. |
rfc | Requerido RFC del receptor de la factura. |
Opcional Email del receptor de la factura. |
|
residencia_fiscal | Opcional Código postal de la residencia fiscal. |
uso_cfdi | Requerido (3 Alfanumérico) Objeto Uso de CFDI. |
pais | Opcional (3 Alfanumérico) Código de país (ISO 3166-1 alfa-3). No debe enviarse si el RFC está registrado con el SAT o es un RFC genérico nacional. |
Objeto Uso de CFDI
Código | Descripción |
---|---|
G01 | Adquisición de mercancías. |
G02 | Devoluciones, descuentos o bonificaciones. |
G03 | Gastos en general. |
I01 | Construcciones. |
I02 | Mobiliario y equipo de oficina por inversiones. |
I03 | Equipo de transporte. |
I04 | Equipo de cómputo y accesorios. |
I05 | Dados, troqueles, moldes, matrices y herramental. |
I06 | Comunicaciones telefónicas. |
I07 | Comunicaciones satelitales. |
I08 | Otra maquinaria y equipo. |
D01 | Honorarios médicos, dentales y gastos hospitalarios. |
D02 | Gastos médicos por incapacidad o discapacidad. |
D03 | Gastos funerarios. |
D04 | Donativos. |
D05 | Intereses reales efectivamente pagados por créditos hipotecarios (casa habitación). |
D06 | Aportaciones voluntarias al SAR. |
D07 | Primas por seguros de gastos médicos. |
D08 | Gastos de transportación escolar obligatoria. |
D09 | Depósitos en cuentas para el ahorro, primas que tengan como base planes de pensiones. |
D10 | Pagos por servicios educativos (colegiaturas). |
P01 | Por definir. |
Objeto Relacionado
Campo | Descripción |
---|---|
tipo_relacion | Requerido Tipo relación Objeto Tipo de Relación. |
relacionados | Requerido (Arreglo de Objeto CfdiRelacionado) Objeto CFDI Relacionado. |
Objeto Tipo de Relación
Código | Descripción |
---|---|
01 | Nota de crédito de los documentos relacionados. |
02 | Nota de débito de los documentos relacionados. |
03 | Devolución de mercancía sobre facturas o traslados previos. |
04 | Sustitución de los CFDI previos. |
05 | Traslados de mercancías facturados previamente. |
06 | Factura generada por los traslados previos. |
07 | CFDI por aplicación de anticipo. |
Objeto CFDI Relacionado
Campo | Descripción |
---|---|
uuid | Requerido (36 Alfanumérico) UUID de la factura relacionada. |
Objeto Complementos
Campo | Descripción |
---|---|
aerolineas | Opcional (Objeto Complemento Aerolíneas) Complemento para aerolíneas. |
pagos | Opcional (Objeto Complemento Pago) Complementos de pago. |
donatarias | Opcional (Objeto Complemento Donatarias) Complemento Donatarias. |
Objeto Complemento Aerolíneas
Campo | Descripción |
---|---|
tua | Requerido (Decimal) Tarifa de uso de aeropuerto. |
otrosCargos | Opcional (Arreglo de Objeto Aerolíneas Cargo) Complementos de pago. |
Objeto Aerolíneas Cargo
Campo | Descripción |
---|---|
codigo_cargo | Opcional Código del cargo. |
descripcion_cargo | Opcional Descripción del cargo. |
importe | Opcional (Decimal) Monto del cargo. |
Objeto Complemento Pago
Campo | Descripción |
---|---|
fecha_pago | Requerido Fecha de la operación. |
forma_de_pago | Requerido Forma de pago. |
moneda_p | Requerido (Decimal) Monto del cargo. |
tipo_cambio_p | Requerido (Decimal) Tipo de cambio de la moneda en la que se realizó la venta. 1.00 en caso que la moneda sea MXN. |
monto | Requerido (Decimal) Monto del pago. |
num_operacion | Opcional (1-100 Alfanumérico) Número de pago. |
rfc_emisor_cta_ord | Opcional RFC del emisor. |
nom_banco_ord_ext | Opcional (1-300 Alfanumérico) Nombre del banco. |
cta_ordenante | Opcional (10-50 Alfanumérico) Cuenta ordenante. |
rfc_emisor_cta_ben | Beneficiario. |
cta_beneficiario | Opcional (10-50 Alfanumérico) Cuenta del beneficiario. |
tipo_cad_pago | Opcional (único valor válido 01) Tipo de cadena de pago. |
cert_pago | Opcional (byte[]) Certificado de pago. |
sello_pago | Opcional (byte[]) Sello de pago. |
cad_pago | Opcional (1-8192 Alfanumérico) Cadena. |
docto_relacionados | Opcional (Arreglo Objeto DoctoRelacionado). |
Objeto Complemento Donatarias
Campo | Descripción |
---|---|
no_autorizacion | Requerido Número de autorización |
fecha_autorizacion | Requerido Fecha de autorización (YYYY-MM-DD) |
leyenda | Requerido Leyenda |
Objeto Respuesta de solicitud de generación
Campo | Descripción |
---|---|
invoice_id | Identificador de la factura enviado en la solicitud. |
request_id | Id de petición generado por Openpay. |
date | Fecha en que se solicitó la generación. |
status | PENDING, OK, ERROR. |
fiscal_status | ACTIVE, CANCELLED. |
message | Descripción del status. |
Objeto Notificaciones
Campo | Descripción |
---|---|
invoice_id | Identificador de la factura enviado en la solicitud. |
serie | Serie de la factura. |
folio | Folio de la factura. |
transaction_id | Identificador de transacción de Openpay ligado a la factura. |
creation_date | Fecha de solicitud. |
issue_date | Fecha de emisión de la factura. |
uuid | UUID de la factura. |
receiver_rfc | RFC del receptor de la factura. |
total | Total de la factura. |
subtotal | Subtotal de la factura. |
status | PENDING, OK, ERROR. |
fiscal_status | ACTIVE, CANCELLED. |
cancellation_date | Fecha de cancelación de la factura en caso que esté cancelada. |
public_xml_link | Liga para descarga del xml de la factura. |
public_pdf_link | Liga para descarga del pdf de la factura. |
link_expiration_date | Expiración de las ligas de descarga, una vez expiradas los xml / pdf pueden ser descargados desde el dashboard. |
message | Detalle del status de la factura. |