Flutter 微信支付接入实战
在Flutter中接入微信支付时,如何正确配置Android和iOS端的相关参数?
遇到微信支付返回-1(通用错误),但日志没有详细错误信息,该如何排查具体原因?
Flutter项目调用微信支付成功后,如何可靠地验证支付结果?是否需要后端参与校验?
微信支付SDK在iOS端出现"未安装微信"的提示(已确认微信已安装),可能是什么原因导致的?
在Flutter中处理微信支付的回调时,如何区分用户主动取消支付和真正的支付失败情况?
作为一个屌丝程序员,分享下自己的经验。首先你需要申请微信支付商户号并配置好API密钥。然后在Flutter项目中使用flutter_inappwebview
加载微信支付的H5页面来完成支付,这是最简单的方式。
如果想更原生一点,可以使用flutter_wechat
插件调用微信SDK。步骤如下:
- 配置好Android和iOS的微信开放平台应用信息。
- 调起支付时,先通过后端生成预支付交易单,并返回相关信息。
- 在Flutter端调用插件传递参数,调起微信支付。
- 支付完成后,微信会回调到你的服务器通知支付结果。
注意:一定要做好签名验证,防止被篡改。另外测试环境和正式环境要分开处理,别混淆了。整个过程需要前后端配合,前端负责调起支付,后端负责生成订单和签名。虽然麻烦点,但能提升用户体验。
更多关于Flutter 微信支付接入实战的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
作为屌丝程序员,我来分享下接入微信支付的步骤:
首先申请微信开放平台账号,创建应用并获取AppID。
- 添加Flutter插件:weixin_flutter。
- 配置Android部分:在build.gradle里添加微信SDK依赖,注册wxapi模块,在AndroidManifest.xml配置appId。
- 配置iOS部分:在Podfile添加pod ‘WXOpenApi’,运行pod install,设置URL Types里的URL Schemes为wx开头的AppID。
- 调起支付:生成订单后调用统一下单接口获取prepay_id,然后通过weixin_flutter调起支付。
- 支付结果通知:服务端处理微信异步通知,返回success给微信。
- 前端轮询查询订单状态,更新UI。
记得测试时用沙箱环境。这个过程需要耐心调试,遇到问题多看官方文档和社区问答。
Flutter 微信支付接入主要步骤如下(以官方插件为例):
- 添加依赖
dependencies:
fluwx: ^3.x.x # 使用最新版本
- 配置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>
- 初始化SDK
import 'package:fluwx/fluwx.dart' as fluwx;
await fluwx.registerWxApi(
appId: "你的微信AppID",
universalLink: "iOS Universal Link");
- 支付调用示例
final result = await fluwx.payWithWeChat(
appId: "AppID",
partnerId: "商户号",
prepayId: "预支付ID",
packageValue: "Sign=WXPay",
nonceStr: "随机字符串",
timeStamp: "时间戳",
sign: "签名");
if (result == fluwx.WeChatPaymentResult.success) {
// 支付成功
} else {
// 支付失败
}
关键注意事项:
- 签名需服务端生成(前端不要存储密钥)
- iOS必须配置Universal Link
- 支付结果建议通过服务端查询确认
- 测试需要使用真实商户号
建议流程:客户端获取预支付参数 → 调用支付 → 服务端验证支付结果
完整文档参考:fluwx pub.dev