Flutter支付集成插件paylink_payment的使用
Flutter支付集成插件paylink_payment的使用
概述
paylink_payment
是一个Flutter插件,旨在简化将Paylink支付网关集成到Flutter应用程序中。它提供了一种在Flutter应用内处理支付的简便方法。
功能特性
- 与Paylink支付网关轻松集成。
- 简化支付流程,仅需少量代码。
- 安全处理支付交易。
- 支持发票的创建、查询、取消等操作。
使用步骤
1. 安装插件
在项目的 pubspec.yaml
文件中添加依赖:
dependencies:
paylink_payment: ^2.0.2 # 请使用最新版本
2. 导入包
在Dart文件中导入 paylink_payment
包:
import 'package:paylink_payment/paylink_payment.dart';
3. 初始化Paylink实例
根据环境选择测试或生产模式进行初始化:
测试模式
paylink = PaylinkPayment.test(
context: context,
webViewTitle: 'Payment Screen', // 可选
textColor: Colors.white, // 可选
themeColor: Colors.blue, // 可选
);
生产模式
paylink = PaylinkPayment.production(
context: context,
apiId: '**************',
secretKey: '**************',
webViewTitle: 'Payment Screen', // 可选
textColor: Colors.white, // 可选
themeColor: Colors.blue, // 可选
);
4. 使用示例
打开支付表单
当按钮或其他动作触发时,使用 PaylinkPayment
类打开支付表单:
paylink.openPaymentForm(
transactionNo: '1713690519134',
onPaymentComplete: (PaylinkInvoice orderDetails) {
// 处理支付完成逻辑
},
onError: (Object error) {
// 处理支付错误逻辑
},
);
添加发票
paylink.addInvoice(
amount: 220.0,
clientMobile: '0512345678',
clientName: 'Mohammed',
orderNumber: '123456789',
callBackUrl: 'https://example.com',
products: [
PaylinkProduct(title: 'Book', price: 100, qty: 2),
PaylinkProduct(title: 'Pen', price: 2, qty: 10),
],
cancelUrl: 'https://example.com',
clientEmail: 'mohammed@test.com',
currency: 'SAR',
displayPending: true,
note: 'Test invoice',
smsMessage: 'URL: [SHORT_URL], Amount: [AMOUNT]',
supportedCardBrands: ['mada', 'visaMastercard', 'amex', 'tabby', 'tamara', 'stcpay', 'urpay'],
).then((PaylinkInvoice orderDetails) {
// 处理成功响应
}).onError((error, stackTrace) {
// 处理错误响应
});
查询发票详情
paylink.getInvoice('1713690519134').then((PaylinkInvoice orderDetails) {
// 处理成功响应
}).onError((error, stackTrace) {
// 处理错误响应
});
取消发票
paylink.cancelInvoice('1713690519134').then((bool result) {
// 处理成功响应
}).onError((error, stackTrace) {
// 处理错误响应
});
完整示例Demo
以下是一个完整的示例应用,展示了如何在Flutter应用中集成 paylink_payment
插件。
import 'package:flutter/material.dart';
import 'package:paylink_payment/paylink_payment.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(primarySwatch: Colors.blue),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String? paymentResponseMessage;
late PaylinkPayment paylink;
@override
void initState() {
super.initState();
paylinkInitialize();
}
void paylinkInitialize() {
paylink = PaylinkPayment.test(
context: context,
webViewTitle: 'Payment Screen',
textColor: Colors.white,
themeColor: Colors.blue,
);
}
void addInvoice() {
paylink.addInvoice(
amount: 220.0,
clientMobile: '0512345678',
clientName: 'Mohammed',
orderNumber: '123456789',
callBackUrl: 'https://example.com',
products: [
PaylinkProduct(title: 'Book', price: 100, qty: 2),
PaylinkProduct(title: 'Pen', price: 2, qty: 10),
],
cancelUrl: 'https://example.com',
clientEmail: 'mohammed@test.com',
currency: 'SAR',
displayPending: true,
note: 'Test invoice',
smsMessage: 'URL: [SHORT_URL], Amount: [AMOUNT]',
supportedCardBrands: [
'mada',
'visaMastercard',
'amex',
'tabby',
'tamara',
'stcpay',
'urpay'
],
).then((PaylinkInvoice orderDetails) {
print('Invoice added successfully: $orderDetails');
}).onError((error, stackTrace) {
print('Error adding invoice: $error');
});
}
void getInvoice(String transactionNo) {
paylink.getInvoice(transactionNo).then((PaylinkInvoice orderDetails) {
print('Invoice details: $orderDetails');
}).onError((error, stackTrace) {
print('Error getting invoice: $error');
});
}
void checkout(String transactionNo) {
paylink.openPaymentForm(
transactionNo: transactionNo,
onPaymentComplete: (PaylinkInvoice orderDetails) {
print('Payment completed: $orderDetails');
},
onError: (error) {
print('Payment error: $error');
},
);
}
void cancelInvoice(String transactionNo) {
paylink.cancelInvoice(transactionNo).then((bool result) {
print(result ? 'Invoice canceled successfully' : 'Failed to cancel invoice');
}).onError((error, stackTrace) {
print('Error canceling invoice: $error');
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Paylink Payment Demo'),
actions: [
IconButton(
icon: const Icon(Icons.add),
onPressed: addInvoice,
),
],
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () => getInvoice('1713690519134'),
child: const Text('Get Invoice'),
),
ElevatedButton(
onPressed: () => checkout('1713690519134'),
child: const Text('Checkout Invoice'),
),
ElevatedButton(
onPressed: () => cancelInvoice('1713690519134'),
child: const Text('Cancel Invoice'),
),
],
),
),
);
}
}
通过以上步骤和示例代码,您可以快速地将 paylink_payment
插件集成到您的Flutter应用中,并实现支付功能。
更多关于Flutter支付集成插件paylink_payment的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件paylink_payment的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成并使用paylink_payment
插件的示例代码。这个插件通常用于处理支付功能,但请注意,具体实现可能会因插件版本和支付平台的要求而有所不同。
首先,确保你已经在pubspec.yaml
文件中添加了paylink_payment
依赖:
dependencies:
flutter:
sdk: flutter
paylink_payment: ^最新版本号 # 请替换为实际最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中,你可以按照以下步骤进行支付功能的集成:
- 导入插件:
在你的Dart文件中导入paylink_payment
插件:
import 'package:paylink_payment/paylink_payment.dart';
- 配置支付参数:
根据你的支付平台要求,配置支付所需的参数。以下是一个示例配置:
Map<String, dynamic> paymentData = {
'amount': '100.00', // 支付金额
'currency': 'USD', // 货币类型
'description': 'Test Payment', // 支付描述
// 其他可能需要的参数,如支付ID、商品信息等,根据paylink_payment插件的文档进行配置
};
- 初始化并启动支付流程:
使用PaylinkPayment
类来初始化并启动支付流程:
void initiatePayment() async {
try {
// 初始化PaylinkPayment实例(如果需要的话,根据插件文档)
// PaylinkPayment paylinkPayment = PaylinkPayment(); // 如果插件提供了构造函数
// 调用支付方法(假设插件提供了一个名为startPayment的方法)
bool result = await PaylinkPayment.startPayment(paymentData: paymentData);
if (result) {
print('Payment successful');
// 处理支付成功后的逻辑
} else {
print('Payment failed or cancelled');
// 处理支付失败或取消的逻辑
}
} catch (e) {
print('Error initiating payment: $e');
// 处理异常
}
}
注意:上面的PaylinkPayment.startPayment
方法及其参数是假设的,因为实际的插件API可能会有所不同。你需要参考paylink_payment
插件的官方文档来获取正确的API调用方式和参数。
- 在UI中触发支付:
在你的Flutter UI中,添加一个按钮或其他触发元素来调用initiatePayment
方法:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Payment Integration'),
),
body: Center(
child: ElevatedButton(
onPressed: initiatePayment,
child: Text('Pay Now'),
),
),
),
);
}
}
这个示例展示了如何在Flutter应用中集成paylink_payment
插件并启动支付流程。但是,请注意,由于插件的具体实现和API可能会随着版本更新而变化,因此强烈建议你查阅paylink_payment
插件的官方文档以获取最新的集成指南和API参考。