Flutter支付集成插件payumoney_sdk的使用
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") // 按钮文本
)
],
),
),
),
);
}
}
步骤说明
-
导入库:
import 'package:flutter/material.dart'; import 'package:payumoney_sdk/payumoney_sdk.dart';
-
初始化插件:
final payu = PayumoneySdk();
-
构建支付参数:
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." // 商户名称 );
-
触发支付:
onPressed: () { startPayment(); }
更多关于Flutter支付集成插件payumoney_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于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();
}
注意事项
- API密钥和盐值:确保你使用的是从PayUmoney获取的正确的
merchantKey
和merchantSalt
。 - 支付URL:测试环境和生产环境的URL不同,测试时使用
https://test.payu.in
,生产环境使用https://secure.payu.in
。 - Hash生成:
generateHash
函数用于生成支付请求的hash值,确保按照PayUmoney的文档正确实现。 - 回调URL:
successUrl
和failureUrl
是支付成功或失败后重定向的URL,确保这些URL在你的服务器上有效。
这个示例代码展示了如何在Flutter应用中集成PayUmoney支付。实际项目中,你可能需要根据具体需求进行调整和扩展。