Ugrás a tartalomra
kassza

Kliensek megbízónként

createDelegateKassza#

A createDelegateKassza() ugyanazt a Kassza felületet adja, mint a createKassza(), de a dedikált felhasználóval hitelesít, és a megbízó előtagját minden számlában elküldi.

import { createDelegateKassza } from 'kassza/delegation'

const kassza = createDelegateKassza({
  username: 'kassza+pelda@platform.hu',
  password: process.env.DELEGATE_PASSWORD!,
  invoicePrefix: 'PLDA',
  receiptPrefix: 'PLDANY',
})

await kassza.invoices.createOnce({
  orderNumber: 'FOGLALAS-881',
  buyer: { name: 'Vendég Anna', zip: '1111', city: 'Budapest', address: 'Fő utca 2.' },
  items: [{ name: 'Szállás, 2 éj', grossUnitPrice: 64_000, vat: 18 }],
})
OpcióJelentés
username, passwordA dedikált felhasználó. Agent kulcs nem adható meg.
invoicePrefixA megbízóval egyeztetett számlaszám-előtag (legfeljebb 5 nagybetű vagy szám).
receiptPrefixA nyugták előtagja, ha a megbízó nevében nyugtát is adsz.
defaultsTovábbi alapértelmezések számlára és nyugtára.
a createKassza() többi opciójaMunkamenet-tároló, próbálkozásnapló, időkorlát, hookok, fetch.

createKasszaPool#

Egy platform egyszerre sok megbízót szolgál ki. A createKasszaPool() megbízó-azonosító szerint ad klienst: az elsőt a resolve függvényed adataiból hozza létre, utána újrahasznosítja, így a munkamenet is megmarad.

lib/kassza-pool.ts
import { createKasszaPool } from 'kassza/delegation'
import { upstashRedisCookieStore } from 'kassza/cookie-stores'
import { Redis } from '@upstash/redis'
import { megbizoAdatai } from '@/lib/megbizok'

const redis = Redis.fromEnv()

export const pool = createKasszaPool({
  resolve: async (megbizoId) => {
    const megbizo = await megbizoAdatai(megbizoId)
    if (!megbizo) return undefined
    return {
      username: megbizo.felhasznalo,
      password: megbizo.jelszo,
      invoicePrefix: megbizo.elotag,
    }
  },
  cookieStore: upstashRedisCookieStore(redis),
  attemptLedger: upstashRedisCookieStore(redis),
})
const kassza = await pool.get('kereskedo-42')
await kassza.receipts.createOnce({
  orderNumber: 'R-1001',
  paymentMethod: 'bankkártya',
  items: [{ name: 'Kávé', grossUnitPrice: 890, vat: 27 }],
})
  • A pool legfeljebb maxClients (alapból 100) klienst tart, a legrégebben használtat dobja el először.
  • Ugyanarra a megbízóra egyszerre érkező kérések ugyanazt a klienst kapják; a resolve csak egyszer fut.
  • Ha a resolve nem talál megbízót (undefined) vagy hibát dob, a get() hibát ad, és a hibát nem tárolja: a következő hívás újra próbálkozik.
  • Ha a megbízó jelszava vagy előtagja változik, a pool.forget(megbizoId) eldobja a régi klienst. A pool.clear() mindet eldobja.

A közös opciók (munkamenet-tároló, próbálkozásnapló, időkorlát, hookok) minden megbízói kliensre érvényesek. A munkamenetet a kassza felhasználónként külön kulccsal tárolja, így a megbízók munkamenetei nem keverednek.

Kapcsolódó#

Oldal szerkesztéseUtoljára frissítve: