• vue前端实现微信支付-微信公众号JSSDK


    最近在做支付功能,微信支付准备工作之类的请参考官方说明,注意个人申请的测试号不支持,要申请企业号,还要商户号,开通支付权限,配置域名,JSSDK的权限问题,尽可能都开通吧!

    官方地址可参考这里:接入准备工作

    这里大概说一下前端要做的,项目先引入微信jssdk,安装依赖,

    npm install weixin-js-sdk --save

    main.js引入,设置成全局属性,也可以设置成局部属性,那当前页引入就好了,

    1. import wx from 'weixin-js-sdk'
    2. Vue.use(wx);
    3. Vue.prototype.$wx = wx

    先是微信登录授权,获取code传给后台,拿到用户信息,之前有写过,这里不做说明了====

    大概说一下前端要做的事情,大概逻辑是:用户下单->选择微信支付->提交订单,

    1. // 提交订单
    2. this.$http.get(`/xxx/xxx/xxx/pay/`)
    3. .then(async res=> {
    4. console.log('返回的支付res:',res);
    5. console.log('是否微信浏览器====',isWechat);
    6. if(isWechat&&json.payType === 'WECHAT_PAY') {
    7. console.log('微信公众号内-微信支付===============');
    8. this.wechatPayFunction(res.pay) // 微信公众号支付
    9. }
    10. ......
    11. })

    这里后端返回的数据大概是这样:

     

    记得要先通过后端接口获取到微信公众号的配置信息,返回的数据格式大概是这样:

    微信配置成功之后,就可以使用微信自带的wx.chooseWXPay发起微信支付请求啦!

    官方文档可参考这里:微信支付

    上代码:

    1. // 微信公众号内微信支付方法
    2. async wechatPayFunction(payData) {
    3. let that = this;
    4. let url = window.location.href.split('#')[0];
    5. await this.$http.get(`/api/wechat/jssdk?url=`+url).then(res=>{
    6. console.log('微信config', res);
    7. // 配置config信息
    8. wx.config({
    9. debug: false,
    10. appId: res.appId, // 必填,公众号的唯一标识
    11. timestamp: res.timestamp, // 必填,生成签名的时间戳
    12. nonceStr: res.nonceStr, // 必填,生成签名的随机串
    13. signature: res.signature, // 必填,签名
    14. jsApiList: ['checkJsApi', 'chooseWXPay'] // 必填,需要使用的JS接口列表
    15. });
    16. // 通过ready接口处理成功验证
    17. wx.ready(function () {
    18. wx.checkJsApi({
    19. jsApiList: ['chooseWXPay'],
    20. success: function (res) {
    21. console.log('微信config检验成功',res);
    22. }
    23. });
    24. wx.chooseWXPay({
    25. timestamp: payData.timeStamp, // 支付签名时间戳,注意微信 jssdk 中的所有使用 timestamp 字段均为小写。但最新版的支付后台生成签名使用的 timeStamp 字段名需大写其中的 S 字符
    26. nonceStr: payData.nonceStr, // 支付签名随机串,不长于 32 位
    27. package: payData.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
    28. signType: payData.signType, // 微信支付V3的传入 RSA ,微信支付V2的传入格式与V2统一下单的签名格式保持一致
    29. paySign: payData.paySign, // 支付签名
    30. success: function (res) {  // 支付成功后的回调函数
    31. console.log('支付成功=============' + res)
    32. },
    33. fail: function (res) {
    34. console.log('支付失败===============' + res)
    35. }
    36. });
    37. });
    38. });

    需要注意的问题:

    1、调取微信支付前需要先获取到微信config信息,用后台返回的参数注入当前权限,才可以正常调用wx.chooseWXPay;

    2、wx.chooseWXPay需要的参数通过支付接口再返回给前端,再发起微信支付请求;

    3、注意一下参数大小写,核实后台接口返的和前端是否一致,因为本地不方便调试,每次都要发到服务器上,耽误了好久;还有因为也做了APP内的微信支付,一开始跟APP微信支付的后端接口返回参数搞错了,报错原因也查了很久,总之细心一点再细心一点,测试通过了还是很开心的,哈哈哈==;

  • 相关阅读:
    【Python高级编程】图表类型指南:何时使用折线图、散点图、柱状图和饼状图
    洁净室悬浮粒子:手持式、在线式、便携式粒子计数器如何选择呢?
    sqli-labs闯关
    wpf prism 中使用automapper
    Docker基础组件、安装启动和Docker生命周期
    【现代机器人学】学习笔记二:刚体运动
    【Leetcode】岛屿问题——dfs算法
    游戏平台能否进行定制开发?
    `Algorithm-Solution` `AcWing` 4726. 寻找数字
    基于Python实现的换脸软件
  • 原文地址:https://blog.csdn.net/lq099526/article/details/126037985