首页 > 其他分享 >整理h5进行微信支付的注意事项

整理h5进行微信支付的注意事项

时间:2024-03-18 10:35:45浏览次数:15  
标签:openid 微信 支付 h5 充值 params 注意事项 页面

前言

  微信支付流程比支付宝的复杂的多限制也多,尤其是当你有多个公众号多个openid的时候,如何合理规划是非常重要的一环。我们首先需要在微信公众号申请开通微信支付功能,然后在用户进入我们页面时就触发授权(分为静默授权和手动授权),授权成功之后,拿到openid就可以进行创建订单--支付--页面回调。

 

首先是授权

  我们刚进入页面的时候需要调后端接口来判断用户之前是否有授权(openid)操作?如果没有的话就触发微信授权,也就是获取openid的接口没有返回openid,此时后端会返回一个url给我们前端,我们拿到这个url,进行 if (wxUrl.value) window.location.href = wxUrl.value 来触发用户的静态或者手动授权,授权成功之后,微信会跳转回我们页面并携带我们需要的code拼接到url上(用户是没有感知到页面跳转),此时我们只需要在页面做参数判断,如果进入该页面时参数携带了?code=***,我们就触发后端的创建openid的api,拿到openid之后,就可以在后面需要进行用户充值的页面进行充值操作,如果用户不充值也没关系,因为openid是永久的,以后客户想充值就不再需要授权行为。

 

其次是充值操作(注意在微信里面的h5调其他充值方式:如支付宝会不成功,需要用浏览器,此时需要隐藏其他充值方式)

  第一步引入'weixin-js-sdk',最好单独写一个Index.ts

import wx from 'weixin-js-sdk'

export default {
  // 获取微信支付SDK的签名
  getWxPaySign (params:any) {
    wx.config({
      debug: false,
      appId: params.app_id,
      timestamp: params.time_stamp,
      nonceStr: params.nonce_str,
      signature: params.pay_sign,
      jsApiList: [
        'chooseWXPay'
      ]
    })
  },
  // 发起微信支付
  wxPay (params:any) {
    return new Promise((resolve, reject) => {
      // 调用微信支付
      wx.chooseWXPay({
        timestamp: params.time_stamp,  
        nonceStr: params.nonce_str,  
        package: params.package,  
        signType: params.sign_type,  
        paySign: params.pay_sign,  
        success: (res) => {
          // 支付成功时返回resolve
          resolve(res)
        },
        fail: (err) => {
          // 支付失败时返回reject
          reject(err)
        }
      })
    })
  }
}

  第二步,在用户创建订单的时候拿到返回的参数,并调用wxPay.getWxPaySign(data) 来获取微信支付SDK的签名

  第三步,调用wxPay.wxPay

wxPay.wxPay(e).then(() => {
        showToast('支付成功')
    }).catch(() => {
        showToast('支付失败')
    })

  此时就可以完成充值操作。

 

补充另一种非官方承认的直接在app内嵌h5唤起的微信充值方式

window.location.href = `weixin://wap/pay?${encodeURIComponent(url)}`

  这种方式和支付宝的 window.location.href = `alipays://platformapi/startapp?appId=20000067&url=${encodeURIComponent(e.url)}` 非常像,alipays://platformapi/startapp是打开支付宝,而weixin://wap/pay 则是打开微信,但是因为这种方式微信官方不承认有,所以一般情况我们不会用,我查资料是之前微信官方的demo被人查看到这段代码,并成功使用才传出的,但微信官方貌似出于安全角度还是什么的不承认有这种方式。

  亲测可以唤起微信支付,但由于官方不承认,为了避免风险,我们公司是不让用的。

 

标签:openid,微信,支付,h5,充值,params,注意事项,页面
From: https://www.cnblogs.com/zxd66666/p/18079809

相关文章

  • 基于微信小程序的高校跑腿小程序,附源码
    博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝15w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、Python技术领域和毕业项目实战✌......
  • 北京朝阳办理卫生许可证所需材料及注意事项
    ​      各位老板好,我是经典世纪胡云帅(游览器搜经典世纪胡云帅),在繁忙的北京市朝阳区,开设食品、餐饮或其他与卫生相关的业务,都需要一份卫生许可证。这份许可证不仅是您业务合法运营的象征,更是对顾客健康承诺的体现。那么,如何高效、准确地办理朝阳区卫生许可证呢?本文将为......
  • JAVA面向对象高级:继承:权限修饰符(继承注意事项) 单继承 Object类 方法重写
    权限修饰符(共四个):publilcprivateprotected缺省   单继承:   Object类:所有类的祖宗类。类均继承了Object类  方法重写     方法重写在开发中的应用场景:子类重写Object类中toString方法  ......
  • JAVA面向对象高级:static注意事项
    packagecom.itheima.static1;publicclassStudent{staticStringschoolName;doublescore;//实例变量//1.类方法中可以直接访问类的成员,不可以直接访问实例成员publicstaticvoidprinthelloworld(){//注意:同一个类中,访问类成员,可以省略类......
  • 微信小程序第三章作业
    目录一、分析下列代码,实现如图页面布局。         主要分为2部分,wxml文件和wxss文件代码如下: 运行结果如下:​编辑二、 分析页面结构,实现如图效果。         wxml和wxss文件代码如下:    运行结果如下:一、分析下列代码,实现如图页面布局。......
  • 微信小程序 个体工商户填报 骗局
    今天,接到一通来自“营业执照线上年审处”的工作人员的电话说营业执照异常,要重新提交结果直接来个小程序,名字叫“个体工商户填报”,一看小程序主体就不对劲,福建的,非政府机构......
  • 微信小程序云开发教程——墨刀原型工具入门(表单组件)
      引言作为一个小白,小北要怎么在短时间内快速学会微信小程序原型设计?“时间紧,任务重”,这意味着学习时必须把握微信小程序原型设计中的重点、难点,而非面面俱到。要在短时间内理解、掌握一个工具的使用,最有效的方式莫过于临摹:看实例视频教程,并跟着教程在实例素材上操作。......
  • java毕业设计基于微信小程序的疫情点餐系统
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义在当今社会,随着移动互联网技术的飞速发展和智能手机的普及,微信小程序以其便捷性和高效性成为人们生活中不可或缺的一部分。特别是在新冠疫情的影响下,无接触服务成......
  • 微信小程序uniapp+vue+nodejs宝宝成长记录系统的设计与实现
    本文先通过对相关系统的调研,提出开发基于微信小程序的宝宝成长记录系统的意义,然后使用当前主流的技术进行开发,满足基于微信小程序的宝宝成长记录系统的技术要求,分析系统需要实现的功能并进行设计。梳理业务流程,并根据功能设计数据库,最后通过编码实现,介绍实现的关键算法逻辑。在......
  • 微信小程序(wxs脚本)
            ......