jio_payment_sdk 0.0.6 copy "jio_payment_sdk: ^0.0.6" to clipboard
jio_payment_sdk: ^0.0.6 copied to clipboard

A Flutter package to integrate Jio Payment Gateway.

Jio Payment SDK for Flutter #

pub package GitHub stars License


πŸ“‘ Table of Contents #

  1. Overview
  2. Features
  3. Installation
  4. Usage
  5. Example
  6. Security
  7. ProGuard / Obfuscation

πŸ“– Overview #

The Jio Payment SDK provides a seamless way to integrate Jio Payments (UPI, NetBanking, Cards, QR, VPA) into your Flutter applications.
It’s secure, fast, and customizable, built for production-grade payment flows.


✨ Features #

  • πŸ”’ Secure Jio Payments integration
  • πŸ’³ Supports UPI, NetBanking, QR, VPA, Cards
  • πŸ“¦ Easy to add and configure
  • 🎨 Customizable merchant branding
  • πŸ“± Example app included

πŸ“¦ Installation #

Add the dependency to your pubspec.yaml:

dependencies:
  jio_payment_sdk: ^0.0.6

Then run:

flutter pub get

⚑ Usage #

Import the SDK:

import 'package:jio_payment_sdk/jio_payment_sdk.dart';

Initialize payments:

To initialize the Jio Payment SDK, you need to call JioPaymentSdk.initializeJioPayments() with the required configuration.

JioPaymentSdk.initializeJioPayments(
    /// Required Params.............................
    context,
    callback: this,
    amount: am,
    env: JioPaymentEnv.uat, // Change to JioPaymentEnv.prod in production
    merchantId: 'JP2000000000031',
    aggId: "",
    secretKey: "abc",
    email: 'test@gmail.in',
    userName: 'Test User',
    merchantName: 'Reliance',
    merchantImage: "asset/Ajio logo.png",
    merchantTrId:merchantTxnNo() ,
    isAssetMerchantImage: true,


    /// Optional Params.............................
    orderSummary: OrderSummary(title: "Order Summary", items: orderDetailList),
    theme: CustomTheme(primaryColor: const Color.fromRGBO(227, 155, 43, 1), secondaryColor: Colors.black87),
    paymentMethod: PaymentMethod.netBanking,
    allowedPaymentTypes: ["CARD", "NB", "UPI_QR","UPI_INTENT","UPI_VPA"],
    timeOut: 1000,

);

Callback Handling

Your widget’s state should implement the PaymentCallback interface to handle payment results.

@override
void onPaymentCompletedResponse(PaymentResult result) {
  setState(() => _isPaying = false);

  if (result.success) {
    ScaffoldMessenger.of(context).showSnackBar(
      const SnackBar(
        content: Text("Payment Successful πŸŽ‰"),
        backgroundColor: Colors.green,
      ),
    );
    Future.delayed(const Duration(seconds: 2), () {
      Navigator.pop(context);
    });
  } else {
    ScaffoldMessenger.of(context).showSnackBar(
      const SnackBar(
        content: Text("Payment Failed ❌"),
        backgroundColor: Colors.red,
      ),
    );
    _showFailureDialog();
  }
}

Parameters

Parameter Description
amount Amount to be charged (double)
env Environment (JioPaymentEnv.uat or JioPaymentEnv.prod)
merchantId Provided by JioPay
secretKey Secret key for authentication
merchantTrId Unique transaction ID
orderSummary Details of products in the order
theme Customize payment UI colors
allowedPaymentTypes List of allowed payment modes (CREDIT_CARD, DEBIT_CARD, NB, UPI_QR, UPI_INTENT, UPI_VPA)
timeOut Timeout in seconds for transaction

Open Checkout

In this example, the checkout is triggered in initState() so the payment flow starts as soon as the screen opens.

@override
void initState() {
  super.initState();
  WidgetsBinding.instance.addPostFrameCallback((_) {
    _startPayment();
  });
}

πŸ’‘ Example #

We provide a working example app in the example/ folder.

Run it with:

cd example
flutter run

πŸ‘‰ Full main.dart Example:
example/lib/main.dart


πŸ”’ Security #

  • ❌ Do not hardcode sensitive keys in your app.
  • βœ… Always keep your secretKey secure.
  • πŸ”„ Rotate keys regularly.
  • πŸ›‘οΈ Enable obfuscation in production builds.

πŸ›‘οΈ ProGuard / Obfuscation #

For Android builds:

flutter build apk --release --obfuscate --split-debug-info=build/debug-info

If you are using ProGuard, add these rules:

-keepattributes *Annotation*
-dontwarn com.yourcompany.jio_payment_sdk.**
-keep class com.yourcompany.jio_payment_sdk.** {*;}