Flutter支付集成插件fawry_sdk的使用

发布于 1周前 作者 zlyuanteng 来自 Flutter

Flutter支付集成插件fawry_sdk的使用

目录

  1. 开始
  2. SDK初始化
  3. 自定义UI颜色
  4. 解决发布模式问题
  5. 示例项目

开始

添加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

1 回复

更多关于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信息和实现细节。

回到顶部