Flutter支付集成插件jazzcash_flutter的使用

发布于 1周前 作者 songsunli 来自 Flutter

Flutter支付集成插件jazzcash_flutter的使用

安装

1. 添加依赖

在你的 pubspec.yaml 文件中添加以下内容:

dependencies:
  jazzcash_flutter: <最新版本>

2. 安装依赖

你可以通过命令行安装包:

使用 pub:

$ pub get

使用 flutter:

$ flutter pub get

3. 导入包

在你的 Dart 代码中导入以下内容:

import 'package:jazzcash_flutter/jazzcash_flutter.dart';

使用

jazzcash_flutter 是一个用于 Flutter 应用程序的支付网关集成包,可以使用 JazzCash 钱包和借记卡发起支付过程。启动支付过程如下:

Future _payViaJazzCash(ProductModel element, BuildContext c) async {
  try {
    // 初始化 JazzCashFlutter 实例
    JazzCashFlutter jazzCashFlutter = JazzCashFlutter(
      merchantId: "Your Merchant Id",
      merchantPassword: "Your Merchant Password",
      integritySalt: "Your Integrity Salt here",
      isSandbox: true,
    );

    // 获取当前日期时间
    DateTime date = DateTime.now();

    // 创建支付数据模型
    JazzCashPaymentDataModelV1 paymentDataModelV1 = JazzCashPaymentDataModelV1(
      ppAmount: '${element.price}', // 支付金额
      ppBillReference: 'refbill${date.year}${date.month}${date.day}${date.hour}${date.millisecond}', // 订单号
      ppDescription: 'Product details  ${element.name} - ${element.price}', // 描述
      ppMerchantID: "Your Merchant Password", // 商户ID
      ppPassword: "Your Merchant Password", // 密码
      ppReturnURL: "Your Return Url", // 返回URL
    );

    // 开始支付流程
    jazzCashFlutter.startPayment(paymentDataModelV1: paymentDataModelV1, context: context).then((_response) {
      // 检查支付是否成功
      _checkIfPaymentSuccessfull(_response, element, context).then((res) {
        // res 是从返回URL接收到的响应
        return res;
      });

      setState(() {});
    });
  } catch (err) {
    print("Error in payment $err");
    // CommonFunctions.CommonToast(
    //   message: "Error in payment $err",
    // );
    return false;
  }
}

示例代码

以下是完整的示例代码,展示了如何使用 jazzcash_flutter 插件进行支付。

import 'package:flutter/material.dart';
import 'package:jazzcash_flutter/jazzcash_flutter.dart';

// 产品模型类
class ProductModel {
  String? productName;
  String? productPrice;

  ProductModel(this.productName, this.productPrice);
}

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Jazzcash Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  String paymentStatus = "pending";
  ProductModel productModel = ProductModel("Product 1", "100");
  String integritySalt = "Your Integrity salt";
  String merchantID = "Your Merchant Id";
  String merchantPassword = "Your Merchant Password";
  String transactionUrl = "Your Return Url";

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("JazzCash Flutter Example"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text("Product Name : ${productModel.productName}"),
            Text("Product Price : ${productModel.productPrice}"),
            ElevatedButton(
              onPressed: () {
                _payViaJazzCash(productModel, context);
              },
              child: const Text("Purchase Now !")
            )
          ],
        ),
      ),
    );
  }

  Future _payViaJazzCash(ProductModel element, BuildContext c) async {
    try {
      // 初始化 JazzCashFlutter 实例
      JazzCashFlutter jazzCashFlutter = JazzCashFlutter(
        merchantId: merchantID,
        merchantPassword: merchantPassword,
        integritySalt: integritySalt,
        isSandbox: true,
      );

      // 获取当前日期时间
      DateTime date = DateTime.now();

      // 创建支付数据模型
      JazzCashPaymentDataModelV1 paymentDataModelV1 = JazzCashPaymentDataModelV1(
        ppAmount: '${element.productPrice}', // 支付金额
        ppBillReference: 'refbill${date.year}${date.month}${date.day}${date.hour}${date.millisecond}', // 订单号
        ppDescription: 'Product details  ${element.productName} - ${element.productPrice}', // 描述
        ppMerchantID: merchantID, // 商户ID
        ppPassword: merchantPassword, // 密码
        ppReturnURL: transactionUrl, // 返回URL
      );

      // 开始支付流程
      jazzCashFlutter.startPayment(paymentDataModelV1: paymentDataModelV1, context: context).then((_response) {
        print("response from jazzcash $_response");

        // _checkIfPaymentSuccessfull(_response, element, context).then((res) {
        //   // res 是从返回URL接收到的响应
        //   return res;
        // });

        setState(() {});
      });
    } catch (err) {
      print("Error in payment $err");
      // CommonFunctions.CommonToast(
      //   message: "Error in payment $err",
      // );
      return false;
    }
  }
}

更多关于Flutter支付集成插件jazzcash_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter支付集成插件jazzcash_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成和使用jazzcash_flutter插件进行支付的示例代码。jazzcash_flutter是一个Flutter插件,用于集成JazzCash支付网关。

前提条件

  1. 确保你已经安装了Flutter和Dart开发环境。
  2. 确保你已经在Firebase或任何其他后端服务中配置好了支付相关的API密钥和配置。

步骤一:添加依赖

在你的pubspec.yaml文件中添加jazzcash_flutter依赖:

dependencies:
  flutter:
    sdk: flutter
  jazzcash_flutter: ^最新版本号  # 请替换为最新版本号

然后运行flutter pub get来获取依赖。

步骤二:配置Android和iOS

Android

  1. android/app/src/main/AndroidManifest.xml中确保你有互联网权限:

    <uses-permission android:name="android.permission.INTERNET" />
    
  2. android/app/build.gradle文件中,确保你的minSdkVersiontargetSdkVersion满足JazzCash SDK的要求。

iOS

  1. ios/Runner/Info.plist中添加必要的权限配置,如互联网访问权限。

步骤三:初始化并使用JazzCash支付

在你的Flutter项目中,初始化并使用JazzCash支付插件。以下是一个简单的示例代码:

import 'package:flutter/material.dart';
import 'package:jazzcash_flutter/jazzcash_flutter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: PaymentScreen(),
    );
  }
}

class PaymentScreen extends StatefulWidget {
  @override
  _PaymentScreenState createState() => _PaymentScreenState();
}

class _PaymentScreenState extends State<PaymentScreen> {
  final JazzCash _jazzCash = JazzCash();

  void _makePayment() async {
    try {
      // 替换以下参数为你的实际值
      String merchantId = "your_merchant_id";
      String storeId = "your_store_id";
      String secretKey = "your_secret_key";
      double amount = 100.0; // 支付金额
      String description = "Payment for goods";
      String currency = "PKR"; // 货币类型
      String phoneNumber = "customer_phone_number"; // 顾客手机号
      String email = "customer_email@example.com"; // 顾客邮箱

      Map<String, dynamic> paymentDetails = {
        "merchant_id": merchantId,
        "store_id": storeId,
        "secret_key": secretKey,
        "amount": amount,
        "description": description,
        "currency": currency,
        "phone_number": phoneNumber,
        "email": email,
      };

      String response = await _jazzCash.initPayment(paymentDetails);

      // 处理响应
      if (response != null) {
        print("Payment response: $response");
        // 根据响应结果更新UI或处理支付成功/失败逻辑
      }
    } catch (e) {
      print("Payment error: $e");
      // 处理错误
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('JazzCash Payment Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _makePayment,
          child: Text('Make Payment'),
        ),
      ),
    );
  }
}

注意事项

  1. 替换示例代码中的参数(如merchantIdstoreIdsecretKey等)为你的实际JazzCash支付网关配置。
  2. 确保你的服务器后端已经正确配置了JazzCash支付回调URL,以处理支付成功或失败的通知。
  3. 根据需要调整支付细节,如金额、描述、货币类型等。

调试和测试

在实际发布之前,请确保在测试环境中充分测试支付流程,包括成功支付和失败支付的场景。

希望这个示例代码能帮助你在Flutter项目中成功集成JazzCash支付插件。

回到顶部