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
Submission: On July 05 via automatic, source certstream-suspicious — Scanned from ES
Form analysis
0 forms found in the DOMText 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