【微信支付】精选干货带你使用微信公众号调起微信支付

简介: 最近搞了个微信公众号拉起微信支付的功能项目,看了微信官方文档之后,我从不懂变成了迷糊,又看了几遍之后,发现我从迷糊变成了懵逼状态。

前言

最近搞了个微信公众号拉起微信支付的功能项目,看了微信官方文档之后,我从不懂变成了迷糊,又看了几遍之后,发现我从迷糊变成了懵逼状态。加上和后端开发人员沟通之后,各自的理解方式是真的不一样呀。

下面就结合官方文档和自己的理解,整理出一份干货文档。(由于我是使用vue开发的,所以下面的文章会结合vue来进行说明。)

安装和引入jssdk

在需要调用 JS 接口的页面引入如下 JS 文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.6.0.js

如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://res2.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)。

根据官方文档中的说明,我们可以直接引入以上两个js文件中的一个。

如果你使用了npm包管理工具的话,是可以直接使用npm进行安装的,这样就不需要配置安全域名、白名单之类的了。

npm install weixin-js-sdk

页面中添加支付按钮

👉 没有任何样式的按钮,这里使用的是vant按钮组件

<template>
  <div class="pay">
    <van-button type="primary" @click="handlePay">支付</van-button>
  </div>
</template>

生命周期中配置config

👉 官方文档中,需要引入wx.config、wx.ready等方法

网络异常,图片无法展示
|

👉 我们可以在vue生命周期函数 - beforeCreate方法中引用这些配置方法

在使用wx.config等方法时,需要在当前页面中引入jssdk哦。

import wx from "weixin-js-sdk"

beforeCreate() {
    payjsapi().then((res) => {
      console.log(res);
      this.wxData = res.data;
      this.wxData.package = "prepay_id=" + res.data.prepay_id;
      wx.config({
        appId: res.data.appid, // 必填,公众号的唯一标识
        timestamp: res.data.timestamp, // 必填,生成签名的时间戳
        nonceStr: res.data.nonce_str, // 必填,生成签名的随机串
        signature: res.data.sign, // 必填,签名
        jsApiList: ["chooseWXPay"], // 必填,需要使用的JS接口列表
      });
      wx.ready(() => {});
      wx.error((e) => {
        console.error(e);
      });
    });
}
  • payjsapi是后端接口,用axios封装的,可以根据自己的需求来定义

由于微信支付参数原因,前端需要将prepay_id字段配置成package

this.wxData.package = "prepay_id=" + res.data.prepay_id;

  • jsApiList中配置的是微信支付的js接口方法

支付方法

👉 根据文档中的描述,微信支付分为两个版本,而且两个版本的文档简直是天差地别呀。

网络异常,图片无法展示
|

👉 点击进入微信支付V2开发文档

👉 点击进入微信支付V3开发文档

👉 点击支付按钮时,请求微信支付方法

methods: {
    handlePay() {
      wx.chooseWXPay({
        timeStamp: this.wxData.timestamp,
        nonceStr: this.wxData.nonce_str,
        package: this.wxData.package, 
        signType: "RSA",
        paySign: this.wxData.sign,
        appId: this.wxData.appid,
        success: function (res) {
          // 支付成功后的回调函数
          console.log("支付成功回调", res);
        },
        fail: function (res) {
          console.log("支付失败回调", res);
        },
      });
    },
  }
  • signType在v2文档中,默认是MD5,但是实际默认是HMAC-SHA256
  • 但是不管你使用哪种方式进行签名加密,都会提示你签名方式不对,所以我就去采用了V3文档中的RSA方式
  • 大家可以打开微信签名校验工具试试两种签名是否可以验证成功。
  • 鉴于V2文档中的签名算法规则后端人员看起来比较懵逼,所以就采用了V3文档中的方式。

签名算法文档说明

V2文档

V3文档

V2 和 V3 差异对比

V3 规则差异 V2
JSON 参数格式 XML
POST、GET、PUT、PATCH、DELETE 提交方式 POST
AES-256-GCM加密 回调加密 无需加密
RSA加密 敏感加密 RSA加密
UTF-8 编码方式 UTF-8
非对称密钥SHA256-RSA 签名方式 MD5或HMAC-SHA256

👉 对比之后,发现V3的规则比较适合后端开发人员查看,相对来说比较简洁。

网络异常,图片无法展示
|

有一个需要特别注意的点就是,参数需要加 \n, 参数需要加 \n, 参数需要加 \n 重要的事情说三遍

总结一下

微信支付功能不难,但是旧版本的文档对于开发人员来说不是特别友好(可能对于我来说是不太友好的)。

注意一下

在请求微信支付时,所有的参数均需要后端返回,返回参数需要和生成签名的参数一致,包括随机字符和时间戳。

相关文章
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
1301 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
移动开发 算法 安全
快应用如何去申请微信支付商户?-快应用申请微信支付-优雅草卓伊凡
快应用如何去申请微信支付商户?-快应用申请微信支付-优雅草卓伊凡
397 0
快应用如何去申请微信支付商户?-快应用申请微信支付-优雅草卓伊凡
|
小程序
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
1687 1
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
|
小程序
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
1294 2
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
|
小程序 数据安全/隐私保护 开发者
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
1724 3
|
小程序 前端开发 JavaScript
微信小程序实现微信支付(代码和注释很详细)
微信小程序实现微信支付(代码和注释很详细)
|
前端开发 JavaScript API
微信公众号项目,实现微信支付(具体流程和参数)
微信公众号项目,实现微信支付(具体流程和参数)
支付系统---微信支付23-数据绑定和事件,使用Vue调试要添加扩展,F12与console平级就出现了Vue,在支付资料,微信支付,04资料,工具里
支付系统---微信支付23-数据绑定和事件,使用Vue调试要添加扩展,F12与console平级就出现了Vue,在支付资料,微信支付,04资料,工具里
支付系统----微信支付24--APlv3介绍,首先我们要引入支付参数,包含商户号,APPID、API秘钥,数字证书,用代码加载到应用程序当中,之后加载商户私钥,商户需要用私钥进行验签,微信平台接收商
支付系统----微信支付24--APlv3介绍,首先我们要引入支付参数,包含商户号,APPID、API秘钥,数字证书,用代码加载到应用程序当中,之后加载商户私钥,商户需要用私钥进行验签,微信平台接收商
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。