simplepay-js-sdk
v0.8.3
Published
A Node.js utility for SimplePay payment integration
Downloads
463
Maintainers
Readme
SimplePay JS SDK
Egy pehelysúlyú segédprogram a magyarországi SimplePay fizetések integrálásához Node.js alkalmazásokban.
További információkért kérlek, olvasd el a SimplePay dokumentációt.
🫵 Ha a csomag hasznos a számodra, akkor ne feletjs el rányomni a star-ra GitHub-on.
Telepítés
# npm
npm install simplepay-js-sdk
# yarn
yarn add simplepay-js-sdk
# pnpm
pnpm add simplepay-js-sdk
Konfiguráció
Állítsd be a következő környezeti változókat a .env
fájlban:
SIMPLEPAY_LOGGER
Hatrue
-ra van állítva, naplózza a változókat - csak hibakereséshez hasznos.SIMPLEPAY_MERCHANT_KEY_HUF
A te SimplePay titkos kereskedői kulcsod. Állítsd be aSIMPLEPAY_MERCHANT_KEY_EUR
ésSIMPLEPAY_MERCHANT_KEY_USD
értékeket EUR és USD fizetések elfogadásához.SIMPLEPAY_MERCHANT_ID_HUF
A te SimplePay kereskedői azonosítód. Állítsd be aSIMPLEPAY_MERCHANT_ID_EUR
ésSIMPLEPAY_MERCHANT_ID_USD
értékeket EUR és USD fizetések elfogadásához.SIMPLEPAY_PRODUCTION
Hatrue
-ra van állítva, éles környezetet használ, egyébként teszt környezetet.SIMPLEPAY_REDIRECT_URL
A te weboldalad URL-je, ahova a vásárló átirányításra kerül a fizetés után.
Használat
Három végpontot kell létrehoznia: egyet a fizetés indításához, egyet a fizetési válasz fogadásához és egyet az IPN kezeléséhez.
Egyszeri fizetés
Fizetés indítása végpont
import { startPayment } from 'simplepay-js-sdk'
try {
const response = await startPayment({
orderRef: 'order-12',
total: 1212,
currency: 'HUF', // opcionális, HUF | EUR | USD, alapértelmezett: HUF
customerEmail: '[email protected]',
language: 'HU', // opcionális, AR | BG | CS | DE | EN | ES | FR | IT | HR | HU | PL | RO | RU | SK | TR | ZH, alapértelmezett: HU
method: 'CARD', // opcionális, CARD | WIRE, alapértelmezett: CARD
invoice: {
name: 'Radharadhya Dasa',
country: 'HU',
state: 'Budapest',
city: 'Budapest',
zip: '1234',
address: 'Sehol u. 0',
},
})
return response
} catch (error) {
console.error('Fizetés indítása sikertelen:', error)
return error
}
A response.paymentUrl
tartalmazza a SimplePay fizetési URL-t, ahova a vásárlót átirányíthatja.
Fizetési válasz fogadása végpont
Amikor a vásárló visszatér a SimplePay fizetési oldalról, a fizetési választ a SIMPLEPAY_REDIRECT_URL
címen kell fogadni. Az URL két paramétert tartalmaz: r
és s
.
import { getPaymentResponse } from 'simplepay-js-sdk'
// az "r" és "s" paraméterek kinyerése az URL-ből az alkalmazásod és keretrendszerének megfelelően
const response = getPaymentResponse(r, s)
A response
a következő tulajdonságokkal rendelkezik:
responseCode
:0
siker esetén, vagy hibakódtransactionId
: a tranzakció azonosítójaevent
: az esemény típusa:success
|fail
|timeout
|cancel
merchantId
: a kereskedő azonosítójaorderRef
: a rendelés azonosítója
IPN végpont
A SimplePay POST
kérést küld az IPN URL-re, és válaszolnunk kell rá.
Ennél a végpontnál a következőket kell tenned:
- ellenőrizd az aláírás érvényességét - használd a
checkSignature(ipnBody, signatureHeader, SIMPLEPAY_MERCHANT_KEY_HUF)
függvényt - adj hozzá egy
receiveDate
tulajdonságot a kapott JSON-hoz - számítsa ki az új aláírást - használd a
generateSignature(responseText, SIMPLEPAY_MERCHANT_KEY_HUF)
függvényt - küldd el a
response
-t az újsignature
-rel
Ismétlődő fizetés
Ismétlődő fizetés indítása végpont
Itt a startRecurringPayment()
függvényt kell használnod, ami ugyanúgy működik, mint a startPayment()
. Az egyetlen különbség, hogy két további tulajdonságot kell megadni: customer
és recurring
.
try {
const response = await startRecurringPayment({
// ... egyéb tulajdonságok
customer: 'Radharadhya Dasa',
recurring: {
times: 3, // hányszor történik meg a fizetés, tokenek száma
until: '2025-12-31T18:00:00+02:00', // az ismétlődő fizetés végdátuma - használd a toISO8601DateString() segédfüggvényt
maxAmount: 100000 // az ismétlődő fizetés maximális összege
}
})
}
A válasz egy további tokens
tulajdonsággal rendelkezik, ami tartalmazza a regisztrált kártyák tokenjeit.
A te dolgod a tokenek mentése az adatbázisba, hogy később használhasd őket fizetéshez.
Ismétlődő fizetési válasz fogadása végpont
Használd ugyanazt a végpontot, mint az egyszeri fizetésnél.
IPN végpont kártyaregisztrációnál
Ugyanúgy működik, mint az egyszeri fizetés IPN
végpontja.
A válasz ugyanazokkal a tulajdonságokkal rendelkezik, és 2 további tulajdonsággal:
cardMask
: xxxx-xxxx-xxxx-1234 - a regisztrált kártya maszkolt számaexpiry
: 2025-01-31T00:00:00+02:00 - a regisztrált kártya lejárati dátuma
Tokenes fizetés
Miután egy kártya regisztrálva van, használhatod a tokeneket fizetéshez felhasználói interakció nélkül, például napi cron
feladattal
import { startTokenPayment } from 'simplepay-js-sdk'
// TODO: fizetési adatok lekérése az adatbázisból, ahol a tokeneket tárolod
const payment = {
token: '1234567890123456',
total: 1212,
currency: 'HUF' as Currency,
customer: 'Radharadhya Dasa',
customerEmail: '[email protected]',
invoice: {
name: 'Radharadhya Dasa',
country: 'HU',
state: 'Budapest',
city: 'Budapest',
zip: '1234',
address: 'Sehol u. 0',
},
}
try {
const response = await startTokenPayment({
orderRef: Date.now().toString(),
language: 'HU',
method: 'CARD', // kötelezően CARD
...payment,
})
return response
} catch (error) {
console.error('Token fizetés indítása sikertelen:', error)
return error
}
Kártya törlése
A fizető ügyfelek számára lehetővé kell tenni, hogy a honlapodon belépve törölni tudja a regisztrált kártyáját.
Ehhez használd a cancelCard
függvényt. cardId
-ként a kártya regisztrációs tranzakció SimplePay azonosítóját kell megadnod.
import { cancelCard } from 'simplepay-js-sdk'
try {
const response = await cancelCard(cardId)
if (response.status == 'DISABLED') {
// A kártya sikeresen törölve
// TODO: a fel nem használt tokenek és a kártya törlése az adatbázisból
}
return response
} catch (error) {
console.error('Kártya törlése sikertelen:', error)
return error
}
Licenc
MIT