1.引入依賴 pubspec.yaml 記得下載依賴
dependencies:
fluwx: ^1.2.1+1
2.在android/app/build.gradle中的dependencies 引入
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.6.22' //這里是添加部分
}
3. 在android/build.gradle中修改 kotlin_version 的版本,否則總是會支付失敗
buildscript {
// ext.kotlin_version = '1.3.50'
ext.kotlin_version = '1.3.72' 這是修改部分
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
4.然后在main.dart中全局注冊
_initFluwx() async {
await registerWxApi(
appId: "開放平台支付的appid",
doOnAndroid: true,
doOnIOS: true,
universalLink: "這個地址后面如何配置后面的博客我會記錄");
var result = await isWeChatInstalled();
print("is installed $result");
}
記得調用_initFluwx這個方法,例如:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await SpUtils.init();
await _initFluwx(); // 這里調用的
runApp(MyApp());
}
5.然后去android/app/src/main/kotlin/*/*/*/下面。 我的是kotlin版本,有的是java這個是不影響的,/*/*/*/這個就是你Android的包名,eg:com.app.design是你的包名,/*/*/*/就是/com/app/design/
在這個下面添加wxapi文件夾,在此文件夾下添加 WXPayEntryActivity.kt文件
package com.app.design //包名根據你的修改
import io.flutter.embedding.android.FlutterActivity
class WXPayEntryActivity: FlutterActivity() {
}
6.然后去android/app/src/main/AndroidManifest.xml中的application配置添加
<activity android:name="com.app.design.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="你的appid"/> </intent-filter> </activity>
7.然后開始使用
var isInstalled = await fluwx.isWeChatInstalled();
if (!isInstalled) {
Get.snackbar('溫馨提示', '請先安裝微信');
}
// 將下面這些參數替換成后台返回的即可
var payRes = await fluwx.payWithWeChat(
appId: map['paySign']['appid'],
partnerId: map['paySign']['partnerid'],
prepayId: map['paySign']['prepayid'],
packageValue: map['paySign']['package'],
nonceStr: map['paySign']['noncestr'],
timeStamp: int.parse(map['paySign']['timestamp']),
sign: map['paySign']['paySign'],
);
fluwx.responseFromPayment.listen((data) {
print(data.errCode);
print(data.extData);
print(675675);
print("WeChatPaymentResponse"+data.errCode.toString());
if (data.errCode == 0) {
Get.snackbar('溫馨提示', '微信支付成功');
getInit();
Get.toNamed(AppRoutes.RechargeState, arguments: {
"orderSn":res['data']['orderSn']
});
} else {
Get.snackbar('溫馨提示', '微信支付失敗');
}
});
map['paySign']是接口返回的微信支付的信息和支付寶支付是一樣的
這樣就可以直接跳轉微信支付了
如果你不知道開放平台配置的簽名是什么,你可以如下操作,在真機上安裝你寫的app,然后再真機上安裝微信官方寫的一個apk 這是地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk
然后打開下載的這個app,在輸入框中輸入包名,例如com.app.design,回撤就會告訴你你寫的app的包的簽名是什么,然后復制到微信開放平台去配置,如果不一樣基本上是不會支付成功的
還有一個問題記錄一下:就是如果你升級版本之后改了apk的本地加簽的keystore或者jks的簽名或者包名,按照道理,你是需要重新走上面那個步驟生成新的簽名再去微信開放平台配置,但是這里會有一個問題,如果1.0版本apk的用戶使用微信支付且支付成功過,你換簽名之后這些用戶是無法支付成功的,因為微信apk記錄了你上一次的簽名,這個時候需要用戶卸載微信重新安裝,所以慎重修改簽名,如果修改,可以同時修改加簽的簽名和包名
ios配置
LSApplicationQueriesSchemes如果有就配置,沒有就新增然后再配置
12