Flutter教程实现微信支付集成

在Flutter中集成微信支付时,如何正确配置Android和iOS端的开发环境?

调用微信支付SDK时出现"签名错误"提示,但签名参数和后台一致,该如何排查问题?

Flutter项目打包Release版本后,微信支付无法唤醒客户端,调试模式却正常,可能是什么原因导致的?

微信支付完成后,如何可靠地接收并验证支付结果回调?App被杀死后是否能收到回调?

有没有完整的Flutter微信支付插件推荐?官方维护的flutter_wechat_pub似乎年久失修,是否有更好的替代方案?

3 回复

作为屌丝程序员,教你用Flutter集成微信支付:

  1. 申请微信支付:首先注册微信开放平台账号,创建应用并获取AppID

  2. 配置Flutter项目

    • 添加flutter_wxpay插件到pubspec.yaml。
    • 配置Android的android/app/src/main/AndroidManifest.xml,添加微信的Scheme和Universal Links。
    • iOS需配置AppDelegate.m,注册微信SDK。
  3. 后端支持:调用微信统一下单接口,获取预支付交易会话标识prepay_id

  4. 前端调起支付

    WXPayOrder wxOrder = WXPayOrder(
      appId: "你的AppID",
      partnerId: "商户号",
      prepayId: "从后端获取的prepay_id",
      packageValue: "Sign=WXPay",
      nonceStr: "随机字符串",
      timeStamp: "时间戳",
      sign: "签名", // 自行生成
    );
    await WXPay().pay(wxOrder);
    
  5. 处理支付结果:通过onPayFinish监听支付结果,并同步给后端。

记住要妥善保管密钥,避免泄露。另外,多参考官方文档和案例,祝你成功!

更多关于Flutter教程实现微信支付集成的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


要集成微信支付到Flutter项目中,首先需要在微信公众平台注册成为开发者并创建应用获取AppID。以下是基本步骤:

  1. 添加Flutter的flutter_inappwebview插件用于打开微信授权页面。
  2. 配置Android和iOS平台的相关微信SDK。在Android中添加wxapi目录下的WXPayEntryActivity,iOS则需设置URL Schemes为weixin.
  3. 在服务器端完成统一下单接口调用,获取预支付交易会话标识(prepay_id)。
  4. 将prepay_id、商品信息等参数传递给客户端进行签名计算。
  5. 调用微信支付API发起支付请求。

具体代码示例:

import 'package:flutter_inappwebview/flutter_inappwebview.dart';

void launchWeChatPay(String appId, String partnerId, String prepayId, String packageValue,
    String nonceStr, String timeStamp, String sign) async {
  await InAppWebView.openUrlRequest(
    urlRequest: URLRequest(url: Uri.parse("weixin://pay")),
    postData: Uint8List.fromList(utf8.encode('{"appid":"$appId", ...}')), // 包含签名数据
  );
}

注意:这只是一个简化流程,实际开发时需严格遵循微信支付官方文档处理安全细节。

Flutter微信支付集成教程

1. 准备工作

首先需要注册微信开放平台账号并申请支付功能,获取以下信息:

  • AppId
  • 商户号(MCHID)
  • API密钥(API_KEY)

2. 添加依赖

在pubspec.yaml中添加微信支付插件:

dependencies:
  fluwx: ^3.x.x # 最新版本

然后运行flutter pub get

3. 配置Android/iOS

Android配置

AndroidManifest.xml中添加:

<activity
    android:name="net.sourceforge.simcpux.wxapi.WXPayEntryActivity"
    android:exported="true"
    android:launchMode="singleTop"/>

iOS配置

Info.plist中添加:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>weixin</string>
</array>

4. 初始化插件

import 'package:fluwx/fluwx.dart' as fluwx;

void initWeChatPay() async {
  await fluwx.register(appId: "your_wechat_appid");
}

5. 实现支付功能

Future<void> weChatPay(String prepayId, String nonceStr, String timeStamp, String sign) async {
  final result = await fluwx.pay(
    appId: "your_wechat_appid",
    partnerId: "your_mch_id", 
    prepayId: prepayId,
    packageValue: "Sign=WXPay",
    nonceStr: nonceStr,
    timeStamp: timeStamp,
    sign: sign,
  );
  
  if (result == fluwx.WeChatResponse.success) {
    // 支付成功
  } else {
    // 支付失败
  }
}

6. 处理支付结果

fluwx.weChatResponseEventHandler.listen((event) {
  if (event is fluwx.WeChatPaymentResponse) {
    if (event.errCode == 0) {
      // 支付成功
    } else {
      // 支付失败
    }
  }
});

注意事项

  1. 支付参数prepayId、nonceStr、timeStamp、sign需要从后端获取
  2. 测试时需要使用真实金额(0.01元)
  3. iOS需要配置Associated Domains
  4. 确保包名与微信开放平台注册的一致

建议将支付逻辑封装成单独的服务类,便于维护和复用。

回到顶部