Skip to main content

Getting Started With PayStack API

 



Get started with Paystack API with nodejs, and expressjs for adding payment features to your application. Before I decided to write this I searched the whole internet to figure out how to use the Paystack API created by kehers because there was none to little documentation on how to use the API instead of using the Paystacks Javascript request format on their official API documentation.

Installation

After setting up your nodejs application then install the paystack API created by kehers:

npm install paystack

then after the installation has been completed, we move to set it up.

Firstly create a Paystack account and copy the test API secret keys (Note: This is for development purposes only, for production purposes use live keys).

Paystack Test Secret Key

Initialization

Then go ahead and import Paystack

//For JavaScript ES5
const Paystack = require("paystack")("SECRET_KEY"); 

//For JavaScript ES6+
import Paystack from "paystack";
var paystack = Paystack("SECRET_KEY");

Resources

This is a list of functions that can be used with this API

  • customer
    • create
    • get
    • list
    • update
  • transaction
    • initialize
    • charge
    • get
    • list
    • totals
    • verify
  • plan
    • create
    • get
    • list
    • update
  • page
    • create
    • get
    • list
    • update
  • subscription
    • create
    • disable
    • enable
    • get
    • list
  • subaccount
    • create
    • get
    • list
    • listBanks
    • update
  • Miscellaneous
    • list_banks
    • resolve_bin

This article will focus on THREE resources which are:

  1. transaction
  2. plan
  3. page

Transaction

This Paystack function is used to transact on the go i.e. I mean immediately, the function creates a link and access code for the user to go to and transact or charged after that we can also verify the transaction whit the function.

Initialize transaction or payment

 paystack.transaction.initialize({
    name: "Transaction or product name",
    email: "The user email",
    amount: amount * 100, // this because paystack also send kobo
    quantity: "quantity of product just for reference purposes",
    callback_url: "redirect URL"
    metadata:{
         //other information you want to send with the transaction and check when verifying
         userId: ""
     }
  }).then(async(transaction) =>{
  console.log(transaction)
}

you will notice we use some parameters here like name, email e.t.c. You can also use other parameters that can be found here like a channel to select the channel of payment e.g ussd, bank, card etc.

The output from the transaction

{
    "status": true,
    "message": "Authorization URL created",
    "data": {
        "authorization_url": "https://checkout.paystack.com/kixd9nonoitt8kq",
        "access_code": "kixd9nonoitt8kq",
        "reference": "uj4vb5ginv"
    }
}

authorization_url is the link the individual need to go to initiate the transaction, the access code is the code route to that specific transaction and the reference number.

The link webpage

Transaction page

For other functions of the transaction, you can figure them out like above and use the parameters as seen here.

Verifying Transaction

To verify transactions through the API, you have to make sure to add the callback_url, this URL will be redirected after the transaction is successful and the reference number will be added in form of a query to the redirected URL like this

www.example.com?trxref=" Reference number"&reference=" Reference number"

paystack.transaction.verify(req.query.trxref)
.then(transaction =>{
   console.log(transaction
})

Output from Verified Transaction

{
    "status": true,
    "message": "Verification successful",
    "data": {
        "id": 2002145115,
        "domain": "test",
        "status": "success",
        "reference": "ou8lydbxhx",
        "amount": 50000,
        "message": null,
        "gateway_response": "Successful",
        "paid_at": "2022-08-06T10:05:43.000Z",
        "created_at": "2022-08-06T10:05:34.000Z",
        "channel": "card",
        "currency": "NGN",
        "ip_address": "102.89.38.113",
        "metadata": {
            "userId": "1"
        },
        "log": {
            "start_time": 1659780339,
            "time_spent": 4,
            "attempts": 1,
            "errors": 0,
            "success": true,
            "mobile": false,
            "input": [],
            "history": [
                {
                    "type": "action",
                    "message": "Attempted to pay with card",
                    "time": 4
                },
                {
                    "type": "success",
                    "message": "Successfully paid with card",
                    "time": 4
                }
            ]
        },
        "fees": 750,
        "fees_split": null,
        "authorization": {
            "authorization_code": "AUTH_94nofujms7",
            "bin": "408408",
            "last4": "4081",
            "exp_month": "12",
            "exp_year": "2030",
            "channel": "card",
            "card_type": "visa ",
            "bank": "TEST BANK",
            "country_code": "NG",
            "brand": "visa",
            "reusable": true,
            "signature": "SIG_X3HQR6lCmgpa7SHUhKxH",
            "account_name": null,
            "receiver_bank_account_number": null,
            "receiver_bank": null
        },
        "customer": {
            "id": 78903216,
            "first_name": "raqeeb",
            "last_name": "taiwo",
            "email": "taiworoqeeb@gmail.com",
            "customer_code": "CUS_a11iakhvmp9ja2g",
            "phone": "",
            "metadata": null,
            "risk_action": "default",
            "international_format_phone": null
        },
        "plan": null,
        "split": {},
        "order_id": null,
        "paidAt": "2022-08-06T10:05:43.000Z",
        "createdAt": "2022-08-06T10:05:34.000Z",
        "requested_amount": 50000,
        "pos_transaction_data": null,
        "source": null,
        "fees_breakdown": null,
        "transaction_date": "2022-08-06T10:05:34.000Z",
        "plan_object": {},
        "subaccount": {}
    }  
}

Here you can choose to store any of the above information in your database.

Plan

This function is used to create a plan to subscribe to has the name described, for example, you might have up to 3 different plans that you want your customers to subscribe to per day or month, you can use this function to create the plans and also edit the plan's price/amount if you want.

This is the way to create a plan

    paystack.plan.create({
        name: "Plan name e.g basic",
        amount: 500 * 100,
        interval: "monthly", //e.g daily, yearly, weekly, biweekly, etc
        description: "description",
        invoice_limit: 0, //Rate at which customer gets billed
    }).then(plan => {
        console.log(plan)
    })

Output from plan

{
 "status": true,
 "message": "Plan created",
 "data": {
  "name": "Plan name e.g basic",
  "amount": 50000,
  "interval": "monthly",
  "description": "description",
  "invoice_limit": 0,
  "integration": 767539,
  "domain": "test",
  "currency": "NGN",
  "plan_code": "PLN_vq6tj7tetv6dbvt",
  "send_invoices": true,
  "send_sms": true,
  "hosted_page": false,
  "migrate": false,
  "is_archived": false,
  "id": 359274,
  "createdAt": "2022-08-07T09:57:36.907Z",
  "updatedAt": "2022-08-07T09:57:36.907Z"
 }
}

Here you have created a plan that your customers can subscribe to, for your customers to be able to subscribe to the plan you can use the subscription function or just create a page using the page function for the plan that you will redirect your customers too. I will only show you how to use the page function.

Page

This is a function used to create a subscription page for a plan, instead of using the subscription function all the time when a customer wants to subscribe, this page will be created for the plan permanently, i.e the customers can always go there to subscribe for the plan anytime.

How to create the page

    paystack.page.create({
        name: `plan's name`,
        description: "description",
        plan: 359274, //the plan's id
        amount: 500 * 100, //the plan's price
        channels: ['card', 'bank', 'ussd', 'bank_transfer'],
        redirect_url: `REDIRECT_SITE URL`
    }).then((pagebody) => {
        console.log(pagebody)
    })

Output from the page function

{
 "status": true,
 "message": "Page created",
 "data": {
  "name": "plan's name",
  "description": "description",
  "amount": 50000,
  "plan": 359274,
  "redirect_url": "http://localhost:3000/pay",
  "integration": 767539,
  "domain": "test",
  "slug": "2axeyi5d0u",
  "type": "subscription",
  "currency": "NGN",
  "collect_phone": false,
  "active": true,
  "published": true,
  "migrate": false,
  "id": 1197532,
  "createdAt": "2022-08-07T10:14:06.009Z",
  "updatedAt": "2022-08-07T10:14:06.009Z"
 }
}

Then go to the URL for the subscription. Goto: https://paystack.com/pay/${pagebody.data.slug} i.e https://paystack.com/pay/2axeyi5d0u. It will bring you to this page below.

Plan subcription page

To verify the payment, you can use the same verification as used in the transaction.

Well, so far I think I have done justice to the important part of Paysatck API if you have any questions, suggestions, contributions or observations feel free to reach out to me, Thank you!

Comments

Popular posts from this blog

HOW TO CONVERT BLU-RAY GAMES TO PSN PKG GAMES FOR PS3XPLOIT V3 HAN.

 IN THIS TUTORIAL I WILL EXPLAIN HOW TO CONVERT Blu-ray Games to PKG file to be installed through HAN PACKAGE MANAGER, In this tutorial we need: A perfectly working pc an Ethernet cable ( for fast transfer of games above 4GB ) Download  Ps3games converter v0.91 Download  make-pkg-bat Master   Download  PKG Linker Download  Ps3 Game Updater Extracting Data from PS3 ISO ​ If your game is in ISO format, use a virtual disk utility to mount the ISO. Whatever utility you use, we want to extract the contents into and empty folder. Take note of where you saved the contents. Downloading Update and Converting to PKG ​ Run " ps3 game updater" and put the game ID starting with BLXXXXXX Download the update Run "PS3GameConvert_v0.91.exe" And follow the instructions. It will create a folder with your Games title into the directory you chose Inside this folder are another 2 folders. "NPUB..." and "BLUS..." these may be different if ...

THE NEW JOURNEY: ROAD TO BECOMING A "MEAN" STACK DEVELOPER 1

 THE NEW JOURNEY: ROAD TO BECOMING A "MEAN" STACK DEVELOPER         Well, this is my first article about myself, my journey on becoming a "software developer" but first let me talk about myself, I am Abdulraqeeb Taiwo , an Electronic and Electrical Engineer by discipline with shaky confidence in fulfilling a project at first sight until I go deeper in getting the desired result of the project.           I have learned a lot of skills over my years in the university, from skills related to my discipline to software skills, I engaged in varieties of projects over the years, even being a team leader on different projects. Now let's talk about the skills have acquired so far are listed below. 1.       Skills: 1.       Programming Skills 2.       Electronic Skills 3.       Application Skills 4. ...