Endpoints
Creación de link de pago (POST) /paymentlink/checkout
Descripción
Este endpoint permite generar un link de pago para realizar un cobro a través de CheckoutLink.
Si necesitas escuchar eventos de la orden, puedes configurar tu Webhhok
Request Body Schema
{
"orderReference": "string",
"orderName": "string",
"orderDescription": "string",
"amount": 0,
"lineItems": [
{
"sku": "string",
"product": {
"name": "string",
"price": 0,
"imageUrl": "string",
"requiresShipping": true
},
"quantity": 0
}
],
"successUrl": "string",
"cancelUrl": "string",
"locationCode": "string",
"metadata": [
{
"name": "string",
"value": "string"
}
],
"expirationMinutes": 0
}
-
orderReference:
string|required(false)|length(255)
- Referencia del pedido. Ejemplo: “RFC-1234” -
orderName:
string|required(false)|length(255)|default-value(PaymentLink Order)
- Nombre del pedido. Ejemplo: "Pizza Integration" -
orderDescription:
string*|*required(false)|length(2048)|default-value(null)
- Descripción del pedido. Ejemplo: "A delicious pizza order" -
amount:
decimal|required-conditionally
- Monto total del pedido cuando no se especifican lineItems (requerido solo para el Metodo 2). Ejemplo: 10.50 (ajustar según el monto total del pedido) -
lineItems:
array|required-conditionally
- Lista de productos con detalles cuando no se especifica amount (requerido solo para el Método 1).Ejemplo:
- LineItem:
- sku:
string|required-conditionally
- valor del stock-keeping unit del producto creado en el portal de comercios cuando no se especifica el objeto product. Ejemplo: "PIZZA-001" - product:
object|required-conditionally
- estructura del producto de un solo uso cuando no se especifica sku.- product.name:
string|required(true)
- Ejemplo: "Pizza Italiana" - product.price:
decimal|required(true)
- Ejemplo: 15.00 - product.imageUrl:
string|required(false)|length(512)
- Ejemplo: "https://www.test.com/image.png" - product.requiresShipping:
boolean|required(false)
- Ejemplo: true
- product.name:
- quantity:
int|required(true)
- Ejemplo: 2
- sku:
- LineItem:
-
successUrl:
string|required(false)
- URL a la que redirigir en caso de éxito. Ejemplo: "https://www.my-website.com/checkout/success" -
cancelUrl:
string|required(false)
- URL a la que redirigir en caso de cancelación. Ejemplo: "https://www.my-website.com/shopping-cart" -
locationCode:
string|required(false)
- Código de sucursal (puede ajustarse según tus necesidades, si no se pasa, se utiliza la sucursal predeterminada de la tienda). Ejemplo: "LC-001"notePara obtener el código de sucursal, puedes consultar la lista de sucursales en el portal de comercios.
-
metadata:
array|required(false)
- Datos adicionales. Ejemplo:- name
string|required(true)
: "clientId" - value
string|required(true)
: "1234"
- name
-
expirationMinutes:
int|required(false)|default-value(1440)
- Minutos de expiración del enlace de pago. Ejemplo: 30
Response Body Schema
200 OK - Response Body
{
"orderCode": "string",
"orderId": 0,
"paymentLinkUrl": "string"
}
Fields
- orderCode:
string
- Código del pedido en n1co business. Ejemplo: "PL-001" - orderId:
integer
- Id del pedido en n1co business. Ejemplo: 1 - paymentLinkUrl:
string
- url del enlace de pago. Ejemplo: https://pay.example.com/PL-001
Example
{
"orderCode": "ABC123",
"orderId": 21566,
"paymentLinkUrl": "https://pay.n1cco.shop/ABC123"
}
400 Bad Request - Response Body
{
"type": "string",
"title": "string",
"status": 0,
"errors": {
"field": [
"string"
]
}
}
Fields
- type:
string
- Una URL que identifica el tipo de error. Generalmente, esta URL se refiere a una especificación que describe el tipo de error. En este caso, apunta a la sección 6.5.1 de RFC 7231, que trata sobre los códigos de estado de respuesta HTTP. - title:
string
- Un título breve que describe la naturaleza del error. Este campo suele contener un mensaje genérico que resume el problema. - status:
integer
- Un código de estado HTTP que indica el tipo de error. En este caso, 400 representa un "Bad Request", lo que significa que el servidor no pudo procesar la solicitud debido a un error aparente del cliente. - errors:
object
- Un objeto que contiene detalles específicos sobre los errores. Este objeto puede tener múltiples campos, cada uno representando un aspecto diferente del error. Los nombres de los campos y su estructura pueden variar según la implementación de la API.
Example
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"amount": [
"El monto debe ser mayor a 0."
]
}
}
500 Internal Server Error - Response Body
{
"type": "string",
"title": "string",
"status": 0
}
Fields
- type:
string
- Una URL que identifica el tipo de error. Generalmente, esta URL se refiere a una especificación que describe el tipo de error. En este caso, apunta a la sección 6.6.1 de RFC 7231, que trata sobre los códigos de estado de respuesta HTTP. - title:
string
- Un título breve que describe la naturaleza del error. Este campo suele contener un mensaje genérico que resume el problema. - status:
integer
- Un código de estado HTTP que indica el tipo de error. En este caso, 500 representa un error del lado del servidor (Internal Server Error).
Example
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.6.1",
"title": "An error occurred while processing your request.",
"status": 500
}
Casos de uso
Crear Enlace de Pago (Productos) - Método 1
Esta solicitud permite crear un enlace de pago utilizando una lista detallada de productos y cantidades.
cURL
curl -X 'POST' \
'{{API_BASE_URL}}/paymentlink/checkout' \
-H "Authorization: Bearer {{ YOUR_SECRET_KEY }}" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"orderName": "Pizza Integration",
"orderDescription": "A delicious pizza order",
"lineItems": [
{
"product": {
"name": "Pizza Italiana",
"price": 15
},
"quantity": 2
},
{
"product": {
"name": "Pizza Romana",
"price": 20
},
"quantity": 3
}
],
"successUrl": "https://www.google.hn",
"cancelUrl": "https://www.youtube.com",
"metadata": [
{
"name": "clientId",
"value": "1234"
}
]
}'
JS
const paymentLinkDTO = {
"orderName": "Pizza Integration",
"orderDescription": "A delicious pizza order",
"lineItems": [
{
"product": {
"name": "Pizza Italiana",
"price": 15
},
"quantity": 2
},
{
"product": {
"name": "Pizza Romana",
"price": 20
},
"quantity": 3
}
],
"successUrl": "https://www.google.hn",
"cancelUrl": "https://www.youtube.com",
"metadata": [
{
"name": "clientId",
"value": "1234"
}
]
};
const endpointURL = '{{API_BASE_URL}}/paymentlink/checkout';
const authToken = '{{ YOUR_SECRET_KEY }}';
fetch(endpointURL, {
method: 'POST',
headers: {
'Authorization': `Bearer ${authToken}`,
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify(paymentLinkDTO)
})
.then(response => response.json())
.then(data => console.log('Respuesta:', data))
.catch(error => console.error('Error al realizar la solicitud:', error.message));
Crear Enlace de Pago (Solo Monto) - Método 2
Esta solicitud permite crear un enlace de pago utilizando un monto total en lugar de una lista detallada de productos.
cURL
curl -X 'POST' \
'{{API_BASE_URL}}/paymentlink/checkout' \
-H "Authorization: Bearer {{ YOUR_SECRET_KEY }}" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"orderName": "Pizza Integration",
"orderDescription": "A delicious pizza order",
"amount": 25,
"successUrl": "https://www.google.hn",
"cancelUrl": "https://www.youtube.com",
"metadata": [
{
"name": "clientId",
"value": "1234"
}
]
}'
JS
const paymentLinkDTO = {
"orderName": "Pizza Integration",
"orderDescription": "A delicious pizza order",
"amount": 25,
"successUrl": "https://www.google.hn",
"cancelUrl": "https://www.youtube.com",
"metadata": [
{
"name": "clientId",
"value": "1234"
}
]
};
const endpointURL = '{{API_BASE_URL}}/paymentlink/checkout';
const authToken = '{{ YOUR_SECRET_KEY }}';
fetch(endpointURL, {
method: 'POST',
headers: {
'Authorization': `Bearer ${authToken}`,
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify(paymentLinkDTO)
})
.then(response => response.json())
.then(data => console.log('Respuesta:', data))
.catch(error => console.error('Error al realizar la solicitud:', error.message));
Obtener detalle de orden (GET) /paymentlink/order/{orderCode}
Descripción
Este endpoint permite obtener el detalle de una orden de pago a través de su código.
Response Body Schema
{
"orderId": 0,
"orderCode": "string",
"orderReference": "string",
"name": "string",
"description": "string",
"lineItems": [
{
"productId": 0,
"sku": "string",
"name": "string",
"price": 0,
"promoPrice": 0,
"quantity": 0,
"imageUrl": "string",
"subTotal": 0
}
],
"orderStatus": "string",
"subtotal": 0,
"totalDetails": {
"shippingAmount": 0,
"discountAmount": 0,
"surchargeAmount": 0
},
"total": 0,
"metadata": [
{
"name": "string",
"value": "string"
}
],
"paymentLinkUrl": "string",
"successUrl": "string",
"cancelUrl": "string",
"store": {
"name": "string",
"countryCode": "string",
"currencyCode": "string",
"currencySymbol": "string",
"locale": "string",
"timezone": "string"
},
"payment": {
"authorizationCode": "string",
"voucherUrl": "string",
"buyer": {
"name": "string",
"phone": "string",
"email": "string"
}
},
"created": "2024-05-14T13:44:23.133Z"
}
Fields
-
orderId:
integer
- Id de la orden en n1co business. Ejemplo: 1 -
orderCode:
string
- Código de la orden en n1co business. Ejemplo: "PL-001" -
orderReference:
string
- Referencia de la orden. Ejemplo: "RFC-1234" -
name:
string
- Nombre de la orden. Ejemplo: "Pizza Integration" -
description:
string
- Descripción de la orden. Ejemplo: "A delicious pizza order" -
lineItems:
array
- Lista de productos de la orden.Ejemplo:
- LineItem:
- productId:
integer
- Id del producto en n1co business. Ejemplo: 1 - sku:
string
- valor del stock-keeping unit del producto. Ejemplo: "PIZZA-001" - name:
string
- Nombre del producto. Ejemplo: "Pizza Italiana" - price:
decimal
- Precio unitario del producto. Ejemplo: 15.00 - promoPrice:
decimal
- Precio promocional del producto. Ejemplo: 10.00 - quantity:
int
- Cantidad del producto. Ejemplo: 2 - imageUrl:
string
- URL de la imagen del producto. Ejemplo: "https://www.test.com/image.png" - subTotal:
decimal
- Subtotal del producto. Ejemplo: 30.00
- productId:
- LineItem:
-
orderStatus:
string
- Estado de la orden. [ PENDING, PAID, CANCELLED, FINALIZED ] -
subtotal:
decimal
- Subtotal de la orden. Ejemplo: 30.00 -
totalDetails:
object
- Detalles del total de la orden.Ejemplo:
- shippingAmount:
decimal
- Monto de envío. Ejemplo: 5.00 - discountAmount:
decimal
- Monto de descuento. Ejemplo: 0.00 - surchargeAmount:
decimal
- Monto de recargo. Ejemplo: 0.00
- shippingAmount:
-
total:
decimal
- Total de la orden. Ejemplo: 35.00 -
metadata:
array
- Datos adicionales.Ejemplo:
- name
string
: "clientId" - value
string
: "1234"
- name
-
paymentLinkUrl:
string
- URL del enlace de pago. Ejemplo: https://pay.example.com/PL-001 -
successUrl:
string
- URL de redirección en caso de éxito. Ejemplo: "https://www.my-website.com/checkout/success" -
cancelUrl:
string
- URL de redirección en caso de cancelación. Ejemplo: "https://www.my-website.com/shopping-cart" -
store:
object
- Detalles de la tienda.Ejemplo:
- name:
string
- Nombre de la tienda. Ejemplo: "Pizza Shop" - countryCode:
string
- Código de país de la tienda. Ejemplo: "HN" - currencyCode:
string
- Código de moneda de la tienda. Ejemplo: "HNL" - currencySymbol:
string
- Símbolo de moneda de la tienda. Ejemplo: "L" - locale:
string
- Configuración regional de la tienda. Ejemplo: "es_HN" - timezone:
string
- Zona horaria de la tienda. Ejemplo: "America/Tegucigalpa"
- name:
-
payment:
object
- Detalles del pago.Ejemplo:
-
authorizationCode:
string
- Código de autorización del pago. Ejemplo: "ABC123" -
voucherUrl:
string
- URL del comprobante de pago. Ejemplo: "https://pay.example.com/voucher/ABC123" -
buyer:
object
- Detalles del comprador.Ejemplo:
- name:
string
- Nombre del comprador. Ejemplo: "John Doe" - phone:
string
- Teléfono del comprador. Ejemplo: "+504 9999-9999" - email:
string
- Correo electrónico del comprador. Ejemplo: "
- name:
-
-
created:
string
- Fecha de creación de la orden. Ejemplo: "2024-05-14T13:44:23.133Z"