Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jogboms/nativescript-paystack

Nativescript integration for Paystack payment platform
https://github.com/jogboms/nativescript-paystack

android ios nativescript payment-gateway payment-integration payments paystack

Last synced: 6 days ago
JSON representation

Nativescript integration for Paystack payment platform

Awesome Lists containing this project

README

        

# Nativescript Paystack

[![npm version](https://badge.fury.io/js/nativescript-paystack.svg)](https://badge.fury.io/js/nativescript-paystack)
[![npm](https://img.shields.io/npm/dt/nativescript-paystack.svg?label=npm%20downloads)](https://www.npmjs.com/package/nativescript-paystack)
[![Build Status](https://travis-ci.org/jogboms/nativescript-paystack.svg?branch=master)](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({
amount: 500000, // In Kobo
email: "[email protected]",
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