• 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

  • 相关阅读:
    python之元组
    python之dict
    python之list
    python之str字符串
    python之for循环
    Python的基本语法2
    Python的基本语法1
    初识python
    JS获取当天是周几
    EXCLE导入数据库
  • 原文地址:https://www.cnblogs.com/ldlx-mars/p/15014111.html
Copyright © 2020-2023  润新知