• Stars
    star
    105
  • Rank 319,598 (Top 7 %)
  • Language
    Dart
  • License
    MIT License
  • Created about 5 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Razorpay Flutter Plugin

Razorpay Flutter

Flutter plugin for Razorpay SDK.

pub package

Getting Started

This flutter plugin is a wrapper around our Android and iOS SDKs.

The following documentation is only focused on the wrapper around our native Android and iOS SDKs. To know more about our SDKs and how to link them within the projects, refer to the following documentation:

Android: https://razorpay.com/docs/checkout/android/

iOS: https://razorpay.com/docs/ios/

To know more about Razorpay payment flow and steps involved, read up here: https://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

This plugin is available on Pub: https://pub.dev/packages/razorpay_flutter

Add this to dependencies in your app's pubspec.yaml

razorpay_flutter: ^1.3.5

Note for Android: Make sure that the minimum API level for your app is 19 or higher.

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*(...);
}

Follow this for more details.

Note for iOS: Make sure that the minimum deployment target for your app is iOS 10.0 or higher. Also, don't forget to enable bitcode for your project.

Run flutter packages get in the root directory of your app.

Usage

Sample code to integrate can be found in example/lib/main.dart.

Import package

import 'package:razorpay_flutter/razorpay_flutter.dart';

Create Razorpay instance

_razorpay = Razorpay();

Attach event listeners

The plugin uses event-based communication, and emits events when payment fails or succeeds.

The event names are exposed via the constants EVENT_PAYMENT_SUCCESS, EVENT_PAYMENT_ERROR and EVENT_EXTERNAL_WALLET from the Razorpay class.

Use the on(String event, Function handler) method on the Razorpay instance to attach event listeners.

_razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, _handlePaymentSuccess);
_razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, _handlePaymentError);
_razorpay.on(Razorpay.EVENT_EXTERNAL_WALLET, _handleExternalWallet);

The handlers would be defined somewhere as

void _handlePaymentSuccess(PaymentSuccessResponse response) {
  // Do something when payment succeeds
}

void _handlePaymentError(PaymentFailureResponse response) {
  // Do something when payment fails
}

void _handleExternalWallet(ExternalWalletResponse response) {
  // Do something when an external wallet was selected
}

To clear event listeners, use the clear method on the Razorpay instance.

_razorpay.clear(); // Removes all listeners

Setup options

var options = {
  'key': '<YOUR_KEY_HERE>',
  'amount': 100,
  'name': 'Acme Corp.',
  'description': 'Fine T-Shirt',
  'prefill': {
    'contact': '8888888888',
    'email': '[email protected]'
  }
};

A detailed list of options can be found here.

Open Checkout

_razorpay.open(options);

Troubleshooting

Enabling Bitcode

Open ios/Podfile and find this section:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end

Set config.build_settings['ENABLE_BITCODE'] = 'YES'.

Setting Swift version

Add the following line below config.build_settings['ENABLE_BITCODE'] = 'YES':

config.build_settings['SWIFT_VERSION'] = '5.0'

CocoaPods could not find compatible versions for pod "razorpay_flutter" when running pod install

Specs satisfying the `razorpay_flutter (from
    `.symlinks/plugins/razorpay_flutter/ios`)` dependency were found, but they
    required a higher minimum deployment target.

This is due to your minimum deployment target being less than iOS 10.0. To change this, open ios/Podfile in your project and add/uncomment this line at the top:

# platform :ios, '9.0'

and change it to

platform :ios, '10.0'

and run pod install again in the ios directory.

iOS build fails with 'razorpay_flutter/razorpay_flutter-Swift.h' file not found

Add use_frameworks! in ios/Podfile and run pod install again in the ios directory.

Gradle build fails with Error: uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:razorpay_flutter]

This is due to your Android minimum SDK version being less than 19. To change this, open android/app/build.gradle, find minSdkVersion in defaultConfig and set it to at least 19.

A lot of errors saying xxxx is not defined for the class 'Razorpay'

We export a class Razorpay from package:razorpay_flutter/razorpay_flutter.dart. Check if your code is redeclaring the Razorpay class.

Type 'xxxx' is not a subtype of type 'xxxx' of 'response' in Razorpay.on.<anonymous closure>

[VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: type 'PaymentFailureResponse' is not a subtype of type 'PaymentSuccessResponse' of 'response'
#0      Razorpay.on.<anonymous closure> (package:razorpay_flutter/razorpay_flutter.dart:87:14)
#1      EventEmitter.emit.<anonymous closure> (package:eventify/src/event_emitter.dart:94:14)
#2      List.forEach (dart:core-patch/growable_array.dart:278:8)
#3      EventEmitter.emit (package:eventify/src/event_emitter.dart:90:15)
#4      Razorpay._handleResult (package:razorpay_flutter/razorpay_flutter.dart:81:19)
#5      Razorpay.open (package:razorpay_flutter/razorpay_flutter.dart:49:5)

Check the signatures of the callbacks for payment events. They should match the ones described here.

API

Razorpay

open(map<String, dynamic> options)

Open Razorpay Checkout.

The options map has key as a required property. All other properties are optional. For a complete list of options, please see the Checkout documentation.

on(String eventName, Function listener)

Register event listeners for payment events.

clear()

Clear all event listeners.

Error Codes

The error codes have been exposed as integers by the Razorpay class.

The error code is available as the code field of the PaymentFailureResponse instance passed to the callback.

Error Code Description
NETWORK_ERROR There was a network error, for example loss of internet connectivity
INVALID_OPTIONS An issue with options passed in Razorpay.open
PAYMENT_CANCELLED User cancelled the payment
TLS_ERROR Device does not support TLS v1.1 or TLS v1.2
UNKNOWN_ERROR An unknown error occurred.

Event names

The event names have also been exposed as Strings by the Razorpay class.

Event Name Description
EVENT_PAYMENT_SUCCESS The payment was successful.
EVENT_PAYMENT_ERROR The payment was not successful.
EVENT_EXTERNAL_WALLET An external wallet was selected.

PaymentSuccessResponse

Field Name Type Description
paymentId String The ID for the payment.
orderId String The order ID if the payment was for an order, null otherwise.
signature String The signature to be used for payment verification. (Only valid for orders, null otherwise)

PaymentFailureResponse

Field Name Type Description
code int The error code.
message String The error message.

ExternalWalletResponse

Field Name Type Description
walletName String The name of the external wallet selected.

More Repositories

1

blade

Design System that powers Razorpay
TypeScript
454
star
2

ifsc

🏦 IFSC Codes Repository
HTML
326
star
3

go-financial

A go port of numpy-financial functions and more.
Go
301
star
4

razorpay-php

Razorpay PHP Library
PHP
169
star
5

razorpay-node

Razorpay node.js bindings
JavaScript
146
star
6

razorpay-python

Razorpay Python SDK
Python
146
star
7

devstack

Razorpay DevX cloud on laptop solution
Go
125
star
8

react-native-razorpay

React Native wrapper for Razorpay's mobile SDKs
Java
119
star
9

razorpay-android-sample-app

Sample app demonstrating integration of Razorpay checkout
Java
86
star
10

ifsc-api

🏦 Standalone API for IFSC codes
CSS
75
star
11

concierge

Web Management & Secure Access Control of AWS Security Groups. Allows you to create IP leases for incoming connections to AWS instances. Also, allows creating invites to allow guest access by URL/Email Invites.Uses two factor authentication for additional security.
Go
68
star
12

razorpay-ruby

Razorpay Ruby SDK
Ruby
62
star
13

react-native-apollo-devtools

Flipper plugin to debug apollo client cache for React Native
TypeScript
57
star
14

razorpay-cordova

Cordova wrapper around Razorpay's Android and iOS SDKs
Shell
51
star
15

razorpay-java

Razorpay Java SDK
Java
50
star
16

metro

The Service Bus!
Go
48
star
17

shubhcron

A drop-in cron replacement that can run your jobs on auspicious timings.
Go
44
star
18

razorpay-woocommerce

Razorpay Payment Extension for Woocommerce
PHP
40
star
19

public-presentations

A curated list of public talks and articles by Razorpay
39
star
20

razorpay-go

Razorpay Go SDK
Go
33
star
21

alohomora

alohomora is razorpay's secret distribution system
Python
31
star
22

razorpay-php-testapp

Sample App for Razorpay PHP Integration
PHP
27
star
23

razorpay-magento

Razorpay Payment Extension for Magento
PHP
27
star
24

trino-gateway

Traffic routing for Trino Clusters
Go
24
star
25

razorpay-pod

πŸ“± CocoaPod implementation of Razorpay's Payment SDK. Refer for instructions:
Objective-C
22
star
26

razorpay-python-testapp

Razorpay test app for python
HTML
18
star
27

razorpay-cordova-sample-app

πŸ“± Razorpay Sample Application for Cordova, Ionic v1 and Ionic v2
JavaScript
16
star
28

opensource.razorpay.com

Razorpay Open Source showcase website
TypeScript
16
star
29

razorpay-opencart

Razorpay Payment Extension for Opencart
PHP
16
star
30

razorpay-whmcs

Razorpay Payment Extension for WHMCS
PHP
15
star
31

i18nify

Javascript library for internationalisation
TypeScript
14
star
32

razorpay-ios-sample-app

πŸ“± Sample app demonstrating integration of Razorpay iOS Framework
Objective-C
14
star
33

razorpay-android-custom-sample-app

Sample app to demonstrate the custom UI integration
Kotlin
13
star
34

razorpay-dot-net

Razorpay .NET SDK
C#
13
star
35

razorpay-edd

Razorpay plugin for Wordpress Easy Digital Downloads
PHP
11
star
36

razorpay-prestashop

Prestashop plugin for Razorpay
PHP
11
star
37

bhadra

Bhadra is a Vulnerability Management Platform to handle all security issues
HTML
11
star
38

razorpay-dotnet-testapp

Test app for .net integration
ASP.NET
10
star
39

lytics.js

Simpler analytics using HTML attributes.
JavaScript
10
star
40

razorpay-cscart

Razorpay Payment Extension for CS Cart
PHP
10
star
41

razorpay-capacitor

Capacitor wrapper around Razorpay's Android and iOS SDKs
TypeScript
10
star
42

razorpay-arastta

Razorpay Payment Extension for Arastta stores
PHP
9
star
43

sorting-hat

Post new signup data to Slack using the clearbit API
Ruby
8
star
44

razorpay-quick-payments

Razorpay Quick Payments plugin for WordPress
PHP
8
star
45

razorpay-woocommerce-subscriptions

Razorpay WooCommerce Subscriptions Plugin
PHP
6
star
46

razorpay-java-testapp

Sample app for Razorpay Java Integration
Java
5
star
47

darts

🎯 The Razorpay Dart Board Championship Hall of Fame
HTML
5
star
48

terraform-aws-ssl-ciphers

Common SSL Negotiation Policies to be used with AWS ELBs using Terraform
HCL
5
star
49

common-frontend-utils

Common Frontend Utils
JavaScript
5
star
50

component.js

Simple and Opinionated way to build UI Components
JavaScript
5
star
51

wercker-ubuntu14.04-ansible1.6

Ubuntu 14.04 with Ansible 1.6 box for http://wercker.com/
5
star
52

gollum-setup

Scripts to help you setup gollum
Ruby
3
star
53

teamcolony-rss

RSS Feed generator for teamcolony reports
Ruby
3
star
54

razorpay-customui-pod

iOS CustomUI SDK of Razorpay
Objective-C
3
star
55

kong-template

Kong template for plugin development
Lua
3
star
56

.github

Razorpay's Public Profile Page
3
star
57

razorpay-flutter-customui

Razorpay Flutter Plugin for Customui
Dart
2
star
58

cryptocows-whitepaper

Technical Documentation for Razorpay CryptoCows
2
star
59

ftx-hackathon

Wiki for the FTX Hackathon
2
star
60

citadel

Documentation Platform
JavaScript
1
star
61

etcd-backup

Docker file for etcd-backup running as a k8s cron job.
Shell
1
star
62

go-openssl

OpenSSL bindings for Golang
Go
1
star
63

dot-settings

JavaScript
1
star
64

subscriptions-magento-plugin

Subscriptions plugin for magento.
PHP
1
star
65

RazorpaySalesDemo

CSS
1
star
66

payment-button-wordpress-plugin

Payment button plugin for wordpress.
PHP
1
star
67

omnipay-razorpay

Razorpay plugin for Omnipay Payment Processing Library
PHP
1
star