需求
使用flutter的情況下用fluwx調(diào)通微信支付,使用的是fluwx的包,代碼量不多扑浸,復(fù)雜的是安卓和ios的各種配置唬血。
環(huán)境
flutter 1.9.1
fluwx 1.2.1+1
使用方法
引入fluwx,然后注冊微信api
fluwx.registerWxApi(
appId:"wx0axxxxxxxxxx3edb",
universalLink:"https://www.baidu.com/"
);
調(diào)用支付,參數(shù)由后端寫好接口請求得到
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'
);
監(jiān)聽支付的回調(diào)
fluwx.responseFromPayment.listen((data) {
print('支付回調(diào)通知绣硝。。。迟郎。癣蟋。透硝。’);
if(data.errCode == 0){
print('支付成功');
}else{
print('支付失敗');
}
代碼見上疯搅,其他安卓和ios的配置見下文
IOS的配置
iOS的微信支付的官方配置文檔
詳細的再官方文檔都有介紹濒生,建議先看一遍官方文檔,以下是我總結(jié)的幾個步驟:
- 配置項目的Universal Links幔欧,同時和微信公眾平臺配置的保持一致
- Xcode打開Associated Domains開關(guān)罪治,將Universal Links域名加到配置上
- 檢查有沒有WechatOpenSDK,沒有的話用CocoaPods 集成
- 在 Xcode 中礁蔗,選擇你的工程設(shè)置項觉义,選中“TARGETS”一欄,在“info”標(biāo)簽欄的“URL type“添加“URL scheme”為你所注冊的應(yīng)用程序 id
- 在Xcode中浴井,選擇你的工程設(shè)置項晒骇,選中“TARGETS”一欄,在 “info”標(biāo)簽欄的“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI(重要)
- ios配置結(jié)束磺浙,可以打包出來看效果
安卓的配置
安卓的微信支付官方配置文檔
詳細的再官方文檔都有介紹洪囤,建議先看一遍官方文檔,以下是我總結(jié)的幾個步驟:
- 在 build.gradle 文件中撕氧,添加如下依賴即可
dependencies {
api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
- 由于 jCenter 服務(wù)關(guān)停瘤缩,需要修改成引用 Maven Central,在項目的根 build.gradle 文件中伦泥,添加如下代碼即可:
buildscript {
repositories {
jcenter() // 原有 jCenter 引用可繼續(xù)保留
mavenCentral()
}
}
allprojects {
repositories {
jcenter() // 原有 jCenter 引用可繼續(xù)保留
mavenCentral()
}
}
- 在 AndroidManifest.xml 增加配置
// 添加必要的權(quán)限支持(其中網(wǎng)絡(luò)權(quán)限如果沒有使用掃碼登錄功能非必要款咖;后三個權(quán)限,如果沒有使用 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及l(fā)aunchMode屬性富腊,其中exported設(shè)置為true,taskAffinity設(shè)置為你的包名域帐,launchMode設(shè)置為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>
獲取應(yīng)用的簽名是整,同時更新到微信開放平臺,確認兩邊的簽名和應(yīng)用id一致,(官方獲取安卓APP簽名的應(yīng)用,最下面有個簽名生成工具
安卓配置成功民假,可以打包出來看看效果