序言
先在微信開放平臺創(chuàng)建好app,按要求配置完成。
Flutter項目中配置
fluwx: ^1.2.1+1
Android項目中配置
在android中的gradle配置自己簽名文件
將簽名文件可以放入android中的根目錄
signingConfigs {
release {
storeFile file("$rootDir/xxx.jks")
storePassword "666666"
keyAlias "xxx"
keyPassword "666666"
}
debug {
storeFile file("$rootDir/xxx.jks")
storePassword "666666"
keyAlias "xxx"
keyPassword "666666"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.debug
}
}
- 在app的gradle中依賴微信庫
dependencies {
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
- 在app的包下創(chuàng)建一個微信支付回調(diào)頁面
public class WXPayEntryActivity extends Activity {
}
- 在根目錄創(chuàng)建wxapi文件夾,將創(chuàng)建好的WXPayEntryActivity的頁面放入。

image.png
- 在AndroidManifest中配置,放入application中即可
// 注意 xxx.xxx.xxx 為自己包名
// android:scheme="wx5c3f489a3bffbff1" 替換為自己在微信開放平臺創(chuàng)建的app的應用id
<activity
android:name="xxx.xxx.xxx.wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="wx5c3f489a3bffbff1"/>
</intent-filter>
</activity>
// 注意看有沒有配置權(quán)限
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Flutter項目中使用
//先注冊
void initWxPay() async {
await fluwx.registerWxApi(
appId: "xxxxxxxxxxxxxxxxx",
universalLink: "https://help.wechat.com/app");
}
void toWxPay() async {
var isInstalled = await fluwx.isWeChatInstalled();
if (!isInstalled) {
ToastUtil.toast("請先安裝微信");
}
// 將下面這些參數(shù)替換成后臺返回的即可
var payRes = await fluwx.pay(
appId: "xxxxxxxxxxxx",
partnerId: "1581194221",
prepayId: "wx20204148634195534427abd2eac5xxxxxxx",
packageValue: "Sign=WXPay",
nonceStr: "QQZMB4ZQL3784HMKDBZVAGVATNY83I7U",
timeStamp: 1597927308,
sign: "327B443E4591CD2AD05C340CEE90CC2E",
);
// 支付回調(diào)
// 一般情況下打開微信支付閃退,errCode為 -1 ,多半是包名、簽名和在微信開放平臺創(chuàng)建時的配置不一致。
fluwx.responseFromPayment.listen((data) {
print(data.errCode);
if (data.errCode == 0) {
ToastUtil.toast("微信支付成功");
Navigator.of(context).pop();
} else {
ToastUtil.toast("微信支付失敗");
}
});
}