Productos
Listar productos
A continuación se explica como listar los productos, con un ejemplo y muestra de posibles respuestas obtenidas.
Podemos consultar los productos que tenemos dados de alta, o filtrar por algunos parámetros
Parámetro | Tipo | Requerido | Detalles |
---|---|---|---|
page | int | Opcional | Indica número de página a consultar, por default posiciona en la página 1. |
per_page | int | Opcional | Indica el limite de resultados para mostrar, por default retorna 100 registros. |
Construcción de la URL
Importante
Este método de tipo GET
Host: https://facturaonline.com.mx/api (producción) / https://sandbox.facturaonline.com.mx/api (sandbox)
Endpoint: /v3/products/list
Ejemplo: https://facturaonline.com.mx/api/v3/products/list
Tip
Para probar el ejemplo de código, necesitas cambiar "Tu API key" por la clave de API de tu cuenta, y "Tu Secret key" por la clave secreta correspondiente.
Ejemplo para listado de productos
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '{ HOST }/api/v3/products/list',
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_POSTFIELDS =>'{
"page": 2,
"per_page": 4
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'F-PLUGIN: 9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key: Tu API key',
'F-Secret-Key: Tu Secret key'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var request = require('request');
var options = {
'method': 'GET',
'url': '{ HOST }/api/v3/products/list',
'headers': {
'Content-Type': 'application/json',
'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key': 'Tu API key',
'F-Secret-Key': 'Tu Secret key'
},
body: JSON.stringify({
"page": 2,
"per_page": 4
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "{ HOST }/api/v3/products/list"
payload = json.dumps({
"page": 2,
"per_page": 4
})
headers = {
'Content-Type': 'application/json',
'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key': 'Tu API key',
'F-Secret-Key': 'Tu Secret key'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
require "uri"
require "json"
require "net/http"
url = URI("{ HOST }/api/v3/products/list")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Content-Type"] = "application/json"
request["F-PLUGIN"] = "9d4095c8f7ed5785cb14c0e3b033eeb8252416ed"
request["F-Api-Key"] = "Tu API key"
request["F-Secret-Key"] = "Tu Secret key"
request.body = JSON.dump({
"page": 2,
"per_page": 4
})
response = http.request(request)
puts response.read_body
Respuesta
Aviso
El mensaje de error puede variar dependiendo el nodo en el que haya información incorrecta. Te sugerimos leer cuidadosamente el mensaje del error ya que en el mismo se indica donde es necesario corregir la información.
Respuesta exitosa
[
{
"status": "success",
"total": 100,
"per_page": 4,
"current_page": 2,
"last_page": 25,
"from": 5,
"to": 8,
"data": [
{
"code": "59fa4f114751d",
"name": "Servicio técnico de orientación",
"price": 1048.95,
"sku": "sku-003",
"unidad": "Unidad de servicio",
"claveprodserv": "43232107",
"claveunidad": "E48"
},
{
"code": "59ea2a6886b4e",
"name": "SERVICIO DE HOSPEDAJE PARA ELEMENTOS DEL SERVICIO DE PROTECCION FEDERAL DEL 01 AL 09 DE OCTUBRE",
"price": 100,
"sku": "HOSP2",
"unidad": "Segundo [unidad de ángulo]",
"claveprodserv": "22101708",
"claveunidad": "D62"
},
{
"code": "59ee370e03253",
"name": "Muestra de material de medida para instalación",
"price": 123,
"sku": "12212121",
"unidad": "Radián",
"claveprodserv": "0",
"claveunidad": "C81"
},
{
"code": "59ee7312578f1",
"name": "Producto de servicio de divisas",
"price": 8888,
"sku": "4533",
"unidad": "Valor monetario",
"claveprodserv": "84121603",
"claveunidad": "M4"
}
]
}
]
Buscar un producto por UID
A continuación se explica como buscar un producto de nuestro catalogo por medio de su UID, con un ejemplo y la muestra de posibles respuestas obtenidas.
Podemos buscar un CFDI utilizando el UID como parámetro y obtener la información relacionada con este, a continuación se muestran las características de este valor.
Parámetro | Tipo | Requerido | Detalles |
---|---|---|---|
UID | String | Requerido | Es el identificador interno para la plataforma de Factura Online asignado al producto cuando lo creamos. |
Construcción de la URL
Importante
Este método de tipo GET
Host: https://facturaonline.com.mx/api (producción) / https://sandbox.facturaonline.com.mx/api (sandbox)
Endpoint: /v3/products/show/{ UID de tu producto }
Ejemplo: https://facturaonline.com.mx/api/v3/products/show/6543f3bf0016d
Tip
Para probar el ejemplo de código, necesitas cambiar "Tu API key" por la clave de API de tu cuenta, y "Tu Secret key" por la clave secreta correspondiente.
Ejemplo para listado de productos
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '{ HOST }/api/v3/products/show/6543f3bf0016d',
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(
'Content-Type: application/json',
'F-PLUGIN: 9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key: Tu API key',
'F-Secret-Key: Tu Secret key'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var request = require('request');
var options = {
'method': 'GET',
'url': '{ HOST }/api/v3/products/show/6543f3bf0016d',
'headers': {
'Content-Type': 'application/json',
'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key': 'Tu API key',
'F-Secret-Key': 'Tu Secret key'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "{ HOST }/api/v3/products/show/6543f3bf0016d"
payload = ""
headers = {
'Content-Type': 'application/json',
'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key': 'Tu API key',
'F-Secret-Key': 'Tu Secret key'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
require "uri"
require "json"
require "net/http"
url = URI("{ HOST }/api/v3/products/show/6543f3bf0016d")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Content-Type"] = "application/json"
request["F-PLUGIN"] = "9d4095c8f7ed5785cb14c0e3b033eeb8252416ed"
request["F-Api-Key"] = "Tu API key"
request["F-Secret-Key"] = "Tu Secret key"
response = http.request(request)
puts response.read_body
Respuesta
Ejemplo de respuesta exitosa
{
"response": "success",
"data": {
"uid": "6543f3bf0016d",
"name": "Gafas de sol",
"price": "2000.523100",
"sku": "142",
"unidad": "Pieza",
"claveprodserv": "78102203",
"claveunidad": "H87"
}
}
Ejemplo de respuesta erronea
{
"response": "error",
"data": "No se encontraron datos correspondientes a tu producto (6543f3f0016d)"
}
Aviso
El mensaje de error puede variar dependiendo el nodo en el que haya información incorrecta. Te sugerimos leer cuidadosamente el mensaje del error ya que en el mismo se indica donde es necesario corregir la información.
Crear producto
A continuación se explica como dar de alta un nuevo producto.
Podemos crear un nuevo producto haciendo uso de los siguientes parámetros:
Parámetro | Tipo | Requerido | Detalles |
---|---|---|---|
code | string | Opcional | Indica el código o SKU de tu producto. |
name | string | Requerido | Indica el nombre de tu producto. Éste nombre se mostrará en el apartado de Conceptos de tu CFDI. |
price | numeric | Requerido | Indica el precio sin IVA de tu producto o servicio. |
clavePS | string | Requerido | Indica la clave del producto o servicio correspondiente a tu concepto. Consulta el catálogo de Clave Producto/Servicio . |
unity | string | Requerido | Indica la unidad de medida, ésta debe corresponder a la clave indicada en el atributo claveUnity . Consulta el catálogo de Clave Unidad . |
claveUnity | string | Requerido | Indica la clave de la unidad de medida, ésta debe corresponder a la unidad indicada en el atributo unity . Consulta el catálogo de Clave Unidad . |
Construcción de la URL
Importante
Este método es de es de tipo POST
Host: https://facturaonline.com.mx/api (producción) / https://sandbox.facturaonline.com.mx/api (sandbox)
Endpoint: /v3/products/create
Ejemplo: https://facturaonline.com.mx/api/v3/products/create
Tip
Para probar el código de ejemplo es necesario que reemplaces el texto Tu API key por el API KEY de tu cuenta, e Tu Secret key por el SECRET KEY correspondiente
Ejemplo para crear productos
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '{ HOST }/v3/products/create',
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 =>'{
"code":"K001",
"name": "Desarrollo de banner para publicidad",
"price": "35.9",
"clavePS":1154544511,
"unity":"Unidad de servicio",
"claveUnity": "E48"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'F-PLUGIN: 9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key: API.Key',
'F-Secret-Key: Secret.Key'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var request = require('request');
var options = {
'method': 'POST',
'url': '{ HOST }/v3/products/create',
'headers': {
'Content-Type': 'application/json',
'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key': 'API.Key',
'F-Secret-Key': 'Secret.Key'
},
body: JSON.stringify({
"code": "K001",
"name": "Desarrollo de banner para publicidad",
"price": "35.9",
"clavePS": 1154544511,
"unity": "Unidad de servicio",
"claveUnity": "E48"
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "{ HOST }/v3/products/create"
payload = json.dumps({
"code": "K001",
"name": "Desarrollo de banner para publicidad",
"price": "35.9",
"clavePS": 1154544511,
"unity": "Unidad de servicio",
"claveUnity": "E48"
})
headers = {
'Content-Type': 'application/json',
'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key': 'API.Key',
'F-Secret-Key': 'Secret.Key'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
require "uri"
require "json"
require "net/http"
url = URI("{ HOST }/v3/products/create")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["F-PLUGIN"] = "9d4095c8f7ed5785cb14c0e3b033eeb8252416ed"
request["F-Api-Key"] = "API.Key"
request["F-Secret-Key"] = "Secret.Key"
request.body = JSON.dump({
"code": "K001",
"name": "Desarrollo de banner para publicidad",
"price": "35.9",
"clavePS": 1154544511,
"unity": "Unidad de servicio",
"claveUnity": "E48"
})
response = http.request(request)
puts response.read_body
Respuesta
Importante
El mensaje de error puede variar dependiendo el nodo en el que haya información incorrecta. Te sugerimos leer cuidadosamente el mensaje del error ya que en el mismo se indica donde es necesario corregir la información.
Respuesta exitosa
{
"response": "success",
"data": {
"uid": "616de203d2ff7",
"name": "Desarrollo de banner para publicidad",
"sku": "K001",
"price": "35.9",
"clavePS": "1154544511",
"unity": "Unidad de servicio",
"claveUnity": "E48"
}
}
Actualizar un producto
A continuación se explica el metódo con el cual podremos actualizar la información de un producto que existe dentro de nuestro catalogo junto algunos ejemplos de como realizarlo.
Para actualizar un producto son necesarios los siguientes parametros.
Parámetro | Tipo | Requerido | Detalles |
---|---|---|---|
UID | string | Requerido | Es el identificador unico correspondiente a el producto que deseamos actualizar. |
code | string | Opcional | Indica el código o SKU de tu producto. |
name | string | Requerido | Indica el nombre de tu producto. Éste nombre se mostrará en el apartado de Conceptos de tu CFDI. |
price | numeric | Requerido | Indica el precio sin IVA de tu producto o servicio. |
clavePS | string | Requerido | Indica la clave del producto o servicio correspondiente a tu concepto. Consulta el catálogo de Clave Producto/Servicio . |
unity | string | Requerido | Indica la unidad de medida, ésta debe corresponder a la clave indicada en el atributo claveUnity . Consulta el catálogo de Clave Unidad . |
claveUnity | string | Requerido | Indica la clave de la unidad de medida, ésta debe corresponder a la unidad indicada en el atributo unity . Consulta el catálogo de Clave Unidad . |
Construcción de la URL
Importante
Este método es de es de tipo POST
Host: https://facturaonline.com.mx/api (producción) / https://sandbox.facturaonline.com.mx/api (sandbox)
Endpoint: /v3/products/update/{ UID de tu producto }
Ejemplo: https://facturaonline.com.mx/api/v3/products/66830797f2254/
Tip
Para probar el código de ejemplo es necesario que reemplaces el texto Tu API key por el API KEY de tu cuenta, e Tu Secret key por el SECRET KEY correspondiente
Ejemplo para crear productos
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '{ HOST }/api/v3/products/update/66830797f2254',
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 =>'{
"code":"K002",
"name": "Desarrollo a la medida",
"price": "35.9",
"clavePS": 81111500,
"unity":"Unidad de servicio",
"claveUnity": "E48"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'F-PLUGIN: 9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key: Tu API key',
'F-Secret-Key: Tu Secret key'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var request = require('request');
var options = {
'method': 'POST',
'url': '{ HOST }/api/v3/products/update/66830797f2254',
'headers': {
'Content-Type': 'application/json',
'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key': 'Tu API key',
'F-Secret-Key': 'Tu Secret key'
},
body: JSON.stringify({
"code":"K002",
"name": "Desarrollo a la medida",
"price": "35.9",
"clavePS": 81111500,
"unity": "Unidad de servicio",
"claveUnity": "E48"
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "{ HOST }/api/v3/products/update/66830797f2254"
payload = json.dumps({
"code": "K002",
"name": "Desarrollo a la medida",
"price": "35.9",
"clavePS": 81111500,
"unity": "Unidad de servicio",
"claveUnity": "E48"
})
headers = {
'Content-Type': 'application/json',
'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key': 'Tu API key',
'F-Secret-Key': 'Tu Secret key'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
require "uri"
require "json"
require "net/http"
url = URI("{ HOST }/api/v3/products/update/66830797f2254")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["F-PLUGIN"] = "9d4095c8f7ed5785cb14c0e3b033eeb8252416ed"
request["F-Api-Key"] = "Tu API key"
request["F-Secret-Key"] = "Tu Secret key"
request.body = JSON.dump({
"code": "K002",
"name": "Desarrollo a la medida",
"price": "35.9",
"clavePS": 81111500,
"unity": "Unidad de servicio",
"claveUnity": "E48"
})
response = http.request(request)
puts response.read_body
Respuesta
Ejemplo de respuesta exitosa
{
"response": "success",
"data": {
"uid": "668331248fcf5",
"name": "Desarrollo de software de productividad",
"sku": "SOFT001",
"price": "36000.99",
"clavePS": "81111500",
"unity": "Unidad de servicio",
"claveUnity": "E48"
}
}
Ejemplo de respuesta erronea
{
"response": "error",
"message": "El producto que intentas actualizar ya no existe"
}
Aviso
El mensaje de error puede variar dependiendo del nodo en el que haya información incorrecta. Te sugerimos leer cuidadosamente el mensaje de error ya que en el mismo se indica donde es necesario corregir la información.
Eliminar un producto
A continuación se explica el metódo con el cual podremos elminar un producto y toda su información de nuestro catalogo junto algunos ejemplos de como realizarlo.
Podemos eliminar un CFDI utilizando el UID como parámetro para realizar esta acción , a continuación se muestran las características de este valor.
Parámetro | Tipo | Requerido | Detalles |
---|---|---|---|
UID | String | Requerido | Es el identificador interno para la plataforma de Factura Online asignado al producto cuando lo creamos. |
Construcción de la URL
Importante
Este método es de es de tipo GET
Host: https://facturaonline.com.mx/api (producción) / https://sandbox.facturaonline.com.mx/api (sandbox)
Endpoint: /v3/products/delete/{ UID de tu producto }
Ejemplo: https://facturaonline.com.mx/api/v3/delete/66830797f2254/
Tip
Para probar el código de ejemplo es necesario que reemplaces el texto Tu API key por el API KEY de tu cuenta, e Tu Secret key por el SECRET KEY correspondiente
Ejemplo para crear productos
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '{ HOST }/api/v3/products/delete/66830797f2254',
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(
'Content-Type: application/json',
'F-PLUGIN: 9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key: Tu API key',
'F-Secret-Key: Tu Secret key'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var request = require('request');
var options = {
'method': 'GET',
'url': '{ HOST }/api/v3/products/delete/66830797f2254',
'headers': {
'Content-Type': 'application/json',
'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key': 'Tu API key',
'F-Secret-Key': 'Tu Secret key'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "{ HOST }/api/v3/products/delete/66830797f2254"
payload = ""
headers = {
'Content-Type': 'application/json',
'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
'F-Api-Key': 'Tu API key',
'F-Secret-Key': 'Tu Secret key'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
require "uri"
require "json"
require "net/http"
url = URI("{ HOST }/api/v3/products/delete/66830797f2254")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Content-Type"] = "application/json"
request["F-PLUGIN"] = "9d4095c8f7ed5785cb14c0e3b033eeb8252416ed"
request["F-Api-Key"] = "Tu API key"
request["F-Secret-Key"] = "Tu Secret key"
response = http.request(request)
puts response.read_body
Respuesta
Ejemplo de respuesta exitosa
{
"response": "success",
"message": "Producto eliminado exitosamente"
}
Ejemplo de respuesta erronea
{
"response": "error",
"message": "Producto no eliminado intenta más tarde"
}
Aviso
El mensaje de error puede variar dependiendo del nodo en el que haya información incorrecta. Te sugerimos leer cuidadosamente el mensaje de error ya que en el mismo se indica donde es necesario corregir la información.