Node.js / Next.js
Send an order from a backend route
// Next.js App Router — app/api/orders/route.ts
export async function POST(req: Request) {
const order = await req.json();
// 1. Save in your DB FIRST (do not block on OrderGer)
// 2. Fire-and-forget to OrderGer
fetch('https://orderger-api.hamidalqwaysim.workers.dev/api/v1/orders', {
method: 'POST',
headers: {
'authorization': `Bearer ${process.env.ORDERGER_API_KEY}`,
'x-orderger-branch-id': process.env.ORDERGER_BRANCH_ID!,
'content-type': 'application/json',
},
body: JSON.stringify(toOrderGer(order)),
}).catch(e => console.error('OrderGer send failed', e));
return Response.json({ ok: true });
}
Webhook receiver with signature verification
import crypto from 'node:crypto';
export async function POST(req: Request) {
const body = await req.text();
const sig = req.headers.get('x-orderger-signature') || '';
const expected = 'sha256=' + crypto.createHmac('sha256', process.env.ORDERGER_WEBHOOK_SECRET!).update(body).digest('hex');
if (sig !== expected) return new Response('bad signature', { status: 401 });
const evt = JSON.parse(body);
// Update your order in DB based on evt.event and evt.status
return Response.json({ ok: true });
}
Never expose ORDERGER_API_KEY to the browser. Always read from process.env on the server.