Skip to content

Latest commit

 

History

History
108 lines (87 loc) · 3.78 KB

README.md

File metadata and controls

108 lines (87 loc) · 3.78 KB

Documentation

This package will make the integration of online payment in iraq much easier than before.

Overview

To integrate any payment method (from the ones that are already supported) , all you have to do is the following:

Installation

npm i iraq-epayment

1 - Create a .json file that has the account information needed for each payment gateway (merchants information) so the json files will look as follows :

{
    "ZainCash":{
        "production":true OR false,
        "serviceType": "Any text", // This will appear to the customer in the payment page.
        "secret":"XXXXXXXXXXXXXX" //Your ZAIN SECRET
        "msisdn": "96478########", // The merchant wallet number
        "merchantId":"XXXX" //Merchant ID
        "redirectUrl": "https://YOUR-WEBSITE.com/PATH", // Your GET URL that the customer will be redirected to after the payment
        "lang":"ar" OR "en"
        'exp': 3 // days for the JWT token expiration
    },
    "PayTabs":{
        "Authorization":"TOKEN AUTH",
        "callback":"https://YOUR-WEBSITE.com/POSTPATH" //paytabs(AMWAL) will send a POST request to that route after payment process with information about the transaction",
        "returnUrl":"https://YOUR-WEBSITE.com/PATH" //Your GET URL that the customer will be redirected to after the payment ,
        "profile_id":"XXXX", //Your Profile ID given by paytabs(Amwal)
        "tran_class": "ecom" OR "moto" OR "cont",//Depends on bank account type
        "tran_type":"sale",
    },
    "Tasdid":{
        "userName":"YOUR USERNAME",
        "password":"YOUR PASSWORD"
    },
    "Aps":{
        "production":true OR false,
        "userName":"YOUR USERNAME",
        "password":"YOUR PASSWORD",
        "redirectUrl":"URL" //Your route that they will send GET request to it.
    },
    "Switch":{
        "Switch":{
        "production": false,
        "Authorization":
        "Bearer OGE4Mjk0MTc0ZDA1OTViYjAxNGQwNWQ4MjllNzAxZDF8OVRuSlBjMm45aA==",
        "entityId": "8a8294174d0595bb014d05d82e5b01d2",
        "bankBic": "TESTDETT421",
        "bankIban": "DE14940593100000012346",
        "bankCountry": "DE",
        "redirectUrl": "https://google.com"
    }

}

NOTE: The structure and keys must be identical to the above.


NOTE: You only need to put the payments information that you need and support in your application.


2 - Require the package as:

const Payment = require("iraq-epayment");
const accountInfos = require("YOUR JSON PATH");

3 - In your payment controller, you use (zaincash here as an example):

const payment_process = new Payment("ZainCash", accountInfos).inject;
const result = payment_process.checkout({ amount: 2548, orderId: "45849" });
console.log(result); //{status:bool, https://api.zaincash.iq/transaction/pay?id=xxxx,transactionId:'xxx',}

result will be an object and if the operation wass successful, the status will be true, else if there were any errors, it will return the object as follows:

{
    status:false,
    error:{
        //Depend on payment method
    }
}

For better usage, require the json file everytime when passing it to the class, in this case, you can update the information without restarting the server, like below:

const payment_process = new Payment("ZainCash", require("PATH_TO_JSON")).inject;