近期做了关于flutter的商城项目 有调用到flutter唤醒支付宝及微信的支付功能
多余的不多说 分享一下自己踩坑经过(支付的都是关于安卓端的)
包名
支付宝 : tobias 微信 fluwx
支付宝这里不多数官方讲解很清楚
这里重点说一下关于微信方面的问题 很重要很重要很重要 一定要区分开发包和正式打包因为他们打包生成的应用签名是不一样的
在用真机调试时应用是这直接通过USB安装的 这里一定要用工具Gen_Signature_Android2.apk 查看一下真机调试的时安装的应用签名 该工具可百度搜索 然后要在微信支付方面配置时签名不要写错 否则一定调起失败
那么再用flutter build apk 后这里打包出来的apk则就是正式应用 需要配置正式签名 也就是我们用密钥生成的签名 再生成包时一定要注意自己的签名是否正确
还有一点就是微信可能有缓存记录 也就是说第一次调起失败提示签名不对之后就算你把签名写正确 也可能会提示签名不对 这里建议大家用的安卓机支持微信双开或者需要把微信卸载重装 否则缓存问题很难受真的很难受 不想提~
ios打包的话需要做出一些配置 这里文档里面讲解的并不是很清楚
在 tobias 及 fluwx 均升级到1.0后 文档里面声明不在需要在AppDelegate.m里面重写回调方法
可以不用写 我这边个人是写的了
- (BOOL)application:(UIApplication *)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation {return[superapplication:applicationopenURL:urlsourceApplication:sourceApplicationannotation:annotation];}
- (BOOL)application:(UIApplication *)application openURL:(NSURL*)url options:(NSDictionary *)options{return[superapplication:applicationopenURL:urloptions:options];}
然后主要问题是在 Info.plist里面 (支付宝 微信支付写在一块)
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>alipay</string>
<key>CFBundleURLSchemes</key>
<array>
<string>aliplays</string>
<string>Your wx APP ID </string>
<string>YOUR APP SCHEME NAME</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
以上代码都要添加 重点添加粗线标注的如果忘记写则调起支付宝支付后不会返回APP 无法监听支付结果
然后还有微信的appid 也要写在里面
再一个说一下关于flutter 关于软键盘遮挡输入框的问题
这里建议大家使用 SingleChildScrollView 要注意如果Scaffold设置了resizeToAvoidBottomPadding: false,这向上滚动会不生效
正常大家可以用
推一下效果
网友评论