Flutter支付集成插件thawani_payment的使用
Flutter支付集成插件thawani_payment的使用
1. 插件简介
thawani_payment
是一个帮助你在Flutter应用中集成Thawani支付网关的插件。通过这个插件,你可以轻松地使用Thawani的Checkout API来实现支付功能。
2. 开发者信息
该插件由Nasr Al-Rahbi开发。
3. 环境要求
- Android: SDK 19+ 或 20+
- iOS: iOS 9+
4. 设置步骤
4.1. 添加依赖
在 pubspec.yaml
文件中添加 thawani_payment
依赖:
dependencies:
thawani_payment: <最新版本>
4.2. Android配置
确保在 android/app/build.gradle
文件中设置 minSdkVersion
为19或更高:
android {
defaultConfig {
minSdkVersion 19
}
}
5. 使用示例
5.1. 完整示例代码
以下是一个完整的示例代码,展示了如何在Flutter应用中使用 thawani_payment
插件进行支付。
import 'package:flutter/material.dart';
import 'package:thawani_payment/models/products.dart';
import 'package:thawani_payment/pay.dart';
import 'package:thawani_payment/viewmodel/thawani_customerdelete.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.green,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Thawani Payment Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SizedBox(
width: 200,
height: 50,
child: ElevatedButton(
onPressed: () {
Thawani.pay(
context,
// 是否允许保存支付卡
saveCard: true,
// 是否启用测试模式
testMode: true,
// Thawani API密钥
api: 'rRQ26GcsZzoEhbrP2HZvLYDbn9C9et',
// Thawani Publishable Key
pKey: 'HGvTMLDssJghr9tlN9gr4DVYt0qyBy',
// 商户ID
clintID: '123456',
// 错误处理回调
onError: (e) {
print(e);
},
// 商品列表
products: [
Product(name: "商品名称", quantity: 2, unitAmount: 1234)
],
// 创建会话成功回调
onCreate: (v) {
print(v.data);
},
// 用户取消支付回调
onCancelled: (v) {
print(v);
Navigator.push(context,
MaterialPageRoute(builder: (builder) => const C()));
},
// 支付成功回调
onPaid: (v) {
print(v);
Navigator.push(context,
MaterialPageRoute(builder: (builder) => const V()));
},
// 获取已保存客户ID回调
getSavedCustomer: (id) {
print(id);
},
// 创建新客户回调
onCreateCustomer: (data) {},
// 其他元数据
metadata: {
"order_id": "123",
"customer_id": "123",
"customer_name": "John Doe",
"customer_email": "s"
},
);
},
child: const Text("使用Thawani支付"),
),
),
const SizedBox(height: 50),
ElevatedButton(
onPressed: () async {
// 获取已保存的客户ID
print(await ThawaniCustomer.get());
},
child: const Text("获取已保存客户ID"),
),
const SizedBox(height: 50),
ElevatedButton(
onPressed: () {
// 删除已保存的客户ID
print(ThawaniCustomer.delete());
},
child: const Text("删除已保存客户ID"),
)
],
),
),
);
}
}
更多关于Flutter支付集成插件thawani_payment的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件thawani_payment的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成并使用thawani_payment
插件进行支付的代码示例。这个示例将展示如何设置插件、初始化支付会话以及处理支付结果。
1. 添加依赖
首先,你需要在pubspec.yaml
文件中添加thawani_payment
插件的依赖:
dependencies:
flutter:
sdk: flutter
thawani_payment: ^最新版本号 # 请替换为实际可用的最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置Android和iOS
确保你已经在Android和iOS项目中配置了必要的支付权限和设置。这通常包括在AndroidManifest.xml
中添加权限声明,以及在iOS的Info.plist
中添加相关配置。
3. 初始化支付会话
在你的Flutter应用中,你需要初始化一个支付会话。以下是一个简单的示例,展示如何创建和启动支付会话:
import 'package:flutter/material.dart';
import 'package:thawani_payment/thawani_payment.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Thawani Payment Integration'),
),
body: PaymentScreen(),
),
);
}
}
class PaymentScreen extends StatefulWidget {
@override
_PaymentScreenState createState() => _PaymentScreenState();
}
class _PaymentScreenState extends State<PaymentScreen> {
final ThawaniPayment _thawaniPayment = ThawaniPayment();
@override
Widget build(BuildContext context) {
return Center(
child: ElevatedButton(
onPressed: () async {
// 替换为实际的支付参数
final Map<String, dynamic> paymentParams = {
'merchantId': '你的商户ID',
'transactionId': '你的交易ID',
'amount': 100.0, // 交易金额,单位为最小货币单位(例如,对于阿联酋迪拉姆,1迪拉姆 = 100单位)
'currency': 'AED', // 交易货币
'description': '商品描述',
// 其他必要的支付参数
};
try {
final bool result = await _thawaniPayment.startPayment(paymentParams);
if (result) {
// 支付成功
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('支付成功')),
);
} else {
// 支付失败或取消
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('支付失败或取消')),
);
}
} catch (e) {
// 处理异常
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('支付过程中发生错误: $e')),
);
}
},
child: Text('发起支付'),
),
);
}
}
4. 处理支付回调(可选)
在某些情况下,你可能需要处理支付完成后的回调,例如更新UI或处理支付结果。thawani_payment
插件可能提供了回调接口,但具体实现取决于插件的版本和API设计。你可以查阅插件的官方文档或源代码以获取更多信息。
注意事项
- 确保你已经正确配置了Thawani支付的商户信息和密钥。
- 在生产环境中,不要硬编码敏感信息,如商户ID和密钥,应该使用安全的方式来存储和访问这些信息。
- 测试支付时,请使用测试环境以避免产生真实的交易费用。
希望这个示例能帮助你在Flutter项目中集成thawani_payment
插件。如果你遇到任何问题,建议查阅插件的官方文档或联系插件的维护者以获取帮助。