Realizando una cancelación
En caso de requerirlo, se puede cancelar una venta realizada el mismo día consumiendo el servicio de cancelación.
Para realizar una cancelación, es necesario contar con la siguiente información:
- {{serialNumber}} : Numero de serie. Cadena numérica a 10 dígitos ubicada en la parte posterior de la terminal (S/N).
- {{storeId}} : Número identificador de comercio asignado por terminal.
- {{access_token}} : Token de acceso necesario para consumir el servicio. Ver obtener token de acceso.
- {{orderId}} : numero de orden generado al realizar una venta. Ver información de regreso de la terminal.
Cosas a tener en cuenta
- La terminal debe tener acceso a internet en todo momento sin restricciones al dominio y
subdominios
*.netpay.com.mx
para recibir y enviar solicitudes. - Debe estar encendida la pantalla de la terminal y estar en primer plano la pantalla principal de la aplicación.
- Sólo se puede cancelar una transacción realizada el mismo día, y la cancelación se debe solicitar antes de las 20:00 hora Ciudad de México por el monto total.
Ambientes
SANDBOX URL BASE:
http://nubeqa.netpay.com.mx:3334
PRODUCCIÓN URL BASE:
https://suite.netpay.com.mx/
Estructura de una petición
POST /netpay-integration-service/transactions/cancel
Headers
Los siguientes headers deben ser enviados en la petición
- Content-Type: application/json
- Authorization: Bearer {{access_token}}
Body
En la petición, se debe mandar un objeto JSON con los datos según se requieran. Los 3 valores mínimos requeridos son serialNumber, orderId, storeId. Consulta lista de valores permitidos en una petición.
{
"serialNumber": "{{serialNumber}}",
"orderId": "{{orderId}}",
"storeId": "{{storeId}}"
}
Ejemplo de solicitud / respuesta
A continuación, se muestra un ejemplo de una petición para solicitar una cancelación y los diferentes mensajes de respuesta.
Solicitud de cancelación
curl -L -X POST 'http://nubeqa.netpay.com.mx:3334/netpay-integration-service/transactions/cancel' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {{access_token}}' \
--data-raw '{
"orderId": "{{orderId}}",
"serialNumber": "{{serialNumber}}",
"storeId": "{{storeId}}"
}'
var client = new RestClient("http://nubeqa.netpay.com.mx:3334/netpay-integration-service/transactions/cancel");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{access_token}}");
request.AddParameter("application/json", "{\r\n \"orderId\": \"{{orderId}}\",\r\n \"serialNumber\": \"{{serialNumber}}\",\r\n \"storeId\": \"{{storeId}}\"\r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://nubeqa.netpay.com.mx:3334/netpay-integration-service/transactions/cancel",
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 =>"{\r\n \"orderId\": \"{{orderId}}\",\r\n \"serialNumber\": \"{{serialNumber}}\",\r\n \"storeId\": \"{{storeId}}\"\r\n}",
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json",
"Authorization: Bearer {{access_token}}"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"orderId\": \"{{orderId}}\",\r\n \"serialNumber\": \"{{serialNumber}}\",\r\n \"storeId\": \"{{storeId}}\"\r\n}");
Request request = new Request.Builder()
.url("http://nubeqa.netpay.com.mx:3334/netpay-integration-service/transactions/cancel")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{access_token}}")
.build();
Response response = client.newCall(request).execute();
import requests
url = "http://nubeqa.netpay.com.mx:3334/netpay-integration-service/transactions/cancel"
payload = "{\r\n \"orderId\": \"{{orderId}}\",\r\n \"serialNumber\": \"{{serialNumber}}\",\r\n \"storeId\": \"{{storeId}}\"\r\n}"
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{access_token}}'
}
response = requests.request("POST", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
Respuestas
- SUCCESS: Se obtendrá la siguiente respuesta si la información enviada es correcta.
- INVALID TOKEN: Se obtendrá la siguiente respuesta si el
{{access_token}}
enviado es incorrecto. - MISSING TERMINAL: Se obtendrá la siguiente respuesta si el
{{serialNumber}}
enviado es incorrecto.
{
"code": "00",
"message": "Mensaje enviado exitosamente"
}
{
"error": "invalid_token",
"error_description": "Cannot convert access token to JSON"
}
{
"code": "19",
"message": "No se encontró la terminal"
}
NOTA: Es importante que el
{{serialNumber}}
,{{storeId}}
,URL BASE
yPATH
queden configurables dentro de algún menú de configuración o un archivo externo dado que pueden cambiar en el ambiente de producción.