nativescript-paystack
Version:
Nativescript integration for Paystack payment platform.
125 lines (91 loc) • 3.59 kB
Markdown
# Nativescript Paystack
[](https://badge.fury.io/js/nativescript-paystack)
[](https://www.npmjs.com/package/nativescript-paystack)
[](https://travis-ci.org/jogboms/nativescript-paystack)
Nativescript-Paystack provides a wrapper that incorporate payments using [Paystack](https://paystack.com/) from within your {N} applications. The integration is achieved using the Paystack [Android](https://github.com/PaystackHQ/paystack-android)/[iOS](https://github.com/PaystackHQ/paystack-ios) SDK libraries. Hence, has full support for both Android & iOS.
## Installation
The package should be installed via `tns plugin` for proper gradle and Pod setup.
```bash
tns plugin add nativescript-paystack
```
## Usage
### Setup
First import package into the `main-page`'s model or `app.component` as the case may be for either {N} Core or {N} w/ Angular
```ts
import { NSPaystack } from "nativescript-paystack";
```
Then create an instance of `NSPaystack`.
```ts
this.paystack = new NSPaystack();
```
Initialize the instance with the `publicKey` gotten from Paystack
```ts
this.paystack.initialize(publicKey);
```
### Charging a Card
To charge a card, it is expected that the Form/UI responsible for handling the data collection is handled by you.
```ts
const payment = this.paystack.payment(<NSPaymentParams>{
amount: 500000, // In Kobo
email: "my.email@gmail.com",
number: "4084084084084081",
cvc: "408",
year: 2019,
month: 3
});
payment
// Add metadata
.addMetadata("Hello", "World")
// Add custom data fields
.addCustomField("Author", "Anonymous");
// Listen on when validation modal comes up
payment.on(NSPayment.openDialogEvent, () => {
console.log(NSPayment.openDialogEvent);
});
// Listen on when validation modal goes out
payment.on(NSPayment.closeDialogEvent, () => {
console.log(NSPayment.closeDialogEvent);
});
payment
.charge()
.then(({ reference }) => {
alert(`Reference: ${reference}`);
})
.catch(({ code, message, reference }) => {
alert(`An error occured`);
console.log(`Code: ${code}`);
console.log(`Message: ${message}`);
console.log(`Reference: ${reference}`); // If any
});
```
## API
### Payload Signature
The payload signature is also available via the definition files.
| Argument | Type | Description |
| -------- | :----- | :--------------------------------------------- |
| number | string | the card number without any space seperator |
| month | number | the card expiry month ranging from 1-12 |
| year | number | the card expiry year in a four-digits e.g 2019 |
| cvc | string | the card 3/4 digit security code |
| amount | number | the charge amount in kobo |
| email | string | the customer's email address |
### Response Signature
Promise response signature is also available via the definition files.
#### Success Response
```ts
interface NSPaystackSuccessResponse {
reference: string;
}
```
#### Error Response
```ts
export interface NSPaystackErrorResponse {
code: number | string;
message: string;
reference?: string;
}
```
### Note
It is expected that all tests be carried out on an actual device.
## License
Apache License Version 2.0, January 2004