This library provides integration access to Przelewy24 API withing NodeJS
You might need Node.js with version 9.x+ with "--experimental-modules" flag, as this wrapper uses async/await functions.
Example: node --experimental-modules index.mjs
npm install node-przelewy24
import Przelewy24 from 'node-przelewy24'
async function createPayment() {
const P24 = new Przelewy24('MERCHANT_ID', 'POS_ID', 'SALT', false)
// Set obligatory data
P24.setSessionId('nodeapitest1')
P24.setAmount(5.50 * 100)
P24.setCurrency('PLN')
P24.setDescription('Simple payment.')
P24.setEmail('[email protected]')
P24.setCountry('PL')
P24.setUrlStatus('https://myshop.com/api/v1/store/callback_p24')
P24.setUrlReturn('https://myshop.com')
// What about adding some products?
P24.addProduct('Product no.1', 'Product description', 1, 1.20 * 100)
P24.addProduct('Product no.2', null, 2, 5 * 100)
P24.addProduct('Product no.3', null, 1, 9.20 * 100, '20202')
// Register our order
try {
const token = await P24.register()
const url = P24.getPayByLinkUrl(token)
console.log(url)
} catch (e) {
console.log(e.message)
}
}
createPayment()
import Przelewy24 from 'node-przelewy24'
const P24_TRUST_IPS = ['91.216.191.181', '91.216.191.182',
'91.216.191.183', '91.216.191.184', '91.216.191.185',
'92.43.119.144', '92.43.119.145', '92.43.119.146',
'92.43.119.147', '92.43.119.148', '92.43.119.149',
'92.43.119.150', '92.43.119.151', '92.43.119.152',
'92.43.119.153', '92.43.119.154', '92.43.119.155',
'92.43.119.156', '92.43.119.157', '92.43.119.158',
'92.43.119.159'
]
const callbackP24 = async (req, res, next) => {
if (P24_TRUST_IPS.indexOf(req.headers['x-real-ip']) === -1) {
return next(new Error('Unauthorized IP address'))
}
const { p24_session_id, p24_amount, p24_currency, p24_order_id, p24_sign } = req.body
const P24 = new Przelewy24('MERCHANT_ID', 'POS_ID', 'SALT', false)
P24.setSessionId(p24_session_id)
P24.setAmount(p24_amount)
P24.setCurrency(p24_currency)
P24.setOrderId(p24_order_id)
try {
await P24.verify(p24_sign)
return res.send('OK')
} catch (e) {
return next(e)
}
}