flutter使用fluwx调通微信支付

需求

使用flutter的情况下用fluwx调通微信支付,使用的是fluwx的包,代码量不多,复杂的是安卓和ios的各种配置。

环境

flutter   1.9.1
fluwx  1.2.1+1

使用方法

引入fluwx,然后注册微信api

fluwx.registerWxApi(
      appId:"wx0axxxxxxxxxx3edb",
      universalLink:"https://www.baidu.com/"
    );

调用支付,参数由后端写好接口请求得到

fluwx.pay(
            appId: wechatParams["appid"], 
            partnerId: wechatParams["partnerid"],
            prepayId: wechatParams["prepayid"],
            packageValue: wechatParams["package"],
            nonceStr: wechatParams["noncestr"],
            timeStamp: wechatParams["timestamp"],
            sign: wechatParams["sign"],
            extData: 'test'
          );

监听支付的回调

fluwx.responseFromPayment.listen((data) {
            print('支付回调通知。。。。。。’);
            if(data.errCode == 0){
              print('支付成功');
            }else{
              print('支付失败');
            }

代码见上,其他安卓和ios的配置见下文

IOS的配置

iOS的微信支付的官方配置文档
详细的再官方文档都有介绍,建议先看一遍官方文档,以下是我总结的几个步骤:

  1. 配置项目的Universal Links,同时和微信公众平台配置的保持一致
  2. Xcode打开Associated Domains开关,将Universal Links域名加到配置上
  3. 检查有没有WechatOpenSDK,没有的话用CocoaPods 集成
  4. 在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序 id
  5. 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI(重要)
  6. ios配置结束,可以打包出来看效果

安卓的配置

安卓的微信支付官方配置文档
详细的再官方文档都有介绍,建议先看一遍官方文档,以下是我总结的几个步骤:

  1. 在 build.gradle 文件中,添加如下依赖即可
dependencies {
    api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
  1. 由于 jCenter 服务关停,需要修改成引用 Maven Central,在项目的根 build.gradle 文件中,添加如下代码即可:
buildscript {
    repositories {
        jcenter()       // 原有 jCenter 引用可继续保留
        mavenCentral()
    }
}

allprojects {
    repositories {
        jcenter()      // 原有 jCenter 引用可继续保留
        mavenCentral()
    }
}
  1. 在 AndroidManifest.xml 增加配置

// 添加必要的权限支持(其中网络权限如果没有使用扫码登录功能非必要;后三个权限,如果没有使用 mta,也非必要,即使有使用 mta,去掉也不影响功能):
<uses-permission android:name="android.permission.INTERNET" />

<!-- for mta statistics, not necessary-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>


// manifest 文件里面加上exported、taskAffinity及launchMode属性,其中exported设置为true,taskAffinity设置为你的包名,launchMode设置为singleTask,例如:
<activity
    android:name=".wxapi.WXEntryActivity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:exported="true"
    android:taskAffinity="填写你的包名"
    android:launchMode="singleTask">
</activity>
  1. 获取应用的签名,同时更新到微信开放平台,确认两边的签名和应用id一致,(官方获取安卓APP签名的应用,最下面有个签名生成工具

  2. 安卓配置成功,可以打包出来看看效果

参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。