Flutter支付集成插件gq_payment_flutter_sdk的使用
Flutter支付集成插件gq_payment_flutter_sdk的使用
概述
该SDK在ERP中集成了一个支付流程,使用户能够无缝地选择多种支付选项,并且具有更快的集成和部署时间。
安装
将GQPaymentSDK添加到您的pubspec.yaml
文件中:
dependencies:
gq_payment_sdk: ^latest_version
导入它
现在可以在Dart代码中使用以下导入语句:
import 'package:gq_payment_flutter_sdk/gq_payment_flutter_sdk.dart';
使用
初始化
创建一个GQPaymentSDK实例:
final GQPaymentSDK gqPaymentSDK = GQPaymentSDK();
结账方法
结账方法允许您处理支付,并包含全面的回调处理:
// 客户端ID、客户端密钥和GQ API密钥用于访问支付,这些信息将由GrayQuest共享。
// GrayQuest提供了两种环境,一种是用于开发者测试支付流程和响应的阶段环境,另一种是推送至生产的生产环境。此环境可以在客户端对象中设置。
final Map<String, dynamic> configObject = {
"auth": {
"client_id": "<client_id>",
"client_secret_key": "<client_secret_key>",
"gq_api_key": "<gq_api_key>"
},
"env": "<env>",
"student_id": "<student_id>",
"customer_number": "<customer_number>",
"pp_config": {"slug": "<slug>"},
"customization": {
"logo_url": "<logo_url>",
"theme_color": "<theme_color>"
},
"fee_headers": {
"fee_type_1": "<fee_type_1>",
"fee_type_2": "<fee_type_2>",
"fee_type_n": "<fee_type_n>",
},
"reference_id": "<reference_id>",
"emi_plan_id": "<emi_plan_id>",
"udf_details": {
"key_type_one": "<value_type_one>",
"key_type_two": "<value_type_two>",
"key_type_three": "<value_type_three>"
}
};
Map<String, dynamic> studentDetails = {
"student_first_name": "<student_first_name>",
"student_last_name": "<student_last_name>",
"student_type": "<student_type>",
};
Map<String, dynamic> customerDetails = {
"customer_first_name": "<customer_first_name>",
"customer_last_name": "<customer_last_name>",
"customer_dob": "<customer_dob>",
"customer_gender": "<customer_gender>",
"customer_email": "<customer_email>",
"customer_marital_status": "<customer_marital_status>",
};
Map<String, dynamic> kycDetails = {
"pan_number": "<pan_number>",
};
Map<String, dynamic> employmentDetails = {
"income_type": "<income_type>",
"employer_name": "<employer_name>",
"work_experience": "<work_experience>",
"net_monthly_salary": "<net_monthly_salary>",
"business_name": "<business_name>",
"business_turnover": "<business_turnover>",
"business_annual_income": "<business_annual_income>",
"business_category": "<business_category>",
"business_type": "<business_type>",
"business_description": "<business_description>",
"business_employee_count": "<business_employee_count>",
"years_of_current_business": "<years_of_current_business>",
"same_as_residence_address": "<same_as_residence_address>",
"addr_line_1": "<addr_line_1>",
"addr_line_2": "<addr_line_2>",
"city": "<city>",
"state": "<state>",
};
Map<String, dynamic> customization = {
"fee_helper_text": "<fee_helper_text>",
"logo_url": "<logo_url>",
"theme_color": "<theme_color>",
};
Map<String, dynamic> notes = {
"key": "<value>",
};
Map<String, dynamic> prefillData = {
"student_details": studentDetails,
"customer_details": customerDetails,
"kyc_details": kycDetails,
"employment_details": employmentDetails,
"customization": customization,
"notes": notes,
};
handleCancel(value) {
print("OnCancelled: $value ");
}
handleFailure(value) {
print("OnFailure: $value ");
}
handleSuccess(value) {
print("OnSuccess: $value ");
}
final jsonData = jsonEncode(configObject);
final prefill = jsonEncode(prefillData);
gqPaymentSDK.checkout(
context,
onCancel: handleCancel,
onFailed: handleFailure,
onSuccess: handleSuccess,
configData: jsonData,
options: prefill
);
参数
参数名 | 类型 | 描述 | 必需 |
---|---|---|---|
context | BuildContext | 当前应用程序上下文 | 是 |
onCancel | Function | 支付取消时的回调 | 否 |
onFailed | Function | 支付失败时的回调 | 否 |
onSuccess | Function | 支付成功时的回调 | 否 |
configData | String | 编码后的配置数据 | 是 |
options | String | 编码后的可选配置数据 | 否 |
错误处理
SDK提供了三个主要的回调方法来管理不同的支付场景:
onSuccess
: 在支付成功完成时触发onFailed
: 在支付遇到错误时触发onCancel
: 在用户取消支付过程时触发
最佳实践
- 在启动结账之前验证输入
- 始终处理所有三种回调场景
故障排查
- 确保所有必需的参数正确配置
- 检查网络连接
- 查看错误日志以获取特定失败原因
许可证
GQPaymentSDK 在 MIT 许可下可用。详情请参阅 LICENSE 文件。
支持
如需额外支持,请联系 GQPaymentSDK 支持团队,邮箱:support@grayquest.com
示例代码
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:gq_payment_flutter_sdk/gq_payment_flutter_sdk.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return const MaterialApp(home: PaymentScreen());
}
}
class PaymentScreen extends StatefulWidget {
const PaymentScreen({super.key});
[@override](/user/override)
State<PaymentScreen> createState() => _PaymentScreenState();
}
class _PaymentScreenState extends State<PaymentScreen> {
final GQPaymentSDK gqPaymentSDK = GQPaymentSDK();
handleSuccess(value) {
debugPrint("Success data: $value ");
}
handleFailure(value) {
debugPrint("Failed data: $value ");
}
handleCancel(value) {
debugPrint("Cancel data: $value ");
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: const Text("GrayQuest Payment Example"),
centerTitle: true,
),
body: Center(
child: ElevatedButton(
onPressed: () {
Map<String, dynamic> clientObject = {
// REQUIRED FIELD
"auth": {
"client_id": "<YOUR_CLIENT_ID>",
"client_secret_key": "<YOUR_SECRET_KEY>",
"gq_api_key": "<YOUR_GQ_API_KEY>"
},
"student_id": "<student_id>", // REQUIRED FIELD
"env": "test", // REQUIRED FIELD
"customer_number": "<customer_number>", // Optional field
"pp_config": {"slug": "<slug>"}, // Optional field
// Optional field
"customization": {
"logo_url": "<logo_url>",
"theme_color": "<theme_color>" // Must be 6 digit hex color code. ex. #2C3E50
},
// Optional field
"fee_headers": {
"fee_type_1": "<fee_type_1>",
"fee_type_2": "<fee_type_2>",
"fee_type_n": "<fee_type_n>",
},
};
final configData = jsonEncode(clientObject);
gqPaymentSDK.checkout(
context,
onCancel: handleCancel,
onFailed: handleFailure,
onSuccess: handleSuccess,
configData: configData,
);
},
child: const Text("Open GQ SDK")),
),
);
}
}
更多关于Flutter支付集成插件gq_payment_flutter_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件gq_payment_flutter_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
gq_payment_flutter_sdk
是一个用于在 Flutter 应用中集成支付功能的插件。以下是如何使用该插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 gq_payment_flutter_sdk
依赖。
dependencies:
flutter:
sdk: flutter
gq_payment_flutter_sdk: ^1.0.0 # 请确保使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 初始化 SDK
在你的 Flutter 应用中初始化支付 SDK。通常你会在 main.dart
或应用的入口文件中进行初始化。
import 'package:gq_payment_flutter_sdk/gq_payment_flutter_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化支付 SDK
await GQPaymentFlutterSdk.init(
appId: 'your_app_id',
appKey: 'your_app_key',
environment: Environment.SANDBOX, // 或 Environment.PRODUCTION
);
runApp(MyApp());
}
3. 设置支付监听器
在支付过程中,你需要监听支付结果。可以通过设置监听器来捕获支付成功、失败或取消的事件。
GQPaymentFlutterSdk.setPaymentListener(
onPaymentSuccess: (PaymentResult result) {
// 处理支付成功逻辑
print('Payment成功: ${result.transactionId}');
},
onPaymentFailure: (PaymentError error) {
// 处理支付失败逻辑
print('Payment失败: ${error.message}');
},
onPaymentCancel: () {
// 处理支付取消逻辑
print('Payment取消');
},
);
4. 发起支付请求
在需要支付的地方,调用 SDK 提供的支付方法。通常你需要提供订单信息、支付金额等。
void initiatePayment() async {
try {
await GQPaymentFlutterSdk.startPayment(
orderId: 'your_order_id',
amount: 100.0, // 支付金额
currency: 'USD', // 货币类型
productName: 'Test Product', // 产品名称
productDescription: 'This is a test product', // 产品描述
);
} catch (e) {
print('支付启动失败: $e');
}
}
5. 处理支付结果
根据支付监听器的回调,处理支付成功、失败或取消的逻辑。
6. 其他功能
gq_payment_flutter_sdk
可能还提供其他功能,如查询订单、退款等。你可以参考插件的文档或源代码来使用这些功能。
7. 调试与发布
在开发过程中,你可以使用沙盒环境进行测试。发布应用时,确保将环境切换到生产环境。
await GQPaymentFlutterSdk.init(
appId: 'your_app_id',
appKey: 'your_app_key',
environment: Environment.PRODUCTION, // 切换到生产环境
);
8. 注意事项
- 确保在
AndroidManifest.xml
和Info.plist
中添加必要的权限和配置。 - 确保在支付回调中处理订单状态,避免重复支付或其他异常情况。
9. 参考文档
详细的使用方法和 API 文档可以参考插件的官方文档或 GitHub 仓库。
示例代码
以下是一个完整的示例代码:
import 'package:flutter/material.dart';
import 'package:gq_payment_flutter_sdk/gq_payment_flutter_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await GQPaymentFlutterSdk.init(
appId: 'your_app_id',
appKey: 'your_app_key',
environment: Environment.SANDBOX,
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: PaymentScreen(),
);
}
}
class PaymentScreen extends StatelessWidget {
void initiatePayment() async {
try {
await GQPaymentFlutterSdk.startPayment(
orderId: 'your_order_id',
amount: 100.0,
currency: 'USD',
productName: 'Test Product',
productDescription: 'This is a test product',
);
} catch (e) {
print('支付启动失败: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('支付示例'),
),
body: Center(
child: ElevatedButton(
onPressed: initiatePayment,
child: Text('发起支付'),
),
),
);
}
}