Flutter支付集成插件fawry_sdk的使用
Flutter支付集成插件fawry_sdk的使用
目录
开始
添加Fawry SDK插件
首先,在pubspec.yaml
文件中添加Fawry SDK插件:
dependencies:
fawry_sdk: ^2.0.11
Android设置
在AndroidManifest.xml
中添加以下代码片段:
<application
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="Your App Label"
tools:replace="android:label">
<!-- Remove 'android:label' from tools:replace if not defining a label -->
</application>
更新build.gradle
中的最低SDK版本到21或更高:
android {
compileSdkVersion flutter.compileSdkVersion
minSdkVersion 21
// ...
}
注意: 确保升级Kotlin版本到1.9.0以确保与Fawry SDK兼容。
iOS设置
在Xcode中将最低iOS版本设置为12.1或更高,并在Podfile
末尾添加以下代码:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
end
end
end
Fawry SDK导入
在Dart文件开头导入必要的Fawry SDK包:
import 'package:fawry_sdk/fawry_sdk.dart';
import 'package:fawry_sdk/fawry_utils.dart';
import 'package:fawry_sdk/model/bill_item.dart';
import 'package:fawry_sdk/model/fawry_launch_model.dart';
import 'package:fawry_sdk/model/launch_customer_model.dart';
import 'package:fawry_sdk/model/launch_merchant_model.dart';
import 'package:fawry_sdk/model/payment_methods.dart';
import 'package:fawry_sdk/model/response.dart';
结果数据流
使用Flutter的流功能处理来自Fawry SDK的不同响应场景:
late StreamSubscription? _fawryCallbackResultStream;
@override
void initState() {
super.initState();
initSDKCallback();
}
@override
void dispose() {
_fawryCallbackResultStream?.cancel();
super.dispose();
}
Future<void> initSDKCallback() async {
try {
_fawryCallbackResultStream =
FawrySdk.instance.callbackResultStream().listen((event) {
setState(() {
ResponseStatus response = ResponseStatus.fromJson(jsonDecode(event));
handleResponse(response);
});
});
} catch (ex) {
debugPrint(ex.toString());
}
}
void handleResponse(ResponseStatus response) {
switch (response.status) {
case FawrySdk.RESPONSE_SUCCESS:
{
debugPrint('Message: ${response.message}');
debugPrint('Json Response: ${response.data}');
}
break;
case FawrySdk.RESPONSE_ERROR:
{
debugPrint('Error: ${response.message}');
}
break;
case FawrySdk.RESPONSE_PAYMENT_COMPLETED:
{
debugPrint(
'Payment Completed: ${response.message}, ${response.data}');
}
break;
}
}
SDK初始化
构建FawryLaunchModel
示例
BillItem item = BillItem(
itemId: 'Item1',
description: 'Book',
quantity: 6,
price: 50,
);
List<BillItem> chargeItems = [item];
LaunchCustomerModel customerModel = LaunchCustomerModel(
customerProfileId: '533518',
customerName: 'John Doe',
customerEmail: 'john.doe@xyz.com',
customerMobile: '+201000000000',
);
LaunchMerchantModel merchantModel = LaunchMerchantModel(
merchantCode: 'YOUR MERCHANT CODE',
merchantRefNum: FawryUtils.randomAlphaNumeric(10),
secureKey: 'YOUR SECURE KEY',
);
FawryLaunchModel model = FawryLaunchModel(
allow3DPayment: true,
chargeItems: chargeItems,
launchCustomerModel: customerModel,
launchMerchantModel: merchantModel,
skipLogin: true,
skipReceipt: true,
payWithCardToken: false,
paymentMethods: PaymentMethods.ALL,
);
String baseUrl = "https://atfawry.fawrystaging.com/";
启动支付
Future<void> startPayment() async {
await FawrySDK.instance.startPayment(
launchModel: model,
baseURL: baseUrl,
lang: FawrySDK.LANGUAGE_ENGLISH,
);
}
打开卡片管理器
Future<void> openCardsManager() async {
await FawrySDK.instance.openCardsManager(
launchModel: model,
baseURL: baseUrl,
lang: FawrySDK.LANGUAGE_ENGLISH,
);
}
自定义UI颜色
Android
在android > app > src > main > res > values
目录下创建colors.xml
文件并添加颜色值:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="fawry_blue">#6F61C0</color> <!-- 设置您的主色调十六进制代码 -->
<color name="fawry_yellow">#A084E8</color> <!-- 设置您的辅助色十六进制代码 -->
</resources>
iOS
在ios > Runner
目录下创建Style.plist
文件并添加颜色值:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>primaryColorHex</key>
<string>#6F61C0</string> <!-- 设置您的主色调十六进制代码 -->
<key>secondaryColorHex</key>
<string>#A084E8</string> <!-- 设置您的辅助色十六进制代码 -->
<key>tertiaryColorHex</key>
<string>#8BE8E5</string> <!-- 设置您的第三色调十六进制代码 -->
<key>headerColorHex</key>
<string>#6F61C0</string> <!-- 设置您的头部色调十六进制代码 -->
</dict>
</plist>
在Xcode中右键点击Runner
,选择“Add Files to ‘Runner’”,然后添加Style.plist
文件。
解决发布模式问题
如果在发布模式下遇到问题,可以在Android应用的build.gradle
中添加以下规则:
buildTypes {
release {
minifyEnabled false
shrinkResources false
// ...
}
}
更多关于Flutter支付集成插件fawry_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件fawry_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中集成fawry_sdk
支付插件,可以遵循以下步骤。这里假设你已经有一个Flutter项目,并且已经设置好基本的开发环境。fawry_sdk
是一个用于集成Fawry支付服务的Flutter插件。以下是如何在Flutter项目中集成和使用fawry_sdk
的示例代码。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加fawry_sdk
依赖:
dependencies:
flutter:
sdk: flutter
fawry_sdk: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
2. 导入插件
在你需要使用Fawry支付的Dart文件中导入插件:
import 'package:fawry_sdk/fawry_sdk.dart';
3. 初始化Fawry SDK
在调用支付功能之前,你可能需要初始化Fawry SDK。这通常包括设置一些必要的配置,如API密钥、商户ID等。但请注意,具体的初始化步骤和所需参数可能依赖于fawry_sdk
插件的具体实现和Fawry的官方文档。以下是一个假设的初始化示例:
void initFawry() {
// 假设Fawry SDK有一个初始化方法,这里仅为示例
// FawrySdk.initialize(apiKey: 'your_api_key', merchantId: 'your_merchant_id');
// 注意:上面的代码是假设的,实际使用时请参考fawry_sdk的文档
}
4. 发起支付请求
使用fawry_sdk
发起支付请求。以下是一个示例代码,演示如何调用支付功能:
void makePayment() async {
try {
// 创建支付请求参数,这里仅为示例
var paymentParams = {
'amount': '100.00', // 支付金额
'currency': 'EGP', // 货币类型
'orderReference': 'unique_order_id', // 订单唯一标识
'description': 'Product Description', // 商品描述
// 其他必要的参数...
};
// 调用支付方法,这里假设fawry_sdk提供了一个名为startPayment的方法
var result = await FawrySdk.startPayment(paymentParams: paymentParams);
if (result['status'] == 'success') {
// 支付成功处理逻辑
print('Payment successful!');
} else {
// 支付失败处理逻辑
print('Payment failed: ${result['message']}');
}
} catch (e) {
// 异常处理
print('Error making payment: $e');
}
}
5. 处理支付结果
支付结果的处理通常依赖于Fawry的回调机制。你可能需要在你的服务器端设置一个回调URL,以便Fawry在支付完成后通知你的服务器。然后,你的服务器可以更新订单状态,并通过你的应用的后端API通知客户端。
注意
- 上面的代码是基于假设的
fawry_sdk
插件API。实际使用时,请务必参考fawry_sdk
的官方文档和示例代码。 - 支付集成通常涉及敏感信息和金融交易,因此请确保遵循最佳安全实践,如使用HTTPS、验证支付回调等。
- 在发布应用之前,请在测试环境中彻底测试支付功能。
由于我无法直接访问fawry_sdk
的源代码和官方文档,以上代码仅作为示例,具体实现可能有所不同。请参考fawry_sdk
的官方文档以获取最新的API信息和实现细节。