flixtechs-labs / pesepay-js

A Javascript client library for integrating with the Pesepay API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PesePay-JS

A Node.js client library for integrating with the PesePay API with Typescript support.

This is an unofficial library made by Michael Nyamande after being frustrated with the official library which is not well documented and is not regularly updated.

Installation

Using npm:

npm install pesepay-js

Usage

To use this library, you need to initialize the PesePayClient with your API Key and Encryption Key:

const { PesePayClient } = require('pesepay-js');

const client = new PesePayClient('your-api-key', 'your-encryption-key');

Available Methods

initiateTransaction(transactionDetails) Initiates a transaction:

const transactionDetails = {
  amountDetails: {
    amount: 10,
    currencyCode: 'ZWL'
  },
  reasonForPayment: 'Online payment for Camera',
  resultUrl: 'https://my.resulturl.com',
  returnUrl: 'https://my.return.url.com'
};


client.initiateTransaction(transactionDetails)
  .then(response => {
    console.log(response);
    // User the redirect url to complete the transaction on Pesepay payment page
    const redirectUrl = response.redirectUrl;
    // Save the reference number (used to check the status of a transaction and to make the payment)
    const referenceNumber = response.referenceNumber;
  })
  .catch(error => console.error(error));

Alternatively, use await with try-catch syntax

try{
   result = await client.initiateTransaction(transactionDetails);
   // User the redirect url to complete the transaction on Pesepay payment page
   const redirectUrl = response.redirectUrl;
   // Save the reference number (used to check the status of a transaction and to make the payment)
   const referenceNumber = response.referenceNumber;
}catch(error){
   console.error(error)
   //handle error
}

makeSeamlessPayment(paymentDetails) Makes a seamless payment:

// Provide the required payment details
const paymentDetails = {
    amountDetails: {
      amount: 10,
      currencyCode: "ZWL"
    },
    merchantReference:  "YOUR-UNIQUE-REF",
    reasonForPayment: "Online payment for Camera",
    resultUrl: "https://my.return.url.com",
    paymentMethodCode:  "PZW201",
    customer: {
      phoneNumber:"0770000000",
    },
    paymentMethodRequiredFields: { customerPhoneNumber: "0770000000"}
  };

client.makeSeamlessPayment(paymentDetails)
  .then(response => {
       // Save the poll url and reference number (used to check the status of a transaction)
       const pollUrl = response.pollUrl;
       const referenceNumber = response.referenceNumber;
     })
     .catch(error => {
       // Handle error
     });

checkPaymentStatus(referenceNumber) Checks the status of a payment:

client.checkPaymentStatus('transaction-reference-number')
  .then(response => {
    console.log(response)
    // check transaction status
    const status = response.transactionStatus
    })
  .catch(error => console.error(error));

getActiveCurrency() Gets the current active currencies on the gateway:

client.getActiveCurrency()
  .then(response => console.log(response))
  .catch(error => console.error(error));

getPaymentMethods(currencyCode) Gets the payment methods available for a specified currency:

const currencyCode = 'ZWL'
client.getPaymentMethods(currencyCode)
  .then(response => console.log(response))
  .catch(error => console.error(error));

Testing

This project uses Jest to run it's tests. Before running tests, open test/pesepay.test.ts and change the values at the top of the file:

// Replace with your actual keys for real testing
const ENCRYPTION_KEY= ""
const INTEGRATION_KEY=""
const phoneNumber=""
const referenceNumber = ""

After replacing this variables, you can run the tests with the following command:

npm run test

License

This project is licensed under the ISC License.

About

A Javascript client library for integrating with the Pesepay API


Languages

Language:TypeScript 99.0%Language:JavaScript 1.0%