wftpay

A new flutter plugin project.

Getting Started

This project is a starting point for a Flutter plug-in package, a specialized package that includes platform-specific implementation code for Android and/or iOS.

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

TODO

  • 优能配置 使用优能提供的参数(appId、mch_id和key),无法成功吊起支付,提示支付类型未开通;使用威富通提供的参数,可以支付一次,再一次支付必须重装微信

  • 回调未测试

使用前准备

1.Android需要用商户自己的包名和签名,并用自己的签名文件打包

应用包名:是在APP项目配置文件AndroidManifest.xml中声明的package值,例如DEMO中的package="net.sourceforge.simcpux"

应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串

具体参照微信文档-APP端开发步骤-Android开发要点说明 https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5

2.IOS项目设置APPID

商户在微信开放平台申请开发APP应用后,微信开放平台会生成APP的唯一标识APPID。在Xcode中打开项目,设置项目属性中的URL Schemes为您的APPID

具体参照微信文档-APP端开发步骤-IOS开发要点说明 https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5

3.IOS项目设置plist

文本编辑Info.plist,在dict中添加下面key

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>weixin</string>
    <string>wechat</string>
    <string>mqq</string>
    <string>mqqapi</string>
    <string>alipay</string>
    <string>alipayqr</string>
    <string>alipays</string>
</array>

使用

// 获取当前设备版本号(dome原方法)
result = await Wftpay.platformVersion;

// 以下两个函数
// 返回0为支付成功,其它为失败
// -1 原因:支付错误,可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等
// -2 原因 用户取消,无需处理。发生场景:用户不支付了,点击取消,返回APP(ios没有这个判断)

// 支付
result = await Wftpay.wxPay({
    'appId': '', // 微信应用appId
    'token_id': '', // 通过请求服务器统一下单接口返回的参数,在小程序和H5中是一个Object,其中包含sign,nonce_str等参数,而在app中只需要用到其中的token_id即可
    'amount': '1', // ios需要此参数,只用于扫码支付和付款码支付类型时客户端显示金额。不会参与交易计算,具体的交易金额以下单时候传入的金额为准。
});
// 支付测试,以下参数由威富通提供
// 与支付不同的是,测试支付不需要通过请求服务器统一下单接口返回的参数,而是在app中自己调用微信统一下单接口拿取数据
// 因此只提供测试使用,真实场景一定不能用这种方法,有泄漏密钥的风险,记得删除
result = await Wftpay.wxPayTest(
    appId: 'wx2a5538052969956e', // 微信应用appId
    mch_id: '755437000006', // 商户号
    key: '7daa4babae15ae17eee90c9e', // 密钥
);

ios开发遇坑

1.如果遇到plist的报错,如下,在xcode-file-workspace setting中将build system设置为Legacy Build System(第二个)

我也不知道为什么

Multiple commands produce '/Users/mac/Library/Developer/Xcode/DerivedData/Runner-ahdzorlajnxaikghzbfwnbmlhtci/Build/Products/Debug-iphonesimulator/wftpay/Info.plist'

Multiple commands produce '/Users/mac/Library/Developer/Xcode/DerivedData/Runner-ahdzorlajnxaikghzbfwnbmlhtci/Build/Products/Debug-iphonesimulator/wftpay/Info-8.0+.plist'

参考文档

1.威富通移动支付开发文档 https://open.swiftpass.cn/openapi/doc?index_1=4&index_2=1&chapter_1=102&chapter_2=103

sdk和domo在这里下载

2.微信支付文档 https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5

介绍了一些重要的应用配置

3.flutter微信支付插件 https://github.com/lishuhao/sy_flutter_wechat

参考了一些写法

4.flutter插件开发官方文档 https://flutterchina.club/developing-packages/

5.插件发布翻墙 https://www.kikt.top/posts/flutter/package/publish-fail/

Libraries

wftpay