Con la integración de Cash Out, tu comercio adquirirá la capacidad de lectura y procesamiento de referencias Cash Out para realizar los cobros en efectivo de las mismas y que estos se vean reflejados como depósitos de efectivo en las cuentas de los usuarios.
En esta documentación encontrarás toda la información necesaria para:
En caso de tener alguna duda, estaremos felices de ayudarte a través del botón de contacto que se encuentra en cada una de las secciones de esta documentación.
dapp® cuenta con un sandbox para poder realizar pruebas durante el desarrollo.
Las URL base para cada ambiente son las siguientes:
Sandbox:
https://sandbox.dapp.mx/v2/
Producción:
https://api.dapp.mx/v2/
dapp® utiliza "Basic Access Authentication" para el REST API, usando el API KEY como password y dejando el usuario vacío
También debe incluirse el header “User-Agent” de lo contrario se rechazará la petición con un código 403, se recomienda incluir un nombre distintivo y un número de versión de aplicación, sin embargo cualquier valor será aceptado, ejemplo:
“User-Agent”: “MiIntegracion1.0”
curl --location --request GET 'https://sandbox.dapp.mx/v2' \ --header 'Authorization: Basic OnlvdXItYXBpLWtleQ=='
var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Basic OnlvdXItYXBpLWtleQ==");
Request request = new Request.Builder() .addHeader("Authorization", "Basic OnlvdXItYXBpLWtleQ==")
url = "https://sandbox.dapp.mx/v2" payload={} headers = { 'Authorization': 'Basic OnlvdXItYXBpLWtleQ==', } response = requests.request("GET", url, headers=headers, data=payload)
$curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "https://sandbox.dapp.mx/v2", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => [ "Authorization: Basic OnlvdXItYXBpLWtleQ==" ], ]); $response = curl_exec($curl); curl_close($curl);
Para obtener la información de una referencia cashout, puedes consumir el siguiente endpoint:
/cashout/references/{reference_str}
https://sandbox.dapp.mx/v2/cashout/references/{reference_str}
GET
Privada
Nota: no es necesario crear una estructura body, tras configurar la llave, especificar el tipo de petición GET y añadir la URL, se puede realizar la consulta.
curl --location --request GET 'https://sandbox.dapp.mx/v2/cashout/references/{reference_str}' \ --header 'User-Agent: MyApp 1.0' \ --header 'Authorization: Basic OnlvdXItYXBpLWtleQ=='
var client = new RestClient("https://sandbox.dapp.mx/v2/cashout/references/{reference_str}"); client.Timeout = 60; var request = new RestRequest(Method.GET); client.UserAgent = "MyApp 1.0"; request.AddHeader("Authorization", "Basic OnlvdXItYXBpLWtleQ=="); IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient().newBuilder() .build(); Request request = new Request.Builder() .url("https://sandbox.dapp.mx/v2/cashout/references/{reference_str}") .method("GET", null) .addHeader("User-Agent", "MyApp 1.0") .addHeader("Authorization", "Basic OnlvdXItYXBpLWtleQ==") .build(); Response response = client.newCall(request).execute();
import requests url = "https://sandbox.dapp.mx/v2/cashout/references/{reference_str}" headers = { 'User-Agent': 'MyApp 1.0', 'Authorization': 'Basic OnlvdXItYXBpLWtleQ==', } response = requests.request("GET", url, headers=headers)
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://sandbox.dapp.mx/v2/cashout/references/{reference_str}', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'User-Agent' => 'MyApp 1.0', 'Authorization: Basic OnlvdXItYXBpLWtleQ==' ), )); $response = curl_exec($curl); curl_close($curl);
{
"rc": 0,
"msg": "Ok",
"data": {
"reference": "1029384756",
"creation_date": "2022-04-26T21:58:04.035947+00:00",
"expiration_date": "2022-04-26T22:06:08.242188+00:00",
"amount": 10.0,
"currency": "MXN"
}
}
Parámetro |
Descripción |
---|---|
reference |
Número de referencia. |
creation_date |
Fecha de creación. |
expiration_date |
Fecha de expiración. |
amount |
Monto asociado a la referencia. |
currency |
Moneda de la referencia. |
Para cobrar una referencia cashout hay que consumir el siguiente endpoint:
/cashout
https://sandbox.dapp.mx/v2/cashout
POST
Privada
Parámetro |
Descripción |
Requerido u opcional |
---|---|---|
reference |
Referencia cashout. |
Requerido |
amount |
Monto, tiene que ser un valor tipo float. Ejemplo: 10.0 |
Requerido |
merchant_reference |
Referencia interna del comercio. Máximo 200 caracteres. |
Requerido |
store |
Tienda dónde se realizará el abono. |
Requerido |
pos |
Caja dónde se hará el abono. |
Requerido |
curl --location --request POST 'https://sandbox.dapp.mx/v2/cashout' \ --header 'User-Agent: MyApp 1.0' \ --header 'Authorization: Basic OnlvdXItYXBpLWtleQ==' \ --header 'Content-Type: application/json' \ --data-raw '{ "reference": "1234562565547614", "amount": 100.0, "merchant_reference": "prueba cashout", "store": 1, "pos": 1 }'
var client = new RestClient("https://sandbox.dapp.mx/v2/cashout"); client.Timeout = 60; var request = new RestRequest(Method.POST); client.UserAgent = "MyApp 1.0"; request.AddHeader("Authorization", "Basic OnlvdXItYXBpLWtleQ=="); request.AddHeader("Content-Type", "application/json"); var body = @"{" + "\n" + @" ""reference"": ""1234562565547614""," + "\n" + @" ""amount"": 100.0," + "\n" + @" ""merchant_reference"": ""prueba cashout""," + "\n" + @" ""store"": 1," + "\n" + @" ""pos"": 1" + "\n" + @"}"; request.AddParameter("application/json", body, ParameterType.RequestBody); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder() .build(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\n \"reference\": \"1234562565547614\",\n \"amount\": 100.0,\n \"merchant_reference\": \"prueba cashout\",\n \"store\": 1,\n \"pos\": 1\n}"); Request request = new Request.Builder() .url("https://sandbox.dapp.mx/v2/cashout") .method("POST", body) .addHeader("User-Agent", "MyApp 1.0") .addHeader("Authorization", "Basic OnlvdXItYXBpLWtleQ==") .addHeader("Content-Type", "application/json") .build(); Response response = client.newCall(request).execute();
import requests import json url = "https://sandbox.dapp.mx/v2/cashout" payload = json.dumps({ "reference": "1234562565547614", "amount": 100.0, "merchant_reference": "prueba cashout", "store": 1, "pos": 1 }) headers = { 'User-Agent': 'MyApp 1.0', 'Authorization': 'Basic OnlvdXItYXBpLWtleQ==', 'Content-Type': 'application/json' } response = requests.request("POST", url, headers=headers, data=payload)
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://sandbox.dapp.mx/v2/cashout', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{ "reference": "1234562565547614", "amount": 100.0, "merchant_reference": "prueba cashout", "store": 1, "pos": 1 }', CURLOPT_HTTPHEADER => array( 'User-Agent' => 'MyApp 1.0', 'Authorization: Basic OnlvdXItYXBpLWtleQ==', 'Content-Type: application/json', ), )); $response = curl_exec($curl); curl_close($curl);
{
"rc": 0,
"msg": "Ok",
"data": {
"id": "43e9d7e2-f88e-4857-b110-8d1e3c31bded",
"reference": "1234562565547614",
"merchant_reference": "prueba cashout",
"auth_number": "579035",
"amount": 100.0,
"fee": 0.0,
"total": 100.0,
"currency": "MXN",
"refunded": false,
"date": "2022-05-10T21:33:16.760231+00:00",
"ticket_disclaimer": "Está operación es realizada por: plataforma Dapp/XCD. Para cualquier aclaración conserve este ticket. Conserve este ticket. Dudas o aclaraciones: ayuda@dapp.mx
"wallet": {
"id": "043",
"name": "Vringpay"
}
}
}
Sección |
Parámetro |
Descripción |
---|---|---|
id |
Id del cashout. |
|
reference |
Número de referencia. |
|
merchant_reference |
Referencia interna del comercio. |
|
auth_num |
Número de autorización. |
|
amount |
Monto de la referencia. |
|
fee |
Comisión. |
|
total |
Monto de la referencia más valor de la comisión. |
|
currency |
Moneda del pago. |
|
refunded |
Indica se la transacción ha sido o no reversada. |
|
date |
Fecha de la operación. |
|
ticket_disclaimer |
Leyenda que deberá ser impresa en el ticket del cliente. |
|
Wallet   |
id |
Id público del wallet. |
name |
Nombre del wallet. |
Para realizar un reverso de una referencia out hay que consumir el siguiente endpoint:
/cashout/{cashout_id}/refund
https://sandbox.dapp.mx/v2/cashout/{cashout_id}/refund
POST
Privada
https://sandbox.dapp.mx/v2/cashout/43e9d7e2-f88e-4857-b110-8d1e3c31bded/refund
Nota: no es necesario crear una estructura body, tras configurar la llave, especificar el tipo de petición POST y añadir la URL, se puede realizar la consulta. br Adicionalmente, las referencias cash out solo podrán ser reversadas el mismo día en el que fueron pagadas.
curl --location --request POST 'https://sandbox.dapp.mx/v2/cashout/{cashout_id}/refund' \ --header 'User-Agent: MyApp 1.0' \ --header 'Authorization: Basic OnlvdXItYXBpLWtleQ==' \
var client = new RestClient("https://sandbox.dapp.mx/v2/cashout/{cashout_id}/refund"); client.Timeout = 60; var request = new RestRequest(Method.POST); client.UserAgent = "MyApp 1.0"; request.AddHeader("Authorization", "Basic OnlvdXItYXBpLWtleQ=="); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder() .build(); MediaType mediaType = MediaType.parse("application/json"); Request request = new Request.Builder() .url("https://sandbox.dapp.mx/v2/cashout/{cashout_id}/refund") .method("POST", null) .addHeader("User-Agent", "MyApp 1.0") .addHeader("Authorization", "Basic OnlvdXItYXBpLWtleQ==") .build(); Response response = client.newCall(request).execute();
import requests import json url = "https://sandbox.dapp.mx/v2/cashout/{cashout_id}/refund" headers = { 'User-Agent': 'MyApp 1.0', 'Authorization': 'Basic OnlvdXItYXBpLWtleQ==' } response = requests.request("POST", url, headers=headers)
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://sandbox.dapp.mx/v2/cashout/{cashout_id}/refund', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => array( 'User-Agent' => 'MyApp 1.0', 'Authorization: Basic OnlvdXItYXBpLWtleQ==', ), )); $response = curl_exec($curl); curl_close($curl);
{
"rc": 0,
"msg": "Ok",
"data": {
"id": "43e9d7e2-f88e-4857-b110-8d1e3c31bded",
"reference": "1234562565547614",
"merchant_reference": "prueba cashout",
"auth_number": "579035",
"amount": 100.0,
"fee": 0.0,
"total": 100.0,
"currency": "MXN",
"refunded": true,
"date": "2022-05-10T21:33:16.760231+00:00",
"wallet": {
"id": "043",
"name": "Vringpay"
}
}
}
Sección |
Parámetro |
Descripción |
---|---|---|
id |
Id del cashout. |
|
reference |
Número de referencia. |
|
merchant_reference |
Referencia interna del comercio. |
|
auth_num |
Número de autorización. |
|
amount |
Monto de la referencia. |
|
fee |
Comisión. |
|
total |
Monto de la referencia más valor de la comisión. |
|
currency |
Moneda del pago. |
|
refunded |
Indica se la transacción ha sido o no reversada. |
|
date |
Fecha de la operación. |
|
ticket_disclaimer |
Leyenda que deberá ser impresa en el ticket del cliente. |
|
Wallet   |
id |
Id público del wallet. |
name |
Nombre del wallet. |
Te dejamos aquí algunos términos relevantes definidos para facilitar la lectura y entendimiento de nuestras documentaciones.
Código de cobro:
Es el identificador único asignado a una transacción de cobro generada
por un comercio y que está asociado a ciertos parámetros específicos como Nombre del Comercio, Monto,
Moneda, Fecha, Lugar y Hora, entre otros. Un código de cobro puede ser representado como un Código QR para
ser escaneado por el cliente, o ser transferido a un dispositivo móvil a través de un deep link o una
notificación push.
Código QR:
Un código de respuesta rápida (o Código QR) es una representación gráfica
bidimensional de una cadena de texto generado por que generalmente se asocia a un código de cobro.
Código QR dinámico:
Es aquél Código QR asociado a un solo código de cobro y a una sola
transacción única y diferenciable. Sus parámetros pueden tomar valores distintos en cada transacción. Cada
Código QR se verá distinto a los demás ya que representará una cadena de texto distinta.
Código QR estático:
Es aquél Código QR que luce permanentemente igual ya que siempre
representa una misma cadena de texto. Este tipo de códigos son útiles cuando los parámetros asociados a los
códigos de cobro son siempre iguales. Dado que la representación gráfica no cambia, estos códigos pueden ser
impresos y usados múltiples veces para pagar un mismo código de cobro.
Referencia Cash in:
Es un código alfanumérico asociado a una transacción de pago en
efectivo, ya sea para realizar un depósito de efectivo, para realizar un pago de servicios, para realizar el
pago en efectivo de una orden de comercio electrónico, o cualquier otra operación equivalente. Las
referencias Cash In están siempre asociadas a parámetros específicos como Monto, Fecha, Hora, entre otros, y
son generadas a petición del usuario cuando este desea realizar una operación de este tipo.
Súmate a la revolución.
Intégrate ahora.