Introducción
Endpoints
# Producción
https://api.gamecash.mx/
# Sandbox
https://sandbox-api.gamecash.mx/
La API GameCash está organizada en torno a REST. Nuestra API tiene URL predecibles orientadas a los recursos, devuelve respuestas codificadas por JSON y utiliza códigos de respuesta HTTP, autenticación y verbos estándar.
Autenticación
curl -u sk_z8A4Fje1yDM5q9He2
<?php
require 'vendor/autoload.php';
$headers = [
'auth' => [ 'sk_z8A4Fje1yDM5q9He2', ],
];
$request_body = [];
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', '{{endpoint}}', [
'headers' => $headers,
'json' => $request_body,
]);
Debera reemplazar
sk_z8A4Fje1yDM5q9He2
con su API key.
La API GameCash utiliza claves API para autenticar solicitudes.
La autenticación a la API se realiza a través de HTTP Basic Auth. Proporcione su clave API como nombre de usuario de autenticación básico, no necesita proporcionar una contraseña.
Todas las solicitudes de API deben hacerse a través de HTTPS. Las llamadas realizadas a través de HTTP simple fallarán. Las solicitudes de API sin autenticación también fallarán.
Authorization: sk_z8A4Fje1yDM5q9He2
RESPUESTAS
401 Unauthorized
{
"message": "Invalid authentication credentials.",
"status_code": 401
}
Respuestas
Código | Descripción |
---|---|
401 | Unauthorized |
Ordenes
El objeto orden
EL OBJETO ORDEN
{
"id": "ord_KQK3JBnwOjXwZo",
"object": "order",
"description": "Prueba de pago en OXXO.",
"amount": 134999,
"status": "paid",
"customer": {
"id": "cus_0G9wK1LBy7A0X3",
"object": "customer",
"firstname": "Roberto",
"lastname": "Ramirez",
"email": "robertoiran@example.com",
"phone": "+5215555555555"
},
"payment_method": {
"data": [
{
"id": "och_AgpDB9PYR4RJyYD",
"reference": "64000000003320022901349997",
"type": "oxxo",
"status": "paid",
"expires_at": 1583013067,
"paid_at": 1578687860,
"error_code": null,
"error_message": null,
"created_at": 1578681919,
"updated_at": 1578687862
}
]
},
"operation_type": "in",
"refunds": {
"id": "re_84xQBdd2JkJzzEd7",
"amount": 134999,
"reason": "requested_by_customer",
"status": "in_review",
"refunded_at": null,
"created_at": 1578687876
},
"paid_at": 1578687860,
"metadata": {
"order_id": 231008
},
"created_at": 1578681919,
"updated_at": 1578687862,
"links": {
"receipt_payment": "https://admin.gamecash.mx/receipt-payment/ord_KQK3JBnwOjXwZo"
}
}
Atributos | Descripción |
---|---|
id | Identificador único de la orden. string |
description | Descripción asociada a la orden. string, requerido, maxLength=250 |
amount | Monto expresado en centavos. integer, requerido |
status | El status de la orden. Posibles valores pending_payment , declined , expired , paid , refunded , voided , error .string |
customer | Hash que contiene la información del cliente. Hash |
id > customer |
Identificador único del cliente. string |
firstname > customer |
Nombre del cliente. string, requerido, minLength=3, maxLength=250 |
lastname > customer |
Apellidos del cliente. string, requerido, minLength=3, maxLength=250 |
email > customer |
Correo electrónico del cliente. string, requerido |
phone > customer |
Número telefónico del cliente. string |
payment_method | Lista de los cargos generados a la orden. List |
id > payment_method |
Identificador único del método de pago. string |
type > payment_method |
Tipo del método de pago. Posibles valores oxxo , spei , paynet , oxxopay .string |
reference > payment_method |
Linea de captura para realizar el cobro. Para spei seria la clabe interbancaria y para los demas el código de barras. string |
status > payment_method |
El status del cargo. Posibles valores pending_payment , declined , expired , paid , error .string |
expires_at > payment_method |
Fecha de expiración del cargo. 32-bit unix timestamp |
paid_at > payment_method |
Fecha en que se realizó el pago del cargo. 32-bit unix timestamp |
error_code > payment_method |
Código de error. string |
error_message > payment_method |
Mensaje descriptivo del error. string |
created_at > payment_method |
Fecha de creación del método de pago. 32-bit unix timestamp |
updated_at > payment_method |
Fecha de la última actualización del método de pago. 32-bit unix timestamp |
refunds | Hash que contiene la información de la devolución. Hash |
id > refunds |
Identificador único de la devolución. string |
amount > refunds |
Monto expresado en centavos. integer |
reason > refunds |
Indica el motivo del reembolso. Posibles valores duplicate , fraudulent , requested_by_customer , other .string |
status > refunds |
El status del reembolso. Posibles valores completed , declined , expired , paid , refunded , voided , error .string |
refunded_at > refunds |
Fecha y hora en que se ejecuto el reembolso. 32-bit unix timestamp |
created_at > refunds |
Fecha de creación del reembolso. 32-bit unix timestamp |
paid_at | Fecha en que se realizó el pago de la orden. 32-bit unix timestamp |
metadata | Hash en donde el usuario puede enviar información adicional para la orden. Puede especificar hasta 50 elementos, con nombres de clave de hasta 40 caracteres y valores de hasta 500 caracteres. Hash |
created_at | Fecha de creación de la orden. 32-bit unix timestamp |
updated_at | Fecha de la última actualización de la orden. 32-bit unix timestamp |
links | Links relacionados a la orden. Hash |
receipt_payment > links |
Link para el recibo de pago en formato pdf. El recibo de pago contiene las instrucciones necesarias para realizar el pago de cada tipo de cargo. string |
Crear una orden
POST /orders
curl -X POST \
https://api.gamecash.mx/orders \
-H 'Content-Type: application/json' \
-u sk_z8A4Fje1yDM5q9He2: \
-d '{
"amount": 134999,
"description": "Prueba de pago en OXXO.",
"customer": {
"firstname": "Roberto",
"lastname": "Ramirez",
"email": "robertoiran@example.com"
},
"payment_method": {
"type": "oxxo",
"expires_at": "1583013067"
},
"metadata": {
"order_id": 231008
}
}'
<?php
require 'vendor/autoload.php';
$headers = [
'Content-Type' => 'application/json',
'auth' => [ 'sk_z8A4Fje1yDM5q9He2', ],
];
$request_body = [
'amount' => 134999,
'description' => 'Prueba de pago en OXXO.',
'customer' => [
'firstname' => 'Roberto',
'lastname' => 'Ramirez',
'email' => 'robertoiran@example.com',
],
'payment_method' => [
'type' => 'oxxo',
'expires_at' => '1583013067',
],
"metadata": {
"order_id": 231008
}
];
$client = new \GuzzleHttp\Client();
try {
$response = $client->request('POST','https://api.gamecash.mx/orders', [
'headers' => $headers,
'json' => $request_body,
]);
print_r($response->getBody()->getContents());
} catch (\GuzzleHttp\Exception\BadResponseException $e) {
print_r($e->getMessage());
}
Crear una orden nueva
Parámetro | Descripción |
---|---|
description | Descripción asociada a la orden. string, requerido, maxLength=250 |
amount | Monto expresado en centavos. integer, requerido |
customer | Hash que contiene la información del cliente. Hash |
firstname > customer |
Nombre del cliente. string, requerido, minLength=3, maxLength=250 |
lastname > customer |
Apellidos del cliente. string, requerido, minLength=3, maxLength=250 |
email > customer |
Correo electrónico del cliente. string, requerido |
payment_method | Lista de los cargos generados a la orden. List |
type > payment_method |
Tipo del método de pago. Posibles valores oxxo , spei , paynet , oxxopay .string |
expires_at > payment_method |
Fecha de expiración del cargo. 32-bit unix timestamp |
metadata | Hash en donde el usuario puede enviar información adicional para la orden. Puede especificar hasta 50 elementos, con nombres de clave de hasta 40 caracteres y valores de hasta 500 caracteres. Hash |
RESPUESTAS
200 OK
{
"id": "ord_KQK3JBnwOjXwZo",
"object": "order",
"description": "Prueba de pago en OXXO.",
"amount": 134999,
"status": "pending_payment",
"customer": {
"id": "cus_0G9wK1LBy7A0X3",
"object": "customer",
"firstname": "Roberto",
"lastname": "Ramirez",
"email": "robertoiran@example.com",
"phone": "+5215555555555"
},
"payment_method": {
"data": [
{
"id": "och_AgpDB9PYR4RJyYD",
"reference": "64000000003320022901349997",
"type": "oxxo",
"status": "pending_payment",
"expires_at": 1583013067,
"paid_at": null,
"error_code": null,
"error_message": null,
"created_at": 1578681919,
"updated_at": 1578681919
}
]
},
"operation_type": "in",
"refunds": [],
"paid_at": null,
"metadata": {
"order_id": 231008
},
"created_at": 1578681919,
"updated_at": 1578681919,
"links": {
"receipt_payment": "https://admin.gamecash.mx/receipt-payment/ord_KQK3JBnwOjXwZo"
}
}
422 Unprocessable Entity
{
"message": "422 Unprocessable Entity",
"errors": {
"customer.email": [
"El campo customer.email es obligatorio."
]
},
"code": "validation_errors",
"status_code": 422
}
Respuestas
Código | Descripción |
---|---|
200 | OK |
422 | Unprocessable Entity |
Recuperar una orden
GET /orders/:id
curl https://api.gamecash.mx/orders/ord_KQK3JBnwOjXwZo \
-u sk_z8A4Fje1yDM5q9He2:
<?php
require 'vendor/autoload.php';
$headers = [
'auth' => [ 'sk_z8A4Fje1yDM5q9He2', ],
];
$client = new \GuzzleHttp\Client();
try {
$response = $client->request('GET','https://api.gamecash.mx/orders/ord_KQK3JBnwOjXwZo', [
'headers' => $headers,
]);
print_r($response->getBody()->getContents());
} catch (\GuzzleHttp\Exception\BadResponseException $e) {
print_r($e->getMessage());
}
Recupera los detalles de una orden que se ha creado previamente. Proporcione el ID de la orden que le devolvió su solicitud anterior. Se devuelve la misma información al crear o reembolsar la orden.
Parámetros
Parámetro | Descripción |
---|---|
id | Identificador único de la orden. string |
RESPUESTAS
200 OK
{
"id": "ord_KQK3JBnwOjXwZo",
"object": "order",
"description": "Prueba de pago en OXXO.",
"amount": 134999,
"status": "pending_payment",
"customer": {
"id": "cus_0G9wK1LBy7A0X3",
"object": "customer",
"firstname": "Roberto",
"lastname": "Ramirez",
"email": "robertoiran@example.com",
"phone": "+5215555555555"
},
"payment_method": {
"data": [
{
"id": "och_AgpDB9PYR4RJyYD",
"reference": "64000000003320022901349997",
"type": "oxxo",
"status": "pending_payment",
"expires_at": 1583013067,
"paid_at": null,
"error_code": null,
"error_message": null,
"created_at": 1578681919,
"updated_at": 1578681919
}
]
},
"operation_type": "in",
"refunds": [],
"paid_at": null,
"created_at": 1578681919,
"updated_at": 1578681919,
"links": {
"receipt_payment": "https://admin.gamecash.mx/receipt-payment/ord_KQK3JBnwOjXwZo"
}
}
404 Not Found
{
"message": "No such resource: ord_KQK3JBnwOjXwZos",
"code": "resource_missing_error",
"status_code": 404
}
Respuestas
Código | Descripción |
---|---|
200 | OK |
404 | Not Found |
Reembolsar una orden
POST /orders/refunds
curl -X POST \
https://api.gamecash.mx/orders/refunds \
-H 'Content-Type: application/json' \
-u sk_z8A4Fje1yDM5q9He2: \
-d '[
{
"order_id": "ord_KQK3JBnwOjXwZo",
"reason": "requested_by_customer",
"method": "spei"
"bank_account": {
"bank_code": 40002,
"clabe": "489093653610032428"
}
}
]'
<?php
require 'vendor/autoload.php';
$headers = [
'Content-Type' => 'application/json',
'auth' => [ 'sk_z8A4Fje1yDM5q9He2', ],
];
$request_body = [
{
'order_id' : 'ord_KQK3JBnwOjXwZo',
'reason' : 'requested_by_customer',
'method' : 'spei',
"bank_account": {
"bank_code": 40002,
"clabe": "489093653610032428"
}
}
];
$client = new \GuzzleHttp\Client();
try {
$response = $client->request('POST','https://api.gamecash.mx/orders/refunds', [
'headers' => $headers,
'json' => $request_body,
]);
print_r($response->getBody()->getContents());
} catch (\GuzzleHttp\Exception\BadResponseException $e) {
print_r($e->getMessage());
}
Parámetros
Se envia una matriz con uno o mas objetos de instrucciones.
Parámetro | Descripción |
---|---|
order_id | Identificador único de la orden. string, requerido |
reason | Indica el motivo del reembolso. Posibles valores duplicate , fraudulent , requested_by_customer , other .string |
method | Método por el cual se ejecutará la instrucción. Posibles valores spei string, requerido |
bank_account | Hash que contiene la información bancaria del cliente, debe estar presente para el método spei .Hash |
bank_code > bank_account |
La clave de la institución a la que va dirigida el pago de acuerdo con el Catálogo Instituciones. integer, requerido |
clabe > bank_account |
CLABE interbancaria del cliente. string, requerido |
RESPUESTAS
200 OK
{
"id": "ord_KQK3JBnwOjXwZo",
"object": "order",
"description": "Prueba de pago en OXXO.",
"amount": 134999,
"status": "paid",
"customer": {
"id": "cus_0G9wK1LBy7A0X3",
"object": "customer",
"firstname": "Roberto",
"lastname": "Ramirez",
"email": "robertoiran@example.com",
"phone": "+5215555555555"
},
"payment_method": {
"data": [
{
"id": "och_AgpDB9PYR4RJyYD",
"reference": "64000000003320022901349997",
"type": "oxxo",
"status": "paid",
"expires_at": 1583013067,
"paid_at": 1578687860,
"error_code": null,
"error_message": null,
"created_at": 1578681919,
"updated_at": 1578687862
}
]
},
"operation_type": "in",
"refunds": {
"id": "re_84xQBdd2JkJzzEd7",
"amount": 134999,
"reason": "requested_by_customer",
"status": "in_review",
"refunded_at": null,
"created_at": 1578687876
},
"paid_at": 1578687860,
"created_at": 1578681919,
"updated_at": 1578687862,
"links": {
"receipt_payment": "https://admin.gamecash.mx/receipt-payment/ord_KQK3JBnwOjXwZo"
}
}
404 Not Found
{
"message": "No such resource: ord_KQK3JBnwOjXwZos",
"code": "resource_missing_error",
"status_code": 404
}
Respuestas
Código | Descripción |
---|---|
200 | OK |
404 | Not Found |
Dispersiones
El objeto dispersión
EL OBJETO DISPERSIÓN
{
"id": "dsp_mPgYQzE5B8rypJyK4oMvr",
"object": "dispersion",
"amount": 1018676,
"status": "pending_payment",
"payment_method": {
"id": "och_HdT7LmkRRDlbCNMjw0lnj",
"reference": "646180179900000014",
"type": "spei",
"status": "pending_payment",
"expires_at": null,
"paid_at": null,
"error_code": null,
"error_message": null,
"created_at": 1594915607,
"updated_at": 1594915607
},
"finished_at": null,
"canceled_at": null,
"created_at": 1594915607,
"updated_at": 1594915607,
"instructions": {
"object": "list",
"data": [
{...},
{...},
{...}
],
"url": "/dispersions/dsp_mPgYQzE5B8rypJyK4oMvr/instructions",
"has_more": false,
"total": 3
}
}
Atributos | Descripción |
---|---|
id | Identificador único de la dispersión. string |
object | Tipo de objeto. string |
amount | Monto expresado en centavos, el valor es calculado sumando el monto de las instrucciones mas las comisiones. integer |
status | El status de la dispersión. Posibles valores pending_payment , running , finished , canceled .string |
payment_method | Hash que contiene la información del cargo para fondear la dispersión. Hash |
id > payment_method |
Identificador único del método de pago. string |
reference > payment_method |
CLABE interbancaria para realizar el fondeo. string |
type > payment_method |
Tipo del método de pago. string |
status > payment_method |
El status del cargo. Posibles valores pending_payment , declined , expired , paid , error .string |
expires_at > payment_method |
Fecha de expiración del cargo. 32-bit unix timestamp |
paid_at > payment_method |
Fecha en que se realizó el pago del cargo. 32-bit unix timestamp |
error_code > payment_method |
Código de error. string |
error_message > payment_method |
Mensaje descriptivo del error. string |
created_at > payment_method |
Fecha de creación del método de pago. 32-bit unix timestamp |
updated_at > payment_method |
Fecha de la última actualización del método de pago. 32-bit unix timestamp |
finished_at | Fecha en que se terminaron de dispersar todas las instrucciones. 32-bit unix timestamp |
canceled_at | Fecha en que se cancelo la dispersión. 32-bit unix timestamp |
created_at | Fecha de creación de la dispersión. 32-bit unix timestamp |
updated_at | Fecha de la última actualización de la dispersión. 32-bit unix timestamp |
instructions | Lista de las instrucciones. list |
Crear una dispersión
POST /dispersions
curl -X POST \
https://api.gamecash.mx/dispersions \
-H 'Content-Type: application/json' \
-u sk_z8A4Fje1yDM5q9He2: \
-d '[
{
"description": "Descripción de instrucción por spei.",
"amount": 218847,
"method": "spei",
"customer": {
"firstname": "Gia",
"lastname": "Carter",
"email": "vidal49@example.com",
"phone": "5594546531"
},
"bank_account": {
"bank_code": 40002,
"clabe": "489093653610032428"
},
"metadata": {
"order_id": "3381"
}
},
{
"description": "Descripción de instrucción por servicio.",
"amount": 10000,
"method": "service",
"customer": {
"firstname": "Damian",
"lastname": "Ramírez",
"email": "dramirez@example.com"
},
"service": {
"service_code": 64,
"product_code": 193,
"reference": "5555555555"
}
"metadata": {
"order_id": "3382"
}
},
{...},
{...}
]'
<?php
require 'vendor/autoload.php';
$headers = [
'Content-Type' => 'application/json',
'auth' => [ 'sk_z8A4Fje1yDM5q9He2', ],
];
$request_body = [
{
"description": "Descripción de instrucción por spei.",
"amount": 218847,
"method": "spei",
"customer": {
"firstname": "Gia",
"lastname": "Carter",
"email": "vidal49@example.com",
"phone": "5594546531"
},
"bank_account": {
"bank_code": 40002,
"clabe": "489093653610032428"
},
"metadata": {
"order_id": "3381"
}
},
{
"description": "Descripción de instrucción por servicio.",
"amount": 10000,
"method": "service",
"customer": {
"firstname": "Damian",
"lastname": "Ramírez",
"email": "dramirez@example.com"
},
"service": {
"service_code": 64,
"product_code": 193,
"reference": "5555555555"
}
"metadata": {
"order_id": "3382"
}
},
{...},
{...}
];
$client = new \GuzzleHttp\Client();
try {
$response = $client->request('POST','https://api.gamecash.mx/dispersions', [
'headers' => $headers,
'json' => $request_body,
]);
print_r($response->getBody()->getContents());
} catch (\GuzzleHttp\Exception\BadResponseException $e) {
print_r($e->getMessage());
}
Se envia una matriz con uno o mas objetos de instrucciones.
Parámetro | Descripción |
---|---|
description | Descripción asociada a la instrucción. string, requerido, maxLength=40 |
amount | Monto expresado en centavos, el monto mínimo para transferencias spei es de $200.00.integer, requerido, min=20000 |
method | Método por el cual se ejecutará la instrucción. Posibles valores spei , service .string |
customer | Hash que contiene la información del cliente. Hash |
firstname > customer |
Nombre del cliente. string, requerido, minLength=3, maxLength=250 |
lastname > customer |
Apellidos del cliente. string, requerido, minLength=3, maxLength=250 |
email > customer |
Correo electrónico del cliente. string, requerido |
phone > customer |
Número telefónico del cliente. string, length=10 |
bank_account | Hash que contiene la información bancaria del cliente, debe estar presente para el método spei .Hash |
bank_code > bank_account |
La clave de la institución a la que va dirigida el pago de acuerdo con el Catálogo Instituciones. integer, requerido |
clabe > bank_account |
CLABE interbancaria del cliente. string, requerido |
service | Hash que contiene la información del servicio, debe estar presente para el método service .Hash |
service_code > service |
El código del servicio de acuerdo con el Catálogo Servicios y Productos. integer |
product_code > service |
El código del producto de acuerdo con el Catálogo Servicios y Productos. integer |
reference > service |
Número de teléfono o referencia. string |
metadata | Hash en donde se puede enviar información adicional para la instrucción. Puede especificar hasta 50 elementos, con nombres de clave de hasta 40 caracteres y valores de hasta 500 caracteres. Hash |
RESPUESTAS
200 OK
{
"id": "dsp_mPgYQzE5B8rypJyK4oMvr",
"object": "dispersion",
"amount": 1018676,
"status": "pending_payment",
"payment_method": {
"id": "och_HdT7LmkRRDlbCNMjw0lnj",
"reference": "646180179900000014",
"type": "spei",
"status": "pending_payment",
"expires_at": null,
"paid_at": null,
"error_code": null,
"error_message": null,
"created_at": 1594915607,
"updated_at": 1594915607
},
"finished_at": null,
"canceled_at": null,
"created_at": 1594915607,
"updated_at": 1594915607,
"instructions": {
"object": "list",
"data": [
{
"id": "ins_WBM7q29vEpg5abGnRZgjd",
"object": "instruction",
"dispersion": "dsp_mPgYQzE5B8rypJyK4oMvr",
"description": "Descripción de instrucción por spei.",
"amount": 218847,
"method": "spei",
"customer": {
"firstname": "Gia",
"lastname": "Carter",
"email": "vidal49@example.com",
"phone": "5594546531"
},
"bank_account": {
"bank_code": 40002,
"clabe": "489093653610032428"
},
"metadata": {
"order_id": "3381"
},
"error": {
"message": null
},
"external_id": null,
"status": "pending",
"paid_at": null,
"created_at": 1594915607,
"updated_at": 1594915607
},
{
"id": "ins_7q29vbGnpg5ajdWBMRZgE",
"object": "instruction",
"dispersion": "dsp_mPgYQzE5B8rypJyK4oMvr",
"description": "Descripción de instrucción por servicio.",
"amount": 10000,
"method": "service",
"customer": {
"firstname": "Damian",
"lastname": "Ramírez",
"email": "dramirez@example.com"
},
"service": {
"service_code": 64,
"product_code": 193,
"reference": "5555555555"
}
"metadata": {
"order_id": "3382"
},
"error": {
"message": null
},
"external_id": null,
"status": "pending",
"paid_at": null,
"created_at": 1594915607,
"updated_at": 1594915607
},
{...},
{...}
],
"url": "/dispersions/dsp_mPgYQzE5B8rypJyK4oMvr/instructions",
"has_more": false,
"total": 4
}
}
422 Unprocessable Entity
{
"message": "422 Unprocessable Entity",
"errors": {
"0.amount": [
"El monto mínimo es de 20000 centavos."
]
},
"code": "validation_errors",
"status_code": 422
}
Respuestas
Código | Descripción |
---|---|
200 | OK |
422 | Unprocessable Entity |
Recuperar una dispersión
GET /dispersions/:id
curl https://api.gamecash.mx/dispersions/dsp_mPgYQzE5B8rypJyK4oMvr \
-u sk_z8A4Fje1yDM5q9He2:
<?php
require 'vendor/autoload.php';
$headers = [
'auth' => [ 'sk_z8A4Fje1yDM5q9He2', ],
];
$client = new \GuzzleHttp\Client();
try {
$response = $client->request('GET','https://api.gamecash.mx/dispersions/dsp_mPgYQzE5B8rypJyK4oMvr', [
'headers' => $headers,
]);
print_r($response->getBody()->getContents());
} catch (\GuzzleHttp\Exception\BadResponseException $e) {
print_r($e->getMessage());
}
Recupera los detalles de una dispersión que se ha creado previamente, el valor devuelto es un objeto dispersión.
Parámetros
Parámetro | Descripción |
---|---|
id | Identificador único de la dispersión. string |
RESPUESTAS
200 OK
{
"id": "dsp_mPgYQzE5B8rypJyK4oMvr",
"object": "dispersion",
"amount": 1018676,
"status": "pending_payment",
"payment_method": {
"id": "och_HdT7LmkRRDlbCNMjw0lnj",
"reference": "646180179900000014",
"type": "spei",
"status": "pending_payment",
"expires_at": null,
"paid_at": null,
"error_code": null,
"error_message": null,
"created_at": 1594915607,
"updated_at": 1594915607
},
"finished_at": null,
"canceled_at": null,
"created_at": 1594915607,
"updated_at": 1594915607,
"instructions": {
"object": "list",
"data": [
{
"id": "ins_WBM7q29vEpg5abGnRZgjd",
"object": "instruction",
"dispersion": "dsp_mPgYQzE5B8rypJyK4oMvr",
"description": "Descripción de la instrucción.",
"amount": 218847,
"method": "spei",
"customer": {
"firstname": "Gia",
"lastname": "Carter",
"email": "vidal49@example.com",
"phone": "5594546531"
},
"bank_account": {
"bank_code": 40002,
"clabe": "489093653610032428"
},
"metadata": {
"order_id": "3381"
},
"error": {
"message": null
},
"external_id": null,
"status": "pending",
"paid_at": null,
"created_at": 1594915607,
"updated_at": 1594915607
},
{...},
{...}
],
"url": "/dispersions/dsp_mPgYQzE5B8rypJyK4oMvr/instructions",
"has_more": false,
"total": 3
}
}
404 Not Found
{
"message": "No such resource: dsp_mPgYQzE5B8rypJyK4oMvr",
"code": "resource_missing_error",
"status_code": 404
}
Respuestas
Código | Descripción |
---|---|
200 | OK |
404 | Not Found |
Cancelar una dispersión
POST /dispersions/:id/cancel
curl -X POST https://api.gamecash.mx/dispersions/dsp_mPgYQzE5B8rypJyK4oMvr/cancel \
-u sk_z8A4Fje1yDM5q9He2:
<?php
require 'vendor/autoload.php';
$headers = [
'auth' => [ 'sk_z8A4Fje1yDM5q9He2', ],
];
$client = new \GuzzleHttp\Client();
try {
$response = $client->request('POST','https://api.gamecash.mx/dispersions/dsp_mPgYQzE5B8rypJyK4oMvr/cancel', [
'headers' => $headers,
]);
print_r($response->getBody()->getContents());
} catch (\GuzzleHttp\Exception\BadResponseException $e) {
print_r($e->getMessage());
}
Una dispersión creada anteriormente se puede cancelar si aún no se ha fondeado.
Parámetros
Parámetro | Descripción |
---|---|
id | Identificador único de la dispersión. string |
RESPUESTAS
200 OK
{
"id": "dsp_mPgYQzE5B8rypJyK4oMvr",
"object": "dispersion",
"amount": 1018676,
"status": "canceled",
"payment_method": {
"id": "och_HdT7LmkRRDlbCNMjw0lnj",
"reference": "646180179900000014",
"type": "spei",
"status": "pending_payment",
"expires_at": null,
"paid_at": null,
"error_code": null,
"error_message": null,
"created_at": 1594915607,
"updated_at": 1594915607
},
"finished_at": null,
"canceled_at": 1594994461,
"created_at": 1594915607,
"updated_at": 1594915607,
"instructions": {
"object": "list",
"data": [
{
"id": "ins_WBM7q29vEpg5abGnRZgjd",
"object": "instruction",
"dispersion": "dsp_mPgYQzE5B8rypJyK4oMvr",
"description": "Descripción de la instrucción.",
"amount": 218847,
"method": "spei",
"customer": {
"firstname": "Gia",
"lastname": "Carter",
"email": "vidal49@example.com",
"phone": "5594546531"
},
"bank_account": {
"bank_code": 40002,
"clabe": "489093653610032428"
},
"metadata": {
"order_id": "3381"
},
"error": {
"message": null
},
"external_id": null,
"status": "canceled",
"paid_at": null,
"created_at": 1594915607,
"updated_at": 1594915607
},
{...},
{...}
],
"url": "/dispersions/dsp_mPgYQzE5B8rypJyK4oMvr/instructions",
"has_more": false,
"total": 3
}
}
404 Not Found
{
"message": "No such resource: dsp_mPgYQzE5B8rypJyK4oMvr",
"code": "resource_missing_error",
"status_code": 404
}
Respuestas
Código | Descripción |
---|---|
200 | OK |
404 | Not Found |
Instrucciones
El objeto instrucción
EL OBJETO INSTRUCCIÓN
{
"id": "ins_WBM7q29vEpg5abGnRZgjd",
"object": "instruction",
"dispersion": "dsp_mPgYQzE5B8rypJyK4oMvr",
"description": "Descripción de la instrucción.",
"amount": 218847,
"method": "spei",
"customer": {
"firstname": "Gia",
"lastname": "Carter",
"email": "vidal49@example.com",
"phone": "5594546531"
},
"bank_account": {
"bank_code": 40002,
"clabe": "489093653610032428"
},
"service": {
"service_code": 64,
"product_code": 193,
"reference": "5555555555"
}
"metadata": {
"order_id": "3381"
},
"error": {
"message": null
},
"external_id": null,
"status": "pending",
"paid_at": null,
"created_at": 1594915607,
"updated_at": 1594915607
}
Atributos | Descripción |
---|---|
id | Identificador único de la instrucción. string |
object | Tipo de objeto. string |
dispersion | ID de la dispersión. string |
description | Descripción asociada a la instrucción. string, requerido, maxLength=40 |
amount | Monto expresado en centavos, el monto mínimo para transferencias spei es de $200.00.integer, requerido, min=20000 |
method | Método por el cual se ejecutará la instrucción. Posibles valores spei , service .string |
customer | Hash que contiene la información del cliente. Hash |
firstname > customer |
Nombre del cliente. string, requerido, minLength=3, maxLength=250 |
lastname > customer |
Apellidos del cliente. string, requerido, minLength=3, maxLength=250 |
email > customer |
Correo electrónico del cliente. string, requerido |
phone > customer |
Número telefónico del cliente. string, length=10 |
bank_account | Hash que contiene la información bancaria del cliente, debe estar presente para el método spei .Hash |
bank_code > bank_account |
La clave de la institución a la que va dirigida el pago de acuerdo con el Catálogo Instituciones. integer, requerido |
clabe > bank_account |
CLABE interbancaria del cliente. string, requerido |
service | Hash que contiene la información del servicio, debe estar presente para el método service .Hash |
service_code > service |
El código del servicio de acuerdo con el Catálogo Servicios y Productos. integer |
product_code > service |
El código del producto de acuerdo con el Catálogo Servicios y Productos. integer |
reference > service |
Número de teléfono o referencia. string |
metadata | Hash en donde se puede enviar información adicional para la instrucción. Puede especificar hasta 50 elementos, con nombres de clave de hasta 40 caracteres y valores de hasta 500 caracteres. Hash |
error | Hash que contiene la información del error. Hash |
message > error |
Mensaje de error por el cual no se pudo llevar acabo la dispersión. string |
external_id | Código de rastreo de la dispersión. string |
status | El status de la instrucción. Posibles valores pending , in_transit , paid , failed , canceled , refunded .string |
paid_at | Fecha en la que se disperso la instrucción. 32-bit unix timestamp |
created_at | Fecha de creación de la instrucción. 32-bit unix timestamp |
updated_at | Fecha de la última actualización de la instrucción. 32-bit unix timestamp |
Listado de instrucciones
GET /dispersions/:id/instructions
curl https://api.gamecash.mx/dispersions/dsp_mPgYQzE5B8rypJyK4oMvr/instructions \
-u sk_z8A4Fje1yDM5q9He2:
<?php
require 'vendor/autoload.php';
$headers = [
'auth' => [ 'sk_z8A4Fje1yDM5q9He2', ],
];
$client = new \GuzzleHttp\Client();
try {
$response = $client->request('GET','https://api.gamecash.mx/dispersions/dsp_mPgYQzE5B8rypJyK4oMvr/instructions', [
'headers' => $headers,
]);
print_r($response->getBody()->getContents());
} catch (\GuzzleHttp\Exception\BadResponseException $e) {
print_r($e->getMessage());
}
Devuelve una lista de instrucciones asociadas a una dispersión.
Parámetros
Parámetro | Descripción |
---|---|
id | Identificador único de la instrucción. string |
RESPUESTAS
200 OK
{
"object": "list",
"data": [
{
"id": "ins_WBM7q29vEpg5abGnRZgjd",
"object": "instruction",
"dispersion": "dsp_mPgYQzE5B8rypJyK4oMvr",
"description": "Descripción de la instrucción.",
"amount": 218847,
"method": "spei",
"customer": {
"firstname": "Gia",
"lastname": "Carter",
"email": "vidal49@example.com",
"phone": "5594546531"
},
"bank_account": {
"bank_code": 40002,
"clabe": "489093653610032428"
},
"metadata": {
"order_id": "3381"
},
"error": {
"message": null
},
"external_id": null,
"status": "pending",
"paid_at": null,
"created_at": 1594915607,
"updated_at": 1594915607
},
{...},
{...}
],
"url": "/dispersions/dsp_mPgYQzE5B8rypJyK4oMvr/instructions",
"has_more": false,
"total": 3
}
404 Not Found
{
"message": "No such resource: dsp_mPgYQzE5B8rypJyK4oMvr",
"code": "resource_missing_error",
"status_code": 404
}
Respuestas
Código | Descripción |
---|---|
200 | OK |
404 | Not Found |
Recuperar una instrucción
GET /dispersions/:id/instructions/:id
curl https://api.gamecash.mx/dispersions/dsp_mPgYQzE5B8rypJyK4oMvr/instructions/ins_WBM7q29vEpg5abGnRZgjd \
-u sk_z8A4Fje1yDM5q9He2:
<?php
require 'vendor/autoload.php';
$headers = [
'auth' => [ 'sk_z8A4Fje1yDM5q9He2', ],
];
$client = new \GuzzleHttp\Client();
try {
$response = $client->request('GET','https://api.gamecash.mx/dispersions/dsp_mPgYQzE5B8rypJyK4oMvr/instructions/ins_WBM7q29vEpg5abGnRZgjd', [
'headers' => $headers,
]);
print_r($response->getBody()->getContents());
} catch (\GuzzleHttp\Exception\BadResponseException $e) {
print_r($e->getMessage());
}
Recupera los detalles de una instrucción que se ha creado previamente, el valor devuelto es un objeto instrucción.
Parámetros
Parámetro | Descripción |
---|---|
id | Identificador único de la dispersión. string |
id | Identificador único de la instrucción. string |
RESPUESTAS
200 OK
{
"id": "ins_WBM7q29vEpg5abGnRZgjd",
"object": "instruction",
"dispersion": "dsp_mPgYQzE5B8rypJyK4oMvr",
"description": "Descripción de la instrucción.",
"amount": 218847,
"method": "spei",
"customer": {
"firstname": "Gia",
"lastname": "Carter",
"email": "vidal49@example.com",
"phone": "5594546531"
},
"bank_account": {
"bank_code": 40002,
"clabe": "489093653610032428"
},
"metadata": {
"order_id": "3381"
},
"error": {
"message": null
},
"external_id": null,
"status": "pending",
"paid_at": null,
"created_at": 1594915607,
"updated_at": 1594915607
}
404 Not Found
{
"message": "No such resource: ins_WBM7q29vEpg5abGnRZgjd",
"code": "resource_missing_error",
"status_code": 404
}
Respuestas
Código | Descripción |
---|---|
200 | OK |
404 | Not Found |
Paginación
Una lista representa una conjunto de objetos.
El objeto lista
EL OBJETO LISTA
{
"object": "list",
"data": [
{...},
{...},
{...}
],
"url": "...",
"has_more": false,
"total": 3
"previous_page": "..."
"next_page": "..."
}
Atributos | Descripción |
---|---|
object | Cadena que describe el tipo de objeto devuelto. string |
data | Matriz que contiene los elementos. array |
url | URL para acceder a la lista. string |
has_more | Indicardor si hay o no más elementos disponibles después de este conjunto. Si es falso, este conjunto comprende el final de la lista. boolean |
total | Total de elementos mostrados en el conjunto. integer |
previous_page | URL de la pagina anterior. string |
next_page | URL de la pagina siguiente. string |
Eventos
Los eventos es la forma en que le informamos cualquier cosa que ha pasado en
su cuenta. Cuando ocurre un evento, creamos un nuevo objeto Evento. Por
ejemplo, cuando un cargo ha sido pagado creamos el evento order.paid
.
La manera en que le informamos los eventos es por medio de un sistema de webhooks, que se encarga de enviar los objetos de Evento directamente a un endpoint en su servidor. Los webhooks se administran en la configuración de su cuenta.
Si el endpoint en su servidor no responde con un código de respuesta 2xx volveremos a intentar informarle después de 10 segundos. Si ese segundo intento falla, volveremos a intentar informarle por última vez después de 100 segundos. El webhook también se considerara fallido si la aplicación no responde en 3 segundos o si el SSL no es válido.
El objeto evento
EL OBJETO EVENTO
{
"object": "event",
"type": "order.paid",
"event_date": 1596029094,
"data": { ... }
}
Atributos | Descripción |
---|---|
object | Tipo de objeto. string |
type | Tipo de evento (por ejemplo, order.paid o order.refunded). string |
event_date | Fecha de creación del evento. 32-bit unix timestamp |
data | Hash que contiene el objeto asociado con el evento. Hash |
Tipos de eventos
Esta es una lista de todos los tipos de eventos que enviamos actualmente. Podemos agregar más en cualquier momento, por lo que al desarrollar y mantener su código, no debe suponer que solo existen estos tipos.
Evento | Descripción |
---|---|
order.paid | Este evento ocurre cuando una orden ha sido pagada. Incluye el objeto orden. |
dispersion.created | Este evento ocurre cuando una dispersión ha sido registrada. Incluye el objeto dispersión. |
dispersion.finished | Este evento ocurre cuando se han ejecutado todas las instrucciones de una dispersión. Incluye el objeto dispersión. |
instruction.created | Este evento ocurre cuando una instrucción ha sido registrada. Incluye el objeto instrucción. |
instruction.in_transit | Este evento ocurre cuando se ha enviado una instrucción a Banxico. Incluye el objeto instrucción. |
instruction.paid | Este evento ocurre cuando se ha liquidado una instrucción. Incluye el objeto instrucción. |
instruction.canceled | Este evento ocurre cuando se detecta un comportamiento inusual en alguna de las cuentas involucradas. Los motivos para la cancelación son: * Cuenta bloqueada o cancelada * No cumple con los lineamientos o disposiciones dictadas por la Comisión Nacional Bancaria y de Valores (CNBV) en materia de Prevención de Lavado de Dinero (PLD) Incluye el objeto instrucción. |
instruction.refunded | Este evento ocurre cuando el banco beneficiario rechaza la instrucción. Incluye el objeto instrucción. |
Errores
La API de GameCash usa los siguientes códigos de error:
Error | Descripción |
---|---|
400 | Bad Request -- El mensaje JSON enviado en el cuerpo de la petición no es válido. |
401 | Unauthorized -- Tu clave de API es incorrecta. |
404 | Not Found -- El recurso no existe. |
422 | Unprocessable Entity -- Error en la validación de los parámetros. |
500 | Internal Server Error -- Tuvimos un problema con nuestro servidor. Intenta nuevamente más tarde. |
Catálogo de Instituciones
Código | Nombre |
---|---|
2001 | BANXICO |
37006 | BANCOMEXT |
37009 | BANOBRAS |
37019 | BANJERCITO |
37135 | NAFIN |
37166 | BANSEFI |
37168 | HIPOTECARIA FED |
40002 | BANAMEX |
40012 | BBVA BANCOMER |
40014 | SANTANDER |
40021 | HSBC |
40030 | BAJIO |
40036 | INBURSA |
40042 | MIFEL |
40044 | SCOTIABANK |
40058 | BANREGIO |
40059 | INVEX |
40060 | BANSI |
40062 | AFIRME |
40072 | BANORTE |
40102 | ACCENDO BANCO |
40103 | AMERICAN EXPRES |
40106 | BANK OF AMERICA |
40108 | MUFG |
40110 | JP MORGAN |
40112 | BMONEX |
40113 | VE POR MAS |
40124 | DEUTSCHE |
40126 | CREDIT SUISSE |
40127 | AZTECA |
40128 | AUTOFIN |
40129 | BARCLAYS |
40130 | COMPARTAMOS |
40132 | MULTIVA BANCO |
40133 | ACTINVER |
40136 | INTERCAM BANCO |
40137 | BANCOPPEL |
40138 | ABC CAPITAL |
40140 | CONSUBANCO |
40141 | VOLKSWAGEN |
40143 | CIBANCO |
40145 | BBASE |
40147 | BANKAOOL |
40148 | PAGATODO |
40150 | INMOBILIARIO |
40151 | DONDE |
40152 | BANCREA |
40154 | BANCO FINTERRA |
40155 | ICBC |
40156 | SABADELL |
40157 | SHINHAN |
40158 | MIZUHO BANK |
40160 | BANCO S3 |
90600 | MONEXCB |
90601 | GBM |
90602 | MASARI |
90605 | VALUE |
90606 | ESTRUCTURADORES |
90608 | VECTOR |
90613 | MULTIVA CBOLSA |
90616 | FINAMEX |
90617 | VALMEX |
90620 | PROFUTURO |
90630 | CB INTERCAM |
90631 | CI BOLSA |
90634 | FINCOMUN |
90636 | HDI SEGUROS |
90638 | AKALA |
90642 | REFORMA |
90646 | STP |
90648 | EVERCORE |
90652 | CREDICAPITAL |
90653 | KUSPIT |
90656 | UNAGRA |
90659 | ASP INTEGRA OPC |
90670 | LIBERTAD |
90677 | CAJA POP MEXICA |
90680 | CRISTOBAL COLON |
90683 | CAJA TELEFONIST |
90684 | TRANSFER |
90685 | FONDO (FIRA) |
90686 | INVERCAP |
90689 | FOMPED |
90901 | CLS |
90902 | INDEVAL |
90903 | CoDi Valida |
91812 | BBVA BANCOMER2 |
90814 | SANTANDER2 |
91821 | HSBC2 |