Last updated:
0 purchases
htkc razorpay
HTKC Razorpay #
Flutter plugin for HCRazorpay SDK.
Getting Started
Prerequisites
Installation
Usage
Troubleshooting
API
Example App
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/htkc_razorpay
Add this to dependencies in your app's pubspec.yaml
htkc_razorpay: any
copied to clipboard
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*(...);
}
copied to clipboard
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:htkc_razorpay/htkc_razorpay.dart';
copied to clipboard
Create Razorpay instance
_razorpay = HCRazorpay();
copied to clipboard
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 HCRazorpay class.
Use the on(String event, Function handler) method on the HCRazorpay instance to attach event listeners.
_razorpay.on(HCRazorpay.EVENT_PAYMENT_SUCCESS, _handlePaymentSuccess);
_razorpay.on(HCRazorpay.EVENT_PAYMENT_ERROR, _handlePaymentError);
_razorpay.on(HCRazorpay.EVENT_EXTERNAL_WALLET, _handleExternalWallet);
copied to clipboard
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
}
copied to clipboard
To clear event listeners, use the clear method on the HCRazorpay instance.
_razorpay.clear(); // Removes all listeners
copied to clipboard
Setup options
var options = {
'key': '<YOUR_KEY_HERE>',
'amount': 100,
'name': 'Acme Corp.',
'description': 'Fine T-Shirt',
'prefill': {
'contact': '8888888888',
'email': '[email protected]'
}
};
copied to clipboard
A detailed list of options can be found here.
Open Checkout
_razorpay.open(options);
copied to clipboard
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
copied to clipboard
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 "htkc_razorpay" when running pod install #
Specs satisfying the `htkc_razorpay (from
`.symlinks/plugins/htkc_razorpay/ios`)` dependency were found, but they
required a higher minimum deployment target.
copied to clipboard
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'
copied to clipboard
and change it to
platform :ios, '10.0'
copied to clipboard
and run pod install again in the ios directory.
iOS build fails with 'htkc_razorpay/htkc_razorpay-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 [:htkc_razorpay] #
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 'HCRazorpay' #
We export a class HCRazorpay from package:htkc_razorpay/htkc_razorpay.dart. Check if your code is redeclaring the HCRazorpay class.
Type 'xxxx' is not a subtype of type 'xxxx' of 'response' in HCRazorpay.on.<anonymous closure> #
[VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: type 'PaymentFailureResponse' is not a subtype of type 'PaymentSuccessResponse' of 'response'
#0 HCRazorpay.on.<anonymous closure> (package:htkc_razorpay/htkc_razorpay.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 HCRazorpay._handleResult (package:htkc_razorpay/htkc_razorpay.dart:81:19)
#5 HCRazorpay.open (package:htkc_razorpay/htkc_razorpay.dart:49:5)
copied to clipboard
Check the signatures of the callbacks for payment events. They should match the ones described here.
API #
HCRazorpay #
open(map<String, dynamic> options)
Open HCRazorpay 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.
eventName: The name of the event.
listener: The function to be called. The listener should accept a single argument of the following type:
PaymentSuccessResponse for EVENT_PAYMENT_SUCCESS
PaymentFailureResponse for EVENT_PAYMENT_FAILURE
ExternalWalletResponse for EVENT_EXTERNAL_WALLET
clear()
Clear all event listeners.
Error Codes
The error codes have been exposed as integers by the HCRazorpay 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 HCRazorpay.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 HCRazorpay 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.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.