Flutter支付集成插件flutter_pay_orc的使用
flutter_pay_orc
一个用于orc支付的Flutter插件。
开发者:PayOrc
入门指南
关于SDK
遵循以下步骤:
步骤 1:在应用程序初始化时指定环境
在您的应用程序中,在初始化时指定环境。
void main() {
FlutterPayOrc.initialize(
merchantKey: 'your-merchant-key', // 更新您的商户密钥。
merchantSecret: 'your-merchant-secret', // 更新您的商户密钥。
environment: Environment.test, // 切换到Environment.production以启用生产环境
);
runApp(const MyApp());
}
步骤 2:实现createPaymentWithWidget方法,该方法将在视图上自动推送
在应用程序中调用此方法:
await FlutterPayOrc.instance.createPaymentWithWidget(
context: context,
request: createPayOrcPaymentRequest(), // 创建支付请求对象
onPopResult: (String? pOrderId) async {
await _fetchTransaction(pOrderId); // 获取交易状态
},
errorResult: (message) {
// 显示错误提示给用户
});
示例代码:创建支付请求对象
PayOrcPaymentRequest(
data: Data(
className: PayOrcClass.ecom.name.toUpperCase(),
action: PayOrcAction.sale.name.toUpperCase(),
captureMethod: PayOrcCaptureMethod.manual.name.toUpperCase(),
paymentToken: "",
orderDetails: OrderDetails(
mOrderId: "1234",
amount: "500",
convenienceFee: "0",
quantity: "1",
currency: "AED", // 应动态设置货币
description: "",
),
customerDetails: CustomerDetails(
mCustomerId: "123",
name: "John Doe",
email: "johndoe@example.com",
mobile: "987654321",
code: "971", // 不应包含+号
),
billingDetails: BillingDetails(
addressLine1: "address 1",
addressLine2: "address 2",
city: "Amarpur",
province: "Bihar", // 州
country: "IN", // 应为两位国家代码
pin: "482008",
),
shippingDetails: ShippingDetails(
shippingName: "John Doe",
shippingEmail: "",
shippingCode: "91", // 不应包含+号
shippingMobile: "9876543210",
addressLine1: "address 1",
addressLine2: "address 2",
city: "Mumbai",
province: "Maharashtra", // 州
country: "IN", // 应为两位国家代码
pin: "482005",
locationPin: "https://www.google.com/maps?q=24.227923067092433,80.07790793685352",
shippingCurrency: "AED", // 应动态设置货币
shippingAmount: "10",
),
urls: Urls(
success: "",
cancel: "",
failure: "",
),
parameters: [
{
"alpha": "",
},
{
"beta": "",
},
{
"gamma": "",
},
{
"delta": "",
},
{
"epsilon": "",
}
],
customData: [
{
"alpha": "",
},
{
"beta": "",
},
{
"gamma": "",
},
{
"delta": "",
},
{
"epsilon": "",
}
],
),
);
注意事项:
- 所有字段均为必填项。
- 如果某个字段没有数据,请将其作为空字符串发送,而不是传递null。
- 类、操作和捕获方法为枚举类型。
- 参数和自定义数据将是HashMap的列表。
步骤 3:获取支付交易状态
通过createPayment响应中的p_order_id获取支付交易状态。
在应用程序中调用此方法:
final transaction = await FlutterPayOrc.instance.fetchPaymentTransaction(
orderId: pOrderId.toString(),
onLoadingResult: (loading) {
// 使用此布尔值管理加载状态
},
errorResult: (message) {
// 显示错误提示给用户
},
);
if (transaction != null) {
// 将交易信息更新到商户服务器
FlutterPayOrc.instance.clearData();
}
步骤 4:清除本地数据
调用以下方法清除本地数据。
在应用程序中调用此方法:
FlutterPayOrc.instance.clearData();
更多关于Flutter支付集成插件flutter_pay_orc的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件flutter_pay_orc的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_pay_orc
是一个用于在 Flutter 应用中集成支付功能的插件。它支持多种支付方式,如支付宝、微信支付等。以下是如何使用 flutter_pay_orc
插件的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 flutter_pay_orc
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_pay_orc: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 配置支付平台
根据你使用的支付平台(如支付宝、微信支付等),你可能需要在项目中配置相应的平台设置。
Android 配置
在 android/app/src/main/AndroidManifest.xml
中添加必要的权限和支付配置:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
iOS 配置
在 ios/Runner/Info.plist
中添加必要的权限和支付配置:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
3. 初始化支付插件
在你的 Flutter 应用中初始化 flutter_pay_orc
插件:
import 'package:flutter_pay_orc/flutter_pay_orc.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await FlutterPayOrc.initialize();
runApp(MyApp());
}
4. 发起支付请求
使用 flutter_pay_orc
插件发起支付请求。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:flutter_pay_orc/flutter_pay_orc.dart';
class PaymentPage extends StatelessWidget {
Future<void> _pay() async {
try {
// 发起支付请求
final result = await FlutterPayOrc.pay(
amount: '100.00', // 支付金额
currency: 'CNY', // 货币类型
paymentMethod: PaymentMethod.alipay, // 支付方式
orderId: '123456', // 订单ID
description: 'Test Payment', // 订单描述
);
// 处理支付结果
if (result.status == PaymentStatus.success) {
print('Payment successful');
} else {
print('Payment failed: ${result.message}');
}
} catch (e) {
print('Error: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Payment'),
),
body: Center(
child: ElevatedButton(
onPressed: _pay,
child: Text('Pay Now'),
),
),
);
}
}