npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

omnipay-reactnative-sdk

v1.3.2

Published

Omnipay react native sdk

Readme

omnipay-reactnative-sdk

Omnipay react native sdk

Installation

yarn add omnipay-reactnative-sdk

Dependencies

yarn add react-native-select-contact react-native-webview react-native-share

Make sure your manifest files includes permission to read contacts

<uses-permission android:name="android.permission.READ_CONTACTS" />

Camera Permission (Required for Face Verification):

If you're using the FaceVerification component, you need to add camera permissions to your app's manifest files (not the SDK's):

Android - Add to your app's AndroidManifest.xml:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

iOS - Add to your app's Info.plist file:

<key>NSCameraUsageDescription</key>
<string>This app needs access to your camera for face verification</string>

Note: These permissions should be added to your app's manifest files, not the SDK's manifest, since face verification is an optional feature.

Also add this for Android 11+ support below the application tag in your AndroidManifest.xml file

<application>
......
</application>
<queries>
    <intent>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="vnd.android.cursor.dir/contact" />
    </intent>
</queries>

If using CocoaPods, in the ios/ run:

pod install

Please make sure AndroidX is enabled in your project by editting android/gradle.properties and adding 2 lines:

android.useAndroidX=true
android.enableJetifier=true

Usage

// usage with useOmnipay hook
import { OmnipayProvider, useOmnipay } from 'omnipay-reactnative-sdk';

// Wrap your parent component with OmnipayProvider like below
<OmnipayProvider
  publicKey="OMNIPUBKEY_HZA3ERGYEE5XUFGTZDQV_MNKRSTA3-TU"
  env="dev"
  color="red"
>
  {/* the rest of your app */}
</OmnipayProvider>;

// import useOmnipay hook in the component you need to show the bills or wallet sdk in
const { initiateBills, initiateWallet } = useOmnipay();

function onBillsClosed() {
  console.log('sdk is closed..you can do some stuff');
}

function onWalletClosed() {
  console.log('wallet is closed..you can do some stuff');
}

initiateBills({
  phoneNumber: '08020001111',
  onClose: onBillsClosed,
});

initiateWallet({
  phoneNumber: '08020001111',
  customerRef: '9ab6790',
  userRef: '889huop',
  onClose: onWalletClosed,
  usesPaylater: true,
  usesPromo: true,
  usesAirtimeData: true,
  usesTransfer: true,
  usesBills: true,
  usesPos: true,
  promoBalanceOffset: 0,
  deviceId: 'device123',
  deviceName: 'My Device',
  hideWalletTransfer: false,
  isBvnValidationRequired: false,
  walletTab: 'Account', // 'Paylater' | 'Account' | 'Omoni'
  sessionId: 'session123',
  kycStatus: 'verified', // 'verified' | 'unverified'
  launchPage: 'wallet',
  metadata: { usesPinReset: false, usesPinUpdate: false },
});

Properties

OmnipayProvider Props

| Name | Type | Description | | --------- | ------ | ------------------------------------ | | color | String | color of primary buttons and links | | env | String | dev or prod | | publicKey | String | public key of the company on omnipay |

initiateBills Props

| Name | Type | Description | | ----------- | -------- | -------------------------------------------------------- | | phoneNumber | String | phone number of the customer | | onClose | Function | this is used to notify you when the sdk closes | | metadata | Object | optional object to pass additional properties to the SDK |

initiateWallet Props

| Name | Type | Description | | ----------------------- | -------- | -------------------------------------------------------------- | | phoneNumber | String | phone number of the customer | | customerRef | String | unique reference for the customer | | userRef | String | unique reference for the user | | onClose | Function | this is used to notify you when the sdk closes | | usesPaylater | Boolean | whether to show paylater tab in wallet view | | usesPromo | Boolean | whether to show promo tab in wallet view | | usesAirtimeData | Boolean | whether to show airtime and data shortcut in wallet view | | usesTransfer | Boolean | whether to show transfer shortcut in wallet view | | usesBills | Boolean | whether to show bills shortcut in wallet view | | usesPos | Boolean | whether to show pos shortcut in wallet view | | promoBalanceOffset | Number | offset for promo balance display | | deviceId | String | unique identifier for the device | | deviceName | String | name of the device | | hideWalletTransfer | Boolean | whether to hide wallet transfer functionality | | isBvnValidationRequired | Boolean | whether BVN validation is required | | walletTab | String | initial wallet tab to display ('Paylater', 'Account', 'Omoni') | | sessionId | String | unique session identifier | | kycStatus | String | KYC status of the user ('verified', 'unverified') | | launchPage | String | page to launch in the wallet | | metadata | Object | optional object to pass additional properties to the SDK |

Registration Sdk

import { Omnipay } from 'omnipay-reactnative-sdk';

//render it anywhere on your page where you want to display the registration sdk
<Omnipay.Registration
  env="dev"
  color="#42a99b"
  publicKey="OMNIPUBKEY_K0VUJN0JAJZIXUGKAG6XNBXR-RH5YNRS"
  phoneNumber="09031234571"
  onRegistrationSuccessful={({ customerRef, walletId }) => {
    /**
     * the customer ref and walletid can be saved
     * to your database at this point
     *
     * we will also be sending a webhook notification
     * so, you can either save at this point or via the webhook
     */
    console.log(customerRef, walletId);
  }}
  onClose={() => {
    /**
     * the user is done with registration.
     * you can navigate them else where at this point
     */
  }}
/>;

Properties

| Name | Type | Description | | ----------- | ------ | ------------------------------------ | | color | String | color of primary buttons and links | | env | String | dev or prod | | phoneNumber | String | phone number of the customer | | publicKey | String | public key of the company on omnipay | | view | String | the view to render on the sdk |

Payment Linking Sdk

import { Omnipay } from 'omnipay-reactnative-sdk';

//render it anywhere on your page where you want to display the payment linking sdk
<Omnipay.PaymentLinking
  env="dev"
  color="#42a99b"
  publicKey="OMNIPUBKEY_K0VUJN0JAJZIXUGKAG6XNBXR-RH5YNRS"
  phoneNumber="09031234571"
  customerRef="010019ddh"
  amount={5000}
  sessionId="session123"
  orderId="order456"
  onPaymentLinkingSuccessful={() => {
    /**
     * payment linking has been completed successfully
     */
  }}
  onClose={() => {
    /**
     * the user is done with payment linking.
     * you can navigate them else where at this point
     */
  }}
/>;

Properties

| Name | Type | Description | | -------------------------- | -------- | ------------------------------------------------------------------------- | | color | String | color of primary buttons and links | | env | String | dev or prod | | publicKey | String | public key of the company on omnipay | | phoneNumber | String | phone number of the customer (required if customerRef not provided) | | customerRef | String | customer reference of the customer (required if phoneNumber not provided) | | userRef | String | user reference of the customer (if phoneNumber/customer ref not provided) | | amount | Number | amount to be linked for payment in kobo | | sessionId | String | unique session identifier | | orderId | String | order identifier | | onPaymentLinkingSuccessful | Function | callback when payment linking is successful | | onClose | Function | callback when the payment linking modal is closed |