npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

simplepay-js-sdk

v0.8.3

Published

A Node.js utility for SimplePay payment integration

Downloads

463

Readme

SimplePay JS SDK

English README

Egy pehelysúlyú segédprogram a magyarországi SimplePay fizetések integrálásához Node.js alkalmazásokban.

SimplePay Logo

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 Ha true-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 a SIMPLEPAY_MERCHANT_KEY_EUR és SIMPLEPAY_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 a SIMPLEPAY_MERCHANT_ID_EUR és SIMPLEPAY_MERCHANT_ID_USD értékeket EUR és USD fizetések elfogadásához.
  • SIMPLEPAY_PRODUCTION Ha true-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ód
  • transactionId: a tranzakció azonosítója
  • event: az esemény típusa: success | fail | timeout | cancel
  • merchantId: a kereskedő azonosítója
  • orderRef: 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 új signature-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áma
  • expiry: 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