Ale dirèkteman nan kontni an

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_FOUNDOkenn ajan pa reponn. Enstale l oswa demare l; error.helpUrl mennen sou paj telechajman an.
AGENT_CERT_UNTRUSTEDAjan an ap mache men navigatè a pa fè sètifika li konfyans. Gade Depanaj.
ORIGIN_NOT_ALLOWEDAjoute orijin paj la (etap 1).
SIGNATURE_INVALIDMove 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​