Flutter實現(xiàn)微信支付

序言

先在微信開放平臺創(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
        }
    }
  1. 在app的gradle中依賴微信庫
dependencies {
    implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
  1. 在app的包下創(chuàng)建一個微信支付回調(diào)頁面
public class WXPayEntryActivity extends Activity {
}
  1. 在根目錄創(chuàng)建wxapi文件夾,將創(chuàng)建好的WXPayEntryActivity的頁面放入。
image.png
  1. 在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("微信支付失敗");
      }
    });
  }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容