Crear una venta
Seguridad
Esta api utiliza clientSecret, user y password como método de autenticación.
- Name: X-QRAPI-SECRET
- Name: X-QRAPI-USER
- Name: X-QRAPI-PASS
- In: headers
Consulta cómo obtener las Credenciales
Parámetros de solicitud
| Nombre | Descripción | Requerido | Tipo |
|---|---|---|---|
| esRecompra | Indica si es compra o recompra/canje | Requerido | boolean |
| Monto | Monto | Requerido | number |
| SucursalVentaID | ID de Sucursal de Venta | Requerido | number |
| CodigoPais | Código de País. Ejemplo: 591 para Bolivia | Requerido | number |
| Marcas | Cadena de texto con 0, una o mas marcas separadas por coma. revisa los ejemplos de solicitud para mas detalles | Requerido | string |
| CuponOrigenID | ID de Cupón de Origen. Este campo es opcional cuando es venta normal pero es requerido cuando existe un canje de cupón | Atención | number |
| Celular | Número de Teléfono | Opcional | string |
| ClienteNombre | Nombre del Cliente | Opcional | string |
| Nit | Número de Identificación Tributaria | Opcional | string |
Ejemplo de solicitud sin marcas, ni datos de cliente
{
"esRecompra": true,
"Monto": 120,
"SucursalVentaID": 10,
"CodigoPais": 591,
"Marcas": ""
}
Ejemplo de solicitud con una marca + canje de cupón
{
"esRecompra": true,
"Monto": 120,
"SucursalVentaID": 10,
"CodigoPais": 591,
"CuponOrigenID": 1000,
"Marcas": "45",
"Celular": "7777777",
"ClienteNombre": "Pepe QUintana",
"Nit": "5849941"
}
Ejemplo de solicitud con multiples marcas
{
"esRecompra": true,
"Monto": 120,
"SucursalVentaID": 10,
"CodigoPais": 591,
"Marcas": "82,12,10",
"Celular": "7777777",
"ClienteNombre": "Pepe QUintana",
"Nit": "5849941"
}
Respuesta
| Code | Description |
|---|---|
| 200 | Retorna los datos de la venta |
| 400 | Retorna los posibles errores de la solicitud |
| 401 | Unauthorized |
Uso 📝
- Javascript
- C#
- PHP
- Java
- Python
create-sale.js
const headers = new Headers()
headers.append('X-QRAPI-SECRET', 'yourClientSecret')
headers.append('X-QRAPI-USER', 'yourUser')
headers.append('X-QRAPI-PASS', 'yourPassword')
const requestOptions = {
method: 'POST',
headers: headers,
body: JSON.stringify({
esRecompra: true,
Monto: 100.0,
SucursalVentaID: 123,
CodigoPais: 591,
Marcas: 'Marca1,Marca2',
CuponOrigenID: 456,
Celular: '1234567890',
ClienteNombre: 'Nombre del Cliente',
Nit: 'NIT123456789'
}),
redirect: 'follow'
}
fetch('https://backend.qrupones.com/sale', requestOptions)
.then((response) => response.json())
.then((result) => console.log(result))
.catch((error) => console.error('error', error))
create-sale.cs
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var headers = new()
{
{ "X-QRAPI-SECRET", "yourClientSecret" },
{ "X-QRAPI-USER", "yourUser" },
{ "X-QRAPI-PASS", "yourPassword" },
};
var data = new
{
esRecompra = true,
Monto = 100.0,
SucursalVentaID = 123,
CodigoPais = 591,
Marcas = "Marca1,Marca2",
CuponOrigenID = 456,
Celular = "1234567890",
ClienteNombre = "Nombre del Cliente",
Nit = "NIT123456789",
};
using var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("X-QRAPI-SECRET", "yourClientSecret");
client.DefaultRequestHeaders.Add("X-QRAPI-USER", "yourUser");
client.DefaultRequestHeaders.Add("X-QRAPI-PASS", "yourPassword");
try
{
var response = await client.PostAsync("https://backend.qrupones.com/sale", new StringContent(
System.Text.Json.JsonSerializer.Serialize(data),
Encoding.UTF8, "application/json"));
response.EnsureSuccessStatusCode();
var responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
catch (HttpRequestException e)
{
Console.WriteLine($"Request error: {e.Message}");
}
}
}
create-sale.php
<?php
$headers = [
'X-QRAPI-SECRET: yourClientSecret',
'X-QRAPI-USER: yourUser',
'X-QRAPI-PASS: yourPassword',
'Content-Type: application/json',
];
$data = [
'esRecompra' => true,
'Monto' => 100.0,
'SucursalVentaID' => 123,
'CodigoPais' => 591,
'Marcas' => 'Marca1,Marca2',
'CuponOrigenID' => 456,
'Celular' => '1234567890',
'ClienteNombre' => 'Nombre del Cliente',
'Nit' => 'NIT123456789',
];
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://backend.qrupones.com/sale',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($data),
]);
$response = curl_exec($curl);
if ($response === false) {
echo 'Curl error: ' . curl_error($curl);
} else {
echo $response;
}
curl_close($curl);
?>
create-sale.java
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.OutputStream;
import java.util.Scanner;
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
String urlString = "https://backend.qrupones.com/sale";
try {
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("X-QRAPI-SECRET", "yourClientSecret");
connection.setRequestProperty("X-QRAPI-USER", "yourUser");
connection.setRequestProperty("X-QRAPI-PASS", "yourPassword");
connection.setRequestProperty("Content-Type", "application/json");
connection.setDoOutput(true);
OutputStream os = connection.getOutputStream();
Gson gson = new Gson();
String requestBody = gson.toJson(new SolicitudRequest(
true,
100.0,
123,
591,
"Marca1,Marca2",
456,
"1234567890",
"Nombre del Cliente",
"NIT123456789"
));
os.write(requestBody.getBytes());
os.flush();
os.close();
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
Scanner scanner = new Scanner(connection.getInputStream());
StringBuilder response = new StringBuilder();
while (scanner.hasNextLine()) {
response.append(scanner.nextLine());
}
scanner.close();
System.out.println(response.toString());
} else {
System.out.println("HTTP Request Error: " + responseCode);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class SolicitudRequest {
boolean esRecompra;
double Monto;
int SucursalVentaID;
int CodigoPais;
String Marcas;
int CuponOrigenID;
String Celular;
String ClienteNombre;
String Nit;
public SolicitudRequest(
boolean esRecompra,
double Monto,
int SucursalVentaID,
int CodigoPais,
String Marcas,
int CuponOrigenID,
String Celular,
String ClienteNombre,
String Nit
) {
this.esRecompra = esRecompra;
this.Monto = Monto;
this.SucursalVentaID = SucursalVentaID;
this.CodigoPais = CodigoPais;
this.Marcas = Marcas;
this.CuponOrigenID = CuponOrigenID;
this.Celular = Celular;
this.ClienteNombre = ClienteNombre;
this.Nit = Nit;
}
}
create-sale.py
import requests
headers = {
'X-QRAPI-SECRET': 'yourClientSecret',
'X-QRAPI-USER': 'yourUser',
'X-QRAPI-PASS': 'yourPassword',
'Content-Type': 'application/json',
}
data = {
'esRecompra': True,
'Monto': 100.0,
'SucursalVentaID': 123,
'CodigoPais': 591,
'Marcas': 'Marca1,Marca2',
'CuponOrigenID': 456,
'Celular': '1234567890',
'ClienteNombre': 'Nombre del Cliente',
'Nit': 'NIT123456789',
}
url = 'https://backend.qrupones.com/sale'
try:
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
print(response.text)
except requests.exceptions.RequestException as e:
print(f'Request error: {e}')
Respuesta exitosa ✅
{
"data": {
"Celular": "Número de Celular",
"ClienteNombre": "Nombre del Cliente",
"esRecompra": true,
"Monto": 100,
"SucursalVentaID": 5,
"Marcas": "Marca1, Marca2",
"CuponOrigenID": 2000,
"CodigoPais": 123,
"Nit": "Número de Identificación"
}
}
Respuesta con error 📛
{
"errors": [
{
"type": "field",
"msg": "esRecompra debe ser true o false",
"path": "esRecompra",
"location": "body"
},
{
"type": "field",
"msg": "Monto es obligatorio y debe ser un numero",
"path": "Monto",
"location": "body"
},
...
]
}
Respuesta error de seguridad ⚠️
{
"errors": [
{
"msg": "No existen los parametros de seguridad en la solicitud"
}
]
}