flutter中如何使用alipay_kit_has_namespace插件

在Flutter项目中集成alipay_kit_has_namespace插件时遇到问题,按照文档配置后仍然无法正常调用支付宝支付功能。具体表现为:添加依赖后同步报错,提示命名空间冲突。请问正确的集成步骤是什么?是否需要额外配置AndroidManifest.xml或处理混淆规则?能否提供一个完整的支付调用示例代码?

2 回复

在Flutter中使用alipay_kit_has_namespace插件:

  1. 添加依赖到pubspec.yaml
  2. 导入包:import 'package:alipay_kit_has_namespace/alipay_kit_has_namespace.dart';
  3. 调用支付:AlipayKit.pay(orderString)
  4. 处理回调结果

需要配置Android和iOS的支付参数。

更多关于flutter中如何使用alipay_kit_has_namespace插件的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中使用 alipay_kit_has_namespace 插件进行支付宝支付,步骤如下:

1. 添加依赖

pubspec.yaml 文件中添加依赖:

dependencies:
  alipay_kit_has_namespace: ^版本号

运行 flutter pub get 安装。

2. 配置平台

Android 配置

  • AndroidManifest.xml 中添加权限:
<uses-permission android:name="android.permission.INTERNET" />
  • android/app/src/main/AndroidManifest.xml 中注册支付宝回调 Activity:
<activity
    android:name="com.alipay.sdk.app.H5PayActivity"
    android:configChanges="orientation|keyboardHidden|navigation|screenSize"
    android:exported="false"
    android:screenOrientation="behind" >
</activity>

iOS 配置

  • Info.plist 中添加 URL Types:
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>alipay</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>你的应用Scheme</string>
        </array>
    </dict>
</array>

3. 代码实现

import 'package:alipay_kit_has_namespace/alipay_kit_has_namespace.dart';

// 支付方法
Future<void> pay(String orderInfo) async {
  try {
    // 调用支付宝支付
    final result = await AlipayKit.hasNamespace.pay(
      orderInfo: orderInfo,
      scheme: '你的应用Scheme', // iOS 必需
    );
    
    // 处理支付结果
    if (result['resultStatus'] == '9000') {
      print('支付成功');
    } else {
      print('支付失败: ${result['memo']}');
    }
  } catch (e) {
    print('支付异常: $e');
  }
}

4. 处理回调(iOS)

AppDelegate.swift 中处理支付宝回调:

import alipay_kit_has_namespace

override func application(
  _ app: UIApplication,
  open url: URL,
  options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
  if AlipayKit.hasNamespace.handleOpen(url) {
    return true
  }
  return super.application(app, open: url, options: options)
}

注意事项

  • 确保 orderInfo 由服务端生成,避免客户端直接拼接支付参数。
  • iOS 的 URL Scheme 需要与支付宝开放平台配置一致。
  • 支付结果应以服务端异步通知为准。

完成以上步骤即可在 Flutter 应用中集成支付宝支付功能。

回到顶部