services.sinigual.com Open in urlscan Pro
185.253.153.133  Public Scan

URL: https://services.sinigual.com/
Submission: On July 05 via automatic, source certstream-suspicious — Scanned from ES

Form analysis 0 forms found in the DOM

Text Content

E-commerce Siniwin API

Version: 1.0.0
Last Updated: 5th Jul, 2023
 * GET STARTED
 * Autenticación
   
 * Solicitudes
 * Respuestas
 * Productos
 * Call
 * Respuesta
 * Stocks
 * Call
 * Respuesta
 * Pedidos
 * Call
 * Respuesta
 * Enviar Pedido


GET STARTED

API Endpoint

URL Prod: https://services.sinigual.com/api/ecommerce
URL DEV: https://dev.services.sinigual.com/api/ecommerce
                

La API de e-commerce de siniwin da acceso a los productos y a los pedidos de la
plataforma de Siniwin para su utilización en e-commerce.

Para utilizar esta API es necesario poseer de los datos de autenticación y firma


AUTENTICACIÓN


# Ejemplos.

{
    "success": 1,
    "error": 0,
    "data": [
        {
            "Ref": "A40031K230020",
            "company_id": 596,
            "Familia": "RE",
            "PedMinimo": "00001",
            "CantMaxDto": null,
            "Denominacion": "CONTRAPESA MANILLAR NEGRO MATE KEEWAY",
            "Coste": null,
            "Stock": null,
            "ValorStock": null,
            "Pvp": "000000643",
            "ControlStock": "S",
            "StockMinimo": null,
            "StockMaximo": null,
            "TiArticulo": "R",
            "Observaciones": null,
            "PesoIntrastat1p": null,
            "RefSusti1": null,
            "RefSusti2": null,
            "RefSusti3": null,
            "PorcIva": "2100",
            "DtoVta": null,
            "FeUltEntrada": null,
            "ClaseProd": "VA",
            "Marca": null,
            "CodEAN13": null
        }
}

                

Para poder realizar cualquier petición a la API es necesario poseer:



 * Bearer token
 * Id de usuario
 * Secret Token



Todos ellos deben ser facilitados por el cliente de Siniwin.

Los dos últimos seran necesarios para crear la firma que tendrá que pasarse a la
petición en cada llamada.



SOLICITUDES


# Ejemplo de firma en PHP

$Date = Carbon::now()->format('Ymd');

$userId = 'USER_ID';
$secretToken = 'SECRET_TOKEN';

$toHash = $userId.$secretToken.$Date;

$signature = hash('sha512',$toHash);
                

Todas las solicitudes tienen como campo obligatorio la firma de la petición que
se envía como parámetro tanto en GET como en POST,y el token bearer que se
localizara en el Header.

La firma se genera con la encriptación sha512 de la siguiente manera (en
pseudoCódigo):

sha512(User+SecretToken+Date)

El formato de la fecha es: Ymd (ej: 20230506)



RESPUESTAS


# Ejemplo de peticion correcta
{
    "success": 1,
    "error": 0,
    "data": [
        {
            DATA
        }
    ]
}

# Ejemplo de error
{
    "success": 0,
    "error": {
        "code": 100,
        "description": "La firma no es correcta"
    },
    "data": 0
} 

                

La respuesta a la solicitud es un array con la siguiente información:



Campo Tipo Descripción success Boolean true si la petición se ha realizado
correctamente. false si se ha generado un error error Array en caso de error se
informa del numero de error asi como la descripción data Array en caso de no
haber error se retorna un array con los datos de la petición







PRODUCTOS


# Ejemplo de petición de productos en PHP
$curl = curl_init();

$bearer = 'BEARER';

$url = 'https://services.sinigual.com/api/ecommerce/products';
$signature = '?signature=SIGNATURE';
$pagination = '&paginate=1000';

$urlCall = $url.$signature.$pagination;

curl_setopt_array($curl, array(
  CURLOPT_URL => $urlCall,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer '.$bearer
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

                

Solicitud para traer el listado de productos con todos los detalles.

Para poder realizar esta solicitud se debe llamar al siguiente end point con
GET: https://services.sinigual.com/api/ecommerce/products

Esta llamada acepta los siguientes filtrados:



QUERY PARAMETERS

Campo Tipo Obligatorio Descripción signature String Si Firma de la petición ref
Array No Referencia producto store string Si (si se define referencia) Almacén
producto paginate Integer No Número de elementos por página page Integer No
Número de la página, en el caso de haber paginado los resultados




PRODUCTOS RESPUESTA


# Ejemplo de respuesta simple
{
    "success": 1,
    "error": 0,
    "data": [
        {
            "ref": "18517923528",
            "store": "A",
            "company": 1,
            "family": "RB",
            "minOrder": "00001",
            "qtMaxDiscount": null,
            "denomination": "BMW MOTORRAD L",
            "cost": "000008713",
            "Stock": "000000300",
            "stockValue": "000000034852",
            "pvp": "000004760",
            "ControlStock": "S",
            "stockMin": null,
            "stockMax": null,
            "typeArticle": "R",
            "observations": null,
            "weight": null,
            "refReplace1": "18517923528",
            "refReplace2": "18517923529",
            "refReplace3": "18517923526",
            "percTax": "2100",
            "sellDiscount": null,
            "dateLastInput": "211006",
            "prodClass": "28",
            "brand": "brand X",
            "codEAN13": null
        }
    ]
}

#Ejemplo de respuesta paginada

{
    "success": 1,
    "error": 0,
    "data": {
        "current_page": 2,
        "data": [
            {
                "ref": "18517923528",
                "store": "A",
                "company": 1,
                "family": "RB",
                "minOrder": "00001",
                "qtMaxDiscount": null,
                "denomination": "BMW MOTORRAD L",
                "cost": "000008713",
                "Stock": "000000300",
                "stockValue": "000000034852",
                "pvp": "000004760",
                "ControlStock": "S",
                "stockMin": null,
                "stockMax": null,
                "typeArticle": "R",
                "observations": null,
                "weight": null,
                "refReplace1": "18517923528",
                "refReplace2": "18517923529",
                "refReplace3": "18517923526",
                "percTax": "2100",
                "sellDiscount": null,
                "dateLastInput": "211006",
                "prodClass": "28",
                "brand": "brand X",
                "codEAN13": null
            }
        ],
        "first_page_url": "https://services.sinigual.com/api/ecommerce/products?page=1",
        "from": 2,
        "last_page": 4,
        "last_page_url": "https://services.sinigual.com/api/ecommerce/products?page=4",
        "links": [
            {
                "url": "https://services.sinigual.com/api/ecommerce/products?page=1",
                "label": "« Previous",
                "active": false
            },
            {
                "url": "https://services.sinigual.com/api/ecommerce/products?page=1",
                "label": "1",
                "active": false
            },
            {
                "url": "https://services.sinigual.com/api/ecommerce/products?page=2",
                "label": "2",
                "active": true
            },
            {
                "url": "https://services.sinigual.com/api/ecommerce/products?page=3",
                "label": "3",
                "active": false
            },
            {
                "url": "https://services.sinigual.com/api/ecommerce/products?page=4",
                "label": "4",
                "active": false
            },
            {
                "url": "https://services.sinigual.com/api/ecommerce/products?page=3",
                "label": "Next »",
                "active": false
            }
        ],
        "next_page_url": "https://services.sinigual.com/api/ecommerce/products?page=3",
        "path": "https://services.sinigual.com/api/ecommerce/products",
        "per_page": 1,
        "prev_page_url": "https://services.sinigual.com/api/ecommerce/products?page=1",
        "to": 2,
        "total": 4
    }
}
                

La respuesta de la petición de productos contiene los siguientes datos:



Campo Tipo Descripción ref String Referencia del articulo store String Almacén
company Integer Id de la empresa family String Familia minOrder String Pedido
Mínimo maxOrder String cantidad maxima para pedido Denomination String
Denominación del articulo cost Float Precio de coste del articulo stock Float
Stock actual stockValue Float Valor del Stock pvp Float Precio de venta al
publico stockControl String Control de Stock stockMin String Stock mínimo
stockMax String Stock Máximo prodType String Tipo de articulo observations
String Observaciones weight String Peso unitario en Kg refReplace1 String
Referencia de sustitución 1 refReplace2 String Referencia de sustitución 2
refReplace3 String Referencia de sustitución 3 percTax Float Porcentaje de IVA
sellDiscount Float Descuento de venta dateLastInput String Fecha de ultima
entrada prodClass String Clase del articulo brand String Marca CodEAN13 String
Código EAN






STOCK


# Ejemplo de petición de stock en PHP
$curl = curl_init();

$bearer = 'BEARER';

$url = 'https://services.sinigual.com/api/stock';
$signature = '?signature=SIGNATURE';
$referencia = '&Ref=XXX';
$almacen = '&Almacen=Y';

$urlCall = $url.$signature.$referencia.$almacen;

curl_setopt_array($curl, array(
  CURLOPT_URL => $urlCall,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer '.$bearer
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
                

Esta petición nos informa del stock y el pvp actual de un producto.

Esta petición se realiza solamente sobre un solo producto
https://services.sinigual.com/api/ecommerce/stock



QUERY PARAMETERS

Campo Tipo Obligatorio Descripción signature String Si Firma de la petición ref
Integer Si Referencia del producto store String Si Almacén del producto




STOCK RESPUESTA


# Ejemplo de respuesta
{
    "success": 1,
    "error": 0,
    "data": [
        {
            "ref": "488-88-99",
            "store": "A",
            "stock": 1000,
            "pvp": 150
        }
    ]
}
                

La respuesta de la petición de pedidos contiene los siguientes datos:



Campo Tipo Descripción ref Integer Referencia del producto store String Almacén
del producto stock float Stock pvp float Precio de venta al publico






PEDIDOS


# Ejemplo de petición de pedidos en PHP
$curl = curl_init();

$bearer = 'BEARER';

$url = 'https://services.sinigual.com/api/ecommerce/orders';
$signature = '?signature=SIGNATURE';
$pagination = '&paginate=1000';

$urlCall = $url.$signature.$pagination;

curl_setopt_array($curl, array(
  CURLOPT_URL => $urlCall,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer '.$bearer
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
                

Solicitud para traer el listado de pedidos con todos los detalles.

Para poder realizar esta solicitud se debe llamar al siguiente end point con
GET: https://services.sinigual.com/api/ecommerce/orders

Esta llamada acepta los siguientes filtrados:



QUERY PARAMETERS

Campo Tipo Obligatorio Descripción signature String Si Firma de la petición
orderId Array No Array de ids de pedidos dateStart Date (dd/mm/yyy) No Fecha
inicio búsqueda por fecha de pedido dateEnd Date (dd/mm/yyy) No Fecha final
búsqueda por fecha de pedido paginate Integer No Número de elementos por página
page Integer No Número de la página, en el caso de haber paginado los resultados




PEDIDOS RESPUESTA


# Ejemplo de respuesta
{
    "success": 1,
    "error": 0,
    "data": [
        {
            "id": 1,
            "orderId": 1,
            "nameInvoice": "Name",
            "nameShipping": "Name",
            "surnameInvoice": "Surname",
            "surnameShipping": "Surname",
            "streetInvoice": "Street",
            "streetShipping": "Street",
            "cityInvoice": "City",
            "cityShipping": "City",
            "provInvoice": "Prov",
            "provShipping": "Prov",
            "zipInvoice": "08000",
            "zipShipping": "0800",
            "countryInvoice": "Spain",
            "countryShipping": "Spain",
            "dniInvoice": "0000000L",
            "dniShipping": "0000000L",
            "disCoupon": null,
            "discShipping": null,
            "disDesc": null,
            "emailInvoice": "email@email.com",
            "emailShipping": "email@email.com",
            "phoneInvoice": "932012235",
            "phoneShipping": "98545254",
            "guest": null,
            "idStore": "1",
            "orderDate": "03/07/2023",
            "orderQtyDisc": null,
            "orderShippingCost": "25",
            "refGroup": "1245",
            "products": [
                {
                    "orders_id": "1",
                    "orderId": 1,
                    "ref": "265.404",
                    "store": "A",
                    "prodName": "Name 1",
                    "prodQty": 2,
                    "idStore": 596,
                    "prodPrice": 150,
                    "discountQty": 0,
                    "discountPercentage": 0
                },
                {
                    "orders_id": "1",
                    "orderId": 1,
                    "ref": "265.515",
                    "store": "B",
                    "prodName": "Name 2",
                    "prodQty": 5,
                    "idStore": 596,
                    "prodPrice": 15,
                    "discountQty": 0,
                    "discountPercentage": 0
                }
            ]
        }
    ]
}
                

La respuesta de la petición de pedidos contiene los siguientes datos:



Campo Tipo Descripción orderId String Numero de orden del ecommerce nameInvoice
String Nombre del cliente de facturación nameShipping String Nombre del cliente
de envío surnameInvoice String Apellido del cliente de facturación
surnameShipping String Apellido del cliente de envío streetInvoice String Calle
del cliente de facturación streetShipping String Calle del cliente de envío
cityInvoice String Ciudad del cliente de facturación cityShipping String Ciudad
del cliente de envío provInvoice String Provincia del cliente de facturación
provShipping String Provincia del cliente de envío zipInvoice String Código
postal del cliente de facturación zipShipping String Código postal del cliente
de envío countryInvoice String País del cliente de facturación countryShipping
String País del cliente de envío dniInvoice String DNI del cliente de
facturación dniShipping String DNI del cliente de envío disCoupon String Cupón
de descuento discShipping String Descuento del envío disDesc String Descripción
del descuento emailInvoice String Email del cliente de facturación emailShipping
String Email del cliente de envío phoneInvoice String Teléfono del cliente de
facturación phoneShipping String Teléfono del cliente de envío guest String
Invitado orderDate String Fecha del pedido orderQtyDisc String Cantidad del
descuento orderShippingCost String Coste del envío refGroup String Referencia
del grupo products Array Array de artículos del pedido



DATOS PRODUCTS ARRAY

Campo Tipo Descripción ref String Referencia del articulo prodName String Nombre
del articulo prodQty float Cantidad store Integer Almacén prodPrice Float Precio
discountQty Float Descuento discountPercentage Float porcentaje de descuento




ENVIAR PEDIDO


# Ejemplo de envío de pedido en PHP
$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'http://ecommerce.local/api/ecommerce/postorder',
  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 =>'{
    "signature": "SIGNATURE",
    "order": [
        {
            "orderId": 11,
            "nameShipping": "Name",
            "surnameShipping": "Surname",
            "streetShipping": "Street",
            "cityShipping": "City",
            "provShipping": "Prov",
            "zipShipping": "0800",
            "countryShipping": "Spain",
            "dniShipping": "0000000L",
            "emailShipping": "email@email.com",
            "orderDate": "03/07/2023",
            "orderShippingCost": "0",
            "products": [
                {
                    "orders_id": "1",
                    "orderId": 1,
                    "ref": "265.515",
                    "store": "B",
                    "prodName": "Name 2",
                    "prodQty": 5,
                    "idStore": 596,
                    "prodPrice": 15,
                    "discountQty": 0,
                    "discountPercentage": 0
                },
                {
                    "ref": "265.404",
                    "store": "A",
                    "prodName": "Name 1",
                    "prodQty": 2,
                    "prodPrice": 150
                }
            ]
        }
    ]
}',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'Authorization: Bearer BEARER_TOKEN'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

                

Para poder insertar un pedido se debe enviar en POST dentro de la key order, lo
siguiente:

https://services.sinigual.com/api/ecommerce/postorder

PARAMETERS INSIDE ORDER

Campo Tipo Obligatorio Descripción orderId String Si Numero de orden del
ecommerce nameInvoice String No Nombre del cliente de facturación nameShipping
String Si Nombre del cliente de envío surnameInvoice String No Apellido del
cliente de facturación surnameShipping String Si Apellido del cliente de envío
streetInvoice String No Calle del cliente de facturación streetShipping String
Si Calle del cliente de envío cityInvoice String No Ciudad del cliente de
facturación cityShipping String Si Ciudad del cliente de envío provInvoice
String No Provincia del cliente de facturación provShipping String Si Provincia
del cliente de envío zipInvoice String No Código postal del cliente de
facturación zipShipping String Si Código postal del cliente de envío
countryInvoice String No País del cliente de facturación countryShipping String
Si País del cliente de envío dniInvoice String No DNI del cliente de envió
dniShipping String No DNI del cliente de facturación disCoupon String No Cupón
descuento discShipping String No Descuento en el envío disDesc String No
Descripción del descuento emailInvoice String No Email del cliente de
facturación emailShipping String Si Email del cliente de envío phoneInvoice
String No Teléfono del cliente de facturación phoneShipping String No Teléfono
del cliente de envío guest String No Invitado orderDate String Si Fecha del
pedido orderQtyDisc String No Cantidad del descuento orderShippingCost String Si
Coste del envío refGroup String No Referencia del grupo products Array Si Array
de artículos del pedido



DATOS PRODUCTS ARRAY

Campo Tipo Obligatorio Descripción ref String Si Referencia del articulo
prodName String Si Nombre del articulo prodQty float Si Cantidad prodPrice Float
Si Precio discountQty Float No Descuento discountPercentage Float No porcentaje
de descuento store String Si Almacén