flutter 微信支付


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM