Flutter支付集成插件payumoney_sdk的使用

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

Flutter支付集成插件payumoney_sdk的使用

介绍

payumoney_sdk 是一个用于在 Flutter 应用中集成 PayU Money 支付功能的新插件。

开始使用

本项目是一个 Flutter 插件包的起点,该插件包包含针对 Android 和/或 iOS 的平台特定实现代码。

示例代码

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

import 'package:flutter/material.dart';

import 'package:payumoney_sdk/payumoney_sdk.dart';

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final payu = PayumoneySdk();

  @override
  void initState() {
    super.initState();
    startPayment();
  }

  void startPayment() async {
    // 构建支付参数
    final data = await payu.buildPaymentParams(
        amount: "400.0", // 支付金额
        transactionId: "C2161646224785587", // 交易ID
        phone: "7899395319", // 用户手机号
        productInfo: "Nike shoes", // 商品信息
        firstName: "Badal Sharma", // 用户名
        email: "badal@gmail.com", // 用户邮箱
        hash: "2973e780893f5b3ff593cf92891a3763f20a9fb55c84c734d4e317727b75ccbae45d9f0da97e28c4521c03c144335c082c8b6045a296dccb24d1f5bc5063afd9", // 支付签名
        isProduction: false, // 是否为生产环境
        userCredentials: "7899395319", // 用户凭证
        merchantKey: "mWI8Vl", // 商户密钥
        salt: "cMDID7EG", // 盐值
        merchantName: "Siply Services Pvt Ltd." // 商户名称
    );

    // 在这里处理支付结果
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Payumoney SDK'), // 设置应用栏标题
        ),
        body: Center(
          child: Column(
            children: [
              SizedBox(height: 100), // 添加间距
              TextButton( // 创建按钮
                  onPressed: () {
                    startPayment(); // 触发支付流程
                  },
                  child: Text("Tap me") // 按钮文本
              )
            ],
          ),
        ),
      ),
    );
  }
}

步骤说明

  1. 导入库:

    import 'package:flutter/material.dart';
    import 'package:payumoney_sdk/payumoney_sdk.dart';
    
  2. 初始化插件:

    final payu = PayumoneySdk();
    
  3. 构建支付参数:

    final data = await payu.buildPaymentParams(
        amount: "400.0", // 支付金额
        transactionId: "C2161646224785587", // 交易ID
        phone: "7899395319", // 用户手机号
        productInfo: "Nike shoes", // 商品信息
        firstName: "Badal Sharma", // 用户名
        email: "badal@gmail.com", // 用户邮箱
        hash: "2973e780893f5b3ff593cf92891a3763f20a9fb55c84c734d4e317727b75ccbae45d9f0da97e28c4521c03c144335c082c8b6045a296dccb24d1f5bc5063afd9", // 支付签名
        isProduction: false, // 是否为生产环境
        userCredentials: "7899395319", // 用户凭证
        merchantKey: "mWI8Vl", // 商户密钥
        salt: "cMDID7EG", // 盐值
        merchantName: "Siply Services Pvt Ltd." // 商户名称
    );
    
  4. 触发支付:

    onPressed: () {
      startPayment();
    }
    

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

1 回复

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


当然,下面是一个关于如何在Flutter应用中集成payumoney_sdk插件的示例代码。payumoney_sdk是一个用于集成PayUmoney支付的Flutter插件。请注意,实际使用时,你需要替换示例代码中的API密钥和其他敏感信息。

步骤 1: 添加依赖

首先,你需要在pubspec.yaml文件中添加payumoney_sdk依赖:

dependencies:
  flutter:
    sdk: flutter
  payumoney_sdk: ^最新版本号  # 请替换为实际的最新版本号

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

步骤 2: 配置PayUmoney参数

在你的Flutter项目中,创建一个新的Dart文件(例如payumoney_config.dart)来存储PayUmoney的配置信息:

// payumoney_config.dart
class PayUmoneyConfig {
  static const String merchantKey = '你的merchantKey';
  static const String merchantSalt = '你的merchantSalt';
  static const String baseUrl = 'https://test.payu.in'; // 生产环境请使用 https://secure.payu.in
}

步骤 3: 集成支付功能

在你的主页面或支付页面,使用payumoney_sdk进行支付集成。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:payumoney_sdk/payumoney_sdk.dart';
import 'payumoney_config.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter PayUmoney Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: PayUMoneyPage(),
    );
  }
}

class PayUMoneyPage extends StatefulWidget {
  @override
  _PayUMoneyPageState createState() => _PayUMoneyPageState();
}

class _PayUMoneyPageState extends State<PayUMoneyPage> {
  void _initiatePayment() async {
    try {
      String mid = PayUmoneyConfig.merchantKey;
      String key = PayUmoneyConfig.merchantSalt;
      String hash = generateHash(mid, key, '100.00', 'INR', 'productinfo', 'firstname', 'email@example.com', '');
      String txnid = DateTime.now().millisecondsSinceEpoch.toString();
      
      PayUMoneyResponse response = await PayUMoney.startPayment(
        key: key,
        merchantId: mid,
        amount: '100.00',
        currencyCode: 'INR',
        productId: 'productinfo',
        firstName: 'firstname',
        email: 'email@example.com',
        phoneNumber: '',
        udf1: '',
        udf2: '',
        udf3: '',
        udf4: '',
        udf5: '',
        pgHost: PayUmoneyConfig.baseUrl,
        successUrl: 'https://yourwebsite.com/success',
        failureUrl: 'https://yourwebsite.com/failure',
        txnId: txnid,
        hash: hash,
        sUrl: 'https://yourwebsite.com/surl',
        fUrl: 'https://yourwebsite.com/furl',
      );

      print('Payment response: ${response.responseCode} - ${response.responseMessage}');
    } catch (e) {
      print('Error initiating payment: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('PayUmoney Integration Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _initiatePayment,
          child: Text('Initiate Payment'),
        ),
      ),
    );
  }
}

// 生成hash值的函数(根据PayUmoney的文档实现)
String generateHash(String key, String salt, String amount, String productInfo, String firstName, String email, String udf1, String udf2) {
  String string1 = "${key}|${txnid}|${amount}|${productInfo}|${firstName}|${email}|${udf1}|${udf2}|${salt}";
  List<int> values = string1.codeUnits;
  int hash = 0;
  for (int i = 0; i < values.length; i++) {
    hash = hash + values[i];
    hash = hash % 1000000007;
  }
  return hash.toRadixString(16).padLeft(8, '0').toUpperCase();
}

注意事项

  1. API密钥和盐值:确保你使用的是从PayUmoney获取的正确的merchantKeymerchantSalt
  2. 支付URL:测试环境和生产环境的URL不同,测试时使用https://test.payu.in,生产环境使用https://secure.payu.in
  3. Hash生成generateHash函数用于生成支付请求的hash值,确保按照PayUmoney的文档正确实现。
  4. 回调URLsuccessUrlfailureUrl是支付成功或失败后重定向的URL,确保这些URL在你的服务器上有效。

这个示例代码展示了如何在Flutter应用中集成PayUmoney支付。实际项目中,你可能需要根据具体需求进行调整和扩展。

回到顶部