Orders
En esta sección se explican los Endpoints que permiten gestionar las órdenes de tu empresa.
Crear una Orden
Cuando se realice una compra en tu e-commerce utiliza este endpoint para indicarle a Buenvío que deseas crear una orden perteneciente a dicha compra, la orden puede contener varios paquetes a ser envíados a la dirección de tu comprador.
const params = {
'customer_name': 'John Doe',
'customer_email': '[email protected]',
'customer_phone': '(809) 555-5555',
'product_cost': 1000,
'departure_address_street': 'Calle 4',
'departure_address_building_number': '5',
'departure_address_city': 2,
'departure_address_reference': 'Frente a la Farmacia',
'departure_address_sector': 'Cerros de Gurabo',
'arrival_address_street': 'Calle 1',
'arrival_address_building_number': '111',
'arrival_address_city': 2,
'arrival_address_reference': 'Esquina Calle 2',
'arrival_address_sector': 'Los Jardines',
'arrival_address_representative_name': 'Jane Doe',
'arrival_address_representative_phone': '(829) 555-5555',
'packages': JSON.stringify([
{'name': 'Product 1', 'weight': 1, 'fragile': true},
{'name': 'Product 2', 'weight': 20, 'fragile': false}
]),
};
const body = Object.keys(params)
.map((key) => encodeURIComponent(key) + '=' + encodeURIComponent(params[key]))
.join('&');
fetch('https://api.buenvio.com/business/v1/orders/', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
Authorization: '<YOUR_API_TOKEN>',
},
mode: 'cors',
body: body,
})
.then((response) => {
return response.json();
})
.then((data) => {
console.log(data);
});
# Requiere usar la dependencia https://requests.readthedocs.io/en/master/
import requests
# Requiere importar la librería estándar json para poder serializar
import json
response = requests.post(
'https://api.buenvio.com/business/v1/orders/',
headers={
'Authorization': '<YOUR_API_TOKEN>'
},
data={
'customer_name': 'John Doe',
'customer_email': '[email protected]',
'customer_phone': '(809) 555-5555',
'product_cost': 1000,
'departure_address_street': 'Calle 4',
'departure_address_building_number': '5',
'departure_address_city': 2,
'departure_address_reference': 'Frente a la Farmacia',
'departure_address_sector': 'Cerros de Gurabo',
'arrival_address_street': 'Calle 1',
'arrival_address_building_number': '111',
'arrival_address_city': 2,
'arrival_address_reference': 'Esquina Calle 2',
'arrival_address_sector': 'Los Jardines',
'arrival_address_representative_name': 'Jane Doe',
'arrival_address_representative_phone': '(829) 555-5555',
'packages': json.dumps([
{'name': 'Product 1', 'weight': 1, 'fragile': true},
{'name': 'Product 2', 'weight': 20, 'fragile': false}
]),
}
)
print(str(response.text)
// Requiere usar la dependencia http://docs.guzzlephp.org/
$client = new GuzzleHttp\Client();
$response = $client->request(
'POST',
'https://api.buenvio.com/business/v1/orders/',
[
'headers' => [
'Authorization' => '<YOUR_API_TOKEN>'
],
'form_params' => [
'customer_name' => 'John Doe',
'customer_email' => '[email protected]',
'customer_phone' => '(809) 555-5555',
'product_cost' => 1000,
'departure_address_street' => 'Calle 4',
'departure_address_building_number' => '5',
'departure_address_city' => 2,
'departure_address_reference' => 'Frente a la Farmacia',
'departure_address_sector' => 'Cerros de Gurabo',
'arrival_address_street' => 'Calle 1',
'arrival_address_building_number' => '111',
'arrival_address_city' => 2,
'arrival_address_reference' => 'Esquina Calle 2',
'arrival_address_sector' => 'Los Jardines',
'arrival_address_representative_name' => 'Jane Doe',
'arrival_address_representative_phone' => '(829) 555-5555',
'packages' => json_encode([
['name' => 'Product 1', 'weight' => 1, 'fragile' => true],
['name' => 'Product 2', 'weight' => 20, 'fragile' => false]
])
]
]
);
$data = json_decode($response->getBody());
var_dump($data);
$response = wp_remote_request(
'https://api.buenvio.com/business/v1/orders/',
[
'method' => 'POST',
'headers' => [
'Authorization' => '<YOUR_API_TOKEN>'
],
'body' => [
'customer_name' => 'John Doe',
'customer_email' => '[email protected]',
'customer_phone' => '(809) 555-5555',
'product_cost' => 1000,
'departure_address_street' => 'Calle 4',
'departure_address_building_number' => '5',
'departure_address_city' => 2,
'departure_address_reference' => 'Frente a la Farmacia',
'departure_address_sector' => 'Cerros de Gurabo',
'arrival_address_street' => 'Calle 1',
'arrival_address_building_number' => '111',
'arrival_address_city' => 2,
'arrival_address_reference' => 'Esquina Calle 2',
'arrival_address_sector' => 'Los Jardines',
'arrival_address_representative_name' => 'Jane Doe',
'arrival_address_representative_phone' => '(829) 555-5555',
'packages' => json_encode([
['name' => 'Product 1', 'weight' => 1, 'fragile' => true],
['name' => 'Product 2', 'weight' => 20, 'fragile' => false]
])
]
]
);
if (is_wp_error($response)) {
$error_message = $response->get_error_message();
var_dump($error_message);
} else {
var_dump($response);
}
// Requiere usar la dependencia https://pub.dev/packages/http/
import 'package:http/http.dart' as http;
// Requiere importar la librería estándar dart:convert para poder serializar
import 'dart:convert';
http.post(
'https://api.buenvio.com/business/v1/orders/',
headers: {
'Authorization': '<YOUR_API_TOKEN>',
},
body: {
'customer_name': 'John Doe',
'customer_email': '[email protected]',
'customer_phone': '(809) 555-5555',
'product_cost': 1000,
'departure_address_street': 'Calle 4',
'departure_address_building_number': '5',
'departure_address_city': 2,
'departure_address_reference': 'Frente a la Farmacia',
'departure_address_sector': 'Cerros de Gurabo',
'arrival_address_street': 'Calle 1',
'arrival_address_building_number': '111',
'arrival_address_city': 2,
'arrival_address_reference': 'Esquina Calle 2',
'arrival_address_sector': 'Los Jardines',
'arrival_address_representative_name': 'Jane Doe',
'arrival_address_representative_phone': '(829) 555-5555',
'packages': json.encode([
{'name': 'Product 1', 'weight': 1, 'fragile': true},
{'name': 'Product 2', 'weight': 20, 'fragile': false}
]),
}
).then((response) {
print(response.body);
});
Parámetros de la Petición
customer_name |
|
---|---|
Descripción | Nombre del cliente. |
Tipo | string |
Validaciones | required |
customer_email |
|
Descripción | Email del cliente. |
Tipo | string |
Validaciones | required , email |
customer_phone |
|
Descripción | Teléfono del cliente. |
Tipo | string regex con la expresión .\(\d{3}\) \d{3}-\d{4} , de forma que acepta: |
Validaciones | required , regex:/\(\d{3}\) \d{3}-\d{4}/ |
product_cost |
|
Descripción | Valor apróximado de los artículos envíados, este valor se toma en cuenta para el seguro de garantía que se ofrece por el envío de esta orden. |
Tipo | float |
Validaciones | required , numeric |
departure_address_street |
|
Descripción | Calle de la sucursal de tu empresa. |
Tipo | string |
Validaciones | required |
departure_address_building_number |
|
Descripción | Número de edificio de la sucursal de tu empresa. |
Tipo | string |
Validaciones | required |
departure_address_city |
|
Descripción | Ciudad de la sucursal de tu empresa. |
Tipo | AddressCity |
Validaciones | required , integer |
departure_address_reference |
|
Descripción | Referencia de la sucursal de tu empresa. |
Tipo | string |
Validaciones | N/A |
departure_address_sector |
|
Descripción | Sector de la sucursal de tu empresa. |
Tipo | string |
Validaciones | required |
arrival_address_street |
|
Descripción | Calle destino. |
Tipo | string |
Validaciones | required |
arrival_address_building_number |
|
Descripción | Número de edificio destino. |
Tipo | string |
Validaciones | required |
arrival_address_city |
|
Descripción | Ciudad destino. |
Tipo | AddressCity |
Validaciones | required , integer |
arrival_address_reference |
|
Descripción | Referencia al destino. |
Tipo | string |
Validaciones | N/A |
arrival_address_sector |
|
Descripción | Sector destino. |
Tipo | string |
Validaciones | required |
arrival_address_representative_name |
|
Descripción | Nombre del contacto secundario. |
Tipo | string |
Validaciones | N/A |
arrival_address_representative_phone |
|
Descripción | Teléfono del contacto secundario. |
Tipo | string |
Validaciones | N/A |
packages |
|
Descripción | Paquetes que se van a crear en la orden. |
Tipo |
array<Package>
|
Validaciones | required , json |
Parámetros de la Respuesta
message |
|
---|---|
Descripción | Explica el resultado de la petición. |
Tipo | string |
ok |
|
Descripción | Indica si la petición ha sido procesada exitosamente. |
Tipo | bool |
order_id |
|
Descripción | Número de la Orden. |
Tipo | integer |
packages_identifiers |
|
Descripción | Lista de identificadores únicos de los paquetes contenidos en la orden. |
Tipo | array<string> |
Cancelar una Orden
Cuando una orden es cancelada en tu plataforma debes de notificarle a Buenvío a través de este endpoint que dicha orden ya no será recibida.
fetch(
'https://api.buenvio.com/business/v1/orders/?order_id=1',
{
method: 'DELETE',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
'Authorization': '<YOUR_API_TOKEN>'
},
mode: 'cors',
}).then(response => {
return response.json();
}).then(data => {
console.log(data);
});
# Requiere usar la dependencia https://requests.readthedocs.io/en/master/
import requests
response = requests.delete(
'https://api.buenvio.com/business/v1/orders/?order_id=1',
headers={
'Authorization': '<YOUR_API_TOKEN>'
}
)
print(str(response.text)
// Requiere usar la dependencia http://docs.guzzlephp.org/
$client = new GuzzleHttp\Client();
$response = $client->request(
'DELETE',
'https://api.buenvio.com/business/v1/orders/?order_id=1',
[
'headers' => [
'Authorization' => '<YOUR_API_TOKEN>'
]
]
);
$data = json_decode($response->getBody());
var_dump($data);
$response = wp_remote_request(
'https://api.buenvio.com/business/v1/orders/?order_id=1',
[
'method' => 'DELETE',
'headers' => [
'Authorization' => '<YOUR_API_TOKEN>'
]
]
);
if (is_wp_error($response)) {
$error_message = $response->get_error_message();
var_dump($error_message);
} else {
var_dump($response);
}
// Requiere usar la dependencia https://pub.dev/packages/http/
import 'package:http/http.dart' as http;
http.delete(
'https://api.buenvio.com/business/v1/orders/?order_id=1',
headers: {
'Authorization': '<YOUR_API_TOKEN>',
}
).then((response) {
print(response.body);
});
Parámetros de la Petición
order_id |
|
---|---|
Descripción | Número de la Orden. |
Tipo | integer |
Validaciones | required , integer |
Parámetros de la Respuesta
message |
|
---|---|
Descripción | Explica el resultado de la petición. |
Tipo | string |
ok |
|
Descripción | Indica si la petición ha sido procesada exitosamente. |
Tipo | bool |
Rastrear una Orden
Cuando una orden ya ha sido creada y depositada en Buenvío, podrás usar este endpoint para rastrear los paquetes contenidos en dicha orden y ver los distintos puntos por los que han pasado hasta llegar a su destino.
fetch(
'https://api.buenvio.com/business/v1/orders/track/?order_id=1',
{
method: 'GET',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
'Authorization': '<YOUR_API_TOKEN>'
},
mode: 'cors',
}).then(response => {
return response.json();
}).then(data => {
console.log(data);
});
# Requiere usar la dependencia https://requests.readthedocs.io/en/master/
import requests
response = requests.get(
'https://api.buenvio.com/business/v1/orders/track/?order_id=1',
headers={
'Authorization': '<YOUR_API_TOKEN>'
}
)
print(str(response.text)
// Requiere usar la dependencia http://docs.guzzlephp.org/
$client = new GuzzleHttp\Client();
$response = $client->request(
'GET',
'https://api.buenvio.com/business/v1/orders/track/?order_id=1',
[
'headers' => [
'Authorization' => '<YOUR_API_TOKEN>'
]
]
);
$data = json_decode($response->getBody());
var_dump($data);
$response = wp_remote_request(
'https://api.buenvio.com/business/v1/orders/track/?order_id=1',
[
'method' => 'GET',
'headers' => [
'Authorization' => '<YOUR_API_TOKEN>'
]
]
);
if (is_wp_error($response)) {
$error_message = $response->get_error_message();
var_dump($error_message);
} else {
var_dump($response);
}
// Requiere usar la dependencia https://pub.dev/packages/http/
import 'package:http/http.dart' as http;
http.get(
'https://api.buenvio.com/business/v1/orders/track/?order_id=1',
headers: {
'Authorization': '<YOUR_API_TOKEN>',
}
).then((response) {
print(response.body);
});
Parámetros de la Petición
order_id |
|
---|---|
Descripción | Número de la Orden. |
Tipo | integer |
Validaciones | required , integer |
Parámetros de la Respuesta
message |
|
---|---|
Descripción | Explica el resultado de la petición. |
Tipo | string |
ok |
|
Descripción | Indica si la petición ha sido procesada exitosamente. |
Tipo | bool |
order_tracks |
|
Descripción | Lista de los paquetes contenidos en la orden con sus respectivos rastreos. |
Tipo | array<PackageTrack> |
Cotizar una Orden
Cuando se desea consultar el precio total por el cual sería facturada una orden utiliza este endpoint.
const params = {
'customer_name': 'John Doe',
'customer_email': '[email protected]',
'customer_phone': '(809) 555-5555',
'product_cost': 1000,
'departure_address_street': 'Calle 4',
'departure_address_building_number': '5',
'departure_address_city': 2,
'departure_address_reference': 'Frente a la Farmacia',
'departure_address_sector': 'Cerros de Gurabo',
'arrival_address_street': 'Calle 1',
'arrival_address_building_number': '111',
'arrival_address_city': 2,
'arrival_address_reference': 'Esquina Calle 2',
'arrival_address_sector': 'Los Jardines',
'arrival_address_representative_name': 'Jane Doe',
'arrival_address_representative_phone': '(829) 555-5555',
'packages': JSON.stringify([
{'name': 'Product 1', 'weight': 1, 'fragile': true},
{'name': 'Product 2', 'weight': 20, 'fragile': false}
]),
};
const body = Object.keys(params)
.map((key) => encodeURIComponent(key) + '=' + encodeURIComponent(params[key]))
.join('&');
fetch('https://api.buenvio.com/business/v1/orders/quote/', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
Authorization: '<YOUR_API_TOKEN>',
},
mode: 'cors',
body: body,
})
.then((response) => {
return response.json();
})
.then((data) => {
console.log(data);
});
# Requiere usar la dependencia https://requests.readthedocs.io/en/master/
import requests
# Requiere importar la librería estándar json para poder serializar
import json
response = requests.post(
'https://api.buenvio.com/business/v1/orders/quote/',
headers={
'Authorization': '<YOUR_API_TOKEN>'
},
data={
'customer_name': 'John Doe',
'customer_email': '[email protected]',
'customer_phone': '(809) 555-5555',
'product_cost': 1000,
'departure_address_street': 'Calle 4',
'departure_address_building_number': '5',
'departure_address_city': 2,
'departure_address_reference': 'Frente a la Farmacia',
'departure_address_sector': 'Cerros de Gurabo',
'arrival_address_street': 'Calle 1',
'arrival_address_building_number': '111',
'arrival_address_city': 2,
'arrival_address_reference': 'Esquina Calle 2',
'arrival_address_sector': 'Los Jardines',
'arrival_address_representative_name': 'Jane Doe',
'arrival_address_representative_phone': '(829) 555-5555',
'packages': json.dumps([
{'name': 'Product 1', 'weight': 1, 'fragile': true},
{'name': 'Product 2', 'weight': 20, 'fragile': false}
]),
}
)
print(str(response.text)
// Requiere usar la dependencia http://docs.guzzlephp.org/
$client = new GuzzleHttp\Client();
$response = $client->request(
'POST',
'https://api.buenvio.com/business/v1/orders/quote/',
[
'headers' => [
'Authorization' => '<YOUR_API_TOKEN>'
],
'form_params' => [
'customer_name' => 'John Doe',
'customer_email' => '[email protected]',
'customer_phone' => '(809) 555-5555',
'product_cost' => 1000,
'departure_address_street' => 'Calle 4',
'departure_address_building_number' => '5',
'departure_address_city' => 2,
'departure_address_reference' => 'Frente a la Farmacia',
'departure_address_sector' => 'Cerros de Gurabo',
'arrival_address_street' => 'Calle 1',
'arrival_address_building_number' => '111',
'arrival_address_city' => 2,
'arrival_address_reference' => 'Esquina Calle 2',
'arrival_address_sector' => 'Los Jardines',
'arrival_address_representative_name' => 'Jane Doe',
'arrival_address_representative_phone' => '(829) 555-5555',
'packages' => json_encode([
['name' => 'Product 1', 'weight' => 1, 'fragile' => true],
['name' => 'Product 2', 'weight' => 20, 'fragile' => false]
])
]
]
);
$data = json_decode($response->getBody());
var_dump($data);
$response = wp_remote_request(
'https://api.buenvio.com/business/v1/orders/quote/',
[
'method' => 'POST',
'headers' => [
'Authorization' => '<YOUR_API_TOKEN>'
],
'body' => [
'customer_name' => 'John Doe',
'customer_email' => '[email protected]',
'customer_phone' => '(809) 555-5555',
'product_cost' => 1000,
'departure_address_street' => 'Calle 4',
'departure_address_building_number' => '5',
'departure_address_city' => 2,
'departure_address_reference' => 'Frente a la Farmacia',
'departure_address_sector' => 'Cerros de Gurabo',
'arrival_address_street' => 'Calle 1',
'arrival_address_building_number' => '111',
'arrival_address_city' => 2,
'arrival_address_reference' => 'Esquina Calle 2',
'arrival_address_sector' => 'Los Jardines',
'arrival_address_representative_name' => 'Jane Doe',
'arrival_address_representative_phone' => '(829) 555-5555',
'packages' => json_encode([
['name' => 'Product 1', 'weight' => 1, 'fragile' => true],
['name' => 'Product 2', 'weight' => 20, 'fragile' => false]
])
]
]
);
if (is_wp_error($response)) {
$error_message = $response->get_error_message();
var_dump($error_message);
} else {
var_dump($response);
}
// Requiere usar la dependencia https://pub.dev/packages/http/
import 'package:http/http.dart' as http;
// Requiere importar la librería estándar dart:convert para poder serializar
import 'dart:convert';
http.post(
'https://api.buenvio.com/business/v1/orders/quote/',
headers: {
'Authorization': '<YOUR_API_TOKEN>',
},
body: {
'customer_name': 'John Doe',
'customer_email': '[email protected]',
'customer_phone': '(809) 555-5555',
'product_cost': 1000,
'departure_address_street': 'Calle 4',
'departure_address_building_number': '5',
'departure_address_city': 2,
'departure_address_reference': 'Frente a la Farmacia',
'departure_address_sector': 'Cerros de Gurabo',
'arrival_address_street': 'Calle 1',
'arrival_address_building_number': '111',
'arrival_address_city': 2,
'arrival_address_reference': 'Esquina Calle 2',
'arrival_address_sector': 'Los Jardines',
'arrival_address_representative_name': 'Jane Doe',
'arrival_address_representative_phone': '(829) 555-5555',
'packages': json.encode([
{'name': 'Product 1', 'weight': 1, 'fragile': true},
{'name': 'Product 2', 'weight': 20, 'fragile': false}
]),
}
).then((response) {
print(response.body);
});
Parámetros de la Petición
customer_name |
|
---|---|
Descripción | Nombre del cliente. |
Tipo | string |
Validaciones | required |
customer_email |
|
Descripción | Email del cliente. |
Tipo | string |
Validaciones | required , email |
customer_phone |
|
Descripción | Teléfono del cliente. |
Tipo | string regex con la expresión .\(\d{3}\) \d{3}-\d{4} , de forma que acepta: |
Validaciones | required , regex:/\(\d{3}\) \d{3}-\d{4}/ |
product_cost |
|
Descripción | Valor apróximado de los artículos envíados, este valor se toma en cuenta para el seguro de garantía que se ofrece por el envío de esta orden. |
Tipo | float |
Validaciones | required , numeric |
departure_address_street |
|
Descripción | Calle de la sucursal de tu empresa. |
Tipo | string |
Validaciones | required |
departure_address_building_number |
|
Descripción | Número de edificio de la sucursal de tu empresa. |
Tipo | string |
Validaciones | required |
departure_address_city |
|
Descripción | Ciudad de la sucursal de tu empresa. |
Tipo | AddressCity |
Validaciones | required , integer |
departure_address_reference |
|
Descripción | Referencia de la sucursal de tu empresa. |
Tipo | string |
Validaciones | N/A |
departure_address_sector |
|
Descripción | Sector de la sucursal de tu empresa. |
Tipo | string |
Validaciones | required |
arrival_address_street |
|
Descripción | Calle destino. |
Tipo | string |
Validaciones | required |
arrival_address_building_number |
|
Descripción | Número de edificio destino. |
Tipo | string |
Validaciones | required |
arrival_address_city |
|
Descripción | Ciudad destino. |
Tipo | AddressCity |
Validaciones | required , integer |
arrival_address_reference |
|
Descripción | Referencia al destino. |
Tipo | string |
Validaciones | N/A |
arrival_address_sector |
|
Descripción | Sector destino. |
Tipo | string |
Validaciones | required |
arrival_address_representative_name |
|
Descripción | Nombre del contacto secundario. |
Tipo | string |
Validaciones | N/A |
arrival_address_representative_phone |
|
Descripción | Teléfono del contacto secundario. |
Tipo | string |
Validaciones | N/A |
packages |
|
Descripción | Paquetes que se van a crear en la orden. |
Tipo |
array<Package>
|
Validaciones | required , json |
Parámetros de la Respuesta
description |
|
---|---|
Descripción | Describe el servicio de paquetería que se está utilizando. |
Tipo |
string
|
rates |
|
Descripción | Lista de tasaciones de la cotización de la orden. |
Tipo |
array<Rate>
|