zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    事务传播机制,搞懂。
    洛谷 P1553 数字反转(升级版) 题解
    洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here 题解
    洛谷 P1055 ISBN号码 题解
    洛谷 P2141 珠心算测验 题解
    洛谷 P1047 校门外的树 题解
    洛谷 P1980 计数问题 题解
    洛谷 P1008 三连击 题解
    HDU 1013 题解
    HDU 1012 题解
  • 原文地址:https://www.cnblogs.com/ldlx-mars/p/15014111.html
Copyright © 2011-2022 走看看