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 🙏

© 2024 – Pkg Stats / Ryan Hefner

pesepay-js

v1.0.13

Published

A Node.js client library for integrating with the Pesepay API

Downloads

71

Readme

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:

Using async/await syntax:

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

try {
  const response = await client.initiateTransaction(transactionDetails);
  console.log(response);
  // Use the redirect URL to complete the transaction on the 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
}

Using promise syntax:


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));

makeSeamlessPayment(paymentDetails) Makes a seamless payment:

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

try {
  const response = await client.makeSeamlessPayment(paymentDetails);
  // 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) {
  console.error(error);
  // Handle error
}

checkPaymentStatus(referenceNumber) Checks the status of a payment:

try {
  const response = await client.checkPaymentStatus('transaction-reference-number');
  console.log(response);
  // Check transaction status
  const status = response.transactionStatus;
} catch (error) {
  console.error(error);
  // Handle error
}

initiateAndPollSeamlessTransaction(request, pollingInterval?) Initiates a seamless transaction and polls its status until completion. The polling frequency is optional and by default set to 3000 milliseconds.

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

try {
  const transaction = await client.initiateAndPollSeamlessTransaction(paymentDetails, 3000);
  console.log(transaction);
  // Transaction completed
} catch (error) {
  console.error(error);
  // Handle error
}

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

try {
  const response = await client.getActiveCurrencies();
  console.log(response);
} catch (error) {
  console.error(error);
  // Handle error
}

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

const currencyCode = 'USD';
try {
  const response = await client.getPaymentMethodsByCurrency(currencyCode);
  console.log(response);
} catch (error) {
  console.error(error);
  // Handle 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.