Ugrás a tartalomra
kassza

Közös kliens

A kassza klienst egy folyamatban egyszer hozd létre, és mindenhol ugyanazt használd. Így a munkamenet süti a hívások között megmarad, az alapbeállításokat (előtag, fizetési határidő, válaszcím) pedig egy helyen tartod karban. A többi recept ezt a modult importálja @/lib/kassza néven.

Telepítés és kulcs#

npm install kassza server-only
.env.local
SZAMLAZZ_AGENT_KEY=a-te-kisbetus-agent-kulcsod

A server-only csomag build hibát ad, ha a modult véletlenül egy kliens komponens importálja. Így az Agent kulcs és a kliens biztosan a szerveren marad.

A kliens#

Hosszan futó Node.js szerveren a memóriában tárolt munkamenet elég. Vercelen és más serverless platformon a példányok nem osztoznak a memórián, ott közös tárolót adj meg.

lib/kassza.ts
import 'server-only'
import { createKassza } from 'kassza'

export const kassza = createKassza({
  defaults: {
    invoice: {
      prefix: 'WEB',
      paymentDueInDays: 8,
      seller: {
        emailReplyTo: 'szamlazas@example.hu',
        emailSubject: 'Elkészült a számlád',
      },
    },
    receipt: { prefix: 'NYGT', paymentMethod: 'bankkártya' },
  },
  hooks: {
    onError: ({ action, attempt, error, willRetry }) => {
      console.warn('Számlázz.hu hiba', {
        action,
        attempt,
        category: error.category,
        code: error.code,
        willRetry,
      })
    },
  },
})

A hook csak a műveletet, a kategóriát és a kódot naplózza. A kérés XML-jét és az Agent kulcsot a hookok soha nem kapják meg, a rawResponse mezőt pedig szándékosan hagyjuk ki, mert vevőadat lehet benne.

Buktatók#

Kapcsolódó#

Oldal szerkesztéseUtoljára frissítve: