Flutter实现微信支付

序言

先在微信开放平台创建好app,按要求配置完成。

Flutter项目中配置

fluwx: ^1.2.1+1

Android项目中配置

在android中的gradle配置自己签名文件
将签名文件可以放入android中的根目录

 signingConfigs {
        release {
            storeFile file("$rootDir/xxx.jks")
            storePassword "666666"

            keyAlias "xxx"
            keyPassword "666666"
        }
        debug {
            storeFile file("$rootDir/xxx.jks")
            storePassword "666666"

            keyAlias "xxx"
            keyPassword "666666"
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
        debug {
            signingConfig signingConfigs.debug
        }
    }
  1. 在app的gradle中依赖微信库
dependencies {
    implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
  1. 在app的包下创建一个微信支付回调页面
public class WXPayEntryActivity extends Activity {
}
  1. 在根目录创建wxapi文件夹,将创建好的WXPayEntryActivity的页面放入。
image.png
  1. 在AndroidManifest中配置,放入application中即可
// 注意 xxx.xxx.xxx 为自己包名
// android:scheme="wx5c3f489a3bffbff1" 替换为自己在微信开放平台创建的app的应用id
 <activity
            android:name="xxx.xxx.xxx.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="wx5c3f489a3bffbff1"/>
            </intent-filter>
        </activity>
// 注意看有没有配置权限
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Flutter项目中使用
//先注册
void initWxPay() async {
  await fluwx.registerWxApi(
      appId: "xxxxxxxxxxxxxxxxx",
      universalLink: "https://help.wechat.com/app");
}
  void toWxPay() async {
   var isInstalled = await fluwx.isWeChatInstalled();

    if (!isInstalled) {
      ToastUtil.toast("请先安装微信");
    }

    // 将下面这些参数替换成后台返回的即可
    var payRes = await fluwx.pay(
      appId: "xxxxxxxxxxxx",
      partnerId: "1581194221",
      prepayId: "wx20204148634195534427abd2eac5xxxxxxx",
      packageValue: "Sign=WXPay",
      nonceStr: "QQZMB4ZQL3784HMKDBZVAGVATNY83I7U",
      timeStamp: 1597927308,
      sign: "327B443E4591CD2AD05C340CEE90CC2E",
    );

    // 支付回调
    // 一般情况下打开微信支付闪退,errCode为 -1 ,多半是包名、签名和在微信开放平台创建时的配置不一致。
    fluwx.responseFromPayment.listen((data) {
      print(data.errCode);
      if (data.errCode == 0) {
        ToastUtil.toast("微信支付成功");
        Navigator.of(context).pop();
      } else {
        ToastUtil.toast("微信支付失败");
      }
    });
  }

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