• 微信公众号支付(JSAPI)遇到的坑


    微信公众号支付(JSAPI)遇到的坑

    1. 微信浏览器内支付属于微信公众号支付

    2. 配置内容:

      1. 接口权限:网页授权回调域名(保证文件可访问)
      2. 公众号设置--功能设置:JS接口安全域名,业务域名
      3. 微信支付--开发配置:支付授权目录,测试授权目录,测试白名单

      其中1 2都为域名,而且不需要http等内容,直接XXX.XXX.com即可,可以为二级域名
      1只能设置一个,因此,为了保证测试环境和线上环境都可以同时使用,请注意项目部署。
      2 3域名可以为多个,因此,可以忽略项目部署情况。
      支付授权目录配置注意事项:

       这里很重要我就是在这里折腾了很久。怎么设置呢,首先要看你支付的当前页面URL  
       比如是:http://www.taidupa.com/wxpay/js_api_call.php   
       你就必须填写: http://www.taidupa.com/wxpay/  
       假如是:http://www.taidupa.com/wxpay/order/id/56.html  
       你就必须写:http://www.taidupa.com/wxpay/order/id/  
       看出规律了吧,就是把最后一个反斜杠后面的内容去掉就OK了。  
      
    3. 流程

      1. 网页授权获取用户openId
        1. oauth方式获取code
          注意:redirect_uri需要进行UrlEncode编码
          坑:#wechat_redirect 该内容有可能会丢失, 需要用encodeURIComponent编码
          坑:网页回调域名和JS安全域名,都不用加http://

           location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx79382fc60975273b&redirect_uri='+encodeURIComponent(xxxxxx)+'&response_type=code&scope=snsapi_base&state=123'+ encodeURIComponent('#wechat_redirect');
          
        2. 根据code获取openId

      2. 根据openId等信息调用预下单接口生成预下单id
      3. 根据预下单id,在页面内调起微信支付

      用多种设备尝试测试,有些提示会不同,但是原因是相同的,可以综合考虑得出正确结论。(重要)
      生成签名的时候,需要所有不为空的参数参与生成

    4. 预支付接口,body为中文时,会出现签名错误的问题。在调用接口时,发送的参数,需要进行以下编码

       Response response = HttpUtils.post(
       	  this.url + "/pay/unifiedorder"
       	, new String(xml.getBytes(), "ISO8859-1")
       	, "text/xml"
       	, HttpUtils.DEFAULT_CHARSET_NAME
       );
  • 相关阅读:
    IdentityServer4 令牌端点
    IdentityServer4 授权端点
    IdentityServer4 发现端点
    IdentityServer4 注销端点
    IdentityServer4 自检端点
    spring boot 项目简单打包部署
    如何进阶成公司 Git 小能手
    Git常用命令参考手册
    网络面试题总结
    Nginx面试可能问到的部分
  • 原文地址:https://www.cnblogs.com/cuiyf/p/7347036.html
Copyright © 2020-2023  润新知