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

pesapal-node

v1.0.1

Published

A node package for pesapal.com API endpoints

Downloads

7

Readme

Pesapal-node

STATUS

Version 1.0.1

Goal

Make it easy to integrate PesaPal into a website or mobile app.

Core Features

  • customerDetail(firstname, lastname, email, phonenumber): Model Create a customers details

  • orderDetail(itemID, particulars, quantity, unitCost, details) : Model Create a order detail

  • sendPostPesaPalDirectOrder(reference,customerDetails, description, orders = []): Send an order to PostPesaDirectOrderV4 API Endpoint and receive a redirect url for cients to make their payment. PesaPal will redirect to a url with the following format once the payment is completed: http://www.mysite.com/processingorder? pesapal_transaction_tracking_id=195035be-56bb-48ba-8439-7e12196cb87e&pesapal_merchant_reference=12345

  • getQueryPaymentStatus(merchant_ref, merchant_tracking_id): Send pesapal_transaction_tracking_id & pesapal_merchant_reference to return the status of the payment is returned as follows: pesapal_response_data =<PENDING|COMPLETED|FAILED|INVALID>. A return value of INVALID indicates that the transaction with the Reference you provided could not be found. If you receive a return value of PENDING, you will have to query PesaPal again, until you receive COMPLETED or FAILED as the response.

  • getQueryPaymentStatusByMerchantRef(merchant_ref): Same as QueryPaymentStatus above, but pesapal_transaction_tracking_id is not required.

  • getQueryPaymentDetails(merchant_ref, merchant_tracking_id): Same as QueryPaymentStatus above, but the return value contains more information.

Usage

Install
$ npm install pesapal-node
Setup
const PesaPal = require('pesapal-node');
let pesapal = new PesaPal({
    sitename: '<Your Site>',
    consumer_key: '<Consumer Key provided by pesapal.com>',
    consumer_secret: '<Consumer Secret provided by pesapal.com>',
    debug: true // false in production!
});

// Create Customer Details

let customer = pesapal.customerDetail({
    fistname: '',
    lastname: '',
    email: '',
    phonenumber: '',
});

// Create Order Detail <as many as required>
let order = pesapal.orderDetail({
    itemID: '<unique string value for item>',
    particulars: 'Details of the item',
    quatity: '<Numeric value of order',
    unitCost: '<Numeric value of price of item>',
    details: '<information about the order>'
});

// Place orders in an array
let orders = [];
orders.push(order);

// make a call to the PESAPALDIRECTORDER
let postOrderUrl = pesapal.sendPostPesaPalDirectOrder({
    reference: '<unique string value to indicate order>',
    customerDetails: customer,
    description:'Description of order',
    orders: orders
}); // Returns a url to redirect to pesapal payment page

/* 

Get status of payment using information from req.params
using either 
~getQueryPaymentStatus(merchant_ref, merchant_tracking_id)
~getQueryPaymentStatusByMerchantRef(merchant_ref)
~getQueryPaymentDetails(merchant_ref, merchant_tracking_id)

*/
let queryUrl = pesapal.getQueryPaymentDetails({
    merchant_ref:'',
    merchant_tracking_id:''
});

/* 

Use a request lib such as got to parse the
results

*/
const got = require('got');
(async () => {
    try {
        const response = await got(pesapalQueryUrl);
        console.log(response.body);
        //=> '<!doctype html> ...'
    } catch (error) {
        console.log(error.response.body);
        //=> 'Internal server error ...'
    }
})();

When the debug option is set, pesapal-node will use the demo.pesapal.com/* endpoints.

Contributing

  1. Fork this repo and make changes in your own fork.
  2. Commit your changes and push to your fork git push origin master
  3. Create a new pull request and submit it back to the project.

Bugs & Issues

To report bugs (or any other issues), use the issues page.