Flutter支付集成插件paymob_payment的使用
Flutter支付集成插件paymob_payment的使用
轻松地在您的Flutter应用中通过在线卡接受付款。

🚀 安装
在您的应用的pubspec.yaml
文件中的dependencies
部分添加以下内容:
paymob_payment : latest_version
🔨 初始化
使用单例初始化:
PaymobPayment.instance.initialize(
apiKey: "", // 从仪表板选择设置 -> 账户信息 -> API Key
integrationID: 123456, // 从仪表板选择开发者 -> 支付集成 -> 在线卡ID
iFrameID: 123456, // 从paymob选择开发者 -> iFrames
);
或者创建自己的实例:
final PaymobPayment paymobPayment = PaymobPayment();
paymobPayment.initialize(
apiKey: "",
integrationID: 123456,
iFrameID: 123456,
);
🔖 使用
调用pay
方法进行支付:
final PaymobResponse? response = await PaymobPayment.instance.pay(
context: context,
currency: "EGP",
amountInCents: "20000", // 200 EGP
onPayment: (response) => setState(() => this.response = response), // 可选
)
📨 PaymobResponse
变量 | 类型 | 描述 |
---|---|---|
success | bool | 指示交易是否成功 |
transactionID | String | 交易ID |
responseCode | String | 交易响应码 |
message | String | 描述交易的简短消息 |
🧪 测试卡片
✅ 成功支付
变量 | 描述 |
---|---|
卡号 | 5123456789012346 |
到期月 | 12 |
到期年 | 30 |
CVV | 123 |
❎ 拒绝支付
将CVV改为111或将到期年份改为20
注意: 您可能需要联系paymob支持来激活您的测试卡
示例代码
import 'package:flutter/material.dart';
import 'package:paymob_payment/paymob_payment.dart';
void main() {
// 测试信息,请勿在您的应用中使用
PaymobPayment.instance.initialize(
apiKey: "ZXlKaGJHY2lPaUpJVXpVeE1pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmpiR0Z6Y3lJNklrMWxjbU5vWVc1MElpd2libUZ0WlNJNkltbHVhWFJwWVd3aUxDSndjbTltYVd4bFgzQnJJam8yT1RBMk56VjkuX3lZTklHVGkwVXBLTmVzdjh0Q0dxc0ZlTmVkNnJobGFid2RoUXlJNFFuMlBUZ2k1Q3VyaGFxbmt2SGlrbXo1enBzaUdxYmhiU0pDU3VCTzA4bGxpcFE=",
integrationID: 3364826,
iFrameID: 728907,
);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
appBarTheme: const AppBarTheme(
color: Color(0xFF007aec),
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(const Color(0xFF007aec)),
)
),
),
debugShowCheckedModeBanner: false,
home: const PaymentView(),
);
}
}
class PaymentView extends StatefulWidget {
const PaymentView({super.key});
[@override](/user/override)
State<PaymentView> createState() => _PaymentViewState();
}
class _PaymentViewState extends State<PaymentView> {
PaymobResponse? response;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Paymob'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Image.network('https://paymob.com/images/logoC.png'),
const SizedBox(height: 24),
if (response != null)
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text("成功 ==》 ${response?.success}"),
const SizedBox(height: 8),
Text("交易ID ==》 ${response?.transactionID}"),
const SizedBox(height: 8),
Text("消息 ==》 ${response?.message}"),
const SizedBox(height: 8),
Text("响应码 ==》 ${response?.responseCode}"),
const SizedBox(height: 16),
],
),
ElevatedButton(
child: const Text('支付200 EGP'),
onPressed: () => PaymobPayment.instance.pay(
context: context,
currency: "EGP",
amountInCents: "20000",
onPayment: (response) => setState(() => this.response = response),
),
)
],
),
),
);
}
}
更多关于Flutter支付集成插件paymob_payment的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件paymob_payment的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中集成Paymob支付插件paymob_payment
可以通过以下几个步骤来实现。以下是一个基本的代码示例,展示如何在Flutter应用中使用该插件进行支付集成。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加paymob_payment
依赖:
dependencies:
flutter:
sdk: flutter
paymob_payment: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置Android和iOS
在集成支付插件之前,你需要确保在Android和iOS项目中配置了必要的支付信息。这通常涉及设置API密钥、商户ID等敏感信息。具体步骤请参考Paymob官方文档。
3. 初始化Paymob支付插件
在你的Flutter应用中,初始化Paymob支付插件并配置支付参数。以下是一个示例代码:
import 'package:flutter/material.dart';
import 'package:paymob_payment/paymob_payment.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Paymob Payment Example'),
),
body: Center(
child: ElevatedButton(
onPressed: _initiatePayment,
child: Text('Initiate Payment'),
),
),
),
);
}
Future<void> _initiatePayment() async {
// 初始化Paymob支付插件
final PaymobPayment paymobPayment = PaymobPayment();
// 配置支付参数
final PaymobPaymentConfig config = PaymobPaymentConfig(
publicKey: '你的公钥', // 替换为你的Paymob公钥
amount: 100.0, // 支付金额(单位为最小货币单位,例如对于美元,100.0代表1.00美元)
currency: 'USD', // 货币代码
orderId: '订单ID_${DateTime.now().millisecondsSinceEpoch}', // 订单ID,需要唯一
returnUrl: 'https://your-return-url.com', // 支付完成后的返回URL
notifyUrl: 'https://your-notify-url.com', // 支付通知URL
description: '商品描述', // 商品描述
statementDescriptor: '商品描述', // 账单描述(某些支付渠道可能需要)
);
try {
// 发起支付请求
final PaymobPaymentResponse response = await paymobPayment.startPayment(config);
// 处理支付响应
if (response.status == 'success') {
// 支付成功处理逻辑
print('支付成功: ${response.data}');
} else if (response.status == 'pending') {
// 支付待处理逻辑(例如3D Secure验证)
print('支付待处理: ${response.data}');
} else if (response.status == 'failed') {
// 支付失败处理逻辑
print('支付失败: ${response.errorMessage}');
} else if (response.status == 'canceled') {
// 支付取消处理逻辑
print('支付取消');
}
} catch (e) {
// 处理异常
print('支付过程中发生错误: $e');
}
}
}
4. 处理支付结果
在上面的代码中,我们处理了支付响应的几种可能状态:success
、pending
、failed
和canceled
。你需要根据你的业务需求来处理这些状态。
注意事项
- 安全性:不要在客户端代码中硬编码敏感信息,如公钥、私钥等。建议使用安全的存储方式,如Flutter的
keychain
或keystore
插件。 - 测试环境:在集成和测试支付功能时,建议使用Paymob的测试环境,以避免在生产环境中产生不必要的费用。
- 用户体验:确保支付流程的用户体验友好,包括清晰的支付指示、错误处理和支付结果反馈。
以上代码提供了一个基本的框架,用于在Flutter应用中集成Paymob支付插件。根据你的具体需求,你可能需要调整支付参数和处理逻辑。