Realizando una venta
Ahora que has podido autorizar tu aplicación y obtener un access_token
, el siguiente paso es realizar una transacción
de prueba. Recuerda que debes conectar a
internet la terminal, configurar la aplicación para
poder realizar una venta y configurar el servicio de respuesta.
Para realizar una venta, 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.
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/sale
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 4 valores mínimos requeridos son serialNumber, amount, storeId, traceability. Consulta lista de valores permitidos en una petición.
{
"serialNumber": "{serialNumber}",
"amount": "{{amount}}",
"storeId": "{storeId}",
"traceability": {}
}
Ejemplo de solicitud / respuesta
A continuación, se muestra un ejemplo de una petición para solicitar una venta y los diferentes mensajes de respuesta.
Solicitud de venta
curl -L -X POST 'http://nubeqa.netpay.com.mx:3334/netpay-integration-service/transactions/sale' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {{access_token}} ' \
--data-raw '{
"serialNumber": "{{serialNumber}}",
"amount": "{{amount}}",
"storeId": "{{storeId}}",
"traceability": {}
}'
var client = new RestClient("http://nubeqa.netpay.com.mx:3334/netpay-integration-service/transactions/sale");
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", "{\n\t\"serialNumber\": \"{{serialNumber}}\",\n\t\"amount\": \"{{amount}}\",\n\t\"storeId\": \"{{storeId}}\",\n\t\"traceability\": {}\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/sale",
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 =>"{\n\t\"serialNumber\": \"{{serialNumber}}\",\n\t\"amount\": \"{{amount}}\",\n\t\"storeId\": \"{{storeId}}\",\n\t\"traceability\": {}\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, "{\n\t\"serialNumber\": \"{{serialNumber}}\",\n\t\"amount\": \"{{amount}}\",\n\t\"storeId\": \"{{storeId}}\",\n\t\"traceability\": {}\n}");
Request request = new Request.Builder()
.url("http://nubeqa.netpay.com.mx:3334/netpay-integration-service/transactions/sale")
.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/sale"
payload = "{\n\t\"serialNumber\": \"{{serialNumber}}\",\n\t\"amount\": \"{{amount}}\",\n\t\"storeId\": \"{{storeId}}\",\n\t\"traceability\": {}\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.