Premye enpresyon depi navigatè a
Nan mòd lokal, paj wèb ou a pale dirèkteman ak ajan ki sou menm òdinatè a. Se backend pa w ki siyen chak demann, konsa nenpòt sit pa ka enprime sou enprimant kliyan w yo.
Ou bezwen yon ajan ki enstale e ki aktive, ak Node 18.4 oswa pi resan pou pwen siyati a.
1. Otorize sit ou
Tablo de bò → Devlopè → Orijin ki otorize → Ajoute, egzanp https://pos.example.com. Yon orijin se yon eskèm, yon non sèvè ak yon pò, san chemen.
Pandan w ap devlope sou http://localhost:3000, aktive mòd devlopman sou menm paj la pito: li otorize tout pò http://localhost.
2. Kreye yon kle siyati
Tablo de bò → Devlopè → Kle siyati → Kreye. Tablo de bò a montre:
- idantifyan kle a (egzanp
sk_01J9…), - idantifyan òganizasyon ou (
org_…), - kle prive a, ki parèt yon sèl fwa.
Mete kle prive a nan sekrè sèvè w, egzanp nan varyab anviwònman JODAPRINT_SIGNING_KEY. Pa janm mete l nan paj wèb la. Ajan yo resevwa kle piblik la ak konfigirasyon yo nan kèk segonn.
3. Ajoute pwen siyati a nan sèvè w
npm install @jodaprint/node
// server.ts (Express)
import express from "express";
import { createSigner, signRequestHandler } from "@jodaprint/node";
const signer = createSigner({
orgId: "org_123",
keyId: "sk_01J9ABC",
privateKey: process.env.JODAPRINT_SIGNING_KEY!,
});
const app = express();
app.post(
"/jodaprint/sign",
express.json(),
signRequestHandler(signer, {
// Obligatwa: deside kiyès ki ka enprime. Isit la, nenpòt itilizatè ki konekte.
authorize: (req) => Boolean(req.session?.user),
}),
);
app.listen(3000);
Menm fonksyon an mache ak route handler Next.js, Bun, Deno ak Hono:
// app/jodaprint/sign/route.ts
export const POST = signRequestHandler(signer, { authorize: async (req) => isLoggedIn(req) });
4. Enprime depi paj la
npm install @jodaprint/sdk
import { JodaPrint, httpSigner } from "@jodaprint/sdk";
const jp = new JodaPrint({ orgId: "org_123", signer: httpSigner("/jodaprint/sign"), locale: "ht" });
await jp.connect(); // jwenn ajan an sou wss://localhost:8182, 8283, 8384 oswa 8485
const printers = await jp.printers.list();
console.log(printers.map((p) => `${p.id} ${p.name}`));
const job = await jp.printAndWait({
type: "receipt",
data: jp.receipt().text("Bonjou!").bold().center().feed(3).cut(),
idempotencyKey: "komand-10492",
});
console.log(job.state); // "printed"
San printer, travay la ale sou enprimant pa defo a. Pou chwazi youn: printer: { id: "prn_…" }, { alias: "receipt" } oswa { name: "EPSON TM-T20III" }.
San bundler, chaje vèsyon UMD a. Li defini window.JodaPrint:
<script src="https://cdn.jsdelivr.net/npm/@jodaprint/sdk/dist/jodaprint.umd.min.js"></script>
<script>
const jp = new JodaPrint({ orgId: "org_123", signer: JodaPrint.httpSigner("/jodaprint/sign") });
</script>
Si gen pwoblèm
| Erè | Sa sa vle di |
|---|---|
AGENT_NOT_FOUND | Okenn ajan pa reponn. Enstale l oswa demare l; error.helpUrl mennen sou paj telechajman an. |
AGENT_CERT_UNTRUSTED | Ajan an ap mache men navigatè a pa fè sètifika li konfyans. Gade Depanaj. |
ORIGIN_NOT_ALLOWED | Ajoute orijin paj la (etap 1). |
SIGNATURE_INVALID | Move idantifyan kle, òganizasyon oswa kle prive sou sèvè a. |
Chak erè gen yon code, yon message ak retryable. Ak opsyon locale: "ht", mesaj SDK a yo an kreyòl. Tout lis la nan Kòd erè.
Apre sa
- Dekri vre resi: Resi.
- Kijan siyati a mache: Sekirite ak siyati.
- Tout apèl SDK a: Referans SDK JavaScript.