Skip to content

smdpro/IPG-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IPG-node

Iranian payment gateway

npm version License: MIT

Unofficially implementing Iranian payment gateways in Node.JS

Installation

Install the package from npm.

NPM

npm install ipg-node

Usage:

Import and set configuration

const ipg = require('ipg-node');

ipg.config = {
  mellat: {
    credentail: {
      terminalId: process.env.MELLAT_TERMINALID,
      userName: process.env.MELLAT_USERNAME,
      userPassword: process.env.MELLAT_USERPASSWORD,
    },
    callbackUrl: `http://your.domain.com/checkout?gate=${ipg.Types.Mellat}`,
    currencyIsToman: false,
  },
  melli: {
    credentail: {
      TerminalId: process.env.MELLI_TERMINALID,
      MerchantId: process.env.MELLI_MERCHANTID,
      TerminalKey: process.env.MELLI_TERMINALKEY,
    },
    callbackUrl: `http://your.domain.com/checkout?gate=${ipg.Types.Melli}`,
    currencyIsToman: false,
  },
  saderat: {
    credentail: {
      terminalID: process.env.MELLI_TERMINALID,
    },
    callbackUrl: `http://your.domain.com/checkout?gate=${ipg.Types.Saderat}`,
    currencyIsToman: false,
  },
};

API

Payment Request:

Mellat:

ipg
  .request(ipg.Types.Mellat, amount)
  .then((result) => {
    if (result.success) {
      //result.RefId,
    } else {
      //result.ResCode,
      //result.message
    }
  })
  .catch((error) => console.log(error));

Melli:

ipg
  .request(ipg.Types.Melli, amount)
  .then((result) => {
    if (result.success) {
      // result.ResCode,
      // result.message,
      // result.Token,
      // ....
      // save invoice
    } else {
      // result.ResCode,
      // result.message
    }
  })
  .catch((error) => console.log(error));

Saderat:

ipg
  .request(ipg.Types.Saderat, amount)
  .then((result) => {
    if (result.success) {
      // result.AccessToken,
      
      // ....
      // save invoice
    } else {
      // result.Status,
      // result.message
    }
  })
  .catch((error) => console.log(error));

Verifing Payment:

Mellat

ipg
  .verify(ipg.Types.Mellat, {
    orderId: req.body.SaleOrderId,
    saleOrderId: req.body.SaleOrderId,
    saleReferenceId: req.body.SaleReferenceId,
  })
  .then((result) => {
    if (result.success) {
      // ....
      // save invoice
    } else {
      // result.ResCode,
      // result.message
    }
  })
  .catch((error) => console.log(error));

Melli

ipg
  .verify(ipg.Types.Melli, { token })
  .then((result) => {
    if (result.success) {
      //   result.ResCode,
      //   result.message,
      //   result.OrderId,
      //   result.RetrivalRefNo,
      //   result.SystemTraceNo,
      // ....
      //save invoice
    } else {
      //result.ResCode,
      //result.message
    }
  })
  .catch((error) => console.log(error));

Refund Payment:

Mellat

ipg
  .refund(ipg.Types.Mellat, {
    orderId,
    saleOrderId,
    saleReferenceId,
    refundAmount,
  })
  .then((result) => {
    if (result.success) {
      // result.TransactionCode,
      // ....
      // save invoice
    } else {
      // result.message,
      // result.ResCode,
    }
  })
  .catch((error) => console.log(error));

Melli

ipg
  .refund(ipg.Types.Melli, {
    retrivalRef,
    systemTraceNo,
    refundAmount,
    amount,
    token,
  })
  .then((result) => {
    if (result.success) {
      //save invoice
    } else {
      //result.ResCode,
      //result.message
    }
  })
  .catch((error) => console.log(error));

Implemented Gateways

  • Mellat
  • Melli
  • Saderat
  • Nexpay

Contributing

Contributions are welcome. Please submit PRs or just file an Issue if you see something broken or in need of improving.