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 🙏

© 2024 – Pkg Stats / Ryan Hefner

rn-expo-razorpay

v1.0.4

Published

React Native wrapper for Razorpay

Downloads

1

Readme

React Native wrapper around our Android, Web and iOS mobile SDKs

The following documentation is only focussed on the react-native wrapper around our Android, Web and iOS sdks. To know more about our react-native SDK, refer to the following documentation -

https://razorpay.com/docs/payment-gateway/react-native-integration/

To know more about Razorpay payment flow and steps involved, read up here: https://docs.razorpay.com/docs

Prerequisites

  • Learn about the Razorpay Payment Flow.
  • Sign up for a Razorpay Account and generate the API Keys from the Razorpay Dashboard. Using the Test keys helps simulate a sandbox environment. No actual monetary transaction happens when using the Test keys. Use Live keys once you have thoroughly tested the application and are ready to go live.

Installation

Using npm:

npm install --save rn-expo-razorpay

or using yarn:

yarn add rn-expo-razorpay

For Expo Users:

npx expo install rn-expo-razorpay

Requirements

  • iOS 10.0+ / macOS 10.12+ / tvOS 10.0+ / watchOS 3.0+
  • Xcode 11+
  • Swift 5.1+

Linking

Automatic

For React Native 0.60+

# install
npm install rn-expo-razorpay --save
cd ios && open podfile # Change the platform from iOS 9.0 to 10.0
pod install && cd .. # CocoaPods on iOS needs this extra step
# run
yarn react-native run-ios

For React Native 0.59 and lower

  1. $ npm install rn-expo-razorpay --save // Install the Razorpay React Native Standard SDK using the npm command.

  2. react-native link rn-expo-razorpay // Link the SDK with React Native Project using Xcode.

  3. Drag the Razorpay.framework file from the Libraries folder and drop it under the root folder, for more info follow this link, after this go to Target > General Settings> Framework, Libraries and Embedded Content section, set the Embed status of Razorpay.framework to Embed & Sign.

  4. Also make sure the razorpay framework is added in the embedded binaries section and you have Always Embed Swift Standard Binaries set to yes in build settings.

Manual

Add the following line to your build targets in your Podfile

pod 'rn-expo-razorpay', :path => '../node_modules/rn-expo-razorpay'

Then run pod install

In XCode, in the project navigator:

  • Right click Libraries
  • Add Files to [your project's name]
  • Go to node_modules/rn-expo-razorpay
  • Add the .xcodeproj file

In XCode, in the project navigator, select your project.

  • Add the libRNDeviceInfo.a from the deviceinfo project to your project's Build Phases ➜ Link Binary With Libraries
  • Click .xcodeproj file you added before in the project navigator and go the Build Settings tab. Make sure All is toggled on (instead of Basic).
  • Look for Header Search Paths and make sure it contains both $(SRCROOT)/../react-native/React and $(SRCROOT)/../../React
  • Mark both as recursive (should be OK by default).

Run your project (Cmd+R)

  1. Open up android/app/src/main/java/[...]/MainApplication.java
  • Add import com.razorpay.rn.RazorpayPackage; to the imports at the top of the file
  • Add new RazorpayPackage() to the list returned by the getPackages() method
  1. Append the following lines to android/settings.gradle:
    include ':rn-expo-razorpay'
    project(':rn-expo-razorpay').projectDir = new File(rootProject.projectDir,   '../node_modules/rn-expo-razorpay/android')
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
    implementation project(':rn-expo-razorpay')

Note for Expo Applications:

After adding the rn-expo-razorpay package,the option to prebuild the app must be used(this generates the android/ios platform folders in the project to use native-modules). Command for which,

npx expo prebuild

After which the application will be installed on the device/emulator.

npx expo run:[ios|android] --device

Usage

Sample code to integrate with Razorpay can be found in [index.js][index.js] in the included example directory.

To run the example, simply do the following in example directory and then link iOS SDK as explained in the previous section:

Steps

  1. Import RazorpayCheckout module to your component:

    import RazorpayCheckout from 'rn-expo-razorpay';
  2. Call RazorpayCheckout.open method with the payment options. The method returns a JS Promise where then part corresponds to a successful payment and the catch part corresponds to payment failure.

    <Pressable onPress={() => {
      var options = {
        description: 'Credits towards consultation',
        image: 'https://i.imgur.com/3g7nmJC.png',
        currency: 'INR',
        key: '', // Your api key
        amount: '5000',
        name: 'foo',
        prefill: {
          email: '[email protected]',
          contact: '9191919191',
          name: 'Razorpay Software'
        },
        theme: {color: '#F37254'}
      }
      RazorpayCheckout.open(options).then((data) => {
        // handle success
        alert(`Success: ${data.razorpay_payment_id}`);
      }).catch((error) => {
        // handle failure
        alert(`Error: ${error.code} | ${error.description}`);
      });
    }}>Pay Now</Pressable>

A descriptive [list of valid options for checkout][options] is available (under Manual Checkout column).

Proguard Rules

If you are using proguard for your builds, you need to add following lines to proguard files

-keepattributes *Annotation*
-dontwarn com.razorpay.**
-keep class com.razorpay.** {*;}
-optimizations !method/inlining/
-keepclasseswithmembers class * {
  public void onPayment*(...);
}

Things to be taken care

  • The react native plugin is wrapper around native SDK, so it doesn't work with the tools like expo which doesn't support native modules.

FAQ's

  • For UPI Intent in iOS, the info.plist in iOS should be modified to include LSApplicationQueriesSchemes
    • For Bare React-Native Apps:
      • info.plist can directly be modified from the xcode project. LSApplicationQueriesSchemes takes as array value and can currently include only ["tez","phonepe","paytmmp"]
    • For Expo Apps:
      • Directly modifying info.plist is discouraged, and hence this should be added in app.json
        "ios": {
          "infoPlist": {
            "LSApplicationQueriesSchemes": [
               "tez",
               "phonepe",
               "paytmmp"
            ]
          }
        }
      • P.S: The apps won't be visible if the application is run with metro builder. The info.plist is generated successfully and integrated only when the app is built as standalone app.
  • Still having trouble with integrating our payment gateway? Follow this link for more info.