Crear una venta es el primer flujo recomendado para probar una integración real:
envía un payload de negocio, impacta los efectos que correspondan y devuelve una
respuesta tipada con requestId, datos persistidos, efectos y warnings.
import { Lapyme } from "lapyme";
const lapyme = new Lapyme({
bearerAuth: process.env["LAPYME_API_KEY"] ?? "",
});
const externalOrderId = "shopify-1001";
const sale = await lapyme.sales.create({
idempotencyKey: `sale:shopify:${externalOrderId}`,
body: {
customerId: "9c692e8b-0f9a-4f7c-8b99-061a2eb188ae",
pointOfSaleId: "8d3e9c5a-0b1d-4a8c-9b55-4f1d6b6d4a10",
voucherType: 6,
invoiceDate: new Date(),
currency: "PES",
notes: `Pedido externo ${externalOrderId}`,
items: [
{
productId: "4fb3af29-4ee4-4a8d-8b20-9a95b2431b73",
quantity: 1,
unitPrice: 125000,
},
],
},
});
console.log({
requestId: sale.result.requestId,
sale: sale.result.data.sale,
effects: sale.result.data.projectedEffects,
warnings: sale.result.warnings,
});
Reintentos seguros
Si tu worker, backend o job reintenta la misma venta, reenviá el mismo
idempotencyKey. No generes una key nueva para cada intento del mismo pedido.
const idempotencyKey = `sale:shopify:${externalOrderId}`;
await lapyme.sales.create({
idempotencyKey,
body: salePayload,
});
Usá importes monetarios en centavos. Por ejemplo, $1.250,00 se envía como
125000.