Realizando una reimpresión
En algunos escenarios, como cuando la terminal se queda sin papel y no se tiene uno a la mano, es necesario reimprimir el ticket ya sea para brindar una copia al cliente como comprobante de pago o para el negocio, como comprobante de cobro.
Para realizar una reimpresió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.
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/reprint
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 reimpresión y los diferentes mensajes de respuesta.
Solicitud de reimpresión
curl -L -X POST 'http://nubeqa.netpay.com.mx:3334/netpay-integration-service/transactions/reprint' \
-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/reprint");
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/reprint",
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/reprint")
.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/reprint"
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)
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.