Skip to main content

Órdenes de compra

Las órdenes de compra son aquellas con las que es posible integrar los servicios de comisiones de venta. Utiliza los llamados de API de Gestión de Productos para gestionar tus órdenes con Ocular.

En esta sección está el detalle para llamar a los servicios de creación y actualización de una orden de compra, este módulo es un complemento del widget de video atención de Ocular Solution, el cual se configura para entregar de forma automática un input en sus formularios de actualización de carrito en el momento de una videoatención:

<input type="hidden" name="ocular_session_id" value="1536">

El objetivo de este input adicional es trackear la venta del agente, entregando el parámetro identificador de la video atención ocular_session_id.

Crear o actualizar una orden#

POST /sessions/OCULAR_SESSION_ID/order

Crea o actualiza una orden de compra.

Endpoint#

https://api.ocularsolution.com/api/product-management/v1/sessions/{ocular_session_id}/order

Parámetros#

external_idSTRING OPCIONAL

Identificador o código de la orden de compra.

Valores de ejemplo: 1015, ORDER-8454


itemsOBJECT[] OBLIGATORIO

Listado de los productos pertenecientes a la orden de compra.

Mostrar propiedadesexternal_idSTRING OPCIONAL

Identificador o código de un producto en orden de compra.

Valores de ejemplo: 3105, SKU-845-G54


imageSTRING OPCIONAL

Url de la imagen principal del producto.

Valores de ejemplo: https://domain.com/images/products/product/product_image.jpg


nameSTRING OBLIGATORIO

Nombre del producto.

Valores de ejemplo: Crema facial


descriptionTEXT OPCIONAL

Descripción del producto.

Valores de ejemplo: Este es el detalle de la crema facial


quantityINTEGER OBLIGATORIO

Cantidad del producto en la orden de compra.

Valores de ejemplo: 1, 5


priceDECIMAL OBLIGATORIO

Precio del producto

Valores de ejemplo: 2990, 39000.00, 0.99


unit_priceBOOLEAN OPCIONAL

Precio del producto que se envía corresponde al precio unitario o al precio total.

El precio se calcula de la siguiente forma:

true: precio = price * quantity

false: precio = price

Valores posibles: true, false.

DEFAULT false


currencySTRING OBLIGATORIO

Moneda utilizada en la orden de compra.

Valores posibles: CLP, USD, EUR


include_taxBOOLEAN OPCIONAL

Define si el precio del producto incluye el impuestos o no.

Valores posibles: true, false

DEFAULT true


discount_typeCHAR OPCIONAL

Define si el descuento del producto es un porcentaje o un monto absoluto.

Valores posibles: percent amount

DEFAULT amount


discountDECIMAL OPCIONAL

Descuento aplicado al producto.

Valores de ejemplo: 1990.00 (amount) 5.00 (percent = 5%) 30.00 (percent = 30%) 25.50 (percent = 25.5%)

DEFAULT 0.00


variantsOBJECT[] OPCIONAL

Variantes del producto en la orden de compra.

DEFAULT []

Mostrar propiedadesnameSTRING OBLIGATORIO

Nombre de la variante del producto.

Valores de ejemplo: Talla, Medidas, Volumen


valueSTRING OBLIGATORIO

Valor de la variante del producto.

Valores de ejemplo: Negro, XL, 30cm x 30cm, 30ml


categoriesARRAY[] OPCIONAL

Categorias del producto.

DEFAULT []

Mostrar propiedadescategoriesARRAY OPCIONAL

Arreglo de las categorias a las cuales puede pertenecer el producto.

Valores de ejemplo: [Atención Online, Bussines]


Ejemplo de Parámetros#

params
{
external_id: 'ORDER-8454',
items: [
{
external_id: 'SKU-845-G54',
image: 'https://domain.com/images/products/product/product_image.jpg',
name: 'Nombre del producto', // Obligatorio
description: 'Descripción del producto',
quantity: 2, // Obligatorio
include_tax: true,
unit_price: false,
discount_type: 'amount',
discount: 2990.00,
currency: 'CLP', // Obligatorio
price: 10000.00, // Obligatorio
variants: [
{
name: 'Color', // Obligatorio
value: 'Negro' // Obligatorio
},
{
name: 'Talla', // Obligatorio
value: 'XL' // Obligatorio
},
{
name: 'Medidas', // Obligatorio
value: '30cm x 30cm' // Obligatorio
}
],
categories: ["Atención Online", "Bussines"] // Opcional
},
]
}

Respuestas del servicio#

Respuesta exitosa#

{
statusCode: 0,
message: 'Success'
}

Respuesta fallida#

{
statusCode: 1,
message: 'Error 500 - Internal server error'
}

Respuesta con errores de validación#

{
statusCode: 2,
message: 'Field validation error',
detail: {
field_one: [
'SessionOrderControllerValidator: field_one is required.',
'SessionOrderControllerValidator: field_one must be an integer.',
...
],
field_two: [
'SessionOrderControllerValidator: field_two is required.',
'SessionOrderControllerValidator: field_two must be a string.',
'SessionOrderControllerValidator: field_two exceeds the maximum number of characters :max.',
...
],
...
}
}

Actualizar el estado de una orden#

PUT /sessions/OCULAR_SESSION_ID/order

Crea o actualiza una orden de compra.

Endpoint#

https://api.ocularsolution.com/api/product-management/v1/sessions/{ocular_session_id}/order

Parámetros#

external_idSTRING OPCIONAL

Identificador o código de la orden de compra.

Valores de ejemplo: ORDER-8454


payment_statusINTEGER OBLIGATORIO

Estado del pago de la orden de compra.

Valores de ejemplo: 0 (success), 1 (declined)


Ejemplo de parámetros#

params
{
external_id: 'SKU-845-G54',
payment_status: 0
}

Respuestas del servicio#

Respuesta exitosa#

{
statusCode: 0,
message: 'Success'
}

Respuesta fallida#

{
statusCode: 1,
message: 'Error 500 - Internal server error'
}

Respuesta con errores de validación#

{
statusCode: 2,
message: 'Field validation error',
detail: {
field_one: [
'SessionOrderControllerValidator: field_one is required.',
'SessionOrderControllerValidator: field_one must be an integer.',
...
],
field_two: [
'SessionOrderControllerValidator: field_two is required.',
'SessionOrderControllerValidator: field_two must be a string.',
...
],
...
}
}

Ver detalles de la orden de compra#

GET /sessions/OCULAR_SESSION_ID/order

Ver detalles de orden de compra de la sessiòn.

Endpoint#

https://api.ocularsolution.com/api/product-management/v1/sessions/{ocular_session_id}/order

Parámetros#

ocular_session_idINTEGER OBLIGATORIO

Detalles de la orden de compra de la sessiòn.

El parametro se debe enviar en la url.

Valores de ejemplo: 1


Respuestas del servicio#

Respuesta exitosa#

{
statusCode: 0,
message: 'Sucess',
sessionOrder: {
id: 4,
session_id: 1,
external_id: 'ORDER-8454',
session_order_state_id: 2,
session_order_state: {
id: 2,
name: 'Pagada',
description: null
},
session_order_items: [
{
id: 7,
session_order_id: 4,
item_id: 7,
unit_of_measurement_id: 2,
quantity: '2',
unit_price: false,
price: '10000.00',
discount_type: 'amount',
discount: '2990.00',
include_tax: true,
tax_value: '10.0',
currency: 'CLP',
unit_of_measurement: {
id: 2,
name: 'Unidad',
description: null
},
item: {
id: 7,
name: 'Nombre del producto',
image: 'https://domain.com/images/products/product/product_image.jpg',
description: 'Descripción del producto',
stock: 1,
item_state_id: 2,
organization_id: 1,
brand_id: null,
external_id: 'SKU-845-G54',
item_state: {
id: 2,
name: 'Sin stock',
description: null
},
item_attrs: [
{
id: 19,
item_id: 7,
name: 'Color',
value: 'Negro'
},
{
id: 20,
item_id: 7,
name: 'Talla',
value: 'XL'
},
{
id: 21,
item_id: 7,
name: 'Medidas',
value: '30cm x 30cm'
}
],
brand: null
}
}
]
}
}
}

Respuesta fallida#

{
statusCode: 1,
message: 'Error 500 - Internal server error'
sessionOrder: null
}

Ejemplo actualizar una orden de compra#

Crear o actualizar una orden de compra
import axios from 'axios'
const baseURL: 'https://api.ocularsolution.com/api/product-management/v1'
const ocularSessionId = 1654653
const params = {
external_id: 'ORDER-8454',
items: [
{
external_id: 'SKU-845-G54',
image: 'https://domain.com/images/products/product/product_image.jpg',
name: 'Nombre del producto',
description: 'Descripción del producto',
quantity: 2,
include_tax: true,
unit_price: false,
discount_type: 'amount',
discount: 2990.00,
currency: 'CLP',
price: 10000.00,
variants: [
{
name: 'Color',
value: 'Negro'
},
{
name: 'Talla',
value: 'XL'
},
{
name: 'Medidas',
value: '30cm x 30cm'
}
]
},
]
}
axios.post(`${baseURL}/sessions/${ocularSessionId}/order`, params)
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error)
})