Pay.nl NodeJS SDK
SDK for pay.nl allowing you to manage your pay.nl transactions in nodeJS
Installation
npm install paynl-sdk --save
Usage
- Require 'paynl-sdk' in your file.
var Paynl = require('paynl-sdk');
- Register for a pay.nl account at: pay.nl/registreren
- In the pay.nl admin, navigate to Manage -> Services and click the SL-code on the left.
- From the popup use the apitoken and serviceId, and configure them in the SDK.
Paynl.Config.setApiToken('Your-api-token');
Paynl.Config.setServiceId('SL-0123-4567');
Examples
Some of the basic examples are listed here, for the full list of examples, please take a look at the samples directory here
All examples start with requiring paynl-sdk and setting the apitoken and serviceId.
var Paynl = require('paynl-sdk');
Paynl.Config.setApiToken('Your-api-token');
Paynl.Config.setServiceId('SL-0123-4567');
Basic transactions
Getting the available payment methods
This example shows how to fetch a list of the available payment methods.
The method Paynl.Paymentmethods.getList()
returns an observable array.
For more information about observables see reactivex.io
Paynl.Paymentmethods.getList().forEach(
function(paymentmethod) {
console.log(paymentmethod.id + ' ' + paymentmethod.visibleName);
}
)
.catch(error => {
console.error(error)
});
Starting a transaction
This example shows the minimum required attributes to start a transaction.
The full version with all supported options is located here
Paynl.Transaction.start({
amount: 19.95,
returnUrl: "https://my-return-url.com/return",
ipAddress: '10.20.30.40'
})
.subscribe(
function (result) {
console.log(result.paymentURL);
console.log(result.transactionId);
},
function (error) {
console.error(error);
}
);
Fetching a transaction
The following example shows how to fetch a transaction.
Paynl.Transaction.get('715844054X85729e').subscribe(
function(result){
if (result.isPaid()) {
console.log('The transaction is paid');
result.refund({
amount: 0.5,
description: '50 cents refund'
});
}
if (result.isCanceled()) {
console.log('Tranasaction is canceled, restock the items');
}
if (result.isBeingVerified()) {
console.log('Transaction needs to be verified first, possible fraud');
result.decline();
result.approve();
}
},
function(error){
console.error(error);
}
);
Instore payments (pin)
Fetching available terminals
Before you can send a transaction, you need to know which terminal to send the transaction to.
Paynl.Instore.getTerminals()
.forEach(function (terminal) {
console.log(terminal.id + ' ' + terminal.name);
})
.catch(function (error) { return console.error(error); });
Sending a transaction to a terminal
First you need to start a transaction.
After the transaction is started and you have a transactionId, you can send the transaction to the terminal.
You can get the terminalId from the example above.
var lastStatus = null;
Paynl.Instore.payment(transactionId, terminalId).subscribe(
status => {
lastStatus = status;
console.log(status.state + ' Percentage: ' + status.percentage);
},
error => console.trace(error),
() => {
if (lastStatus.state == 'approved') {
Paynl.Instore.getReceipt(hash).subscribe(receipt => {
console.log(receipt.receipt);
}, error => {
console.trace(error);
});
} else {
console.log('Payment was not completed');
}
}
);