Hitelesítés (Agent kulcs) A Számla Agent minden kérésnél hitelesítést vár. A javasolt mód az Agent kulcs : egy hosszú, véletlenszerű kulcs, amelyet a Számlázz.hu felületén hozhatsz létre és vonhatsz vissza. A kassza a kulcsot a kérés XML-jének <szamlaagentkulcs> elemébe teszi.
Agent kulcs létrehozása#
Az Agent kulcsot a Számlázz.hu fiókodban, a vezérlőpult alján tudod generálni. Egy fiókhoz több kulcs is tartozhat, így például a webshopodnak és a könyvelési integrációnak lehet külön kulcsa, amelyeket egymástól függetlenül vissza tudsz vonni.
A kulcs átadása a kasszának#
A legegyszerűbb, ha a SZAMLAZZ_AGENT_KEY környezeti változóba teszed. A createKassza() ezt olvassa, ha nem adsz meg agentKey opciót:
.env SZAMLAZZ_AGENT_KEY = a-te-agent-kulcsod
import { createKassza } from 'kassza'
export const kassza = createKassza ()
Ha a kulcs máshonnan jön, például egy titokkezelőből vagy a Cloudflare Workers env objektumából, add át közvetlenül:
const kassza = createKassza ({ agentKey : env . SZAMLAZZ_AGENT_KEY })
Csak kisbetű
Az Agent kulcs csak kisbetűs lehet. Ha nagybetűt tartalmaz (például rosszul másoltad ki), a
kassza már a kliens létrehozásakor configuration kategóriájú hibát dob, így a hibás kulcs
el sem jut a Számlázz.hu-hoz.
Felhasználónév és jelszó#
Régebbi integrációk felhasználónévvel és jelszóval hitelesítenek. A kassza ezt is támogatja, de új integrációhoz az Agent kulcsot ajánljuk, mert visszavonható, és nem a fiók jelszava.
const kassza = createKassza ({
username : process . env . SZAMLAZZ_USERNAME ,
password : process . env . SZAMLAZZ_PASSWORD ,
})
Ha a felhasználó több fiókhoz is hozzáfér, a Számlázz.hu 164-es hibával utasítja el a kérést. Ilyenkor Agent kulcsot kell használni.
Több fiók#
Minden createKassza() hívás egy fiókhoz tartozó klienst ad vissza, saját session cookie-val. Több cég számlázásához hozz létre fiókonként egy klienst:
const kliensek = {
budapest : createKassza ({ agentKey : process . env . KULCS_BUDAPEST }) ,
debrecen : createKassza ({ agentKey : process . env . KULCS_DEBRECEN }) ,
}
A kulcs ellenőrzése#
A verifyCredentials() egy ártalmatlan lekérdezéssel teszteli a kulcsot, bizonylatot nem hoz létre. Hibás kulcsnál false, jó kulcsnál true az eredménye. Fiókproblémánál, például lejárt előfizetésnél hibát dob, mert ezt embernek kell rendeznie.
if ( ! ( await kassza .verifyCredentials ())) {
throw new Error ( 'Hibás Számlázz.hu Agent kulcs' )
}
Agent kulcs ellenőrzése
verifyCredentials jó és rossz kulccsal, és a nagybetűs kulcs elutasítása.
Futtatás a sandboxbanKód Elküldött XML Válasz Konzol
kulcs-ellenorzes.ts import { createKassza , isSzamlazzError } from 'kassza'
const jo = createKassza ()
console . log ( 'Környezeti változóból olvasott kulcs:' , await jo . verifyCredentials ())
const rossz = createKassza ({ agentKey : 'rossz-kulcs-1234' })
console . log ( 'Hibás kulcs:' , await rossz . verifyCredentials ())
try {
createKassza ({ agentKey : 'NagyBetusKulcs' })
} catch ( error ) {
if ( ! isSzamlazzError ( error )) throw error
console . log ( error . category , error . message )
} 1. PDF lekérés · action-szamla_agent_pdf <? xml version = "1.0" encoding = "UTF-8" ?>
< xmlszamlapdf xmlns = "http://www.szamlazz.hu/xmlszamlapdf" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = "http://www.szamlazz.hu/xmlszamlapdf https://www.szamlazz.hu/szamla/docs/xsds/agentpdf/xmlszamlapdf.xsd" >
< szamlaagentkulcs >••••••••</ szamlaagentkulcs >
< szamlaszam >KASSZA-CREDENTIAL-PROBE-0</ szamlaszam >
< valaszVerzio >2</ valaszVerzio >
</ xmlszamlapdf >
2. PDF lekérés · action-szamla_agent_pdf <? xml version = "1.0" encoding = "UTF-8" ?>
< xmlszamlapdf xmlns = "http://www.szamlazz.hu/xmlszamlapdf" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = "http://www.szamlazz.hu/xmlszamlapdf https://www.szamlazz.hu/szamla/docs/xsds/agentpdf/xmlszamlapdf.xsd" >
< szamlaagentkulcs >••••••••</ szamlaagentkulcs >
< szamlaszam >KASSZA-CREDENTIAL-PROBE-0</ szamlaszam >
< valaszVerzio >2</ valaszVerzio >
</ xmlszamlapdf >
1. PDF lekérés · válasz, HTTP 200 content-type: application/xml; charset=UTF-8
szlahu_error: Hi%C3%A1nyz%C3%B3%20adat%3A%20ismeretlen%20sz%C3%A1mlasz%C3%A1m%2C%20rendel%C3%A9ssz%C3%A1m%20vagy%20k%C3%BCls%C5%91%20azonos%C3%ADt%C3%B3.
szlahu_error_code: 7
set-cookie: JSESSIONID=9D6400856A082153A9808843; Path=/szamla; Secure; HttpOnly
<? xml version = "1.0" encoding = "UTF-8" ?>
< xmlszamlavalasz xmlns = "http://www.szamlazz.hu/xmlszamlavalasz" >
< sikeres >false</ sikeres >
< hibakod >7</ hibakod >
< hibauzenet >Hiányzó adat: ismeretlen számlaszám, rendelésszám vagy külső azonosító.</ hibauzenet >
</ xmlszamlavalasz >
2. PDF lekérés · válasz, HTTP 200 content-type: application/xml; charset=UTF-8
szlahu_error: Sikertelen%20bejelentkez%C3%A9s.
szlahu_error_code: 3
set-cookie: JSESSIONID=B2E59E2705D889E9AF71CE40; Path=/szamla; Secure; HttpOnly
<? xml version = "1.0" encoding = "UTF-8" ?>
< xmlszamlavalasz xmlns = "http://www.szamlazz.hu/xmlszamlavalasz" >
< sikeres >false</ sikeres >
< hibakod >3</ hibakod >
< hibauzenet >Sikertelen bejelentkezés.</ hibauzenet >
</ xmlszamlavalasz >
Konzol Környezeti változóból olvasott kulcs: true
Hibás kulcs: false
configuration Az Agent kulcs nagybetűt tartalmaz. A Számlázz.hu csak kisbetűs kulcsot fogad el, másold ki újra a kulcsot.
Biztonság#
A kulcsot csak szerveroldali kód lássa. Ne tedd NEXT_PUBLIC_ vagy más, a böngészőbe kerülő környezeti változóba.
A kassza hookjai (onRequest, onResponse, onError) soha nem kapják meg a kulcsot, így a naplóidba sem kerülhet be.
Fejlesztéshez használj Számlázz.hu teszt fiókot, és a teszteket futtasd a mock klienssel .
Ha egy kulcs kiszivárgott, vond vissza a Számlázz.hu felületén, és generálj újat.