Pedidos web


Estructura JSON

Al realizar una petición HTTP, el servicio retornara un JSON con la siguiente estructura:

{

"code": "200",

"data": {

"id": 1,

"token": "1c659e3ee5ba6ad93b8b5eadb9921ae4b0e76e76",

"clientName": "Horacio",

"clientLastName": "Hernandez",

"clientEmail": "hh@gmail.com",

"clientPhone": "+8890000001",

"cartId": 1,

"cartDetails": [

"https://api.bsale.io/v1/cart/1/detail.json"

],

"ptId": 1,

"createAt": 1482924586,

"shippingCost": 0.0,

"isMafs": 1,

"active": 1,

"totalCart": 2990.0,

"pickStoreId": 1,

"pickName": "Amelia Hernandez",

"pickCode": "16000666-0",

"id_venta_documento_tributario": 0,

"documentNumber": 0,

"marketId": 1,

"isService": 0,

"withdrawStore": 1,

"payProcess": "pending",

"url": "https://api.bsale.io/v1/checkout/1.json"

}

}

  • id, identificador único del checkout (Integer).

  • token, Hash identificador único del checkout (String).

  • clientName, Nombre del cliente (String).

  • clientLastName, Apellido del cliente (String).

  • clientEmail, Email del cliente (String).

  • clientPhone, Telefono del cliente (String).

  • id_tipo_documento_tributario, Id del tipo documento tributario (Integer).

  • clientCountry, Pais del cliente (String).

  • clientState, Región del cliente (String).

  • extrasUserData, Datos extras del documento tributario (hash).

  • clientStreet, Calle del cliente (Integer).

  • clientCityZone, Comuna del cliente (Integer).

  • clientPostcode, Código postal del cliente (Integer).

  • clientBuildingNumber, Numero de dirección del cliente (Integer).

  • cartId, Id del carro (Integer).

  • cartDetails, Detalle del carro (Hash).

  • spcId, Id del costo del shipping (Integer).

  • ptId, Id del medio de pago (Integer).

  • createAt, Fecha de creación (UNIX EPOCH).

  • isMafs, El despacho es gratuito (bool).

  • active, Activo (bool).

  • shippingComment, Comentario del despacho (Integer).

  • totalCart, Total bruto del carro (Integer).

  • pickName, Nombre del que retira el pedido (Integer).

  • pickCode, Rut del que retira el pedido (Integer).

  • pickStoreId, Oficina donde se retira el pedido (Integer).

  • id_venta_documento_tributario, Id del documento tributario (Integer).

  • documentNumber, Numero de documento (Integer).

  • documentToken, Token del documento (Integer).

  • storeId, Oficina que se genera el documento tributario(Integer).

  • marketId, Id del market (Integer).

  • isService, Indica si todos los producto del checkout son servicios (Integer).

  • payProcess, Proceso del pedido (Integer).

  • payError, Código de error (Integer).

  • payResponse, Mensaje de error del medio de pago (Integer).

  • integrationDetail, Url de integración del sistema (String)

  • url, Url del checkout (String).

GET lista checkout

  • GET /v1/markets/checkout/list.json retornara los checkout.

Parametros

  • limit, limita la cantidad de items de una respuesta JSON, por defecto el limit es 25, el máximo permitido es 50.

  • offset, permite paginar los items de una respuesta JSON, por defecto el offset es 0.

  • token, Corresponde al token único asociado a un checkout.

  • clientName, Permite filtro por el nombre del cliente

  • clientEmail, Permite filtro por el email del cliente

  • marketId, Corresponde al ID del market

Ejemplos

  • GET /v1/markets/checkout/list.json?token=1c659e3ee5ba6ad93b8b5eadb9921ae4b0e76e76

  • GET /v1/markets/checkout/list.json?marketId=1

Respuesta

{

"code": 200,

"href": "https://api.bsale.io/v1/checkout.json",

"count": 955,

"limit": 25,

"offset": 0,

"data": [

{

"id": 1,

"token": "1c659e3ee5ba6ad93b8b5eadb9921ae4b0e76e76",

"clientName": "dfg",

"clientLastName": "dsfg",

"clientEmail": "dsfg@gh.com",

"clientPhone": "54687661",

"cartId": 1,

"cartDetails": [

"https://api.bsale.io/v1/cart/1/detail.json"

],

"ptId": 1,

"createAt": 1482924586,

"shippingCost": 0,

"isMafs": 1,

"active": 1,

"totalCart": 2990,

"pickStoreId": 1,

"pickName": "dfgh",

"pickCode": "1458512-5",

"id_venta_documento_tributario": 0,

"documentNumber": 0,

"marketId": 1,

"isService": 0,

"withdrawStore": 1,

"payProcess": "pending",

"url": "https://api.bsale.io/v1/checkout/1.json",

"orderStatus": 0

},

{

"id": 2,

"cartId": 2,

"cartDetails": [

"https://api.bsale.io/v1/cart/2/detail.json"

],

"createAt": 1482926724,

"shippingCost": 0,

"isMafs": 1,

"active": 1,

"totalCart": 6980,

"pickStoreId": 0,

"isService": 0,

"withdrawStore": 0,

"payProcess": "for_validate",

"payError": "time_out",

"url": "https://api.bsale.io/v1/checkout/2.json",

"orderStatus": 0

},

{

"id": 3,

"token": "8d96212c78810fafe8afda39027da518b67d6ac4",

"clientName": "as",

"clientLastName": "as",

"clientEmail": "prueba@prueba.cl",

"clientPhone": "2123",

"cartId": 3,

"cartDetails": [

"https://api.bsale.io/v1/cart/3/detail.json"

],

"ptId": 2,

"createAt": 1486740801,

"shippingCost": 0,

"isMafs": 1,

"active": 1,

"totalCart": 2990,

"pickStoreId": 1,

"pickName": "ca",

"pickCode": "19",

"id_venta_documento_tributario": 0,

"documentNumber": 0,

"marketId": 1,

"isService": 0,

"withdrawStore": 1,

"payProcess": "pending",

"url": "https://api.bsale.io/v1/checkout/3.json",

"orderStatus": 0

}

],

"next": "https://api.bsale.io/v1/checkout.json?limit=25&offset=25"

}

GET un checkout

  • GET /v2/token/checkout/:token.json retornara un checkout específico.

Respuesta

{

"code": "200",

"data": {

"id": 1,

"token": "1c659e3ee5ba6ad93b8b5eadb9921ae4b0e76e76",

"clientName": "Hans",

"clientLastName": "Holzz",

"clientEmail": "h.holz@gmail.com",

"clientPhone": "+88655555500",

"cartId": 1,

"cartDetails": [

"https://api.bsale.io/v1/cart/1/detail.json"

],

"ptId": 1,

"payUrl": "",

"createAt": 1482924586,

"shippingCost": 0,

"isMafs": 1,

"active": 1,

"totalCart": 2990,

"pickStoreId": 1,

"pickName": "Helga Verona",

"pickCode": "14258512-5",

"id_venta_documento_tributario": 0,

"documentNumber": 0,

"marketId": 1,

"isService": 0,

"withdrawStore": 1,

"payProcess": "pending",

"ptName": "Webpay Mall",

"url": "https://api.bsale.io/v1/checkout/1.json"

}

}

POST un checkout

  • POST /v1/checkout.json

Se debe enviar un Json con la siguiente estructura.

{

"clientName": "Esteban",

"clientLastName": "Pruebas",

"clientEmail": "ebahamonde@imaginex.cl",

"clientPhone": "+90000001",

"id_tipo_documento_tributario": 1,

"clientCountry": "Chile",

"clientState": "Región Metropolitana",

"extrasUserData": {

"user_rut": "11111111-9",

"razon_social": "Rzon Social",

"giro_cliente": "Gro Clien",

"direccion": "Direccn",

"ciudad": "Ciudd",

"comuna": "Cmna"

},

"clientStreet": "las condes",

"clientCityZone": "Las Condes",

"clientPostcode": "ss",

"clientBuildingNumber": "123",

"cartDetails": [

{

"quantity": 1,

"unitValue": 29990,

"name": "ALIAS NOMBRE",

"image": "https://d09.cloudfront.net/1680/product/home223.jpg",

"idVarianteProducto": 171,

"productWebId": 8

}

]

}

Donde

  • token, Si no viene lo crea.

  • id_tipo_documento_tributario, Si viene valida que exista.

  • cartId, Si no viene lo crea, Si viene valida que exista .

  • cartDetails, Utiliza las reglas del carro.

  • spcId, Si viene valida que exista .

  • ptId, Si viene valida que exista .

  • createAt, Es del sistema siempre se crea en el post.

  • totalCart, Si no viene se calcula .

  • pickStoreId, Si viene valida que exista .

  • id_venta_documento_tributario, Si viene valida que exista .

  • documentNumber, Si viene valida que exista .

  • documentToken, Si viene valida que exista .

  • storeId, Si viene valida que exista.

  • marketId, Si viene valida que exista .

  • isService, Si no viene se calcula .

Respuesta

{

"code": "200",

"data": {

"id": 270,

"token": "509202b04403be34a122cd1e5010b7e30593bb0c",

"clientName": "Esteban",

"clientLastName": "Pruebas",

"clientEmail": "ebahamonde@imaginex.cl",

"clientPhone": "+90000001",

"id_tipo_documento_tributario": 1,

"clientCountry": "Chile",

"clientState": "Región Metropolitana",

"extrasUserData": {

"user_rut": "11111111-9",

"razon_social": "Rzon Social",

"giro_cliente": "Gro Clien",

"direccion": "Direccn",

"ciudad": "Ciudd",

"comuna": "Cmna"

},

"clientStreet": "las condes",

"clientCityZone": "Las Condes",

"clientPostcode": "ss",

"clientBuildingNumber": "123",

"cartId": 1062,

"cartDetails": [

{

"id": 3293,

"quantity": 1,

"unitValue": 29990,

"netUnitValue": 25201.6806722689,

"discount": 0,

"total": 29990,

"image": "https://dv09.cloudfront.net/1680/product/hom9963.jpg",

"idVarianteProducto": 171,

"sku": "HUA1259",

"link": "/product/",

"productWebId": 8,

"cartId": 1062,

"taxList": [

1

],

"value": 29990,

"cd_q": 1,

"cd_unit_value": 29990,

"cd_discount": 0,

"cd_sub_total": 29990,

"cd_id": 3293,

"cd_id_discount": 0,

"cd_image": "https://do9.cloudfront.net/1680/product/h-05963.jpg",

"id_variante_producto": 171,

"codigo_variante_producto": "HUA1259",

"href": "https://api.bsale.io/v1/cart/1062/detail/3293.json"

}

],

"createAt": 1578338363,

"shippingCost": 0,

"isMafs": 0,

"active": 1,

"totalCart": 29990,

"pickStoreId": 0,

"isService": 0,

"withdrawStore": 0,

"payProcess": "pending",

"url": "https://api.bsale.io/v1/checkout/270.json"

}

}

PUT un checkout

  • PUT /v1/markets/checkout/:id.json

Se debe enviar un Json con la siguiente estructura. (o el parámetro a editar)

{

"clientName": "Esteban",

"clientLastName": "Pruebas",

"clientEmail": "ebahamonde@imaginex.cl",

"clientPhone": "+90000001",

"id_tipo_documento_tributario": 1,

"clientCountry": "Chile",

"clientState": "Región Metropolitana",

"id_venta_documento_tributario": 0,

"documentNumber": 154,

"documentToken": "5ea75c552f50",

}

Respuesta

{

"code": "200",

"data": {

"id": 1,

"token": "1c659e3ee5ba6ad93b8b5eadb9921ae4b0e76e76",

"clientName": "Esteban",

"clientLastName": "Pruebas",

"clientEmail": "ebahamonde@imaginex.cl",

"clientPhone": "+90000001",

"cartId": 1,

"cartDetails": [

"https://api.bsale.io/v1/cart/1/detail.json"

],

"ptId": 1,

"createAt": 1482924586,

"shippingCost": 0,

"isMafs": 1,

"active": 1,

"totalCart": 2990,

"pickStoreId": 1,

"pickName": "dfgh",

"pickCode": "1458512-5",

"id_venta_documento_tributario": 0,

"documentNumber": 154,

"documentToken": "5ea75c552f50",

"marketId": 1,

"isService": 0,

"withdrawStore": 1,

"payProcess": "pending",

"url": "https://api.bsale.io/v1/checkout/1.json",

"orderStatus": 0

}

}

DELETE un checkout

  • DELETE /v1/checkout/5358.json desactiva un checkout.

{

"code": "200",

"data": {

"id": 5358,

"token": "c401b6d0b6e4a10884fe0909b83f249e9a03dffa",

"clientName": "adsa",

"clientLastName": "asdasd",

"clientEmail": "benjamind@imaginex.cl",

"clientPhone": "123123",

"id_tipo_documento_tributario": 1,

"clientCountry": "Chile",

"clientState": "Región Metropolitana",

"extrasUserData": {

"user_rut": "19",

"razon_social": "asdas",

"giro_cliente": "asd",

"direccion": "asd",

"ciudad": "asd",

"comuna": "asd"

},

"clientStreet": "las condes",

"clientCityZone": "Las Condes",

"clientPostcode": "ss",

"clientBuildingNumber": "123",

"cartId": 6804,

"cartDetails": [

"https://bsale-ecommerce-benjamin007.c9users.io:8081/v1/cart/6804/detail.json"

],

"spcId": 342,

"ptId": 1,

"createAt": 1506425440,

"shippingCost": 0,

"isMafs": 1,

"active": 0,

"shippingComment": "",

"totalCart": 147949,

"pickStoreId": 0,

"pickName": "",

"pickCode": "",

"id_venta_documento_tributario": 0,

"documentNumber": 0,

"storeId": 2,

"marketId": 1,

"isService": 0,

"withdrawStore": 0,

"payProcess": "pending",

"integrationDetail": "https://dojiw2m9tvv09.cloudfront.net/1680/product/home-productos-059963.jpg",

"url": "https://bsale-ecommerce-benjamin007.c9users.io:8081/v1/checkout/5358.json"

}

}

GET un carro

  • GET /v1/cart/:cartId/detail.json retornara detalle de un carro.

Al realizar una petición HTTP, el servicio retornará

{

"code": "200",

"href": "https://api.bsale.io/v1/cart/1026/detail.json",

"count": 1,

"limit": 0,

"offset": 20,

"data": [

{

"id": 1296,

"quantity": 3,

"unitValue": 4990,

"netUnitValue": 4193.27731092437,

"discount": 0,

"itemName": "PISCO\" MISTRAL 35°",

"total": 14970,

"discountId": 0,

"image": "https://dojiw2m9tvv09.cloudfront.net/11132/product/358978.jpg",

"idVarianteProducto": 26,

"sku": "PM-01",

"link": "/product/pisco-mistral-35",

"productWebId": 142,

"cartId": 1026,

"taxList": [

1

],

"shipping": {

"id": 18,

"weight": 2,

"width": 20,

"deph": 10,

"length": 15,

"match": 1

},

"name": "PISCO\" MISTRAL 35°",

"value": 4990,

"cd_q": 3,

"cd_unit_value": 4990,

"cd_discount": 0,

"cd_item_name": "PISCO\" MISTRAL 35°",

"cd_sub_total": 14970,

"cd_id": 1296,

"cd_id_discount": 0,

"cd_image": "https://dojiw2m9tvv09.cloudfront.net/11132/product/358978.jpg",

"id_variante_producto": 26,

"codigo_variante_producto": "PM-01",

"href": "https://api.bsale.io/v1/cart/1026/detail/1296.json"

}

],

"previous": "https://api.bsale.io/v1/cart/1026/detail.json?limit=0&offset=-20"

}

Donde

  • token, Si no viene lo crea.

  • id, Identificador único del item del carro (String).

  • quantity, Cantidad de item que se lleva el carro (String).

  • unitValue, Valor bruto del producto (String).

  • netUnitValue, Valor neto del producto (String).

  • discount, Descuento (Integer).

  • itemName, Nombre del item (String).

  • total, Total en bruto de este item(String).

  • discountId, Id del descuento (hash).

  • image, Url imagen (Integer).

  • idVarianteProducto, Id de la variante del producto (Integer).

  • sku, SKU de la variante (Integer).

  • link, url del producto (Integer).

  • cartId, Id del carro (Integer).

  • productWebId, Id del producto en el market (Hash).

  • cartId, Id del carro (Integer).

  • taxList, Lista de id impuesto (Integer).

  • url, Url del detalle del carro (String).

POST un carro

  • POST /v1/cart/new.json

Al realizar una petición HTTP, el servicio retornará

{

"cartDetails": [

{

"quantity": 2,

"netUnitValue": 29990,

"unitValue": 29990,

"image": "https://dev09.cloudfront.net/1680/product/prds-059963.jpg",

"idVarianteProducto": 252,

"productWebId": 35

}

]

}

  • Para asignar un carro a una sesión, se debe generar una llamada desde el navegador a la id de carro creado en el POST:

/cart/setonsession/:id_cart

Donde

  • netUnitValue, Si no viene lo crea (String).

  • unitValue, obligatorio (Integer).

  • image, url imagen asociada al producto del carro

  • idVarianteProducto, id variante asociada al carro (Integer)

  • productWebId, Id producto web (Integer)

Respuesta

{

"code": "200",

"data": {

"id": 96,

"createAt": 1616705027,

"cartDetails": [

{

"id": 68,

"quantity": 4,

"unitValue": 29990,

"netUnitValue": 29990,

"discount": 0,

"total": 119960,

"image": "https://dev09.cloudfront.net/1680/product/059963.jpg",

"idVarianteProducto": 252,

"sku": "1586793957901",

"link": "/product/curso-go",

"productWebId": 35,

"cartId": 96,

"taxList": [

1

],

"shipping": {

"id": 102,

"weight": 0,

"width": 0,

"deph": 0,

"length": 0,

"match": 1

},

"value": 29990,

"cd_q": 4,

"cd_unit_value": 29990,

"cd_discount": 0,

"cd_sub_total": 119960,

"cd_id": 68,

"cd_id_discount": 0,

"cd_image": "https://dev09.cloudfront.net/1680/product/059963.jpg",

"id_variante_producto": 252,

"codigo_variante_producto": "1586793957901",

"href": "https://api.bsale.io/v1/cart/96/detail/68.json"

}

],

"url": "https://api.bsale.io/v1/cart/96.json"

}

}

PUT un carro

  • PUT /v1/cart/:cart_id.json

Donde

  • :cart_id, Corresponde al id del carro.

  • id, en el body se debe indicar el id del detalle carro que se desea editar, si no se indica se agrega un detalle al carro.

Al realizar una petición HTTP, el servicio retornará

{

"cartDetails": [

{

"id": 68,

"quantity": 2,

"netUnitValue": 29990,

"unitValue": 29990,

"idVarianteProducto": 252,

"productWebId": 35

}

]

}

DELETE un carro

  • DELETE /v1/cart/:cart_id/detail/:id.json

Donde

  • :cart_id, Corresponde al id del carro.

  • id, corresponde al id del detalle de carro, para eliminar el carro, se debe eliminar cada detalle contenido en el carro

Al realizar una petición HTTP, el servicio retornará

{

"code": 200,

"data": "Cart detail successfully deleted"

}