Este servicio permitirá crear desde fuentes externas, un pedido.
- Se invoca de la siguiente manera: https://[direccion_ip]:[puerto]/order/create - Ejemplo: https://200.100.100.100:8090/order/create
- Se invoca via POST.
Tener en cuenta:
- Primero se debe invocar al servicio de autenticación para obtener un token.
- Cuando se llama a cualquier servicio este token se envía como un parámetro más de la llamada en el header (x-access-token).
- Si al llamar al servicio el token expiró, se recibirá respuesta de token inválido y se deberá volver a pedir uno nuevo.
JSON ejemplo
{ "externalNumber": "00001", "notes": "", "creationDate": "2020-07-01 08:51:00", "channelCode": "web", "currencyCode": "peso", "netAmount": 3000, "manualDiscountAmount": 0, "orderTypeCode": "web", "isPaid": false, "party": { "code": "0243145377", "firstName": "Martin", "lastName": "Malievac", "email": "[email protected]", "typeCode": "Person", "identificationType": 1, "identifier": "24314537", "birthYearNumber": 1975, "birthMonthNumber": 1, "birthDayNumber": 3, "partyContactMethods": [ { "name": "Personal", "address": { "firstLine": "Almafuerte 4430", "secondLine": "Puerta 10, Piso 2", "cityCode": "MUN", "stateCode": "BsAs", "countryCode": "AR", "postalCode": "1605" }, "emailAddress": "[email protected]", "telephone": { "countryCode": "54", "areaCode": "11", "telephoneNumber": "36637487", "extensionNumber": "-" }, "principalForDelivery": true, "principalForBilling": true }, { "name": "Trabajo", "address": { "firstLine": "Venezuela 3158", "secondLine": "Piso 6. Interno 066", "cityCode": "VMA", "stateCode": "BsAs", "countryCode": "AR", "postalCode": "1603" }, "emailAddress": "[email protected]", "telephone": { "countryCode": "54", "areaCode": "11", "telephoneNumber": "41100000", "extensionNumber": "066" }, "principalForDelivery": false, "principalForBilling": false } ] }, "detail": [ { "itemCode": "ABC001", "description": "SAMSUNG S10", "storeCode": "UNICENTER", "locationCode": "ventas2", "orderedQty": 1, "unitPrice": 1000, "netAmount": 1000, "deliveryOrPickup": "delivery", "deliveryCompany": "Andreani", "packageId": "12345670A", "pickupLocationCode": "-", "requiredDate": "2020-07-10 00:00:00", "partyContactMethodName": "Personal", "serializedUnits": [ { "serialNumber": "123456789", "importDocNumber": "12345", "customsNumber": "123455", "customsDate": "2020-07-10 00:00:00", "unitCount": 1 }, { "serialNumber": "22222222", "importDocNumber": "33333", "customsNumber": "44444", "customsDate": "2020-07-10 00:00:00", "unitCount": 1 }, ], "priceModifiers": [ { "percent": 5, "amount": 50, "reasonText": "Segunda Unidad" } ] }, { "itemCode": "S20", "description": "SAMSUNG S20", "storeCode": "WEB", "locationCode": "ventas2", "orderedQty": 2, "unitPrice": 2000, "netAmount": 2000, "deliveryOrPickup": "pickup", "deliveryCompany": "-", "pickupLocationCode": "Unicenter", "requiredDate": "2020-07-10 00:00:00", "pickupInformation": "Retira por la tarde, luego de las 6." } ], "transaction": { "id": "5f19d8989eefbe5418406887", "storeCode": "unicenter", "terminalCode": "20", "operatorCode": "martinm", "trxNumber": 4, "trxDate": "2020-07-10 00:00:00" }, "payments": [ { "tender": "peso", "amount": 2000 }, { "tender": "VI", "amount": 2950, "planDescriptor": "9 meses sin intereses", "sellerName": "MIRGOR", "authorizationCode": "1", "couponNumber": "1", "lotNumber": "1", "installments": "9", "referenceNumber": "1" } ] }
Descripción de los campos:
Importante: los campos que poseen este ícono
, son valores tipificados que deben respetar los valores expuestos por BRIDGE en sus servicios.Campo | Tipo | Descripción | Requerido | Ejemplos | Validación (código) | |
---|---|---|---|---|---|---|
externalNumber | String | Código de la orden del originante | SI | 000001 | 991: el código de orden es requerido. 996: Ya existe el código de orden originante [Código] para el canal [Código de Canal] | |
notes | String | Comentarios sobre la orden | NO | Enviar los dias soleados | ||
creationDate | String | Fecha de creación | SI | 2020-07-01 08:51:00 Formato: yyyy-MM-dd HH:mm:ss | 992: la fecha de creación es requerida. | |
channelCode | String | Canal de Origen | NO | magento: este código será asignado por Napse de acuerdo al canal. | 993: el canal de origen es requerido. | |
currencyCode | String | Moneda | SI | peso | 994: la moneda es requerida. | |
netAmount: | Number | Monto final del pedido, incluyendo el costo de entrega, menos los descuentos. | SI | 1000 | 995: el monto final del pedido es requerido. | |
manualDiscountAmount | Number | Importe de descuentos a la transacción | NO | Informar 0 si no existe ninguno | ||
orderTypeCode | String | Codigo del tipo de orden | NO | Por default: 'web' | ||
isPaid | Boolean | Indicador de cobrado | NO | |||
orderReference(orden de referencia). Requerido si la orden es de devolución(orderTypeCode == "return") | ||||||
externalNumber | String | Código de la orden | SI | 000001 | 997: Debe informar la orden de referencia | |
party (cliente asociado a la transacción). Requerido | ||||||
code | String | Código del cliente | SI | 024314537 | 997: el código del cliente es requerido. | |
firstName | String | Nombre del Cliente | SI | Martin | 997: el nombre de la persona o empresa, es requerido. | |
lastName | String | Apellido del cliente | SI (solo si es typeCode = 'Person') | Malievac | 997: el apellido es requerido para clientes de tipo "Person" | |
String | Correo del cliente | SI | [email protected] | 997: el correo electrónico es requerido. | ||
identificationType | Number | Tipo de documento | SI | 1, valores posibles: 1: DNI | 997: el tipo de identificación es requerido. | |
identifier | String | Número de documento | SI | 24314537 | 997: el número de identificación es requerido. | |
birthYearNumber | Number | Año de nacimiento | NO | 1975 | ||
birthMonthNumber | Number | Mes de nacimiento | NO | 3 | ||
birthDayNumber | Number | Día de nacimiento | NO | 1 | ||
partyContactMethods (direcciones del cliente). Requerido | ||||||
name | String | Nombre del método de contacto | SI | Personal, Trabajo, etc. Este dato debe ser único, en caso de encontrarse repetido dentro de la lista, se informará: "No puede realizar un pedido con dos métodos de contacto con el mismo nombre" | 1002: el nombre del método de contacto es requerido. | |
address.firstLine | String | Calle y número | SI | Almafuerte 1000 | 1003: la dirección es requerida. | |
address.secondLine | String | Otra info | NO | Piso 10, Puerta 12 | ||
address.cityCode | String | Ciudad | SI | MUN. Importante: código del listado de ciudades existentes, ver servicio city/all | 1004: la ciudad es requerida. | |
address.stateCode | String | Provincia | SI | BsAs. Importante: código del listado de provincias existentes, ver servicio state/all | 1005: la provincia es requerida. | |
address.countryCode | String | Pais | SI | ARG. Importante: código del listado de países existentes, ver servicio country/all | 1006: el país es requerido. | |
emailAddress | String | Email asociado a ese método de contacto | SI | Se puede poner el principal si no es diferente | 1007: el correo electrónico en el método de contacto, es requerido. | |
telephone.countryCode | String | código de País | NO | 54 | 1008: el código de país del teléfono es requerido. | |
telephone.areaCode | String | código de area | NO | 11 | 1009: el código de área del teléfono es requerido. | |
telephone.telephoneNumber | String | número de teléfono | SI | 36637777 | 1010: el número de teléfono es requerido. | |
extensionNumber | String | extensión | NO | 066 | ||
principalForDelivery | Boolean | NO | Opcional: true/false. En caso de enviar más de una dirección 'marcada' para delivery se va a tomar una sola. Idem para la dirección de facturación. | |||
principalForBilling | Boolean | NO | Opcional: true/false. En caso de enviar más de una dirección 'marcada' para delivery se va a tomar una sola. Idem para la dirección de facturación. | |||
detail (Detalle del pedido). Debe haber al menos | ||||||
itemCode | String | SKU del producto | SI | SAM01 | 1011: el código del producto es requerido. | |
storeCode | String | Código de tienda desde donde saldrá el stock. | SI | UNICENTER | 1012: el código de tienda del stock es requerido. | |
locationCode | String | Código de depósito desde donde saldrá el stock | NO | VENTAS2 | Si no se informa, toma el default del ítem. | |
description | String | Descripción del producto | SI | Samsung Galaxy S2 | 1013: la descripción del producto es requerida. | |
orderedQty | Number | Cantidad pedida | SI | 1 | 1014: la cantidad pedida es obligatoria. | |
unitPrice | Number | Precio unitario | SI | 1000 | 1015: el precio unitario es requerido. | |
deliveryOrPickup | String | Si la linea será con retiro en tienda o envío | SI | delivery o pickup | 1016: es requerido informar si la línea es para delivery o retiro. | |
deliveryCompany | String | Codigo de la compañía que realizará el envío | SI(si el método es delivery) | |||
packageId | String | Código del paquete de delivery | SI (si el método es delivery) | |||
pickupLocationCode | String | Código de la locación en donde retirará | SI (si eligió la opción pickup) | UNICENTER. El código debe estar estipulado. Ver servicio customerOrderPickupLocation/all | 1017: el código del punto de retiro es requerido. | |
pickupInformation | String | Descripción de quien hará el retiro | Si, si eligió la opción pickup | Juan Perez retirará, teléfono: XXXXX | 1018: si eligió la opción de retiro, indicar los datos de la persona que hará el retiro. | |
requiredDate | String | Fecha de envío requerida o de retiro en tienda | NO | Formato: yyyy-MM-dd HH:mm:ss | ||
partyContactMethodName | String | Dirección de envío del cliente | SI (si eligió como opción delivery) | Personal, debe existir entre una de las direcciones informadas para el cliente | 1019: el nombre de la dirección de envío al cliente es inválido. | |
serializedUnits: en caso de que BRIDGE ya haya surtido el pedido en las tiendas, se detallan los numeros de serie | ||||||
SerialNumber | String | Nro de serie del item | SI | Requerido sólo si se envía lista de series | ||
importDocNumber | String | Nro de despacho | NO | |||
customsNumber | String | Aduana | NO | |||
customsDate | String | Fecha de despacho | NO | |||
unitCount | Number | Cantidad | SI | Requerido sólo si se envía lista de series | ||
transaction: este campo se usa en el caso de que la transacción haya sido facturada en bridge, no se usa en caso de que la orden venga de canales externos. | ||||||
id | String | El ID de mongodb de la transacción | SI | |||
storeCode | String | El código de tienda BRIDGE | SI | |||
terminalCode | String | El código de terminal BRIDGE | SI | |||
operatorCode | String | El código de operador BRIDGE | SI | |||
trxNumber | Number | El número de transacción BRIDGE | SI | |||
trxDate | Date | La fecha de la transacción BRIDGE | SI | Formato: yyyy-MM-dd HH:mm:ss | ||
retail.priceModifiers : descuentos otorgados a los productos, esto se encuentra dentro de la colección detail | ||||||
percent | Number | Porcentaje de descuento | SI (si es informada la línea) | 5 | 1020: si informa un descuento, debe informar el porcentaje. | |
amount | Number | Monto de descuento | SI (si es informada la línea) | 1000 | 1021: si informa un descuento, debe informar el monto. | |
reasonText | String | Razón del descuento | SI | Oferta del día | 1022: si informa descuento, debe informar la razón. | |
payments (pagos asociados al pedido) | ||||||
tender | String | Código del medio de pago | SI | peso. Importante: ver servicio tender/all para los códigos de pago permitidos. | 1022: debe informar un medio de pago válido. | |
amount: | Number | Monto del pago | SI | 1000 | 1022: debe informar el monto del pago. | |
planDescriptor | String | Descripción del plan de pagos elegido | SI (para pagos con tarjeta) | 9 meses sin intereses | 1023: debe informar el plan de pagos. | |
sellerName | String | Nombre de la entidad | SI (para pagos con tarjeta) | Mirgor | 1024: debe informar el nombre del merchant. | |
authorizationCode | String | Codigo de autorización de la tarjeta | SI (para pagos con tarjeta) |
| 1025: debe informar el código de autorización de la tarjeta. | |
couponNumber | String | Número de cupón | SI (para pagos con tarjeta) | 1 | 1026: debe informar el número de cupón | |
lotNumber | String | Número de Lote | SI (para pagos con tarjeta) | 1 | 1027: debe informar número de lote. | |
installments | String | Cuotas | SI (para pagos con tarjeta) | 9 | 1028: debe informar la cantidad de cuotas. | |
referenceNumber | String | Referencia de la tarjeta | SI (para pagos con tarjeta) | 44444444, en el caso de MercadoPago, allí va el id de la cuenta. | 1029: debe informar código de referencia de la tarjeta. |
Respuesta del servicio:
{ "ack": 0, "message": "-", "internalNumber": "0000001" }
- ack es el código de respuesta, en caso de ser un error, mirar tabla a continuación.
- message: descripción del error en caso de existir.
- internalNumber: en caso de haberse creado con éxito, el número de orden asignado por Bridge.
Código de Error | Descripción |
---|---|
0 | El pedido ha ingresado con éxito. |
900 | El pedido no posee stock suficiente en la/s tienda/s para ser surtido. |
901 | Debe informar un cliente. |
902 | Debe informar para el cliente, al menos una dirección de envío. |
903 | Debe informar al menos un producto en el pedido. |
904 | La sumatoria de los pagos, debe ser igual al monto del pedido. |
905 | No puede realizar un pedido que sea surtido de diferentes tiendas. |
9999 | Error desconocido |