Ugrás a tartalomra
kassza

Válasz

Sikeres kérés után a registerPayment() és a clearPayments() is egy RegisteredPayment objektumot ad vissza. A mezők a Számlázz.hu xmlszamlavalasz válaszából jönnek. Ha egy elem hiányzik az XML-ből, a kassza a szlahu_* fejlécekből pótolja.

MezőTípusForrásLeírás
invoiceNumberstringszamlaszamA számla száma. Ha a válaszban nincs benne, a kérésben megadott szám.
netTotalnumber | undefinedszamlanettoA számla nettó végösszege.
grossTotalnumber | undefinedszamlabruttoA számla bruttó végösszege.
outstandingnumber | undefinedkintlevosegA számla hátraléka a befizetések után.
buyerAccountUrlstring | undefinedvevoifiokurlA vevői fiók linkje, ha a fiókban be van kapcsolva.

A válaszban nincs PDF, és a rögzített befizetések listája sem. A hátralékból viszont látod, hogy a számla ki van-e egyenlítve:

const eredmeny = await kassza.invoices.registerPayment({ invoiceNumber: szamlaszam, amount: 19_470 })

if (eredmeny.outstanding === 0) {
  await db.rendeles.update({ where: { szamlaszam }, data: { fizetve: true } })
}

Hibák#

KódKategóriaMikor fordul elő?
validationA kassza a küldés előtt hibát talált, lásd Kérés.
1maintenanceKarbantartás. Felülíró hívásnál a kassza magától újrapróbálja.
3authHibás Agent kulcs.
7not_foundIsmeretlen számlaszám.
136accountLejárt előfizetés vagy rendezetlen díj.
unexpected_responseA Számlázz.hu ismeretlen formátumban válaszolt.
network, timeoutNem tudni, rögzült-e a befizetés. Hozzáadó hívásnál ellenőrizd, mielőtt újra küldenéd.

Az összes kódot a Hibakezelés, hibakódok oldal sorolja fel.

Bizonytalan kimenet hozzáadó hívásnál#

Hálózati hiba vagy időtúllépés után a befizetés már rögzülhetett. Hozzáadó hívásnál egy vak újraküldés dupla befizetést okozhat, ezért előbb nézd meg a számla befizetéseit:

import { isSzamlazzError, type PaymentEntry } from 'kassza'

async function befizetesRogzitese(szamlaszam: string, befizetes: PaymentEntry & { date: string }) {
  try {
    return await kassza.invoices.registerPayment({ invoiceNumber: szamlaszam, payments: [befizetes] })
  } catch (error) {
    if (!isSzamlazzError(error) || (error.category !== 'network' && error.category !== 'timeout')) {
      throw error
    }
    const { payments } = await kassza.invoices.get(szamlaszam)
    const rogzult = payments.some(
      (meglevo) => meglevo.date === befizetes.date && meglevo.amount === befizetes.amount,
    )
    if (rogzult) return undefined
    throw error
  }
}

Ha a számla összes befizetését a saját adatbázisodban vezeted, egyszerűbb a teljes listát additive: false értékkel küldeni. Ez a hívás ismételhető, és a kassza hálózati hiba után magától újrapróbálja.

Oldal szerkesztéseUtoljára frissítve: