Skip to content

A plug-and-play library to interface with Fawry's payment gateway API (charge, refund, payment status, service callback).

License

Notifications You must be signed in to change notification settings

fawry-api/fawry-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Nov 10, 2019
2f166e7 · Nov 10, 2019

History

16 Commits
Nov 10, 2019
Nov 10, 2019
Nov 9, 2019
Nov 9, 2019
Nov 9, 2019
Nov 9, 2019
Nov 10, 2019
Nov 10, 2019
Nov 9, 2019
Nov 10, 2019
Nov 10, 2019
Nov 9, 2019

Repository files navigation

fawry-node Build Status codecov

Install

The module depends on http module as a peer dependency. In the future it will be pluggable with:

Please make sure to add to your project one of the supported above modules.

$ npm install fawry-node

Usage

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

/*
  params: the object you got at the callback context
  does: throws an error if messageSignature doesn't match the generated one using your secure key
  return: insertedParams if falid
*/

fawry.validateCallbackParams({
  fawrySecureKey: '<fawry_secure_key>',
  params: {
    requestId: 'c72827d084ea4b88949d91dd2db4996e',
    fawryRefNumber: '970177',
    merchantRefNumber: '9708f1cea8b5426cb57922df51b7f790',
    customerMobile: '01004545545',
    customerMail: '[email protected]',
    paymentAmount: '152.00',
    orderAmount: '150.00',
    fawryFees: '2.00',
    shippingFees: '',
    orderStatus: 'NEW',
    paymentMethod: 'PAYATFAWRY',
    messageSignature: 'b0175565323e464b01dc9407160368af5568196997fb6e379374a4f4fbbcf587',
    orderExpiryDate: 1533554719314,
    orderItems: [{
      itemCode: 'e6aacbd5a498487ab1a10ae71061535d',
      price: '150.00',
      quantity: 1
    }]
  }
});

/*
  params: config * for details check contracts/init.js
  does: leverages JS closure to initialize a Fawry instance with common configration
  return: {
    request // http client instance you could intercept, transform do whatever the http module supports
    charge,
    refund,
    status
  }
*/
const fawryClient = fawry.init({
  isSandbox: true,
  fawrySecureKey: '<fawry_secure_key>'
});


/*
  params: data * for details check contracts/charge.js
  does: sends a post request with your valid fawry options to the /charge endpint
  return: Promise
*/

fawryClient.charge({
  merchantCode: '<merchant_code>',
  merchantRefNum: 'io5jxf3jp27kfh8m719arcqgw7izo7db',
  customerProfileId: 'ocvsydvbu2gcp528wvl64i9z5srdalg5',
  customerMobile: '012345678901',
  paymentMethod: 'PAYATFAWRY',
  currencyCode: 'EGP',
  amount: '17.20',
  description: 'the charge request description',
  chargeItems: [{
    itemId: 'fk3fn9flk8et9a5t9w3c5h3oc684ivho',
    description: 'desc',
    price: '17.20',
    quantity: 1
  }]
});

/*
  params: data * for details check contracts/refund.js
  does: sends a post request with your valid fawry options to the /refund endpint
  return: Promise
*/

fawryClient.refund({
  merchantCode: '<merchant_code>',
  referenceNumber: '931337410',
  refundAmount: '81.13',
  reason: 'Paid manually'
});

/*
  params: params * for details check contracts/status.js
  does: sends a get request with your valid fawry options to the /status endpint
  return: Promise
*/

fawryClient.status({
  merchantCode: '<merchant_code>',
  merchantRefNumber: 'ssshxb98phmyvm434es62kage3nsm2cj'
});

About

A plug-and-play library to interface with Fawry's payment gateway API (charge, refund, payment status, service callback).

Resources

License

Stars

Watchers

Forks

Packages

No packages published