An NodeJS API for Payplug solution : https://www.payplug.com
This module aims to implement the Curl Payplug API describe here : https://www.payplug.com/docs/api
It is used as payment solution of the StartUp Clouderial (online project management, invoices, quotation and tasks for independant workers)
$ npm install payplug-nodejs
To authenticate :
var PayPlugAPI = require('payplug-nodejs').PayPlugAPI; var payplugapi = new PayPlugAPI('mySecretKey', { // the url called in case of success sucessReturnUrl: 'https://[my-url]/payplugapi/test/success?tracker=', // the url called in case of cancelation cancelReturnUrl: 'https://[my-url]/payplugapi/test/cancel?tracker=', // the notification url. Cf. https://www.payplug.com/docs/api/apiref.html#notifications notificationUrl: 'https://[my-url]/payplugapi/test/notifications?tracker=' }); payplugapi.authenticate() .then(function (result) { // you are authenticated. // paypluapi can be use to manage payments }) .fail(function(err){ log.error('Error while authenticating. Message="%s"', err.message); }) .done(); if (payplugapi.authenticated) { // The API is successfully authenticated }
To test if authentication is successfull :
if (payplugapi.authenticated) { // The API is successfully authenticated }
// Cf above to have an authenticated PayplugApi object // var payplugapi = new PayPlugAPI('mySecretKey'); // payplugapi.authenticate() // ... // Create a new Payment var Payment = require('payplug-nodejs').Payment; payment = new Payment(payplugapi, 'paymentid', { 'amount': 1000, 'currency': 'EUR', 'customer': { 'email': '[email protected]', 'first_name': 'ClientFirstname', 'last_name': 'ClientLastname' }, 'save_card': false, 'force_3ds': true }); // Send the Payment creation payment.sendCreate() .then(function (newPaymentResult) { // The API call is successfull // newPaymentResult.payment is Payment updated with id and tracker; newPaymentResult.getId(); newPaymentResult.getTracker(); newPaymentResult.getPaymentUrl(); newPaymentResult.getPayplugPayment(); // get the original Payplug payment (as defined in Payplug API) // if payment OK if (newPaymentResult.isFailed()) { newPaymentResult.getFailure().code; newPaymentResult.getFailure().message; } }) .fail(function(err){ // there have been an error during payment creation err.message; }) .done();
Call this method a retrieve an existing Payment from its id
// Cf above to have an authenticated PayplugApi object // var payplugapi = new PayPlugAPI('mySecretKey'); // payplugapi.authenticate() // ... // Retrieve a Payment with its Id Payment.retrieve(payplugapi, 'theIDOfPayment') .then(function (payment) { // The API call is successfull // payment updated with id and tracker; payment.getId(); payment.getTracker(); payment.isPayed(); payment.isRefunded(); payment.getPayplugPayment(); // get the original Payplug payment (as defined in Payplug API) // if payment is aborted of failed if (newPayemnt.isFailed()) { newPayment.getFailure().code; newPayment.getFailure().message; } }) .fail(function(err){ // there have been an error during payment creation err.message; }) .done();
Call this method a abort an existing Payment. Payment should have been send before or retrieved with list or retrieve
// Cf above to have an authenticated PayplugApi object // var payplugapi = new PayPlugAPI('mySecretKey'); // payplugapi.authenticate() // ... // Cf. above to retrieve a Payment // Payment.retrieve(payplugapi, 'theIDOfPayment')... // Payment.list(payplugapi)... // Abort a Payment with its Id payemnt.sendAbort() .then(function (payment) { // The API call is successfull payment.getId(); payment.getTracker(); payment.getPayplugPayment(); // get the original Payplug payment (as defined in Payplug API) payment.getFailure().code; payment.getFailure().message; expect(newPayment.getFailure().code).to.equal(Payment.ABORT_STATUS); }) .fail(function(err){ // there have been an error during payment creation err.message; }) .done();
function notificationUrl (req, res, next) { ... var payment = Payment.fromPayplugPayment(req.body); ... payment.getId(); payment.getTracker(); payment.getPayplugPayment(); // get the original Payplug payment (as defined in Payplug API) payment.isFailed(); payment.isPayed(); payment.isRefunded(); payment.getFailure().code; payment.getFailure().message; }
To launch the test you must first provide a tests/config.json file with you secret key. Example :
{ "testSecretKey": "sk_test_751BVqbli82hx9hyL5GRGT" }