Original README snapshot from the linked source repository. Visit the repository for the latest content.
Easebuzz Flutter SDK
The Easebuzz Flutter SDK provides seamless integration with the Easebuzz payment gateway, enabling merchants to securely collect online payments through various payment modes such as credit cards, debit cards, UPI, and more. This SDK ensures robust encryption and security measures to safeguard customer data. Easebuzz is a fully API-integrated platform, simplifying payment processing for websites and mobile apps.
Features
- Multiple payment modes: Credit/Debit Cards, UPI, Net Banking, and more.
- Secure and encrypted transactions.
- Easy integration with Flutter apps.
- Fully API-integrated payment gateway.
- Sandbox environment for testing.
Prerequisites
Before integrating the Easebuzz Flutter SDK, ensure the following:
-
Merchant Onboarding
-
Sandbox/Test Integration Credentials
- Test credentials will be sent to your registered email address. Use these credentials to test payment functionality in a secure sandbox environment.
- Once testing is complete, replace the test keys with live keys to enable real transactions in the production environment.
-
Platform-Specific Configuration
-
Web:
-
Add the following two <script> tags in the <head> section of your web/index.html:
<script src="https://ebz-static.s3.ap-south-1.amazonaws.com/easecheckout/v2.0.0/easebuzz-checkout-v2.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
Installation
To integrate the SDK, follow these steps:
-
Add the Dependency
Add the following to your pubspec.yaml file:
dependencies:
easebuzz_flutter_sdk: ^0.0.1
Fetch the package by running:
flutter pub get
-
Import the Package
Import the SDK in your Dart file:
import 'package:easebuzz_flutter_sdk/easebuzz_flutter_sdk.dart';
How to Use
Step 1: Initialize the SDK
Before using any functionality from the SDK, initialize the EasebuzzFlutterSdk instance:
final EasebuzzFlutterSdk _easebuzzFlutterPlugin = EasebuzzFlutterSdk();
Step 2: Create the Payment Model
Start by creating an instance of EasebuzzPaymentModel:
final paymentModel = EasebuzzPaymentModel(
txnid: "TEST${DateTime.now().millisecondsSinceEpoch}",
amount: amount,
productinfo: productName,
firstname: "John",
email: "john@example.com",
phone: "9999999999",
surl: "https://your-success-url.com",
furl: "https://your-failure-url.com",
splitPayments: jsonEncode({"your_label": amount}),
key: key,
);
Note: Replace surl and furl with your actual success and failure handling URLs.
Step 3: Generate Hash
Generate a hash to ensure secure communication:
final hash = await _easebuzzFlutterPlugin.generateHash(
paymentModel: paymentModel,
key: key,
salt: salt,
);
Step 4: Initiate Payment Link
For Mobile Platforms (Android/iOS):
Use the initiateLink method:
final response = await _easebuzzFlutterPlugin.initiateLink(
isTestMode: true,
hash: hash,
paymentModel: paymentModel,
);
For Web:
The initiateLink method is not supported on web due to CORS issues. Instead, generate the access key on your backend or cloud function by calling the Easebuzz API:
Example for generating access key:
final response = await createAccessTokenForWeb(
hash: hash,
requestBody: paymentModel.toJson(),
);
Step 4: Proceed to Payment
After obtaining the access key from initiateLink or your backend, proceed with the payment:
final paymentResponse = await _easebuzzFlutterPlugin.payWithEasebuzz(
response,
"test",
);
Full Example for Payment Integration
Here’s an example of how to use the Easebuzz SDK in a Flutter app:
Future<void> initiatePayment({
required String productName,
required double amount,
required Function(String) onSuccess,
required Function(String) onError,
}) async {
final paymentModel = EasebuzzPaymentModel(
txnid: "TEST${DateTime.now().millisecondsSinceEpoch}",
amount: amount,
productinfo: productName,
firstname: "John",
email: "john@example.com",
phone: "9999999999",
surl: "https://your-success-url.com",
furl: "https://your-failure-url.com",
splitPayments: jsonEncode({"your_label": amount}),
key: key,
);
try {
final hash = await _easebuzzFlutterPlugin.generateHash(
paymentModel: paymentModel,
key: EaseBuzzPaymentRepository.key,
salt: EaseBuzzPaymentRepository.salt,
);
if (hash == null) {
onError("Failed to generate hash.");
return;
}
final response = kIsWeb
? await createAccessTokenForWeb(
hash: hash, requestBody: paymentModel.toJson())
: await _easebuzzFlutterPlugin.initiateLink(
isTestMode: true,
hash: hash,
paymentModel: paymentModel,
);
if (response == null) {
onError("Failed to initiate payment link.");
return;
}
final paymentResponse =
await _easebuzzFlutterPlugin.payWithEasebuzz(response, "test");
if (paymentResponse != null) {
onSuccess("Payment successful: $paymentResponse");
} else {
onError("Payment failed: Payment response is null.");
}
} on PlatformException catch (e) {
onError("Payment failed: ${e.message}");
} catch (e) {
onError("Payment failed: ${e.toString()}");
}
}
Future<void> _processPayment(BuildContext context, Product product) async {
await paymentService.initiatePayment(
productName: product.title,
amount: product.price,
onSuccess: (response) {
_showFeedbackSnackBar(
context,
'Payment Successful: $response',
Colors.green,
);
},
onError: (error) {
_showFeedbackSnackBar(
context,
'Payment Failed: $error',
Colors.red,
);
},
);
}
Why Use Backend for Web Integration?
- Due to CORS restrictions, the
Initiate Payment API must be called from your backend or cloud function.
- Backend integration ensures secure handling of the
access key.
Example Screen Recording
Watch the example screen recordings for different platforms to see how to integrate the Easebuzz Flutter SDK:
Resources