需求
使用flutter的情况下用fluwx调通微信支付,使用的是fluwx的包,代码量不多,复杂的是安卓和ios的各种配置。
环境
flutter 1.9.1
fluwx 1.2.1+1
使用方法
引入fluwx,然后注册微信api
fluwx.registerWxApi(
appId:"wx0axxxxxxxxxx3edb",
universalLink:"https://www.baidu.com/"
);
调用支付,参数由后端写好接口请求得到
fluwx.pay(
appId: wechatParams["appid"],
partnerId: wechatParams["partnerid"],
prepayId: wechatParams["prepayid"],
packageValue: wechatParams["package"],
nonceStr: wechatParams["noncestr"],
timeStamp: wechatParams["timestamp"],
sign: wechatParams["sign"],
extData: 'test'
);
监听支付的回调
fluwx.responseFromPayment.listen((data) {
print('支付回调通知。。。。。。’);
if(data.errCode == 0){
print('支付成功');
}else{
print('支付失败');
}
代码见上,其他安卓和ios的配置见下文
IOS的配置
iOS的微信支付的官方配置文档
详细的再官方文档都有介绍,建议先看一遍官方文档,以下是我总结的几个步骤:
- 配置项目的Universal Links,同时和微信公众平台配置的保持一致
- Xcode打开Associated Domains开关,将Universal Links域名加到配置上
- 检查有没有WechatOpenSDK,没有的话用CocoaPods 集成
- 在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序 id
- 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI(重要)
- ios配置结束,可以打包出来看效果
安卓的配置
安卓的微信支付官方配置文档
详细的再官方文档都有介绍,建议先看一遍官方文档,以下是我总结的几个步骤:
- 在 build.gradle 文件中,添加如下依赖即可
dependencies {
api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
- 由于 jCenter 服务关停,需要修改成引用 Maven Central,在项目的根 build.gradle 文件中,添加如下代码即可:
buildscript {
repositories {
jcenter() // 原有 jCenter 引用可继续保留
mavenCentral()
}
}
allprojects {
repositories {
jcenter() // 原有 jCenter 引用可继续保留
mavenCentral()
}
}
- 在 AndroidManifest.xml 增加配置
// 添加必要的权限支持(其中网络权限如果没有使用扫码登录功能非必要;后三个权限,如果没有使用 mta,也非必要,即使有使用 mta,去掉也不影响功能):
<uses-permission android:name="android.permission.INTERNET" />
<!-- for mta statistics, not necessary-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
// manifest 文件里面加上exported、taskAffinity及launchMode属性,其中exported设置为true,taskAffinity设置为你的包名,launchMode设置为singleTask,例如:
<activity
android:name=".wxapi.WXEntryActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:exported="true"
android:taskAffinity="填写你的包名"
android:launchMode="singleTask">
</activity>
获取应用的签名,同时更新到微信开放平台,确认两边的签名和应用id一致,(官方获取安卓APP签名的应用,最下面有个签名生成工具
安卓配置成功,可以打包出来看看效果