Flutter 微信支付接入实战

在Flutter中接入微信支付时,如何正确配置Android和iOS端的相关参数?

遇到微信支付返回-1(通用错误),但日志没有详细错误信息,该如何排查具体原因?

Flutter项目调用微信支付成功后,如何可靠地验证支付结果?是否需要后端参与校验?

微信支付SDK在iOS端出现"未安装微信"的提示(已确认微信已安装),可能是什么原因导致的?

在Flutter中处理微信支付的回调时,如何区分用户主动取消支付和真正的支付失败情况?

3 回复

作为一个屌丝程序员,分享下自己的经验。首先你需要申请微信支付商户号并配置好API密钥。然后在Flutter项目中使用flutter_inappwebview加载微信支付的H5页面来完成支付,这是最简单的方式。

如果想更原生一点,可以使用flutter_wechat插件调用微信SDK。步骤如下:

  1. 配置好Android和iOS的微信开放平台应用信息。
  2. 调起支付时,先通过后端生成预支付交易单,并返回相关信息。
  3. 在Flutter端调用插件传递参数,调起微信支付。
  4. 支付完成后,微信会回调到你的服务器通知支付结果。

注意:一定要做好签名验证,防止被篡改。另外测试环境和正式环境要分开处理,别混淆了。整个过程需要前后端配合,前端负责调起支付,后端负责生成订单和签名。虽然麻烦点,但能提升用户体验。

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


作为屌丝程序员,我来分享下接入微信支付的步骤:

首先申请微信开放平台账号,创建应用并获取AppID。

  1. 添加Flutter插件:weixin_flutter。
  2. 配置Android部分:在build.gradle里添加微信SDK依赖,注册wxapi模块,在AndroidManifest.xml配置appId。
  3. 配置iOS部分:在Podfile添加pod ‘WXOpenApi’,运行pod install,设置URL Types里的URL Schemes为wx开头的AppID。
  4. 调起支付:生成订单后调用统一下单接口获取prepay_id,然后通过weixin_flutter调起支付。
  5. 支付结果通知:服务端处理微信异步通知,返回success给微信。
  6. 前端轮询查询订单状态,更新UI。

记得测试时用沙箱环境。这个过程需要耐心调试,遇到问题多看官方文档和社区问答。

Flutter 微信支付接入主要步骤如下(以官方插件为例):

  1. 添加依赖
dependencies:
  fluwx: ^3.x.x  # 使用最新版本
  1. 配置Android/iOS
  • Android:在AndroidManifest.xml添加
<activity
    android:name="com.tencent.mm.opensdk.openapi.WXAPIFrame"
    android:exported="true"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />
  • iOS:在Info.plist添加
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>weixin</string>
    <string>weixinULAPI</string>
</array>
  1. 初始化SDK
import 'package:fluwx/fluwx.dart' as fluwx;

await fluwx.registerWxApi(
    appId: "你的微信AppID",
    universalLink: "iOS Universal Link");
  1. 支付调用示例
final result = await fluwx.payWithWeChat(
    appId: "AppID",
    partnerId: "商户号",
    prepayId: "预支付ID",
    packageValue: "Sign=WXPay",
    nonceStr: "随机字符串",
    timeStamp: "时间戳",
    sign: "签名");

if (result == fluwx.WeChatPaymentResult.success) {
    // 支付成功
} else {
    // 支付失败
}

关键注意事项:

  1. 签名需服务端生成(前端不要存储密钥)
  2. iOS必须配置Universal Link
  3. 支付结果建议通过服务端查询确认
  4. 测试需要使用真实商户号

建议流程:客户端获取预支付参数 → 调用支付 → 服务端验证支付结果

完整文档参考:fluwx pub.dev

回到顶部