node-wipay
Version:
This is a node wrapper for the WiPay Caribbean V1 API.
122 lines (89 loc) • 2.95 kB
Markdown
# Node WiPay
This is a Node Wrapper for the WiPay Caribbean V1 API written in TypeScript.
## Getting Started
### Installation
This package is available on the Node Package Manager and be installed with the following commands:
```bash
npm install node-wipay
yarn add node-wipay
```
### Basic Use
To use this package you must import it using the CommonJs or Es6 Module import statement.
```js
import * as WiPay from 'node-wipay'
const WiPayAuth = require('node-wipay').WiPayAuth;
```
#### Creating an Auth instance
```ts
const auth = WiPayAuth({
AccountNumber: Number,
API_Key: String,
});
```
#### Testing in Sandbox Mode
```ts
auth.LiveMode = false;
```
#### Making Voucher API Call.
```ts
const handler = new WiPayVoucher(auth);
handler.check(voucher:String)
.then((result:WiPayVoucherResponse) => {
console.log(result);
})
.catch((error:WiPayVoucherResponse) => {
console.log(error);
});
```
---
## WiPayAuth
This class is designed as a singleton object in order to create an immutable and fault-tolerant instance of the required WiPay configuration information.
### WiPayAuthConfig
This configuration interface defines the required configuration information for a WiPay authentication instance to be sucessful.
```ts
interface WiPayAuthConfig {
AccountNumber: Number,
API_Key: String,
}
```
Using this format you can initialise an authorisation object by doing the following:
```ts
const config;
const wipay_auth = WiPayAuth.getInstance(config:WiPayAuthConfig);
wipay_auth.LiveMode = false or true; // LiveMode is true by default
```
> It is important to note that the `_config` of the `WiPayAuth` is immutable and cannot be modified, although the `LiveMode:Boolean` can be toggled for `Live` and `Sandbox`. Also as a Singleton object, the typical class constructor is private to prevent unwanted duplication.
### Voucher API
> The `WiPayVoucher` functions returns a `Promise<WiPayVoucherResponse>`. The structure of the response is as follows.
```ts
interface WiPayVoucherResponse {
status: String,
msg: String,
trxn_id?: String,
value?: Number,
}
```
Before any calls can be made to the object, it needs to be initialised witha valid authorisation object.
```ts
const handler = new WiPayVoucher(auth:WiPayAuth);
```
#### Check
```ts
handler.check(voucher:String)
.then((result:WiPayVoucherResponse) => {
console.log(result);
})
.catch((error:WiPayVoucherResponse) => {
console.log(error);
});
```
#### Pay
```ts
handler.pay(voucher:String, total:Number, details?:String)
.then((result:WiPayVoucher) => {
console.log(`Transaction ID is ${result.trxn_id}`);
})
.catch((error:WiPayVoucherResponse) => {
console.log(`Payment failed due to: [${error.msg}]`);
})
```