Flutter Razorpay Web Plugin
Add this to dependencies
in your app’s pubspec.yaml
flutter_razorpay_web: ^0.0.1
Run flutter packages get
in the root directory of your app.
Demo
Important step
Include checkout.js
in index.html
file inside your web folder
<script src="https://checkout.razorpay.com/v1/checkout.js"></script>
For e.g,-
<body>
<script>
window.addEventListener('load', function(ev) {
// Download main.dart.js
_flutter.loader.loadEntrypoint({
serviceWorker: {
serviceWorkerVersion: serviceWorkerVersion,
},
onEntrypointLoaded: function(engineInitializer) {
engineInitializer.initializeEngine().then(function(appRunner) {
appRunner.runApp();
});
}
});
});
</script>
<!-- razorpay checkout lib -->
<script src="https://checkout.razorpay.com/v1/checkout.js"></script>
</body>
Usage
Sample code to integrate
Import package
import 'package:flutter_razorpay_web/flutter_razorpay_web.dart';
create instance
late RazorpayWeb _razorpayWeb;
The handle events as per razorpay response
void _onSuccess(RpaySuccessResponse response) {
// todo: your logic
}
void _onCancel(RpayCancelResponse response) {
// todo: your logic
}
void _onFailed(RpayFailedResponse response) {
// todo: your logic
}
Configure methods
@override
void initState() {
super.initState();
_razorpayWeb = RazorpayWeb(
onSuccess: _onSuccess,
onCancel: _onCancel,
onFailed: _onFailed,
);
}
Close
@override
void dispose() {
_razorpayWeb.close();
super.dispose();
}
Now open razopay payment gateway
void getOrderId() {
// todo: generate order id as per razorpay official documentation.
// ref: https://razorpay.com/docs/payments/server-integration/nodejs/payment-gateway/build-integration/#13-create-an-order-in-server
// implement this on your backend otherwise you may face CORS-policy issue in web
// then call _makePayment
_makePayment(
amount: '100',
orderId: 'order_DaZlswtdcn9UNV',
keyId: 'test_Lxtrdfhfvdhja',
);
}
void _makePayment({
required String amount,
required String orderId,
required String keyId,
}) {
// create payment options
// you can modify as per your requirements
// ref: https://razorpay.com/docs/payments/server-integration/nodejs/payment-gateway/build-integration/#code-to-add-pay-button
final Map<String, dynamic> options = {
"key": keyId,
"amount": amount,
"currency": "INR",
"order_id": orderId,
"timeout": "240",
"name": "Your Organization Name",
"description": "your description",
"prefill": {"contact": "+910000000000"},
"readonly": {"contact": true, "email": true},
"send_sms_hash": true,
"remember_customer": false,
"retry": {"enabled": false},
"hidden": {"contact": false, "email": false}
};
// customise razorpay payment methods
// you can modify as per your requirements
// ref: https://razorpay.com/docs/payments/payment-gateway/web-integration/standard/configure-payment-methods/
options["config"] = {
"display": {
"blocks": {
"utib": {
"name": "Pay using Axis Bank",
"instruments": [
{
"method": "card",
"issuers": ["UTIB"]
},
{
"method": "netbanking",
"banks": ["UTIB"]
}
]
},
"other": {
"name": "Other Payment modes",
"instruments": [
{"method": "card"},
{"method": "netbanking"},
{"method": "wallet"}
]
}
},
"hide": [
{
"method": "upi",
},
{"method": "emi"}
],
"sequence": ["block.utib", "block.other"],
"preferences": {"show_default_blocks": false}
}
};