微信公众号支付-小结

一、公众号设置

在这里插入图片描述

  1. JS接口安全域名
    - 添加前端、后端正式域名
    - 在ngxin(前后端分离)或者Web根目录(非前后端分离) 设置校验文件
    nginx设置方式
    - 后端域名服务器均增加校验文件
			     location /MP_verify_wLP94rtTd0YPDAFT.txt {
			       txt中的内容即可
			     }

JS接口安全域名要求
设置JS接口安全域名后,公众号开发者可在该域名下调用微信开放的JS接口。

注意事项:

1、可填写五个域名或路径(例:wx.qq.com或wx.qq.com/mp),需使用字> 母、数字及“-”的组合,不支持IP地址、端口号及短链域名。

2、填写的域名须通过ICP备案的验证。

3、 将文件MP_verify_wLP94rtTd0YPDAFT.txt(点击下载)上传至填写域名或路径指向的web服务器(或虚拟主机)的目录(若填写域名,将文件放置在域名根目录下,例如wx.qq.com/MP_verify_wLP94rtTd0YPDAFT.txt;若填写路径,将文件放置在路径目录下,例如wx.qq.com/mp/MP_verify_wLP94rtTd0YPDAFT.txt),并确保可以访问。

4、 一个自然月内最多可修改并保存五次,本月剩余保存次数:5

  1. 网页授权域名

    主要设置前端访问域名即可

在这里插入图片描述

  1. 开通商户号

  2. 微信支付关联商户号

    在这里插入图片描述

    在这里插入图片描述

二、支付设置

  • 获取支付证书

    在这里插入图片描述

1. 获取openId

获取openId API

通常以snsapi_base为scope发起的网页授权,就静默授权的,用户无感知

  • 第一步用户同意授权,获取code

    • 引导用户打开一下连接

      https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect

    • 然后微信会重定向到redirect_uri ,如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。

      code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。

      redirect_uri :为自定义的业务服务地址,该地址向微信后台发起第二步请求

  • 第二步:通过code换取网页授权access_token,openId

    • 获取code后,请求以下链接获取access_token:

      https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

    • 如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid

  • 第三步

  • 出参

2. 统一下单API(预支付订单)

3. 前端唤起微信支付(微信内)

  • 通过统一下单获取前端唤起参数

    • 主要是构建6个参数

    • appId
      timeStamp
      nonceStr
      package
      paySign
      signType
      
  • 调用方式

    • 文档链接

    • function onBridgeReady(){
         WeixinJSBridge.invoke(
            'getBrandWCPayRequest', {
               "appId":"wx2421b1c4370ec43b",     //公众号名称,由商户传入     
               "timeStamp":"1395712654",         //时间戳,自1970年以来的秒数     
               "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串     
               "package":"prepay_id=u802345jgfjsdfgsdg888",     
               "signType":"MD5",         //微信签名方式:     
               "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 
            },
            function(res){
            if(res.err_msg == "get_brand_wcpay_request:ok" ){
            // 使用以上方式判断前端返回,微信团队郑重提示:
                  //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
            } 
         }); 
      }
      if (typeof WeixinJSBridge == "undefined"){
         if( document.addEventListener ){
             document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
         }else if (document.attachEvent){
             document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
             document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
         }
      }else{
         onBridgeReady();
      }
      

四、开发中遇到的问题

  1. redirect_url域名与后台配置不一致
    • 由于“网页授权域名” 仅能配置2个,重点排查该位置的设置
    • 改域名通常是请求微信API的域名,即后端地址,而非前端地址

五、 参考连接

  1. 相关SDK

    https://github.com/Pay-Group/best-pay-sdk

  2. 微信公众号支付(一):获取用户openId_无颠-CSDN博客 https://blog.csdn.net/wskdxje2/article/details/82223401
    13:58

  3. java微信授权登录传参给redirect_uri 接口,回到原页面,传递多个参数https://www.cnblogs.com/daisygogogo/archive/2004/01/13/9364731.html

    微信支付开发文档地址

  4. 本地开发网址穿透工具

    最好有正式备案宇敏,可以通过穿透工具代理到本地

    natapp.cn

    本地开发文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值