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#), las respuestas son específicamente del tipo definido en dichos clientes en sus respectivos lenguajes.
API Endpoints
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.co
- Producción, URI base:
https://api.openpay.co
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.co/v1/mzdtln0bmtms6o3kck8f/customers
Para crear una petición completa es necesaria envíar las cabeceras HTTP correctas y la información en formato JSON.
Todos los ejemplos de está documentación están apuntados al ambiente de pruebas.
Recursos disponibles
a) Por Comercio
/v1/{MERCHANT_ID}/...
/fees
/fees/{FEE_ID}
/charges
/charges/{TRANSACTION_ID}
/pse
/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}
/charges
/charges/{TRANSACTION_ID}
/pse
/subscriptions
/subscriptions/{SUBSCRIPTION_ID}
Autenticación
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).
Manten esta llave segura y nunca la compartas con nadie.
- Pública.- Sólo se debe utilizar en llamadas desde JavaScript. Esta llave sólo tiene permitido realizar crear tarjetas o crear tokens
Para hacer llamadas con tu llave pública utiliza la librería Openpay.js
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.
Por razones de seguridad todas las peticiones deben ser vía **HTTPS**.
Ejemplo de autenticación
curl https://sandbox-api.openpay.co/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)
Producción
Solo es necesario usar la URI base https://api.openpay.co
Ejemplo de autenticación
<?
//Por default se usa el ambiente de sandbox
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c4875b178ce26348b0fac', 'CO','127.0.0.1');
?>
Producción
<?
Openpay::setProductionMode(true);
?>
Ejemplo de autenticación
//Sandbox
final OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "moiep6umtcnanql3jrxp", "sk_3433941e467c4875b178ce26348b0fac","127.0.0.1");
//Produccion
final OpenpayAPI api = new OpenpayAPI("https://api.openpay.co", "moiep6umtcnanql3jrxp", "sk_3433941e467c4875b178ce26348b0fac","127.0.0.1");
Producción
//Solo es necesario usar la URI base https://api.openpay.co
Ejemplo de autenticación
//Sandbox
OpenpayAPI openpayAPI = new OpenpayAPI("sk_3433941e467c4875b178ce26348b0fac", "moiep6umtcnanql3jrxp","127.0.0.1");
openpayAPI.Production = false; // Default value = false
//Produccion
OpenpayAPI openpayAPI = new OpenpayAPI("sk_3433941e467c4875b178ce26348b0fac", "moiep6umtcnanql3jrxp","127.0.0.1");
openpayAPI.Production = true;
Producción
openpayAPI.Production = true;
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
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. 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 |
---|---|---|
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. |
2009 | 412 Precondition Failed | El código de seguridad de la tarjeta (CVV2) 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. |
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"
]
}
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"
]
}
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.
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 C Sharp, toda operación regresará una instancia de la clase “OpenpayException” la cual contendrá esta información del error.
Cargos
Los cargos se pueden realizar a tarjetas y PSE. 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
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.
Puedes realizar el cargo a la cuenta del comercio o a la cuenta de un cliente.
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. |
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. |
currency | string (requerido) Tipo de moneda del cargo. Por el momento solo se soportan 1 tipo de moneda: Pesos Colombianos(COP). |
iva | string (requerido) Debe contener el valor de IVA, es campo solo informativo, no tiene ningún efecto sobre el campo amount. |
airpot_tax | string (opcional) *Solo aplica para aerolíneas Valor correspondiente a la tasa aeroportuaria, no tienen ningún efecto sobre el campo amount. |
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 = 255) Identificador del dispositivo generado con la herramienta antifraudes |
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. |
Respuesta
Regresa un objeto de transacción con la información del cargo o una respuesta de error.
Definición
Comercio
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/charges
Cliente
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
Ejemplo de petición con comercio
curl https://sandbox-api.openpay.co/v1/mzdtln3bqtms6o3kck2f/charges \
-u sk_e562c42a6q384b2ab02cd47d2n301uwk: \
-H "Content-type: application/json" \
-H "X-Forwarded-For: 129.18.168.184" \
-X POST -d '{
"source_id" : "kdx205scoizh93upqbte",
"method" : "card",
"amount" : 716,
"currency" : "COP",
"iva" : "10",
"description" : "Cargo inicial a mi cuenta",
"order_id" : "oid-12324",
"device_session_id" : "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f",
"customer" : {
"name" : "Cliente Colombia",
"last_name" : "Vazquez Juarez",
"phone_number" : "4448936475",
"email" : "juan.vazquez@empresa.co"
}
}'
Ejemplo de respuesta
{
"id": "trbeuhyvmkr3b9jitajp",
"authorization": "1128731327",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"id": "kdx205scoizh93upqbte",
"type": "credit",
"brand": "diners",
"address": null,
"card_number": "367284XXXX3333",
"holder_name": "DinnersClub",
"expiration_year": "21",
"expiration_month": "07",
"allows_charges": true,
"creation_date": "2019-08-09T13:35:48-05:00",
"bank_name": "BANCO DE BOGOTÁ",
"bank_code": "000"
},
"status": "completed",
"conciliated": true,
"creation_date": "2019-08-12T12:36:56-05:00",
"operation_date": "2019-08-12T12:36:56-05:00",
"description": "Ejemplo cargo",
"error_message": null,
"order_id": "oid-12330",
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2019-08-12T12:36:56-05:00",
"external_id": null
},
"fee": {
"amount": 21.81,
"tax": 3.4896,
"currency": "COP"
}
}
Definición
<?
Comercio
$openpay->charges->create(chargeRequest);
Cliente
$customer = $openpay->customers->get($customerId);
$customer->charges->create(chargeRequest);
?>
Ejemplo de petición con comercio
<?
$openpay = Openpay::getInstance('mzdtln3bqtms6o3kck2f', 'sk_e562c42a6q384b2ab02cd47d2n301uwk', 'CO');
$customer = array(
'name' => 'Juan',
'last_name' => 'Vazquez Juarez',
'phone_number' => '571627926831',
'email' => 'juan.vazquez@empresa.co');
$chargeRequest = array(
'method' => 'card',
'source_id' => 'kqgykn96i7bcs1wwhvgw',
'amount' => 716,
'currency' => 'COP',
'iva' => '10',
'description' => 'Cargo inicial a mi merchant',
'order_id' => 'oid-00051',
'device_session_id' => 'kR1MiQhz2otdIuUlQkbEyitIqVMiI16f',
'customer' => $customer);
$charge = $openpay->charges->create($chargeRequest);
?>
Ejemplo de respuesta
{
"id": "trbeuhyvmkr3b9jitajp",
"authorization": "1128731327",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"id": "kdx205scoizh93upqbte",
"type": "credit",
"brand": "diners",
"address": null,
"card_number": "367284XXXX3333",
"holder_name": "DinnersClub",
"expiration_year": "21",
"expiration_month": "07",
"allows_charges": true,
"creation_date": "2019-08-09T13:35:48-05:00",
"bank_name": "BANCO DE BOGOTÁ",
"bank_code": "000"
},
"status": "completed",
"conciliated": true,
"creation_date": "2019-08-12T12:36:56-05:00",
"operation_date": "2019-08-12T12:36:56-05:00",
"description": "Ejemplo cargo",
"error_message": null,
"order_id": "oid-12330",
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2019-08-12T12:36:56-05:00",
"external_id": null
},
"fee": {
"amount": 21.81,
"tax": 3.4896,
"currency": "COP"
}
}
Definición
//Cliente
openpayAPI.charges().create(String customerId, CreateCardChargeParams request);
//Comercio
openpayAPI.charges().create(CreateCardChargeParams request);
Ejemplo de petición con comercio
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
CreateCardChargeParams request = new CreateCardChargeParams();
Customer customer = new Customer();
customer.setName("Juan");
customer.setLastName("Vazquez Juarez");
customer.setPhoneNumber("571627926831");
customer.setEmail("juan.vazquez@empresa.co");
request.cardId("kqgykn96i7bcs1wwhvgw"); // =source_id
request.amount(new BigDecimal("716"));
request.currency("COP");
request.iva("10");
request.description("Cargo inicial a mi merchant");
request.orderId("oid-00051");
request.deviceSessionId("kR1MiQhz2otdIuUlQkbEyitIqVMiI16f");
request.setCustomer(customer);
Charge charge = api.charges().create(request);
Ejemplo de respuesta
{
"id": "trbeuhyvmkr3b9jitajp",
"authorization": "1128731327",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"id": "kdx205scoizh93upqbte",
"type": "credit",
"brand": "diners",
"address": null,
"card_number": "367284XXXX3333",
"holder_name": "DinnersClub",
"expiration_year": "21",
"expiration_month": "07",
"allows_charges": true,
"creation_date": "2019-08-09T13:35:48-05:00",
"bank_name": "BANCO DE BOGOTÁ",
"bank_code": "000"
},
"status": "completed",
"conciliated": true,
"creation_date": "2019-08-12T12:36:56-05:00",
"operation_date": "2019-08-12T12:36:56-05:00",
"description": "Ejemplo cargo",
"error_message": null,
"order_id": "oid-12330",
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2019-08-12T12:36:56-05:00",
"external_id": null
},
"fee": {
"amount": 21.81,
"tax": 3.4896,
"currency": "COP"
}
}
Definición
//Cliente
openpayAPI.ChargeService.Create(string customer_id, ChargeRequest request);
//Comercio
openpayAPI.ChargeService.Create(ChargeRequest request);
Ejemplo de petición con comercio
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Customer customer = new Customer();
customer.Name = "Juan";
customer.LastName = "Vazquez Juarez";
customer.PhoneNumber = "571627926831";
customer.Email = "juan.vazquez@empresa.co";
ChargeRequest request = new ChargeRequest();
request.Method = "card";
request.SourceId = "kwkoqpg6fcvfse8k8mg2";
request.Amount = new Decimal(716);
request.Currency = "COP";
request.Iva = "10";
request.Description = "Cargo inicial a mi merchant";
request.OrderId = "oid-00051";
request.DeviceSessionId = "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f";
request.Customer = customer;
Charge charge = api.ChargeService.Create(request);
Ejemplo de respuesta
{
"id": "trbeuhyvmkr3b9jitajp",
"authorization": "1128731327",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"id": "kdx205scoizh93upqbte",
"type": "credit",
"brand": "diners",
"address": null,
"card_number": "367284XXXX3333",
"holder_name": "DinnersClub",
"expiration_year": "21",
"expiration_month": "07",
"allows_charges": true,
"creation_date": "2019-08-09T13:35:48-05:00",
"bank_name": "BANCO DE BOGOTÁ",
"bank_code": "000"
},
"status": "completed",
"conciliated": true,
"creation_date": "2019-08-12T12:36:56-05:00",
"operation_date": "2019-08-12T12:36:56-05:00",
"description": "Ejemplo cargo",
"error_message": null,
"order_id": "oid-12330",
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2019-08-12T12:36:56-05:00",
"external_id": null
},
"fee": {
"amount": 21.81,
"tax": 3.4896,
"currency": "COP"
}
}
Con redireccionamiento
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 indicar que el cargo se hará de una tarjeta. |
amount | numeric (requerido) Cantidad del cargo. Debe ser una cantidad mayor a cero. |
currency | string (requerido) Tipo de moneda del cargo. Por el momento solo se soportan 1 tipo de moneda: Pesos Colombianos(COP). |
iva | string (requerido) Debe contener el valor de IVA, es campo solo informativo, no tiene ningún efecto sobre el campo amount. |
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) 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.
Con redireccionamiento
Comercio
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/charges
Cliente
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
Ejemplo de petición con comercio
curl https://sandbox-api.openpay.co/v1/mzdtln3bqtms6o3kck2f/charges \
-u sk_e562c42a6q384b2ab02cd47d2n301uwk: \
-H "Content-type: application/json" \
-X POST -d '{
"source_id" : "kdx205scoizh93upqbte",
"method" : "card",
"amount" : 716,
"currency" : "COP",
"iva" : "10",
"description" : "Cargo inicial a mi cuenta",
"order_id" : "oid-12324",
"device_session_id" : "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f",
"customer" : {
"name" : "Cliente Colombia",
"last_name" : "Vazquez Juarez",
"phone_number" : "4448936475",
"email" : "juan.vazquez@empresa.co"
}
}'
Ejemplo de respuesta
{
"id": "trbeuhyvmkr3b9jitajp",
"authorization": "1128731327",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"id": "kdx205scoizh93upqbte",
"type": "credit",
"brand": "diners",
"address": null,
"card_number": "367284XXXX3333",
"holder_name": "DinnersClub",
"expiration_year": "21",
"expiration_month": "07",
"allows_charges": true,
"creation_date": "2019-08-09T13:35:48-05:00",
"bank_name": "BANCO DE BOGOTÁ",
"bank_code": "000"
},
"status": "completed",
"conciliated": true,
"creation_date": "2019-08-12T12:36:56-05:00",
"operation_date": "2019-08-12T12:36:56-05:00",
"description": "Ejemplo cargo",
"error_message": null,
"order_id": "oid-12330",
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2019-08-12T12:36:56-05:00",
"external_id": null
},
"fee": {
"amount": 21.81,
"tax": 3.4896,
"currency": "COP"
}
}
Con redireccionamiento
Definición
<?
Comercio
$openpay->charges->create(chargeRequest);
Cliente
$customer = $openpay->customers->get($customerId);
$customer->charges->create(chargeRequest);
?>
Ejemplo de petición con comercio
<?
$openpay = Openpay::getInstance('mzdtln3bqtms6o3kck2f', 'sk_e562c42a6q384b2ab02cd47d2n301uwk', 'CO');
$customer = array(
'name' => 'Juan',
'last_name' => 'Vazquez Juarez',
'phone_number' => '4423456723',
'email' => 'juan.vazquez@empresa.co');
$chargeRequest = array(
'method' : 'card',
'amount' => 716,
'currency' => 'COP',
'iva' => '28',
'description' => 'Cargo terminal virtual a mi merchant',
'customer' => $customer,
'send_email' => false,
'confirm' => false,
'redirect_url' => '/index.html')
;
$charge = $openpay->charges->create($chargeRequest);
?>
Ejemplo de respuesta
{
"id": "tro1ezxbfn5c8lvzhfcr",
"authorization": null,
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"status": "charge_pending",
"conciliated": false,
"creation_date": "2019-08-12T12:47:41-05:00",
"operation_date": "2019-08-12T12:47:41-05:00",
"description": "Cargo inicial a mi cuenta",
"error_message": null,
"order_id": "oid-11153",
"payment_method": {
"type": "redirect",
"url": "https://sandbox-api.openpay.co/v1/mpixehq7z4xupfwoohrm/charges/tro1ezxbfn5c8lvzhfcr/card_capture"
},
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Juan",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4423456723",
"address": null,
"creation_date": "2019-08-12T12:47:41-05:00",
"external_id": null
}
}
Con redireccionamiento
Definición
//Customer
openpayAPI.charges().create(String customerId, CreateCardChargeParams request);
//Merchant
openpayAPI.charges().create(CreateCardChargeParams request);
Ejemplo de petición con comercio
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.co");
request.amount(new BigDecimal("716.00"));
request.currency("COP");
request.iva("16");
request.description("Cargo inicial a mi merchant");
request.orderId("oid-00051");
request.setCustomer(customer);
request.setSendEmail(false);
request.setConfirm(false);
request.setRedirectUrl("/index.html");
Charge charge = api.charges().create(request);
Ejemplo de respuesta
{ "id": "tro1ezxbfn5c8lvzhfcr", "authorization": null, "operation_type": "in", "method": "card", "transaction_type": "charge", "status": "charge_pending", "conciliated": false, "creation_date": "2019-08-12T12:47:41-05:00", "operation_date": "2019-08-12T12:47:41-05:00", "description": "Cargo inicial a mi cuenta", "error_message": null, "order_id": "oid-11153", "payment_method": { "type": "redirect", "url": "https://sandbox-api.openpay.co/v1/mpixehq7z4xupfwoohrm/charges/tro1ezxbfn5c8lvzhfcr/card_capture" }, "amount": 716, "currency": "COP", "iva": "10", "customer": { "name": "Juan", "last_name": "Vazquez Juarez", "email": "juan.vazquez@empresa.co", "phone_number": "4423456723", "address": null, "creation_date": "2019-08-12T12:47:41-05:00", "external_id": null } }
Con redireccionamiento
Definición
//Cliente
openpayAPI.ChargeService.Create(string customer_id, ChargeRequest request);
//Comercio
openpayAPI.ChargeService.Create(ChargeRequest request);
Ejemplo de petición con comercio
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.co";
request.Method = "card";
request.Amount = new Decimal(716);
request.Currency = "COP";
request.Iva = "16";
request.Description = "Cargo inicial a mi merchant";
request.OrderId = "oid-00051";
request.Confirm = false;
request.SendEmail = false;
request.RedirectUrl = "/index.html";
request.Customer = customer;
Charge charge = api.ChargeService.Create(request);
Ejemplo de respuesta
{
"id": "tro1ezxbfn5c8lvzhfcr",
"authorization": null,
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"status": "charge_pending",
"conciliated": false,
"creation_date": "2019-08-12T12:47:41-05:00",
"operation_date": "2019-08-12T12:47:41-05:00",
"description": "Cargo inicial a mi cuenta",
"error_message": null,
"order_id": "oid-11153",
"payment_method": {
"type": "redirect",
"url": "https://sandbox-api.openpay.co/v1/mpixehq7z4xupfwoohrm/charges/tro1ezxbfn5c8lvzhfcr/card_capture"
},
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Juan",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4423456723",
"address": null,
"creation_date": "2019-08-12T12:47:41-05:00",
"external_id": null
}
}
Cargo en tienda
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. |
currency | string (requerido) Tipo de moneda del pago. Por el momento solo se soportan 1 tipo de moneda: Pesos Colombianos(COP). |
iva | string (requerido) Debe contener el valor de IVA, es campo solo informativo, no tiene ningún efecto sobre el campo amount. |
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) Ejemplo (UTC): 2014-08-01T00:50:00Z Ejemplo (Central Time): 2014-08-01T11:51:23-05:00 |
customer | objeto (requerido) 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. currency | string (requerido)
Moneda usada en la operación
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.co/v1/{MERCHANT_ID}/charges
Cliente
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"method" : "store",
"amount" : 100,
"currency" : "COP",
"iva" : "10",
"description" : "Cargo con tienda",
"order_id" : "oid-00053",
"due_date" : "2018-05-28T13:45:00"
}'
Ejemplo de respuesta
{
"id":"trnirkiyobo5qfex55ef",
"amount":100.00,
"currency":"COP",
"iva":"10",
"authorization":null,
"method":"store",
"operation_type":"in",
"transaction_type":"charge",
"status":"in_progress",
"creation_date":"2018-05-26T13:48:25-05:00",
"operation_date":"2018-05-26T13:48:25-05:00",
"due_date":"2018-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.co/barcode/000020TRNIRKIYOBO5QFEX55EF0100009?width=1&height=45&text=false",
"barcode_paybin_url":"https://sandbox-api.openpay.co/barcode/0101990000001065?width=1&height=45&text=false"
}
}
Cargo en tienda
Definición
Comercio
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/charges
Cliente
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
<?
Comercio
$openpay->charges->create(chargeRequest);
Cliente
$customer = $openpay->customers->get(customerId);
$customer->charges->create(chargeRequest;
?>
Ejemplo de petición con cliente
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab', 'CO');
$chargeRequest = array(
'method' => 'store',
'amount' => 100,
'currency' => 'COP',
'iva' => '10',
'description' => 'Cargo con tienda',
'order_id' => 'oid-00053',
'due_date' => '2018-05-28T13:45:00');
$customer = $openpay->customers->get('ag4nktpdzebjiye1tlze');
$charge = $customer->charges->create($chargeRequest);
?>
Ejemplo de respuesta
{
"id":"trnirkiyobo5qfex55ef",
"amount":100.00,
"currency":"COP",
"iva":"10",
"authorization":null,
"method":"store",
"operation_type":"in",
"transaction_type":"charge",
"status":"in_progress",
"creation_date":"2018-05-26T13:48:25-05:00",
"operation_date":"2018-05-26T13:48:25-05:00",
"due_date":"2018-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.co/barcode/000020TRNIRKIYOBO5QFEX55EF0100009?width=1&height=45&text=false",
"barcode_paybin_url":"https://sandbox-api.openpay.co/barcode/0101990000001065?width=1&height=45&text=false"
}
}
Cargo en tienda
Definición
Comercio
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/charges
Cliente
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
//Cliente
openpayAPI.charges().create(String customerId, CreateStoreChargeParams request);
//Comercio
openpayAPI.charges().create(CreateStoreChargeParams request);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.mx", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Calendar dueDate = Calendar.getInstance();
dueDate.set(2018, 5, 28, 13, 45, 0);
CreateStoreChargeParams request = new CreateStoreChargeParams();
request.amount(new BigDecimal("100.00"));
request.currency("COP");
request.iva("10");
request.description("Cargo con tienda");
request.orderId("oid-00053"
request.dueDate(dueDate.getTime());
Charge charge = api.charges().create("ag4nktpdzebjiye1tlze", request);
Ejemplo de respuesta
{
"id":"trnirkiyobo5qfex55ef",
"amount":100.00,
"currency":"COP",
"iva":"10",
"authorization":null,
"method":"store",
"operation_type":"in",
"transaction_type":"charge",
"status":"in_progress",
"creation_date":"2018-05-26T13:48:25-05:00",
"operation_date":"2018-05-26T13:48:25-05:00",
"due_date":"2018-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.co/barcode/000020TRNIRKIYOBO5QFEX55EF0100009?width=1&height=45&text=false",
"barcode_paybin_url":"https://sandbox-api.openpay.co/barcode/0101990000001065?width=1&height=45&text=false"
}
}
Cargo en tienda
Definición
Comercio
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/charges
Cliente
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
//Cliente
openpayAPI.ChargeService.Create(string customer_id, ChargeRequest request);
//Comercio
openpayAPI.ChargeService.Create(ChargeRequest request);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
ChargeRequest request = new ChargeRequest();
request.Method = "store";
request.Amount = new Decimal(100);
request.Currency = "COP";
request.Iva = "10";
request.Description = "Cargo con tienda";
request.OrderId = "oid-00053";
request.DueDate = new DateTime(2018, 5, 28, 13, 45, 0);
Charge charge = api.ChargeService.Create("ag4nktpdzebjiye1tlze", request);
Ejemplo de respuesta
{
"id":"trnirkiyobo5qfex55ef",
"amount":100.00,
"currency":"COP",
"iva":"10",
"authorization":null,
"method":"store",
"operation_type":"in",
"transaction_type":"charge",
"status":"in_progress",
"creation_date":"2018-05-26T13:48:25-05:00",
"operation_date":"2018-05-26T13:48:25-05:00",
"due_date":"2018-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.co/barcode/000020TRNIRKIYOBO5QFEX55EF0100009?width=1&height=45&text=false",
"barcode_paybin_url":"https://sandbox-api.openpay.co/barcode/0101990000001065?width=1&height=45&text=false"
}
}
Devolver un cargo
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.
Nota: Solo se pueden hacer devoluciones de cargos a tarjeta.
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. |
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.co/v1/{MERCHANT_ID}/charges/{TRANSACTION_ID}/refund
Cliente
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges/{TRANSACTION_ID}/refund
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges/tr6cxbcefzatd10guvvw/refund \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"description" : "devolución",
"amount" : 100.00
} '
Ejemplo de respuesta
{
"id":"tr6cxbcefzatd10guvvw",
"amount":100.00,
"currency":"COP",
"iva":"10",
"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,
"bank_name":"BANCO DE BOGOTÁ",
"bank_code":"002"
},
"status":"completed",
"refund":{
"id":"trcbsmjkroqmjobxqhpb",
"amount":100.00,
"authorization":"801585",
"method":"card",
"operation_type":"out",
"transaction_type":"refund",
"status":"completed",
"currency":"COP",
"creation_date":"2018-05-26T13:56:21-05:00",
"operation_date":"2018-05-26T13:56:21-05:00",
"description":"devolucion",
"error_message":null,
"order_id":null,
"customer_id":"ag4nktpdzebjiye1tlze"
},
"creation_date":"2018-05-26T11:56:25-05:00",
"operation_date":"2018-05-26T11:56:25-05:00",
"description":"Cargo inicial a mi cuenta",
"error_message":null,
"order_id":"oid-00052",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Devolver un cargo
Definición
<?
Comercio
$charge = $openpay->charges->get(transactionId);
$charge->refund(refundData);
Cliente
$customer = $openpay->customers->get(customerId);
$charge = $customer->charges->get(transactionId);
$charge->refund(refundData);
?>
Ejemplo de petición con cliente
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab', 'CO');
$refundData = array(
'description' => 'devolución',
'amount' => 100);
$customer = $openpay->customers->get('ag4nktpdzebjiye1tlze');
$charge = $customer->charges->get('tr6cxbcefzatd10guvvw');
$charge->refund($refundData);
?>
Ejemplo de respuesta
{
"id":"tr6cxbcefzatd10guvvw",
"amount":100.00,
"currency":"COP",
"iva":"10",
"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,
"bank_name":"BANCO DE BOGOTÁ",
"bank_code":"002"
},
"status":"completed",
"refund":{
"id":"trcbsmjkroqmjobxqhpb",
"amount":100.00,
"authorization":"801585",
"method":"card",
"operation_type":"out",
"transaction_type":"refund",
"status":"completed",
"currency":"COP",
"creation_date":"2018-05-26T13:56:21-05:00",
"operation_date":"2018-05-26T13:56:21-05:00",
"description":"devolucion",
"error_message":null,
"order_id":null,
"customer_id":"ag4nktpdzebjiye1tlze"
},
"creation_date":"2018-05-26T11:56:25-05:00",
"operation_date":"2018-05-26T11:56:25-05:00",
"description":"Cargo inicial a mi cuenta",
"error_message":null,
"order_id":"oid-00052",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Devolver un cargo
Definición
//Cliente
openpayAPI.charges().refund(String customerId, RefundParams request);
//Comercio
openpayAPI.charges().refund(RefundParams request);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
RefundParams request = new RefundParams();
request.chargeId("tr6cxbcefzatd10guvvw");
request.description("Monto de cargo devuelto");
request.amount(new BigDecimal("100.00"));
Charge charge = api.charges().refund("ag4nktpdzebjiye1tlze", request);
Ejemplo de respuesta
{
"id":"tr6cxbcefzatd10guvvw",
"amount":100.00,
"currency":"COP",
"iva":"10",
"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,
"bank_name":"BANCO DE BOGOTÁ",
"bank_code":"002"
},
"status":"completed",
"refund":{
"id":"trcbsmjkroqmjobxqhpb",
"amount":100.00,
"authorization":"801585",
"method":"card",
"operation_type":"out",
"transaction_type":"refund",
"status":"completed",
"currency":"COP",
"creation_date":"2018-05-26T13:56:21-05:00",
"operation_date":"2018-05-26T13:56:21-05:00",
"description":"devolucion",
"error_message":null,
"order_id":null,
"customer_id":"ag4nktpdzebjiye1tlze"
},
"creation_date":"2018-05-26T11:56:25-05:00",
"operation_date":"2018-05-26T11:56:25-05:00",
"description":"Cargo inicial a mi cuenta",
"error_message":null,
"order_id":"oid-00052",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Devolver un cargo
Definición
//Cliente
openpayAPI.ChargeService.Refund(string customer_id, string transaction_id, string description);
//Comercio
openpayAPI.ChargeService.Refund(string transaction_id, string description);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Charge charge = api.ChargeService.Refund("ag4nktpdzebjiye1tlze", "tryqihxac3msedn4yxed", "Monto de cargo devuelto", , new Decimal(100.00));
Ejemplo de respuesta
{
"id":"tr6cxbcefzatd10guvvw",
"amount":100.00,
"currency":"COP",
"iva":"10",
"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,
"bank_name":"BANCO DE BOGOTÁ",
"bank_code":"002"
},
"status":"completed",
"refund":{
"id":"trcbsmjkroqmjobxqhpb",
"amount":100.00,
"authorization":"801585",
"method":"card",
"operation_type":"out",
"transaction_type":"refund",
"status":"completed",
"currency":"COP",
"creation_date":"2018-05-26T13:56:21-05:00",
"operation_date":"2018-05-26T13:56:21-05:00",
"description":"devolucion",
"error_message":null,
"order_id":null,
"customer_id":"ag4nktpdzebjiye1tlze"
},
"creation_date":"2018-05-26T11:56:25-05:00",
"operation_date":"2018-05-26T11:56:25-05:00",
"description":"Cargo inicial a mi cuenta",
"error_message":null,
"order_id":"oid-00052",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Obtener un cargo
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.
Obtener un cargo
Definición
Comercio
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/charges/{TRANSACTION_ID}
Comercio
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges/{TRANSACTION_ID}
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.co/v1/mzdtln3bqtms6o3kck2f/customers/ag9nkpvdzebjiye5tlzi/charges/tr6cxbcefzatd10guvvw \
-u sk_e562c42a6q384b2ab02cd47d2n301uwk:
Ejemplo de respuesta
{
"id": "trsc2di0dymydqkm5ieo",
"authorization": "194883321",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"id": "kdx205scoizh93upqbte",
"type": "credit",
"brand": "diners",
"address": null,
"card_number": "367284XXXX3333",
"holder_name": "DinnersClub",
"expiration_year": "21",
"expiration_month": "07",
"allows_charges": true,
"creation_date": "2019-08-09T13:35:48-05:00",
"bank_name": "BANCO DE BOGOTÁ",
"bank_code": "000"
},
"status": "completed",
"conciliated": true,
"creation_date": "2019-08-12T13:02:18-05:00",
"operation_date": "2019-08-12T13:02:18-05:00",
"description": "Ejemplo cargo",
"error_message": null,
"order_id": "oid-12331",
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2019-08-12T13:02:18-05:00",
"external_id": null
},
"fee": {
"amount": 21.8100,
"tax": 3.4896,
"currency": "COP"
}
}
Obtener un cargo
Definición
<?
Comercio
$charge = $openpay->charges->get(transactionId);
Cliente
$customer = $openpay->customers->get(customerId);
$charge = $customer->charges->get(transactionId);
?>
Ejemplo de petición con cliente
<?
$openpay = Openpay::getInstance('mzdtln3bqtms6o3kck2f', 'sk_e562c42a6q384b2ab02cd47d2n301uwk', 'CO');
$customer = $openpay->customers->get('ag9nkpvdzebjiye5tlzi');
$charge = $customer->charges->get('tr6cxbcefzatd10guvvw');
?>
Ejemplo de respuesta
{
"id": "trsc2di0dymydqkm5ieo",
"authorization": "194883321",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"id": "kdx205scoizh93upqbte",
"type": "credit",
"brand": "diners",
"address": null,
"card_number": "367284XXXX3333",
"holder_name": "DinnersClub",
"expiration_year": "21",
"expiration_month": "07",
"allows_charges": true,
"creation_date": "2019-08-09T13:35:48-05:00",
"bank_name": "BANCO DE BOGOTÁ",
"bank_code": "000"
},
"status": "completed",
"conciliated": true,
"creation_date": "2019-08-12T13:02:18-05:00",
"operation_date": "2019-08-12T13:02:18-05:00",
"description": "Ejemplo cargo",
"error_message": null,
"order_id": "oid-12331",
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2019-08-12T13:02:18-05:00",
"external_id": null
},
"fee": {
"amount": 21.8100,
"tax": 3.4896,
"currency": "COP"
}
}
Obtener un cargo
Definición
//Cliente
openpayAPI.charges().get(String customerId, String transactionId);
//Comercio
openpayAPI.charges().get(String transactionId);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Charge charge = api.charges().get("ag9nkpvdzebjiye5tlzi", "tr6cxbcefzatd10guvvw");
Ejemplo de respuesta
{
"id": "trsc2di0dymydqkm5ieo",
"authorization": "194883321",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"id": "kdx205scoizh93upqbte",
"type": "credit",
"brand": "diners",
"address": null,
"card_number": "367284XXXX3333",
"holder_name": "DinnersClub",
"expiration_year": "21",
"expiration_month": "07",
"allows_charges": true,
"creation_date": "2019-08-09T13:35:48-05:00",
"bank_name": "BANCO DE BOGOTÁ",
"bank_code": "000"
},
"status": "completed",
"conciliated": true,
"creation_date": "2019-08-12T13:02:18-05:00",
"operation_date": "2019-08-12T13:02:18-05:00",
"description": "Ejemplo cargo",
"error_message": null,
"order_id": "oid-12331",
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2019-08-12T13:02:18-05:00",
"external_id": null
},
"fee": {
"amount": 21.8100,
"tax": 3.4896,
"currency": "COP"
}
}
Obtener un cargo
Definición
//Cliente
openpayAPI.ChargeService.Get(string customer_id, string transaction_id);
//Comercio
openpayAPI.ChargeService.Get(string transaction_id);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Charge charge = api.ChargeService.Get("ag9nkpvdzebjiye5tlzi", "tryqihxac3msedn4yxed");
Ejemplo de respuesta
{
"id": "trsc2di0dymydqkm5ieo",
"authorization": "194883321",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"id": "kdx205scoizh93upqbte",
"type": "credit",
"brand": "diners",
"address": null,
"card_number": "367284XXXX3333",
"holder_name": "DinnersClub",
"expiration_year": "21",
"expiration_month": "07",
"allows_charges": true,
"creation_date": "2019-08-09T13:35:48-05:00",
"bank_name": "BANCO DE BOGOTÁ",
"bank_code": "000"
},
"status": "completed",
"conciliated": true,
"creation_date": "2019-08-12T13:02:18-05:00",
"operation_date": "2019-08-12T13:02:18-05:00",
"description": "Ejemplo cargo",
"error_message": null,
"order_id": "oid-12331",
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2019-08-12T13:02:18-05:00",
"external_id": null
},
"fee": {
"amount": 21.8100,
"tax": 3.4896,
"currency": "COP"
}
}
Listado de cargos
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 transacción 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.
Listado de cargos
Definición
Comercio
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/charges
Comercio
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges
Ejemplo de petición con cliente
curl -g "https://sandbox-api.openpay.co/v1/mzdtln3bqtms6o3kck2f/customers/ag9nkpvdzebjiye5tlzi/charges?creation[gte]=2018-11-01&limit=2" \
-u sk_e562c42a6q384b2ab02cd47d2n301uwk:
Ejemplo de respuesta
[
{
"id": "trsc2di0dymydqkm5ieo",
"authorization": "194883321",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"id": "kdx205scoizh93upqbte",
"type": "credit",
"brand": "diners",
"address": null,
"card_number": "367284XXXX3333",
"holder_name": "DinnersClub",
"expiration_year": "21",
"expiration_month": "07",
"allows_charges": true,
"creation_date": "2019-08-09T13:35:48-05:00",
"bank_name": "BANCO DE BOGOTÁ",
"bank_code": "000"
},
"status": "completed",
"conciliated": true,
"creation_date": "2019-08-12T13:02:18-05:00",
"operation_date": "2019-08-12T13:02:18-05:00",
"description": "Ejemplo cargo",
"error_message": null,
"order_id": "oid-12331",
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2019-08-12T13:02:18-05:00",
"external_id": null
},
"fee": {
"amount": 21.8100,
"tax": 3.4896,
"currency": "COP"
}
}
]
Listado de cargos
Definición
<?
Comercio
$chargeList = $openpay->charges->getList(searchParams);
Cliente
$customer = $openpay->customers->get(customerId);
$chargeList = $customer->charges->getList(searchParams);
?>
Ejemplo de petición con cliente
<?
$openpay = Openpay::getInstance('mzdtln3bqtms6o3kck2f', 'sk_e562c42a6q384b2ab02cd47d2n301uwk', 'CO');
$searchParams = array(
'creation[gte]' => '2018-11-01',
'creation[lte]' => '2019-11-01',
'offset' => 0,
'limit' => 2);
$customer = $openpay->customers->get('ag9nkpvdzebjiye5tlzi');
$chargeList = $customer->charges->getList($searchParams);
?>
Ejemplo de respuesta
[
{
"id": "trsc2di0dymydqkm5ieo",
"authorization": "194883321",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"id": "kdx205scoizh93upqbte",
"type": "credit",
"brand": "diners",
"address": null,
"card_number": "367284XXXX3333",
"holder_name": "DinnersClub",
"expiration_year": "21",
"expiration_month": "07",
"allows_charges": true,
"creation_date": "2019-08-09T13:35:48-05:00",
"bank_name": "BANCO DE BOGOTÁ",
"bank_code": "000"
},
"status": "completed",
"conciliated": true,
"creation_date": "2019-08-12T13:02:18-05:00",
"operation_date": "2019-08-12T13:02:18-05:00",
"description": "Ejemplo cargo",
"error_message": null,
"order_id": "oid-12331",
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2019-08-12T13:02:18-05:00",
"external_id": null
},
"fee": {
"amount": 21.8100,
"tax": 3.4896,
"currency": "COP"
}
}
]
Listado de cargos
Definición
//Cliente
openpayAPI.charges().list(String customerId, SearchParams request);
//Comercio
openpayAPI.charges().list(SearchParams request);
Ejemplo de petición con cliente
final Calendar dateGte = Calendar.getInstance();
final Calendar dateLte = Calendar.getInstance();
dateGte.set(2019, 5, 1, 0, 0, 0);
dateLte.set(2019, 5, 15, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "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("716"));
List<Charge> charges = api.charges().list("ag9nkpvdzebjiye5tlzi", request);
Ejemplo de respuesta
[
{
"id": "trsc2di0dymydqkm5ieo",
"authorization": "194883321",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"id": "kdx205scoizh93upqbte",
"type": "credit",
"brand": "diners",
"address": null,
"card_number": "367284XXXX3333",
"holder_name": "DinnersClub",
"expiration_year": "21",
"expiration_month": "07",
"allows_charges": true,
"creation_date": "2019-08-09T13:35:48-05:00",
"bank_name": "BANCO DE BOGOTÁ",
"bank_code": "000"
},
"status": "completed",
"conciliated": true,
"creation_date": "2019-08-12T13:02:18-05:00",
"operation_date": "2019-08-12T13:02:18-05:00",
"description": "Ejemplo cargo",
"error_message": null,
"order_id": "oid-12331",
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2019-08-12T13:02:18-05:00",
"external_id": null
},
"fee": {
"amount": 21.8100,
"tax": 3.4896,
"currency": "COP"
}
}
]
Listado de cargos
Definición
//Cliente
openpayAPI.ChargeService.List(string customer_id, SearchParams request = null);
//Comercio
openpayAPI.ChargeService.List(SearchParams request = null);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.CreationGte = new Datetime(2019, 5, 1);
request.CreationLte = new DateTime(2019, 5, 15);
request.Offset = 0;
request.Limit = 100;
request.Amount = new Decimal(716);
List<Charge> charges= openpayAPI.ChargeService.List("ag9nkpvdzebjiye5tlzi", request);
Ejemplo de respuesta
[
{
"id": "trsc2di0dymydqkm5ieo",
"authorization": "194883321",
"operation_type": "in",
"method": "card",
"transaction_type": "charge",
"card": {
"id": "kdx205scoizh93upqbte",
"type": "credit",
"brand": "diners",
"address": null,
"card_number": "367284XXXX3333",
"holder_name": "DinnersClub",
"expiration_year": "21",
"expiration_month": "07",
"allows_charges": true,
"creation_date": "2019-08-09T13:35:48-05:00",
"bank_name": "BANCO DE BOGOTÁ",
"bank_code": "000"
},
"status": "completed",
"conciliated": true,
"creation_date": "2019-08-12T13:02:18-05:00",
"operation_date": "2019-08-12T13:02:18-05:00",
"description": "Ejemplo cargo",
"error_message": null,
"order_id": "oid-12331",
"amount": 716,
"currency": "COP",
"iva": "10",
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2019-08-12T13:02:18-05:00",
"external_id": null
},
"fee": {
"amount": 21.8100,
"tax": 3.4896,
"currency": "COP"
}
}
]
Cobro con Link
Enviar a los clientes un link de cobro y comenzar a recibir pagos por las ventas.Permite realizar cobros a través de la generación de un link el cual puede ser compartido por medio de un email, redes sociales o bien por un mensaje de texto, de esta manera se logra que los comercios puedan recibir pagos con tarjetas de crédito, débito, puntos bancarios, transferencias interbancarias y/o efectivo en tiendas, todo esto sin la necesidad de que el comercio cuenta con un sitio web o app para realizar estos cobros.Con esto, Openpay busca que un gran número de comercios con o sin presencia digital, ofrezcan la posibilidad a sus clientes de hacer pagos rápidos con distintos medios de pago.
Crear Cobro con Link
Petición
Propiedad | Descripción |
---|---|
amount | numeric (requerido)Cantidad del cargo. Debe ser una cantidad mayor a cero. |
description | string (requerido longitud = 250) descripción asociada al cargo. |
order_id | string (opcional, longitud = 100)Identificador único del cargo. Debe ser único entre todas las transacciones. |
currency | string (requerido)Tipo de moneda del cargo. Soporta Pesos Colombianos (COP) y Dólares (USD) |
redirect_url | string (requerido)URL de redirección para una transaccion exitosa en el fomulario de pago de Openpay. |
expiration_date | datetime (opcional)Fecha de vigencia para hacer el pago formato ISO 8601. |
send_email | boolean (opcional)Indica si se desea enviar un email que direccione al formulario de pago de Openpay. |
customer | objeto (requerido)Información del cliente que realiza el cargo. |
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 |
Nota: Es posible enviar información adicional a la plataforma Openpay para almacenar datos adicionales del comercio.
Para utilizar esta característica es necesario enviar como parte del contenido, la propiedad metadata, el cual contendrá un listado de campos personalizados con la información propia del comercio.
Nota: Si desea crear un cliente y llevar un historial de sus cargos consulte como crear un cliente y realice el cobro con link a nivel cliente. cURL JAVA
Respuesta
Regresa una url con la información para continuar el pago PSE o una respuesta de error.
Nivel Comercio Ejemplo
curl https://sandbox-api.openpay.co/v1/mzdtln3bqtms6o3kck2f/checkouts \
-u sk_e562c42a6q384b2ab02cd47d2n301uwk:-H
"Content-type: application/json"-X POST -d ‘{
"amount" : 250,
"currency" : "COP",
"description" : "Cargo cobro con link",
”redirect_url" : ”https://misitioempresa.co",
"order_id" : "oid-12324",
"expiration_date" : "2021-08-31 12:50",
"send_email" : ”true",
"customer" : {
"name" : "Cliente Colombia",
"last_name" : "Vazquez Juarez",
"phone_number" : "4448936475",
"email" : "juan.vazquez@empresa.co"
"metadata": {
"registered_age_days": "0",
"payer_score": "0.168"
}
}
}'
Response
curl https://sandbox-api.openpay.co/v1/mzdtln3bqtms6o3kck2f/checkouts \
-u sk_e562c42a6q384b2ab02cd47d2n301uwk:-H
"Content-type: application/json"-X POST -d ‘{
"amount" : 250,
"currency" : "COP",
"description" : "Cargo cobro con link",
”redirect_url" : ”https://misitioempresa.co",
"order_id" : "oid-12324",
"expiration_date" : "2021-08-31 12:50",
"send_email" : ”true",
"customer" : {
"name" : "Cliente Colombia",
"last_name" : "Vazquez Juarez",
"phone_number" : "4448936475",
"email" : "juan.vazquez@empresa.co"
"metadata": {
"registered_age_days": "0",
"payer_score": "0.168"
}
}
}'
Nivel Cliente Ejemplo
{
"id": "ckkuubs3fjw1ntsenqbu",
"amount": 250.00,
"description": "Cargo cobro con link",
"order_id": "oid-1232ds4",
"currency": "COP",
"iva": "0",
"status": "available",
"checkout_link": "https://sandbox-api.openpay.co/ck/gaKR6fk49fo9",
"creation_date": "2024-11-26T18:31:40.226-0500",
"expiration_date": "2024-09-30T12:50:00.000-0500",
"customer": {
"name": "JUAN",
"email": "juan.vazquez@empresa.co",
"last_name": "VAZQUEZ JUAREZ",
"phone_number": "4448936475",
"external_id": null
}
}
Response
curl https://sandbox-api.openpay.pe/v1/mzdtln3bqtms6o3kck2f/customers/a7eeayo7jv1v4nayhyyg/checkouts \
-u sk_e562c42a6q384b2ab02cd47d2n301uwk:-H
"Content-type: application/json"-X POST -d ‘{
"amount" : 250,
"currency" : "COP",
"description" : "Cargo cobro con link cliente",
”redirect_url" : ”https://misitioempresa.co",
"order_id" : "oid-12324",
"send_email" : ”true"
"metadata": {
"asd": "0",
"payer_score": "0.168",
"nombre": "test"
}
}'
Response
{
"id": "ckut5zziseoutmr9dktc",
"amount": 250.00,
"description": "Cargo cobro con link cliente",
"order_id": "oid-1443",
"currency": "COP",
"iva": "0",
"status": "available",
"checkout_link": "https://sandbox-api.openpay.co/ck/IOQAqROm2M3x",
"creation_date": "2024-11-26T18:33:03.337-0500",
"expiration_date": null,
"customer": {
"name": "AURORA",
"email": "aurora.boreal@me.com",
"last_name": "BOREAL",
"phone_number": "579473947561",
"external_id": null
}
}
Nivel Comercio
Ejemplo
OpenpayAPI api = new OpenpayAPI(apiUrl, apiKey, merchantId);
Customer customer = new Customer();
customer.name("Juan");
customer.lastName("Valdez");
customer.email("juan_v@miempresa.co");
customer.phoneNumber("579473947561");
customer.requiresAccount(false);
Address customerAddress = new Address();
customerAddress.countryCode("CO");
customerAddress.city("Canta");
customerAddress.state("Lima");
customer.address(customerAddress);
CreateCheckoutParams checkoutParamsClient = new CreateCheckoutParams()
.amount(new BigDecimal("10.00")).description("cargo cobro con link Colombia").orderId("ascfdyusygaij").currency(Currency.USD)
.redirectUrl("https://misitioempresa.co").expirationDate("2021-08-31").sendEmail(true).customer(customer);api.checkouts()
.createCheckout(checkoutParamsClient);
Nivel Cliente
Ejemplo
OpenpayAPI api = new OpenpayAPI(apiUrl, apiKey, merchantId);
Customer existentCustomer = api.customers().get("a7eeayo7jv1v4nayhyyg");
CreateCheckoutParams checkoutParams = new CreateCheckoutParams().amount(new BigDecimal("10.00"))
.description("cargo cobro con link Colombia").orderId("ascfdyusygaij").currency(Currency.USD)
.redirectUrl("https://misitioempresa.co").expirationDate("2021-08-31").sendEmail(true);
api.checkouts().createCheckout(existentCustomer.getId(), checkoutParams);
Response
{
"id": "ckp4210mayo0pmfndmuc",
"amount": 10.00,
"description": "cargo cobro con link Colombia",
"order_id": "ascfdyusygaij",
"currency": "COP",
"status": "available",
"checkout_link": "https://sandbox-api.openpay.co/ck/488GT4TOcqwT",
"creation_date": "2021-08-12T14:32:47.806-0500",
"expiration_date": null,
"customer": {
"name": "Juan",
"email": "juan_v@miempresa.pe",
"last_name": ”Valdez",
"phone_number": "579473947561"
}
}
Reglas para creación de campos personalizados de antifraude
Conjunto de restricciones para el envío de campos personalizados de antifraude (pares de key/value de tipo string):
Regla | Descripción | Valor |
MAX_ALLOWED_METADATA | Cantidad máxima de campos permitidos. | 200 |
MAX_METADATA_KEY_SIZE | Longitud máxima de caracteres para el nombre de un campo. | 50 |
MAX_METADATA_VALUE_SIZE | Longitud máxima de caracteres para el valor de un campo. | 200 |
METADATA_KEY_PATTERN | Caracteres permitidos para el nombre de un campo. | A-Z, a-z, 0-9 y underscore _ |
Response
"metadata": {
"registered_age_days": "0",
"payer_score": "0.168",
"otro_campo_1": "Valor no debe exceder de 200 caracteres"
}
PSE
Los cargos a cuentas de banco se pueden realizar por medio de PSE. Al crear un pago PSE se genera una url para continuar el flujo de pago.
Se requiere la información de un cliente, o puede usarse el id de un cliente existente.
Con id de cliente existente
url
en el payment_method
se continúa el flujo para realizar el pago PSE. 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.
metadata
, el cual contendrá un listado de campos personalizados de antrifraude, con la información propia del comercio que se desea tomar en cuenta al momento de validar y aplicar un pago. Póngase en contacto con el departamento de soporte de Openpay para habilitar esta funcion. Petición
amountnumeric (requerido)
Cantidad del cargo. Debe ser una cantidad con valor entero mayor a cero.
Propiedad | Descripción |
---|---|
method | string (requerido) Debe contener el valor bank_account para indicar que el método de pago es PSE. |
currency | string (requerido) Tipo de moneda del pago. Por el momento solo se soportan 1 tipo de moneda: Pesos Colombianos(COP). |
iva | string (requerido) Debe contener el valor de IVA, es campo solo informativo, no tiene ningún efecto sobre el campo amount. |
description | string (requerido, longitud = 250) Una descripción asociada al pago. |
order_id | string (opcional, longitud = 100) Identificador único del pago. Debe ser único entre todos los pagos. |
redirect_url | string (requerido) Informa el sitio web al que el cliente será redirigido al finalizar el pago. |
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 |
Respuesta
Regresa una url con la información para continuar el pago PSE o una respuesta de error.
Con id de cliente existente
Definición
POST https://sandbox-api.openpay.co/v1/{{MERCHANT_ID}}/customers/{{CUSTOMER_ID}}/charges
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mr0w3azn2utpnldvgxkk/customers/ajazz9nirkarzbdd1nl7/charges \
-u sk_71ed83f6dcf84bfbb5847fea6b98bbdb: \
-H "Content-type: application/json" \
-X POST -d '{
"method" : "bank_account",
"amount" : 10000,
"currency" : "COP",
"description" : "Cargo inicial a mi cuenta",
"order_id" : "oid-12345",
"iva" : "1900",
"redirect_url":"https://www.openpay.co/"
}'
Ejemplo de respuesta
{ "id": "tr612azuencuooob8uiv", "authorization": null, "operation_type": "in", "transaction_type": "charge", "status": "in_progress", "conciliated": false, "iva": "1900", "creation_date": "2020-06-29T14:05:00-05:00", "operation_date": "2020-06-29T14:05:00-05:00", "description": "Cargo inicial a mi cuenta", "error_message": null, "order_id": "oid-12345", "customer_id": "ajazz9nirkarzbdd1nl7", "due_date": "2020-06-29T16:25:00-05:00", "amount": 10000.00, "payment_method": { "type": "redirect", "url": "https://sandbox-api.openpay.co/v1/mr0w3azn2utpnldvgxkk/charges/tr612azuencuooob8uiv/pse_capture" }, "currency": "COP", "method": "bank_account" }
Con id de cliente existente
Definición
<?
Comercio
$openpay->pses->create($pseRequest);
Cliente
$customer = $openpay->customers->get($customerId);
$customer->pses->create($pseRequest);
?>
Ejemplo de petición con comercio
<?
$openpay = Openpay::getInstance('mzdtln3bqtms6o3kck2f', 'sk_e562c42a6q384b2ab02cd47d2n301uwk', 'CO');
$customer = array(
'name' => 'Pedro',
'last_name' => 'Gutierrez',
'email' => 'pedro.gutierrez@company.co',
'phone_number' => '571983873875',
'requires_account' => false,
'customer_address' => array(
'department' => 'Medellín',
'city' => 'Antioquia',
'additional' => 'Avenida 7r bis #144-28 Apartamento 423'
)
);
$pseRequest = array(
'country' => 'COL',
'amount' => 10000,
'currency' => 'COP',
'description' => 'pago pse',
'order_id' => 'oid-12524',
'iva' => '190',
'customer' => $customer
);
$pse = $openpay->pses->create($pseRequest);
?>
Ejemplo de respuesta
{
"orderId":"oid-12524",
"redirect_url":"https://sandbox-api.openpay.mx/v1/maonhzpqm8xp2ydssovf/customers/ah8tdi7gr9zll6ejijuu/checkouts/ckqtz7smmjffvc4jgfko/pse"
}
Con id de cliente existente
Definición
Ejemplo de petición con comercio
Ejemplo de respuesta
{
"orderId":"oid-12524",
"redirect_url":"https://sandbox-api.openpay.mx/v1/maonhzpqm8xp2ydssovf/customers/ah8tdi7gr9zll6ejijuu/checkouts/ckqtz7smmjffvc4jgfko/pse"
}
Con id de cliente existente
Definición
//Cliente
openpayAPI.PseService.Create(string customer_id, PseRequest request);
//Comercio
openpayAPI.PseService.Create(PseRequest request);
Ejemplo de petición con comercio
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Customer customer = new Customer();
customer.Name = "Juan";
customer.LastName = "Vazquez Perez";
customer.PhoneNumber = "571627926831";
customer.Email = "juan.vazquez@empresa.co";
Address address = new Address();
address.Department = "Medellín";
address.City = "Antioquia";
address.Additional = "Avenida 18e bis #17-28 Apartamento 451";
customer.Address = address;
PseRequest request = new PseRequest();
request.Customer = customer;
request.Country = "COL";
request.Description = "Pago PSE";
request.Amount = 10000;
request.Iva = "190";
request.Currency = "COP";
request.OrderId = "oid-00051";
Pse pse = openpayAPI.PseService.Create(request);
Ejemplo de respuesta
{
"orderId":"oid-12524",
"redirect_url":"https://sandbox-api.openpay.mx/v1/maonhzpqm8xp2ydssovf/customers/ah8tdi7gr9zll6ejijuu/checkouts/ckqtz7smmjffvc4jgfko/pse"
}
Con nuevo cliente
url
en el payment_method
se continúa el flujo para realizar el pago PSE. 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.
metadata
, el cual contendrá un listado de campos personalizados de antrifraude, con la información propia del comercio que se desea tomar en cuenta al momento de validar y aplicar un pago. Póngase en contacto con el departamento de soporte de Openpay para habilitar esta funcion. Petición
Propiedad | Descripción |
---|---|
method | string (requerido) Debe contener el valor bank_account para indicar que el método es PSE. |
amount | numeric (requerido) Cantidad del cargo. Debe ser una cantidad con valor entero mayor a cero. |
currency | string (requerido) Tipo de moneda del pago. Por el momento solo se soportan 1 tipo de moneda: Pesos Colombianos(COP). |
iva | string (requerido) Debe contener el valor de IVA, es campo solo informativo, no tiene ningún efecto sobre el campo amount. |
description | string (requerido, longitud = 250) Una descripción asociada al pago. |
order_id | string (opcional, longitud = 100) Identificador único del pago. Debe ser único entre todos los pagos. |
customer | objeto (requerido) Información del cliente al que se le realiza el pago. 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 pago a nivel comercio Si desea crear un cliente y llevar un historial de sus pagos consulte como crear un cliente y realice el pago a nivel cliente. |
redirect_url | string (requerido) Informa el sitio web al que el cliente será redirigido al finalizar el pago. |
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 |
Respuesta
Regresa una url con la información para continuar el pago PSE o una respuesta de error.
Con nuevo cliente
Definición
POST https://sandbox-api.openpay.co/v1/{{MERCHANT_ID}}/charges
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mr0w3azn2utpnldvgxkk/charges \
-u sk_71ed83f6dcf84bfbb5847fea6b98bbdb: \
-H "Content-type: application/json" \
-X POST -d '{
"method" : "bank_account",
"amount" : 10000,
"currency" : "COP",
"description" : "Cargo inicial a mi cuenta",
"order_id" : "oid-12345",
"iva" : "1900",
"redirect_url":"https://www.openpay.co/",
"customer" : {
"name" : "Cliente Colombia",
"last_name" : "Vazquez Juarez",
"email" : "juan.vazquez@empresa.co",
"phone_number" : "4448936475",
"requires_account" : false,
"customer_address" : {
"department" : "Medellín",
"city" : "Antioquía",
"additional" : "Avenida 7m bis #174-25 Apartamento 637"
}
}
}'
Ejemplo de respuesta
{ "id": "trpfgkjvusju7u0tssmk", "authorization": null, "operation_type": "in", "transaction_type": "charge", "status": "in_progress", "conciliated": false, "iva": "1900", "creation_date": "2020-06-29T13:27:58-05:00", "operation_date": "2020-06-29T13:27:58-05:00", "description": "Cargo inicial a mi cuenta", "error_message": null, "order_id": "oid-12345", "due_date": "2020-06-29T13:47:58-05:00", "payment_method": { "type": "redirect", "url": "https://sandbox-api.openpay.co/v1/mr0w3azn2utpnldvgxkk/charges/trpfgkjvusju7u0tssmk/pse_capture" }, "currency": "COP", "amount": 10000.00, "customer": { "name": "Cliente Colombia", "last_name": "Vazquez Juarez", "email": "juan.vazquez@empresa.co", "phone_number": "4448936475", "address": null, "creation_date": "2020-06-29T13:27:58-05:00", "external_id": null, "customer_address": { "department": "Medellín", "city": "Antioquía", "additional": "Avenida 7m bis #174-25 Apartamento 637", "country": "CO" }, "clabe": null }, "method": "bank_account" }
Con nuevo cliente
Definición
<?
Comercio
$openpay->pses->create($pseRequest);
Cliente
$customer = $openpay->customers->get($customerId);
$customer->pses->create($pseRequest);
?>
Ejemplo de petición con comercio
<?
$openpay = Openpay::getInstance('mzdtln3bqtms6o3kck2f', 'sk_e562c42a6q384b2ab02cd47d2n301uwk', 'CO');
$customer = array(
'name' => 'Pedro',
'last_name' => 'Gutierrez',
'email' => 'pedro.gutierrez@company.co',
'phone_number' => '571983873875',
'requires_account' => false,
'customer_address' => array(
'department' => 'Medellín',
'city' => 'Antioquia',
'additional' => 'Avenida 7r bis #144-28 Apartamento 423'
)
);
$pseRequest = array(
'country' => 'COL',
'amount' => 10000,
'currency' => 'COP',
'description' => 'pago pse',
'order_id' => 'oid-12524',
'iva' => '190',
'customer' => $customer
);
$pse = $openpay->pses->create($pseRequest);
?>
Ejemplo de respuesta
{
"orderId":"oid-12524",
"redirect_url":"https://sandbox-api.openpay.mx/v1/maonhzpqm8xp2ydssovf/customers/ah8tdi7gr9zll6ejijuu/checkouts/ckqtz7smmjffvc4jgfko/pse"
}
Con nuevo cliente
Definición
Ejemplo de petición con comercio
Ejemplo de respuesta
{
"orderId":"oid-12524",
"redirect_url":"https://sandbox-api.openpay.mx/v1/maonhzpqm8xp2ydssovf/customers/ah8tdi7gr9zll6ejijuu/checkouts/ckqtz7smmjffvc4jgfko/pse"
}
Con nuevo cliente
Definición
//Cliente
openpayAPI.PseService.Create(string customer_id, PseRequest request);
//Comercio
openpayAPI.PseService.Create(PseRequest request);
Ejemplo de petición con comercio
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Customer customer = new Customer();
customer.Name = "Juan";
customer.LastName = "Vazquez Perez";
customer.PhoneNumber = "571627926831";
customer.Email = "juan.vazquez@empresa.co";
Address address = new Address();
address.Department = "Medellín";
address.City = "Antioquia";
address.Additional = "Avenida 18e bis #17-28 Apartamento 451";
customer.Address = address;
PseRequest request = new PseRequest();
request.Customer = customer;
request.Country = "COL";
request.Description = "Pago PSE";
request.Amount = 10000;
request.Iva = "190";
request.Currency = "COP";
request.OrderId = "oid-00051";
Pse pse = openpayAPI.PseService.Create(request);
Ejemplo de respuesta
{
"orderId":"oid-12524",
"redirect_url":"https://sandbox-api.openpay.mx/v1/maonhzpqm8xp2ydssovf/customers/ah8tdi7gr9zll6ejijuu/checkouts/ckqtz7smmjffvc4jgfko/pse"
}
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 para despues realizar transacciones de Cargo
Objeto Cliente
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. |
creation_date | datetime Fecha en que se creó el nuevo cliente. |
external_id | string Identificador externo único para el cliente asignado por el comercio. |
customer_address | object Dirección del Cliente. Usada comúnmente como dirección de envío. |
clabe | string No tiene uso por el momento. |
Objeto Cliente
Ejemplo de objeto
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address" : null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Objeto Cliente
Ejemplo de objeto
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address" : null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Objeto Cliente
Ejemplo de objeto
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address" : null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Objeto Cliente
Ejemplo de objeto
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address" : null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Crear un nuevo cliente
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. Para usar módulo PSE este campo debe ir en false. |
phone_number | string (opcional, longitud = 100) Número telefónico del Cliente. |
customer_address | object (opcional) Dirección del Cliente. Usada comúnmente como dirección de envío. |
Respuesta
Un objeto cliente en caso que se hayan enviado todos los datos correctamente, o una respuesta de error si ocurrió algún problema en la creación.
Crear un nuevo cliente
Definición
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
'external_id' : '',
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number" : "5744484951",
"customer_address": {
"department":"Medellín",
"city":"Antioquía",
"additional":"Avenida 7f bis # 138-58 Apartamento 942"
}
}'
Ejemplo de respuesta
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Crear un nuevo cliente
Definición
<?
$customer = $openpay->customers->add(customerData);
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab', 'CO');
$customerData = array(
'external_id' => '',
'name' => 'Pedro Diego',
'last_name' => 'Alatorre Martínez',
'email' => 'pedro.alatorre@comercio.com',
'phone_number' => '16362801',
'customer_address' => array(
'department' => 'Medellín',
'city' => 'Antioquía',
'additional' => 'Avenida 7f bis # 138-58 Apartamento 942'
)
);
$customer = $openpay->customers->add($customerData);
?>
Ejemplo de respuesta
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Crear un nuevo cliente
Definición
openpayAPI.customers().create(Customer customer);
Ejemplo de petición
Ejemplo de respuesta
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Crear un nuevo cliente
Definición
openpayAPI.CustomerService.Create(Customer customer);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Customer request = new Customer();
request.ExternalId = "idExterno0101";
request.Name = "Pedro Diego";
request.LastName = "Alatorre Martínez";
request.Email = "pedro.alatorre@comercio.com";
request.PhoneNumber = "16362801";
request.RequiresAccount = false;
CustomerAddress customerAddress = new CustomerAddress();
customerAddress.Department = "Medellín";
customerAddress.City = "Bogota";
customerAddress.Additional = "Avenida 7f bis # 138-58 Apartamento 942";
request.CustomerAddress = customerAddress;
request = api.CustomerService.Create(request);
Ejemplo de respuesta
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Actualizar un cliente
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. |
customer_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.
Actualizar un cliente
Definición
PUT https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/anbnldwgni1way3yp2dw \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X PUT -d '{
"name": "customer name",
"email": "customer_email@me.com",
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"phone_number":"16362801"
}'
Ejemplo de respuesta
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Actualizar un cliente
Definición
<?
$customer = $openpay->customers->get(customerId);
$customer->save();
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$customer->name = 'Juan';
$customer->last_name = 'Godinez';
$customer->save();
?>
Ejemplo de respuesta
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Actualizar un cliente
Definición
openpayAPI.customers().update(Customer customer);
Ejemplo de petición
Ejemplo de respuesta
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Actualizar un cliente
Definición
openpayAPI.CustomerService.Update(Customer customer);
Ejemplo de petición
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 = "16362801";
CustomerAddress customerAddress = new CustomerAddress();
customerAddress.Department = "Medellín";
customerAddress.City = "Antioquia";
customerAddress.Additional = "Avenida 11e bis #152-43 Apartamento 508";
request.CustomerAddress = customerAddress;
request = api.CustomerService.Update(request);
Ejemplo de respuesta
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Obtener un cliente existente
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.
Obtener un cliente existente
Definición
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/anbnldwgni1way3yp2dw \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json"
Ejemplo de respuesta
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Obtener un cliente existente
Definición
<?
$customer = $openpay->customers->get(customerId);
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
?>
Ejemplo de respuesta
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Obtener un cliente existente
Definición
openpayAPI.customers().get(String customerId);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Customer customer = api.customers().get("a9pvykxz4g5rg0fplze0");
Ejemplo de respuesta
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Obtener un cliente existente
Definición
openpayAPI.CustomerService.Update(string customer_id);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Customer customer = api.CustomerService.Update("a9pvykxz4g5rg0fplze0");
Ejemplo de respuesta
{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}
Eliminar un cliente
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.
Eliminar un cliente
Definición
DELETE https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/anbnldwgni1way3yp2dw \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X DELETE
Eliminar un cliente
Definición
<?
$customer = $openpay->customers->get(customerId);
$customer->delete();
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$customer->delete();
?>
Eliminar un cliente
Definición
openpayAPI.customers().delete(String customerId);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.customers().delete("a9pvykxz4g5rg0fplze0");
Eliminar un cliente
Definición
openpayAPI.CustomerService.Delete(string customer_id);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.CustomerService.Delete("a9pvykxz4g5rg0fplze0");
Listado de clientes
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.
Listado de clientes
Definición
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers
Ejemplo de petición
curl -g "https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers?creation[gte]=2013-11-01&limit=2" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json"
Ejemplo de respuesta
[{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}]
Listado de clientes
Definición
<?
$customerList = $openpay->customers->getList(findDataRequest);
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$findDataRequest = array(
'creation[gte]' => '2018-01-01',
'creation[lte]' => '2018-12-31',
'offset' => 0,
'limit' => 5);
$customerList = $openpay->customers->getList($findDataRequest);
?>
Ejemplo de respuesta
[{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}]
Listado de clientes
Definición
openpayAPI.customers().list(SearchParams request);
Ejemplo de petición
final Calendar dateGte = Calendar.getInstance();
final Calendar dateLte = Calendar.getInstance();
dateGte.set(2018, 5, 1, 0, 0, 0);
dateLte.set(2018, 5, 15, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "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);
Ejemplo de respuesta
[{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}]
Listado de clientes
Definición
openpayAPI.CustomerService.List(SearchParams request = null);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.CreationGte = new Datetime(2018, 5, 1);
request.CreationLte = new DateTime(2018, 5, 15);
request.Offset = 0;
request.Limit = 100;
List<Customer> customers = api.CustomerService.List(request);
Ejemplo de respuesta
[{
"id": "awfx3738muksxzgrynwb",
"name": "Pedro Diego",
"last_name": "Alatorre Martínez",
"email": "pedro.alatorre@comercio.com",
"phone_number": "5744484951",
"status": "active",
"balance": 0.00,
"creation_date": "2018-10-31T11:39:21-06:00",
"external_id": null,
"address": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7f bis # 138-58 Apartamento 942"
},
"clabe": null
}]
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
Propiedad | Descripción |
---|---|
id | string Identificador único de la tarjeta. |
creation_date | datetime Fecha y hora en que se creó la tarjeta en formato ISO 8601 |
holder_name | string Nombre del tarjeta habiente. |
card_number | numeric Número de tarjeta, puede ser de 16 o 19 dígitos. |
cvv2 | numeric Código de seguridad como aparece en la parte de atrás de la tarjeta. Generalmente 3 dígitos. |
expiration_month | numeric Mes de expiración tal como aparece en la tarjeta. |
expiration_year | numeric Año de expiración tal como aparece en la tarjeta. |
address | object Por el momento no se usa. |
allows_charges | boolean Permite conocer si se pueden realizar cargos 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. |
Objeto Tarjeta
Ejemplo de objeto
{
"type":"debit",
"brand":"mastercard",
"address":null,
"id":"kgipbqixvjg3gbzowl7l",
"card_number":"1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-12-12T17:50:00-06:00",
"bank_name":"BANCO DE COLOMBIA",
"bank_code":"000",
"customer_id":"a2b79p8xmzeyvmolqfja"
}
Objeto Tarjeta
Ejemplo de objeto
{
"type":"debit",
"brand":"mastercard",
"address":null,
"id":"kgipbqixvjg3gbzowl7l",
"card_number":"1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-12-12T17:50:00-06:00",
"bank_name":"BANCO DE COLOMBIA",
"bank_code":"000",
"customer_id":"a2b79p8xmzeyvmolqfja"
}
Objeto Tarjeta
Ejemplo de objeto
{
"type":"debit",
"brand":"mastercard",
"address":null,
"id":"kgipbqixvjg3gbzowl7l",
"card_number":"1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-12-12T17:50:00-06:00",
"bank_name":"BANCO DE COLOMBIA",
"bank_code":"000",
"customer_id":"a2b79p8xmzeyvmolqfja"
}
Objeto Tarjeta
Ejemplo de objeto
{
"type":"debit",
"brand":"mastercard",
"address":null,
"id":"kgipbqixvjg3gbzowl7l",
"card_number":"1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-12-12T17:50:00-06:00",
"bank_name":"BANCO DE COLOMBIA",
"bank_code":"000",
"customer_id":"a2b79p8xmzeyvmolqfja"
}
Crear una tarjeta
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.
Nota: Todas las tarjetas al momento de guardarse en Openpay son validadas haciendo un autorización por $10.00 los cuales son devueltos en el momento.
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) Numero de tarjeta puede ser de 16 o 19 dígitos. |
cvv2 | numeric (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. |
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
Definición
Comercio
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/cards
Cliente
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"holder_name":"DinnersClub",
"card_number":"36728481533333",
"cvv2":"651",
"expiration_month":"07",
"expiration_year":"21",
"device_session_id" : "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f"
}'
Ejemplo de respuesta
{
"id": "kulqltitbq0wnk3l2q3c",
"type": "debit",
"brand": "visa",
"address": null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-05-21T17:31:01-05:00",
"bank_name":"BBVA",
"bank_code":"000"
}
Crear una tarjeta
Definición
<?
//Cliente
$customer = $openpay->customers->get(customerId);
$card = $customer->cards->add(cardDataRequest);
//Comercio
$card = $openpay->cards->add(cardDataRequest);
?>
Ejemplo de petición con cliente
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$cardDataRequest = array(
'holder_name' => 'Teofilo Velazco',
'card_number' => '4916394462033681',
'cvv2' => '123',
'expiration_month' => '12',
'expiration_year' => '15',
'device_session_id' => 'kR1MiQhz2otdIuUlQkbEyitIqVMiI16f'
);
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$card = $customer->cards->add($cardDataRequest);
?>
Ejemplo de respuesta
{
"id": "kulqltitbq0wnk3l2q3c",
"type": "debit",
"brand": "visa",
"address": null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-05-21T17:31:01-05:00",
"bank_name":"BBVA",
"bank_code":"000"
}
Crear una tarjeta
Definición
//Cliente
openpayAPI.cards().create(String customerId, Card request);
//Comercio
openpayAPI.cards().create(Card request);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "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");
request = api.cards().create("a9pvykxz4g5rg0fplze0", request);
Ejemplo de respuesta
{
"id": "kulqltitbq0wnk3l2q3c",
"type": "debit",
"brand": "visa",
"address": null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-05-21T17:31:01-05:00",
"bank_name":"BBVA",
"bank_code":"000"
}
Crear una tarjeta
Definición
//Cliente
openpayAPI.CardService.Create(string customer_id, Card card);
//Comercio
openpayAPI.CardService.Create(Card card);
Ejemplo de petición con cliente
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";
request = api.CardService.Create("a9pvykxz4g5rg0fplze0", request);
Ejemplo de respuesta
{
"id": "kulqltitbq0wnk3l2q3c",
"type": "debit",
"brand": "visa",
"address": null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-05-21T17:31:01-05:00",
"bank_name":"BBVA",
"bank_code":"000"
}
Crear una tarjeta con token
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
Crear una tarjeta con token
Definición
Comercio
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/cards
Cliente
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"token_id":"tokgslwpdcrkhlgxqi9a",
"device_session_id":"8VIoXj0hN5dswYHQ9X1mVCiB72M7FY9o"
}'
Ejemplo de respuesta
{
"id": "kh6u8t1agrjhh4sz3vlt",
"type": "debit",
"brand": "visa",
"address": null,
"card_number": "457562XXXXXX0326",
"holder_name": "Jorge Lopez",
"expiration_year": "19",
"expiration_month": "12",
"allows_charges": true,
"creation_date": "2019-08-12T13:14:34-05:00",
"bank_name": "BBVA COLOMBIA",
"bank_code": "000",
"customer_id":"a2b79p8xmzeyvmolqfja"
}
Crear una tarjeta con token
Definición
<?
//Cliente
$customer = $openpay->customers->get(customerId);
$card = $customer->cards->add(cardDataRequest);
//Comercio
$card = $openpay->cards->add(cardDataRequest);
?>
Ejemplo de petición con cliente
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$cardDataRequest = array(
'token_id' => 'tokgslwpdcrkhlgxqi9a',
'device_session_id' => '8VIoXj0hN5dswYHQ9X1mVCiB72M7FY9o'
);
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$card = $customer->cards->add($cardDataRequest);
?>
Ejemplo de respuesta
{
"id": "kh6u8t1agrjhh4sz3vlt",
"type": "debit",
"brand": "visa",
"address": null,
"card_number": "457562XXXXXX0326",
"holder_name": "Jorge Lopez",
"expiration_year": "19",
"expiration_month": "12",
"allows_charges": true,
"creation_date": "2019-08-12T13:14:34-05:00",
"bank_name": "BBVA COLOMBIA",
"bank_code": "000",
"customer_id":"a2b79p8xmzeyvmolqfja"
}
Crear una tarjeta con token
Definición
//Cliente
openpayAPI.cards().create(String customerId, Card card);
//Comercio
openpayAPI.cards().create(Card card);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Card request = new Card();
request.tokenId("tokgslwpdcrkhlgxqi9a");
request.deviceSessionId("8VIoXj0hN5dswYHQ9X1mVCiB72M7FY9o");
request = api.cards().create("a9pvykxz4g5rg0fplze0", request);
Ejemplo de respuesta
{
"id": "kh6u8t1agrjhh4sz3vlt",
"type": "debit",
"brand": "visa",
"address": null,
"card_number": "457562XXXXXX0326",
"holder_name": "Jorge Lopez",
"expiration_year": "19",
"expiration_month": "12",
"allows_charges": true,
"creation_date": "2019-08-12T13:14:34-05:00",
"bank_name": "BBVA COLOMBIA",
"bank_code": "000",
"customer_id":"a2b79p8xmzeyvmolqfja"
}
Crear una tarjeta con token
Definición
//Cliente
openpayAPI.CardService.Create(string customer_id, Card request);
//Comercio
openpayAPI.CardService.Create(Card request);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Card request = new Card();
request.TokenId = "tokgslwpdcrkhlgxqi9a";
request.DeviceSessionId = "8VIoXj0hN5dswYHQ9X1mVCiB72M7FY9o";
request = api.CardService.Create("a9pvykxz4g5rg0fplze0", request);
Ejemplo de respuesta
{
"id": "kh6u8t1agrjhh4sz3vlt",
"type": "debit",
"brand": "visa",
"address": null,
"card_number": "457562XXXXXX0326",
"holder_name": "Jorge Lopez",
"expiration_year": "19",
"expiration_month": "12",
"allows_charges": true,
"creation_date": "2019-08-12T13:14:34-05:00",
"bank_name": "BBVA COLOMBIA",
"bank_code": "000",
"customer_id":"a2b79p8xmzeyvmolqfja"
}
Obtener una tarjeta
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
Obtener una tarjeta
Definición
Comercio
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/cards/{CARD_ID}
Cliente
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards/ktrpvymgatocelsciak7 \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json"
Ejemplo de respuesta
{
"id": "kulqltitbq0wnk3l2q3c",
"type": "debit",
"brand": "visa",
"address": null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-05-21T17:31:01-05:00",
"bank_name":"BBVA",
"bank_code":"000"
}
Obtener una tarjeta
Definición
<?
//Cliente
$customer = $openpay->customers->get(customerId);
$card = $customer->cards->get(cardId);
//Comercio
$card = $openpay->cards->get(cardId);
?>
Ejemplo de petición con cliente
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$card = $customer->cards->get('k9pn8qtsvr7k7gxoq1r5');
?>
Ejemplo de respuesta
{
"id": "kulqltitbq0wnk3l2q3c",
"type": "debit",
"brand": "visa",
"address": null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-05-21T17:31:01-05:00",
"bank_name":"BBVA",
"bank_code":"000"
}
Obtener una tarjeta
Definición
//Cliente
openpayAPI.cards().get(String customerId, String cardId);
//Comercio
openpayAPI.cards().get(String cardId);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Card card = api.cards().get("a9pvykxz4g5rg0fplze0", "ktrpvymgatocelsciak7");
Ejemplo de respuesta
{
"id": "kulqltitbq0wnk3l2q3c",
"type": "debit",
"brand": "visa",
"address": null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-05-21T17:31:01-05:00",
"bank_name":"BBVA",
"bank_code":"000"
}
Obtener una tarjeta
Definición
//Cliente
openpayAPI.CardService.Get(string customer_id, string card_id);
//Comercio
openpayAPI.CardService.Get(string card_id);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Card card = api.CardService.Get("a9pvykxz4g5rg0fplze0", "ktrpvymgatocelsciak7");
Ejemplo de respuesta
{
"id": "kulqltitbq0wnk3l2q3c",
"type": "debit",
"brand": "visa",
"address": null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-05-21T17:31:01-05:00",
"bank_name":"BBVA",
"bank_code":"000"
}
Eliminar una tarjeta
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.
Eliminar una tarjeta
Definición
Comercio
DELETE https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/cards/{CARD_ID}
Cliente
DELETE https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards/ktrpvymgatocelsciak7 \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-X DELETE
Eliminar una tarjeta
Definición
<?
//Cliente
$customer = $openpay->customers->get(customerId);
$card = $customer->cards->get(cardId);
$card->delete();
//Comercio
$card = $openpay->cards->get(cardId);
$card->delete();
?>
Ejemplo de petición con cliente
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$card = $customer->cards->get('k9pn8qtsvr7k7gxoq1r5');
$card->delete();
?>
Eliminar una tarjeta
Definición
//Cliente
openpayAPI.cards().delete(String customerId, String cardId);
//Comercio
openpayAPI.cards().delete(String cardId);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.cards().delete("a9pvykxz4g5rg0fplze0", "ktrpvymgatocelsciak7");
Eliminar una tarjeta
Definición
//Cliente
openpayAPI.CardService.Delete(string customer_id, string card_id);
//Comercio
openpayAPI.CardService.Delete(string card_id);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.CardService.Delete("a9pvykxz4g5rg0fplze0", "ktrpvymgatocelsciak7");
Listado de tarjetas
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.
Listado de tarjetas
Definición
Comercio
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers
Cliente
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards
Ejemplo de petición con cliente
curl -g "https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards?limit=2" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
Ejemplo de respuesta
[
{
"id": "kulqltitbq0wnk3l2q3c",
"type": "debit",
"brand": "visa",
"address": null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-05-21T17:31:01-05:00",
"bank_name":"BBVA",
"bank_code":"000"
},
{
"id":"kgjy0jiami01kkpdoywr",
"type":"debit",
"brand":"mastercard",
"address": null,
"card_number":"1111",
"holder_name":"Pedro Paramo",
"expiration_year":"15",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2013-11-19T13:26:12-06:00",
"bank_name":"BBVA BANCOMER",
"bank_code":"012"
}
]
Listado de tarjetas
Definición
<?
//Clientes
$customer = $openpay->customers->get(customerId);
$cardList = $customer->cards->getList(findDataRequest);
//Comercio
$cardList = $openpay->cards->getList(findDataRequest);
?>
Ejemplo de petición con cliente
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$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);
?>
Ejemplo de respuesta
[
{
"id": "kulqltitbq0wnk3l2q3c",
"type": "debit",
"brand": "visa",
"address": null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-05-21T17:31:01-05:00",
"bank_name":"BBVA",
"bank_code":"000"
},
{
"id":"kgjy0jiami01kkpdoywr",
"type":"debit",
"brand":"mastercard",
"address": null,
"card_number":"1111",
"holder_name":"Pedro Paramo",
"expiration_year":"15",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2013-11-19T13:26:12-06:00",
"bank_name":"BBVA BANCOMER",
"bank_code":"012"
}
]
Listado de tarjetas
Definición
//Cliente
openpayAPI.cards().list(String customerId, SearchParams request);
//Comercio
openpayAPI.cards().list(SearchParams request);
Ejemplo de petición con cliente
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.co", "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);
Ejemplo de respuesta
[
{
"id": "kulqltitbq0wnk3l2q3c",
"type": "debit",
"brand": "visa",
"address": null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-05-21T17:31:01-05:00",
"bank_name":"BBVA",
"bank_code":"000"
},
{
"id":"kgjy0jiami01kkpdoywr",
"type":"debit",
"brand":"mastercard",
"address": null,
"card_number":"1111",
"holder_name":"Pedro Paramo",
"expiration_year":"15",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2013-11-19T13:26:12-06:00",
"bank_name":"BBVA BANCOMER",
"bank_code":"012"
}
]
Listado de tarjetas
Definición
//Cliente
openpayAPI.CardService.List(string customer_id, SearchParams request = null);
//Comercio
openpayAPI.CardService.List(SearchParams request = null);
Ejemplo de petición con cliente
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);
Ejemplo de respuesta
[
{
"id": "kulqltitbq0wnk3l2q3c",
"type": "debit",
"brand": "visa",
"address": null,
"card_number":"411111XXXXXX1111",
"holder_name":"Juan Perez Ramirez",
"expiration_year":"20",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2018-05-21T17:31:01-05:00",
"bank_name":"BBVA",
"bank_code":"000"
},
{
"id":"kgjy0jiami01kkpdoywr",
"type":"debit",
"brand":"mastercard",
"address": null,
"card_number":"1111",
"holder_name":"Pedro Paramo",
"expiration_year":"15",
"expiration_month":"12",
"allows_charges":true,
"creation_date":"2013-11-19T13:26:12-06:00",
"bank_name":"BBVA BANCOMER",
"bank_code":"012"
}
]
Actualizar tarjeta
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.
Actualizar tarjeta
Definición
Comercio
PUT https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/cards/{CARD_ID}
Cliente
PUT https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards/kysc8pycq8hnlzivk1x4 \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X PUT -d '{
"cvv2":"000"
}'
Ejemplo de respuesta
{
}
Actualizar tarjeta
Definición
Comercio
PUT https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/cards/{CARD_ID}
Cliente
PUT https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}
Ejemplo de petición con cliente
Ejemplo de respuesta
{
}
Actualizar tarjeta
Definición
Comercio
PUT https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/cards/{CARD_ID}
Cliente
PUT https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}
Ejemplo de petición con cliente
Ejemplo de respuesta
{
}
Actualizar tarjeta
Definición
Comercio
PUT https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/cards/{CARD_ID}
Cliente
PUT https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}
Ejemplo de petición con cliente
Ejemplo de respuesta
{
}
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
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 aplicara cada vez que se cobre la suscripción. Debe ser una cantidad mayor a cero. |
currency | string Moneda usada en la operación, requerida |
repeat_every | numeric 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 | string Especifica la frecuencia de cobro. Puede ser semanal(week), mensual(month) o anual(year). |
retry_times | numeric Numero 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 Numero de días de prueba por defecto que tendrá la suscripción. |
Objeto Plan
Ejemplo de objeto
{
"name": "Curso de ingles",
"status": "active",
"amount": 150,
"currency": "COP",
"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
}
Objeto Plan
Ejemplo de objeto
{
"name": "Curso de ingles",
"status": "active",
"amount": 150,
"currency": "COP",
"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
}
Objeto Plan
Ejemplo de objeto
{
"name": "Curso de ingles",
"status": "active",
"amount": 150,
"currency": "COP",
"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
}
Objeto Plan
Ejemplo de objeto
{
"name": "Curso de ingles",
"status": "active",
"amount": 150,
"currency": "COP",
"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
}
Crear un nuevo plan
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 aplicara cada vez que se cobre la suscripción. Debe ser una cantidad mayor a cero. |
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) Numero 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) Numero 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.
Crear un nuevo plan
Definición
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/plans
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/plans \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X POST -d '{
"amount": 150,
"status_after_retry": "cancelled",
"retry_times": 2,
"name": "Curso de ingles",
"repeat_unit": "month",
"trial_days": "30",
"repeat_every": "1"
}'
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de ingles",
"status":"active",
"amount":150,
"currency":"COP",
"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
}
Crear un nuevo plan
Definición
<?
$plan = $openpay->plans->add(planDataRequest);
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$planDataRequest = array(
'amount' => 150,
'status_after_retry' => 'cancelled',
'retry_times' => 2,
'name' => 'Plan Curso Verano',
'repeat_unit' => 'month',
'trial_days' => '30',
'repeat_every' => '1',
'currency' => 'COP');
$plan = $openpay->plans->add($planDataRequest);
?>
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de ingles",
"status":"active",
"amount":150,
"currency":"COP",
"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
}
Crear un nuevo plan
Definición
openpayAPI.plans().create(Plan request);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Plan request = new Plan();
request.name("Curso de ingles");
request.amount(new BigDecimal("150"));
request.repeatEvery(1, PlanRepeatUnit.WEEK);
request.retryTimes(3);
request.statusAfterRetry(PlanStatusAfterRetry.UNPAID);
request.trialDays(30);
request = api.plans().create(request);
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de ingles",
"status":"active",
"amount":150,
"currency":"COP",
"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
}
Crear un nuevo plan
Definición
openpayAPI.PlanService.Create(Plan plan);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Plan request = new Plan();
request.Name = "Curso de ingles";
request.Amount = new Decimal(150);
request.RepeatEvery = 1;
request.RepeatUnit = "week";
request.RetryTimes = 2;
request.StatusAfterRetry = "unpaid";
request.TrialDays = 30;
request = api.PlanService.Create(request);
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de ingles",
"status":"active",
"amount":150,
"currency":"COP",
"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
}
Actualizar un plan existente
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) Numero 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.
Actualizar un plan existente
Definición
PUT https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/plans/{PLAN_ID}
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/plans/p8e6x3hafqqsbmnoevrt \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json" \
-X PUT -d '{
"name": "Curso de aleman",
"trial_days": "60"
}'
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de aleman",
"status":"active",
"amount":150,
"currency":"COP",
"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
}
Actualizar un plan existente
Definición
<?
$plan = $openpay->plans->get(planId);
$plan->save();
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$plan = $openpay->plans->get('pduar9iitv4enjftuwyl');
$plan->name = 'Plan Curso de Verano 2014';
$plan->save();
?>
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de aleman",
"status":"active",
"amount":150,
"currency":"COP",
"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
}
Actualizar un plan existente
Definición
openpayAPI.plans().update(Plan request);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Plan request = new Plan();
request.setId("p8e6x3hafqqsbmnoevrt");
request.name("Curso de ingles");
request.trialDays(30);
request = api.plans().update(request);
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de aleman",
"status":"active",
"amount":150,
"currency":"COP",
"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
}
Actualizar un plan existente
Definición
openpayAPI.PlanService.Update(Plan plan);
Ejemplo de petición
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);
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de aleman",
"status":"active",
"amount":150,
"currency":"COP",
"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
}
Obtener un plan
Obtiene los detalles de un plan.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador del plan. |
Respuesta
Regresa un objeto plan
Obtener un plan
Definición
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/plans/{PLAN_ID}
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/plans/p8e6x3hafqqsbmnoevrt \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de aleman",
"status":"active",
"amount":150,
"currency":"COP",
"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
}
Obtener un plan
Definición
<?
$plan = $openpay->plans->get(planId);
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$plan = $openpay->plans->get('pduar9iitv4enjftuwyl');
?>
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de aleman",
"status":"active",
"amount":150,
"currency":"COP",
"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
}
Obtener un plan
Definición
openpayAPI.plans().get(String planId);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Plan plan = api.plans().get("p8e6x3hafqqsbmnoevrt");
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de aleman",
"status":"active",
"amount":150,
"currency":"COP",
"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
}
Obtener un plan
Definición
openpayAPI.PlanService.Get(string plan_id);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Plan plan = api.PlanService.Get("p8e6x3hafqqsbmnoevrt");
Ejemplo de respuesta
{
"id":"p8e6x3hafqqsbmnoevrt",
"name":"Curso de aleman",
"status":"active",
"amount":150,
"currency":"COP",
"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
}
Eliminar un plan
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.
Eliminar un plan
Definición
DELETE https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/plans/{PLAN_ID}
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/plans/p8e6x3hafqqsbmnoevrt \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-X DELETE
Eliminar un plan
Definición
<?
$customer = $openpay->customers->get(customerId);
$plan = $openpay->plans->get(planId);
$plan->delete();
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$plan = $openpay->plans->get('pduar9iitv4enjftuwyl');
$plan->delete();
?>
Eliminar un plan
Definición
openpayAPI.plans().delete(String planId);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.plans().delete("p8e6x3hafqqsbmnoevrt");
Eliminar un plan
Definición
openpayAPI.PlanService.Delete(string plan_id);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.PlanService.Delete("p8e6x3hafqqsbmnoevrt");
Listado de planes
Regresa los detalles de todos los planes que están activos.
Petición
Se puede 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.
Listado de planes
Definición
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/plans
Ejemplo de petición
curl -g "https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/plans?limit=10" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
Ejemplo de respuesta
[
{
"name": "Curso de aleman",
"status": "active",
"amount": 150,
"currency": "COP",
"id": "patpflacwilazguj6bem",
"creation_date": "2019-05-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": "COP",
"id": "pjl7wfryrrd1tznr0fnl",
"creation_date": "2019-05-13T11:36:40-06:00",
"repeat_every": 1,
"repeat_unit": "month",
"retry_times": 2,
"status_after_retry": "cancelled",
"trial_days": 30
}
]
Listado de planes
Definición
<?
$planList = $openpay->plans->getList(findDataRequest);
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$findDataRequest = array(
'creation[gte]' => '2019-01-01',
'creation[lte]' => '2019-12-31',
'offset' => 0,
'limit' => 5);
$planList = $openpay->plans->getList($findDataRequest);
?>
Ejemplo de respuesta
[
{
"name": "Curso de aleman",
"status": "active",
"amount": 150,
"currency": "COP",
"id": "patpflacwilazguj6bem",
"creation_date": "2019-05-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": "COP",
"id": "pjl7wfryrrd1tznr0fnl",
"creation_date": "2019-05-13T11:36:40-06:00",
"repeat_every": 1,
"repeat_unit": "month",
"retry_times": 2,
"status_after_retry": "cancelled",
"trial_days": 30
}
]
Listado de planes
Definición
openpayAPI.plans().list(SearchParams request);
Ejemplo de petición
final Calendar dateGte = Calendar.getInstance();
final Calendar dateLte = Calendar.getInstance();
dateGte.set(2019, 5, 1, 0, 0, 0);
dateLte.set(2019, 5, 15, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "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);
Ejemplo de respuesta
[
{
"name": "Curso de aleman",
"status": "active",
"amount": 150,
"currency": "COP",
"id": "patpflacwilazguj6bem",
"creation_date": "2019-05-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": "COP",
"id": "pjl7wfryrrd1tznr0fnl",
"creation_date": "2019-05-13T11:36:40-06:00",
"repeat_every": 1,
"repeat_unit": "month",
"retry_times": 2,
"status_after_retry": "cancelled",
"trial_days": 30
}
]
Listado de planes
Definición
openpayAPI.PlanService.List(SearchParams request = null);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.CreationGte = new Datetime(2019, 5, 1);
request.CreationLte = new DateTime(2019, 5, 15);
request.Offset = 0;
request.Limit = 100;
List<Plan> plans = api.PlanService.List(request);
Ejemplo de respuesta
[
{
"name": "Curso de aleman",
"status": "active",
"amount": 150,
"currency": "COP",
"id": "patpflacwilazguj6bem",
"creation_date": "2019-05-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": "COP",
"id": "pjl7wfryrrd1tznr0fnl",
"creation_date": "2019-05-13T11:36:40-06:00",
"repeat_every": 1,
"repeat_unit": "month",
"retry_times": 2,
"status_after_retry": "cancelled",
"trial_days": 30
}
]
Suscripciones
Las suscripciones permiten asociar un cliente y una tarjeta para que se pueden realizar cargos recurrentes.
Para poder suscribir algún cliente es necesario primero crear un plan.
Objeto Suscripción
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 |
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,
"creation_date": "2018-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": "2018-12-13T12:39:46-06:00",
"current_period_number": 0,
"period_end_date": "2019-01-11",
"trial_end_date": "2019-01-11",
"plan_id": "pjl7wfryrrd1tznr0fnl",
"customer_id": "a2b79p8xmzeyvmolqfja"
}
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,
"creation_date": "2018-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": "2018-12-13T12:39:46-06:00",
"current_period_number": 0,
"period_end_date": "2019-01-11",
"trial_end_date": "2019-01-11",
"plan_id": "pjl7wfryrrd1tznr0fnl",
"customer_id": "a2b79p8xmzeyvmolqfja"
}
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,
"creation_date": "2018-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": "2018-12-13T12:39:46-06:00",
"current_period_number": 0,
"period_end_date": "2019-01-11",
"trial_end_date": "2019-01-11",
"plan_id": "pjl7wfryrrd1tznr0fnl",
"customer_id": "a2b79p8xmzeyvmolqfja"
}
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,
"creation_date": "2018-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": "2018-12-13T12:39:46-06:00",
"current_period_number": 0,
"period_end_date": "2019-01-11",
"trial_end_date": "2019-01-11",
"plan_id": "pjl7wfryrrd1tznr0fnl",
"customer_id": "a2b79p8xmzeyvmolqfja"
}
Crear una nueva suscripción
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.
Crear una nueva suscripción
Definición
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions
Ejemplo de petición
curl https://sandbox-api.openpay.co/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"
}'
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,
"bank_name":"BANCO DE BOGOTÁ",
"bank_code":"002"
},
"cancel_at_period_end":false,
"charge_date":"2019-05-22",
"creation_date":"2019-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"
}
Crear una nueva suscripción
Definición
<?
$customer = $openpay->customers->get(customerId);
$subscription = $customer->subscriptions->add(subscriptionDataRequest);
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$subscriptionDataRequest = array(
'trial_end_date' => '2019-05-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);
?>
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,
"bank_name":"BANCO DE BOGOTÁ",
"bank_code":"002"
},
"cancel_at_period_end":false,
"charge_date":"2019-05-22",
"creation_date":"2019-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"
}
Crear una nueva suscripción
Definición
openpayAPI.subscriptions().create(String customerId, Subscription request);
Ejemplo de petición
final Calendar trialEndDate = Calendar.getInstance();
trialEndDate.set(2019, 5, 1, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "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);
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,
"bank_name":"BANCO DE BOGOTÁ",
"bank_code":"002"
},
"cancel_at_period_end":false,
"charge_date":"2019-05-22",
"creation_date":"2019-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"
}
Crear una nueva suscripción
Definición
openpayAPI.SubscriptionService.Create(string customer_id, Subscription request);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Subscription request = new Subscription();
request.PlanId = "idPlan-01001";
request.TrialEndDate = new Datetime(2019, 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);
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,
"bank_name":"BANCO DE BOGOTÁ",
"bank_code":"002"
},
"cancel_at_period_end":false,
"charge_date":"2019-05-22",
"creation_date":"2019-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"
}
Actualizar una suscripción
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.
Actualizar una suscripción
Definición
PUT https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions/{subscriptionId}
Ejemplo de petición
curl https://sandbox-api.openpay.co/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"
}
}'
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,
"bank_name":"BANCO DE BOGOTÁ",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2016-01-12",
"creation_date":"2019-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2019-05-11",
"trial_end_date":"2019-05-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Actualizar una suscripción
Definición
<?
$customer = $openpay->customers->get(customerId);
$subscription = $customer->subscriptions->get(subscriptionId);
$subscription->save();
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$subscription = $customer->subscriptions->get('s7ri24srbldoqqlfo4vp');
$subscription->trial_end_date = '2014-12-31';
$subscription->save();
?>
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,
"bank_name":"BANCO DE BOGOTÁ",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2016-01-12",
"creation_date":"2019-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2019-05-11",
"trial_end_date":"2019-05-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Actualizar una suscripción
Definición
openpayAPI.subscriptions().update(Subscription request);
Ejemplo de petición
final Calendar trialEndDate = Calendar.getInstance();
trialEndDate.set(2019, 5, 1, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Subscription request = new Subscription();
request.planId("idPlan-01001");
request.trialEndDate(trialEndDate.getTime());
request.sourceId("ktrpvymgatocelsciak7");
request = api.subscriptions().update(request);
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,
"bank_name":"BANCO DE BOGOTÁ",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2016-01-12",
"creation_date":"2019-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2019-05-11",
"trial_end_date":"2019-05-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Actualizar una suscripción
Definición
openpayAPI.SubscriptionService.Update(string customer_id, Subscription subscription);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Subscription request = new Subscription();
request.PlanId = "idPlan-01001";
request.TrialEndDate = new Datetime(2019, 5, 1);;
request.CardId = "ktrpvymgatocelsciak7";
request = api.SubscriptionService.Update("a9pvykxz4g5rg0fplze0", request);
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,
"bank_name":"BANCO DE BOGOTÁ",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2016-01-12",
"creation_date":"2019-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2019-05-11",
"trial_end_date":"2019-05-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Obtener una suscripción
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
Obtener una suscripción
Definición
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions/{SUBSCRIPTION_ID}
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/subscriptions/s0gmyor4yqtyv1miqwr0 \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
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,
"bank_name":"AMERICAN EXPRESS",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2019-05-12",
"creation_date":"2019-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2019-05-11",
"trial_end_date":"2019-05-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Obtener una suscripción
Definición
<?
$customer = $openpay->customers->get(customerId);
$subscription = $customer->subscriptions->get(subscriptionId);
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$subscription = $customer->subscriptions->get('s7ri24srbldoqqlfo4vp');
?>
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,
"bank_name":"AMERICAN EXPRESS",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2019-05-12",
"creation_date":"2019-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2019-05-11",
"trial_end_date":"2019-05-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Obtener una suscripción
Definición
openpayAPI.subscriptions().get(String customerId, String customerId);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Subscription subscription = api.subscriptions().get("a9pvykxz4g5rg0fplze0", "s0gmyor4yqtyv1miqwr0");
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,
"bank_name":"AMERICAN EXPRESS",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2019-05-12",
"creation_date":"2019-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2019-05-11",
"trial_end_date":"2019-05-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Obtener una suscripción
Definición
openpayAPI.SubscriptionService.Get(string customer_id, string subscription_id);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Subscription subscription = api.SubscriptionService.Get("a9pvykxz4g5rg0fplze0", "s0gmyor4yqtyv1miqwr0");
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,
"bank_name":"AMERICAN EXPRESS",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2019-05-12",
"creation_date":"2019-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2019-05-11",
"trial_end_date":"2019-05-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
Cancelar suscripción
Cancela inmediatamente la suscrupción del cliente. Ya no se realizarán mas cargos a la tarjeta y todos 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.
Cancelar suscripción
Definición
DELETE https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions/{SUBSCRIPTION_ID}
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/subscriptions/s0gmyor4yqtyv1miqwr0 \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-X DELETE
Cancelar suscripción
Definición
<?
$customer = $openpay->customers->get(customerId);
$subscription = $customer->subscriptions->get(subscriptionId);
$subscription->delete();
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$subscription = $customer->subscriptions->get('s7ri24srbldoqqlfo4vp');
$subscription->delete();
?>
Cancelar suscripción
Definición
openpayAPI.subscriptions().delete(String customerId, String subscriptionId);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.subscriptions().delete("a9pvykxz4g5rg0fplze0", "s0gmyor4yqtyv1miqwr0");
Cancelar suscripción
Definición
openpayAPI.SubscriptionService.Delete(string customer_id, string subscription_id);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.SubscriptionService.Delete("a9pvykxz4g5rg0fplze0", "s0gmyor4yqtyv1miqwr0");
Listado de suscripciones
Regresa los detalles de todas las suscripciones activas para un cliente en específico.
Petición
Se puede 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.
Listado de suscripciones
Definición
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions
Ejemplo de petición
curl -g "https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/subscriptions?limit=10" \
-u sk_e568c42a6c384b7ab02cd47d2e407cab:
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,
"bank_name":"AMERICAN EXPRESS",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2019-05-22",
"creation_date":"2019-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2019-05-11",
"trial_end_date":"2019-05-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
]
Listado de suscripciones
Definición
<?
$customer = $openpay->customers->get(customerId);
$subscriptionList = $customer->subscriptions->getList(findDataRequest);
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$findData = array(
'creation[gte]' => '2019-01-01',
'creation[lte]' => '2019-12-31',
'offset' => 0,
'limit' => 5);
$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$subscriptionList = $customer->subscriptions->getList($findData);
?>
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,
"bank_name":"AMERICAN EXPRESS",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2019-05-22",
"creation_date":"2019-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2019-05-11",
"trial_end_date":"2019-05-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
]
Listado de suscripciones
Definición
openpayAPI.subscriptions().list(String customerId, SearchParams request);
Ejemplo de petición
final Calendar dateGte = Calendar.getInstance();
final Calendar dateLte = Calendar.getInstance();
dateGte.set(2019, 1, 1, 0, 0, 0);
dateLte.set(2019, 12, 31, 0, 0, 0);
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "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);
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,
"bank_name":"AMERICAN EXPRESS",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2019-05-22",
"creation_date":"2019-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2019-05-11",
"trial_end_date":"2019-05-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
]
Listado de suscripciones
Definición
openpayAPI.SubscriptionService.List(string customer_id, SearchParams request = null);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
SearchParams request = new SearchParams();
request.CreationGte = new Datetime(2019, 1, 1);
request.CreationLte = new DateTime(2019, 12, 31);
request.Offset = 0;
request.Limit = 100;
List<Subscription> subscriptions = api.SubscriptionService.List("a9pvykxz4g5rg0fplze0", request);
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,
"bank_name":"AMERICAN EXPRESS",
"bank_code":"103"
},
"cancel_at_period_end":false,
"charge_date":"2019-05-22",
"creation_date":"2019-05-22T15:56:18-05:00",
"current_period_number":0,
"period_end_date":"2019-05-11",
"trial_end_date":"2019-05-11",
"plan_id":"pbi4kb8hpb64x0uud2eb",
"customer_id":"ag4nktpdzebjiye1tlze"
}
]
Webhooks
Estos permiten notificar al cliente cuando un evento ha sucedido en la plataforma, para que el comercio pueda tomar las acciones correspondientes.
Para que la Openpay invoque un webhook, es importante que se encuentre verificado.
Objeto Webhook
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 respondera el webhook. |
status | string Estado del webhook, indica si esta verificado (verified) o no esta verificado (unverified). |
Los tipos de eventos soportados son:
Evento | Categoría | Descripción |
---|---|---|
charge.refunded | Cargos | Informa cuando es reembolsado un cargo. |
charge.failed | Cargos | Informa cuando un cargo fallo 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 fallo. |
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 fallo. |
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 esta 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. |
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"
}
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"
}
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"
}
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"
}
Crear un Webhook
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 respondera 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.
Crear un Webhook
Definición
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/webhooks
Ejemplo de petición
curl https://sandbox-api.openpay.co/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"
]
}'
Ejemplo de respuesta
{
"id" : "wkn0t30zfxpmhr5usgfa",
"url" : "http://requestb.in/qt3bq0qt",
"user" : "juanito",
"event_types" : [
"charge.succeeded",
"charge.created",
"charge.cancelled",
"charge.failed"
],
"status" : "verified"
}
Crear un Webhook
Definición
<?
$webhook = $openpay->webhooks->add(webhook);
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$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);
?>
Ejemplo de respuesta
{
"id" : "wkn0t30zfxpmhr5usgfa",
"url" : "http://requestb.in/qt3bq0qt",
"user" : "juanito",
"event_types" : [
"charge.succeeded",
"charge.created",
"charge.cancelled",
"charge.failed"
],
"status" : "verified"
}
Crear un Webhook
Definición
openpayAPI.webhooks().create(Webhook request);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "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);
Ejemplo de respuesta
{
"id" : "wkn0t30zfxpmhr5usgfa",
"url" : "http://requestb.in/qt3bq0qt",
"user" : "juanito",
"event_types" : [
"charge.succeeded",
"charge.created",
"charge.cancelled",
"charge.failed"
],
"status" : "verified"
}
Crear un Webhook
Definición
openpayAPI.WebhooksService.Create(Webhook request);
Ejemplo de petición
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);
Ejemplo de respuesta
{
"id" : "wkn0t30zfxpmhr5usgfa",
"url" : "http://requestb.in/qt3bq0qt",
"user" : "juanito",
"event_types" : [
"charge.succeeded",
"charge.created",
"charge.cancelled",
"charge.failed"
],
"status" : "verified"
}
Obtener un Webhook
Obtiene los detalles de un webhook solicitándolo con su id.
Nota: Nunca se regresarán datos sensibles como son el password para accesar al webhook.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador único del webhook |
Respuesta
Regresa un objeto webhook
Obtener un Webhook
Definición
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/webhooks/{WEBHOOK_ID}
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/webhooks/wxvanstudf4ssme8khmc \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json"
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"
}
Obtener un Webhook
Definición
<?
$webhook = $openpay->webhooks->get(webhookId);
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$webhook = $openpay->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"
}
Obtener un Webhook
Definición
openpayAPI.webhooks().get(String webhookId);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Webhook webhook = api.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"
}
Obtener un Webhook
Definición
openpayAPI.WebhooksService.Get(string webhookId);
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
Webhook webhook = api.WebhooksService.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"
}
Eliminar un Webhook
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.
Eliminar un Webhook
Definición
DELETE https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/webhooks/{WEBHOOK_ID}
Ejemplo de petición con cliente
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/webhooks/wxvanstudf4ssme8khmc \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-X DELETE
Eliminar un Webhook
Definición
<?
$webhook = $openpay->webhooks->get(webhookId);
$webhook->delete();
?>
Ejemplo de petición con cliente
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$webhook = $openpay->webhooks->get('wxvanstudf4ssme8khmc');
$webhook->delete();
?>
Eliminar un Webhook
Definición
openpayAPI.webhooks().delete(String webhookId);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.webhooks().delete("wxvanstudf4ssme8khmc");
Eliminar un Webhook
Definición
openpayAPI.WebhooksService.Delete(string webhook_id);
Ejemplo de petición con cliente
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
api.WebhooksService.Delete("wxvanstudf4ssme8khmc");
Listado de Webhook
Regresa una lista de webhooks registrados por comercio.
Nota: Nunca se regresarán datos sensibles como son el password para accesar al webhook.
Petición
Respuesta
Listado de objetos objeto webhook registrados de acuerdo a los parámetros proporcionados.
Listado de Webhook
Definición
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/webhooks
Ejemplo de petición
curl https://sandbox-api.openpay.co/v1/mzdtln0bmtms6o3kck8f/webhooks \
-u sk_e568c42a6c384b7ab02cd47d2e407cab: \
-H "Content-type: application/json"
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"
}
]
Listado de Webhook
Definición
<?
$webhookList = $openpay->webhooks->getList();
?>
Ejemplo de petición
<?
$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'CO');
$webhookList = $openpay->webhooks->getList();
?>
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"
}
]
Listado de Webhook
Definición
openpayAPI.webhooks().list();
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("https://sandbox-api.openpay.co", "sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
List<Webhook> webhooks = api.webhooks().list();
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"
}
]
Listado de Webhook
Definición
openpayAPI.WebhooksService.List();
Ejemplo de petición
OpenpayAPI api = new OpenpayAPI("sk_b05586ec98454522ac7d4ccdcaec9128", "maonhzpqm8xp2ydssovf");
List<Webhook> webhooks = api.WebhooksService.List();
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"
}
]
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 este en Web y nuestros SDK’s de Android o iOS para cuando este 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
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 |
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":"Bogota",
"state":"Bogota",
"city":"Bogota",
"postal_code":"110511",
"country_code":"CO"
},
"creation_date":"2014-01-30T13:53:11-06:00",
"brand":"visa"
}
}
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":"Bogota",
"state":"Bogota",
"city":"Bogota",
"postal_code":"110511",
"country_code":"CO"
},
"creation_date":"2014-01-30T13:53:11-06:00",
"brand":"visa"
}
}
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":"Bogota",
"state":"Bogota",
"city":"Bogota",
"postal_code":"110511",
"country_code":"CO"
},
"creation_date":"2014-01-30T13:53:11-06:00",
"brand":"visa"
}
}
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":"Bogota",
"state":"Bogota",
"city":"Bogota",
"postal_code":"110511",
"country_code":"CO"
},
"creation_date":"2014-01-30T13:53:11-06:00",
"brand":"visa"
}
}
Crear un nuevo token
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) Numero de tarjeta puede ser de 16 o 19 dígitos. |
cvv2 | numeric (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.
Crear un nuevo token
Definición
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/tokens
Ejemplo de petición
curl https://sandbox-api.openpay.co/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":"Bogotá",
"country_code":"CO",
"postal_code":"110511",
"line1":"Av 5 de Febrero",
"line2":"Roble 207",
"line3":"col carrillo",
"state":"Bogota"
}
}'
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":"Bogota",
"city":"Bogotá",
"postal_code":"110511",
"country_code":"CO"
},
"creation_date":null,
"brand":"visa"
}
}
Crear un nuevo token
Definición
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/tokens
Ejemplo de petición
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":"Bogota",
"city":"Bogotá",
"postal_code":"110511",
"country_code":"CO"
},
"creation_date":null,
"brand":"visa"
}
}
Crear un nuevo token
Definición
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/tokens
Ejemplo de petición
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":"Bogota",
"city":"Bogotá",
"postal_code":"110511",
"country_code":"CO"
},
"creation_date":null,
"brand":"visa"
}
}
Crear un nuevo token
Definición
POST https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/tokens
Ejemplo de petición
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":"Bogota",
"city":"Bogotá",
"postal_code":"110511",
"country_code":"CO"
},
"creation_date":null,
"brand":"visa"
}
}
Obtener un token
Obtiene los detalles de un token. Es necesario tener el id.
Nota: Nunca se regresarán datos sensibles como son el código de seguridad y del número de tarjeta.
Petición
Propiedad | Descripción |
---|---|
id | string (requerido, longitud = 45) Identificador de token. |
Respuesta
Regresa un objeto token
Obtener un token
Definición
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/tokens/{TOKEN_ID}
Ejemplo de petición
curl https://sandbox-api.openpay.co/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":"Bogota",
"city":"Bogotá",
"postal_code":"110511",
"country_code":"CO"
},
"creation_date":null,
"brand":"visa"
}
}
Obtener un token
Definición
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/tokens/{TOKEN_ID}
Ejemplo de petición
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":"Bogota",
"city":"Bogotá",
"postal_code":"110511",
"country_code":"CO"
},
"creation_date":null,
"brand":"visa"
}
}
Obtener un token
Definición
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/tokens/{TOKEN_ID}
Ejemplo de petición
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":"Bogota",
"city":"Bogotá",
"postal_code":"110511",
"country_code":"CO"
},
"creation_date":null,
"brand":"visa"
}
}
Obtener un token
Definición
GET https://sandbox-api.openpay.co/v1/{MERCHANT_ID}/tokens/{TOKEN_ID}
Ejemplo de petición
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":"Bogota",
"city":"Bogotá",
"postal_code":"110511",
"country_code":"CO"
},
"creation_date":null,
"brand":"visa"
}
}
Tiendas
El objeto representa una tienda de conveniencia
Objeto Tienda
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 actualizacion de la tienda en formato ISO 8601. |
geolocation | objeto <br/Representacion geografica de la tienda por medio de coordenadas, Latitud y Longitud. |
address | objeto Direccion de la tienda. |
paynet_chain | objeto Cadena paynet a la que pertence. |
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": "BOGOTA",
"city": "BOGOTA",
"postal_code": "110111",
"country_code": "CO"
},
"paynet_chain": {
"name": "EXTRA",
"logo": "/logotipos/extra.png",
"thumb": "/thumb/extra.png",
"max_amount": 99999.99
}
}
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": "BOGOTA",
"city": "BOGOTA",
"postal_code": "110111",
"country_code": "CO"
},
"paynet_chain": {
"name": "EXTRA",
"logo": "/logotipos/extra.png",
"thumb": "/thumb/extra.png",
"max_amount": 99999.99
}
}
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": "BOGOTA",
"city": "BOGOTA",
"postal_code": "110111",
"country_code": "CO"
},
"paynet_chain": {
"name": "EXTRA",
"logo": "/logotipos/extra.png",
"thumb": "/thumb/extra.png",
"max_amount": 99999.99
}
}
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": "BOGOTA",
"city": "BOGOTA",
"postal_code": "110111",
"country_code": "CO"
},
"paynet_chain": {
"name": "EXTRA",
"logo": "/logotipos/extra.png",
"thumb": "/thumb/extra.png",
"max_amount": 99999.99
}
}
Obtener lista de tiendas por ubicación
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 geografica de la tienda |
longitud | numeric (requerido) Longitud de la ubicacion geografica de la tienda |
kilometers | numeric (requerido) Distancia del radio de la busqueda 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.
Obtener lista de tiendas por ubicación
Definición
GET https://api.openpay.co/stores?latitud={latitud}&longitud={longitud}&kilometers={radio}&amount={monto}
Ejemplo de petición
curl https://api.openpay.co/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": "BOGOTA",
"city": "BOGOTA",
"postal_code": "110111",
"country_code": "CO"
},
"paynet_chain": {
"name": "EXTRA",
"logo": "/logotipos/extra.png",
"thumb": "/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": "BOGOTA",
"city": "BOGOTA",
"postal_code": "110311",
"country_code": "CO"
},
"paynet_chain": {
"name": "EL ASTURIANO",
"logo": "/logotipos/asturiano.png",
"thumb": "/thumb/asturiano.png",
"max_amount": 99999.99
}
}
]
Obtener lista de tiendas por ubicación
Definición
<?
// =============================
// Funcionalidad no implementada
// =============================
?>
Ejemplo de petición
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": "BOGOTA",
"city": "BOGOTA",
"postal_code": "110111",
"country_code": "CO"
},
"paynet_chain": {
"name": "EXTRA",
"logo": "/logotipos/extra.png",
"thumb": "/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": "BOGOTA",
"city": "BOGOTA",
"postal_code": "110311",
"country_code": "CO"
},
"paynet_chain": {
"name": "EL ASTURIANO",
"logo": "/logotipos/asturiano.png",
"thumb": "/thumb/asturiano.png",
"max_amount": 99999.99
}
}
]
Obtener lista de tiendas por ubicación
Definición
// =============================
// Funcionalidad no implementada
// =============================
Ejemplo de petición
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": "BOGOTA",
"city": "BOGOTA",
"postal_code": "110111",
"country_code": "CO"
},
"paynet_chain": {
"name": "EXTRA",
"logo": "/logotipos/extra.png",
"thumb": "/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": "BOGOTA",
"city": "BOGOTA",
"postal_code": "110311",
"country_code": "CO"
},
"paynet_chain": {
"name": "EL ASTURIANO",
"logo": "/logotipos/asturiano.png",
"thumb": "/thumb/asturiano.png",
"max_amount": 99999.99
}
}
]
Obtener lista de tiendas por ubicación
Definición
// =============================
// Funcionalidad no implementada
// =============================
Ejemplo de petición
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": "BOGOTA",
"city": "BOGOTA",
"postal_code": "110111",
"country_code": "CO"
},
"paynet_chain": {
"name": "EXTRA",
"logo": "/logotipos/extra.png",
"thumb": "/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": "BOGOTA",
"city": "BOGOTA",
"postal_code": "110311",
"country_code": "CO"
},
"paynet_chain": {
"name": "EL ASTURIANO",
"logo": "/logotipos/asturiano.png",
"thumb": "/thumb/asturiano.png",
"max_amount": 99999.99
}
}
]
Objetos Comunes
Información de objetos compartidos en peticiones y respuestas.
Objeto Transacción
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 Identificar único del cliente al cual pertence la transacción. Si es valor es nulo, la transacción pertenece a la cuenta del comercio. |
currency | string Moneda usada en la operación, por default es COP. |
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 |
Objeto Transacción
Ejemplo de Objeto
{
"id": "tryqbk08mmjihwejd3si",
"authorization": "faa33f71-f122-4efc-9",
"operation_type": "in",
"method": "bank_account",
"transaction_type": "charge",
"status": "completed",
"conciliated": true,
"creation_date": "2018-10-19T11:14:33-05:00",
"operation_date": "2018-10-19T11:14:45-05:00",
"description": "1 Calzado M",
"error_message": null,
"order_id": "161951571501672795",
"customer_id": "azxhcjwagajxtfciuytw",
"due_date": "2019-10-18T11:34:33-05:00",
"amount": 54627.00,
"currency": "COP",
"payment_method": {
"type": "redirect",
"url": "https://myecommerce.co/shopping-cart/"
}
}
Objeto Transacción
Ejemplo de Objeto
{
"id": "tryqbk08mmjihwejd3si",
"authorization": "faa33f71-f122-4efc-9",
"operation_type": "in",
"method": "bank_account",
"transaction_type": "charge",
"status": "completed",
"conciliated": true,
"creation_date": "2018-10-19T11:14:33-05:00",
"operation_date": "2018-10-19T11:14:45-05:00",
"description": "1 Calzado M",
"error_message": null,
"order_id": "161951571501672795",
"customer_id": "azxhcjwagajxtfciuytw",
"due_date": "2019-10-18T11:34:33-05:00",
"amount": 54627.00,
"currency": "COP",
"payment_method": {
"type": "redirect",
"url": "https://myecommerce.co/shopping-cart/"
}
}
Objeto Transacción
Ejemplo de Objeto
{ "id": "tryqbk08mmjihwejd3si", "authorization": "faa33f71-f122-4efc-9", "operation_type": "in", "method": "bank_account", "transaction_type": "charge", "status": "completed", "conciliated": true, "creation_date": "2018-10-19T11:14:33-05:00", "operation_date": "2018-10-19T11:14:45-05:00", "description": "1 Calzado M", "error_message": null, "order_id": "161951571501672795", "customer_id": "azxhcjwagajxtfciuytw", "due_date": "2019-10-18T11:34:33-05:00", "amount": 54627.00, "currency": "COP", "payment_method": { "type": "redirect", "url": "https://myecommerce.co/shopping-cart/" } }
Objeto Transacción
Ejemplo de Objeto
{ "id": "tryqbk08mmjihwejd3si", "authorization": "faa33f71-f122-4efc-9", "operation_type": "in", "method": "bank_account", "transaction_type": "charge", "status": "completed", "conciliated": true, "creation_date": "2018-10-19T11:14:33-05:00", "operation_date": "2018-10-19T11:14:45-05:00", "description": "1 Calzado M", "error_message": null, "order_id": "161951571501672795", "customer_id": "azxhcjwagajxtfciuytw", "due_date": "2019-10-18T11:34:33-05:00", "amount": 54627.00, "currency": "COP", "payment_method": { "type": "redirect", "url": "https://myecommerce.co/shopping-cart/" } }
Objeto Dirección Cliente
Propiedad | Descripción |
---|---|
department | string (requerido) Departamento. |
city | string (requerido) Ciudad. |
additional | string (requerido) Información adicional para especificar la dirección. |
Objeto Dirección Cliente
Ejemplo de Objeto
{
"department":"Medellín",
"city":"Antioquia",
"additional":"Avenida 7g bis #229-32 Apartamento 511"
{
"id": "trpfgkjvusju7u0tssmk",
"authorization": null,
"operation_type": "in",
"transaction_type": "charge",
"status": "in_progress",
"conciliated": false,
"iva": "1900",
"creation_date": "2020-06-29T13:27:58-05:00",
"operation_date": "2020-06-29T13:27:58-05:00",
"description": "Cargo inicial a mi cuenta",
"error_message": null,
"order_id": "oid-12345",
"due_date": "2020-06-29T13:47:58-05:00",
"payment_method": {
"type": "redirect",
"url": "https://qa-api.openpay.co/v1/mr0w3azn2utpnldvgxkk/charges/trpfgkjvusju7u0tssmk/pse_capture"
},
"currency": "COP",
"amount": 10000.00,
"customer": {
"name": "Cliente Colombia",
"last_name": "Vazquez Juarez",
"email": "juan.vazquez@empresa.co",
"phone_number": "4448936475",
"address": null,
"creation_date": "2020-06-29T13:27:58-05:00",
"external_id": null,
"customer_address": {
"department": "Medellín",
"city": "Antioquía",
"additional": "Avenida 7m bis #174-25 Apartamento 637",
"country": "CO"
},
"clabe": null
},
"method": "bank_account"
}
Objeto Dirección Cliente
Ejemplo de Objeto
{
"department":"Medellín",
"city":"Antioquia",
"additional":"Avenida 7g bis #229-32 Apartamento 511"
}
Objeto Dirección Cliente
Ejemplo de Objeto
{
"department":"Medellín",
"city":"Antioquia",
"additional":"Avenida 7g bis #229-32 Apartamento 511"
}
Objeto Dirección Cliente
Ejemplo de Objeto
{
"department":"Medellín",
"city":"Antioquia",
"additional":"Avenida 7g bis #229-32 Apartamento 511"
}
Objeto Estatus Transacción
Value | Description |
---|---|
IN_PROGRESS | Transacción en proceso |
COMPLETED | Transacción ejecutadá 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 |