收藏
回答

h5签约完成后跳转


https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=xxx&package=xxx&redirect_url=xxxxx

https://payapp.weixin.qq.com/papay/readentrustwebtemplate?type=index&session_id=xxxxx#/redirect

两个都为h5端调起微信扣费签约链接,为什么第一个带有完成签约后的跳转地址参数 redirect_url,第二个链接没有,请问第二种链接要做跳转怎么设置,是存签约接口的问题吗?第一个是支付中签约? 存签约接口地址:https://pay.weixin.qq.com/wiki/doc/api/wxpay_v2/papay/chapter3_4.shtml



回答关注问题邀请回答
收藏

1 个回答

  • Memory
    Memory
    2023-08-10

    第一个url是H5支付中签约自己获取H5支付url后拼接的redirect_url,第二个是H5纯签约是微信返回的url

    --------------------------------------------------------------------------

    Q:h5纯签约或公众号纯签约签约完成后点击完成按钮返回的是商户首页(域名),不是发起签约请求的页面

    A:

    1.浏览器发起签约场景:

    问题根因:referer由于客户端webview内核安全策略变更,需要源页面进行授权后,才能获取完整URL,否则无法在签约完成后,原路跳回商户的H5页面,浏览器由于兼容性问题导致微信侧获取的referer只有域名部分,丢失了path部分,所以返回的是商户域名页

    微信支付侧协助寻找了以下解决方案,建议商户试试,如仍有问题需商户自行联系浏览器厂商处理:

    商户跳转前的源H5页面,需要在html中做referrer-policy的授权声明:

    方法一(推荐):

    <meta name="referrer" content="no-referrer-when-downgrade">>

    方法二:

    <meta name="referrer" content="unsafe-url">


    安全策略详情可参考:https://developers.google.com/web/updates/2020/07/referrer-policy-new-chrome-default


    Referrer-Policy声明的用法可参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Referrer-Policy

    注意:

    ① 商户需要检查一下html里面是否有多个meta name="Referrer"的声明(比如声明了一个<meta name="Referrer" content="origin" />,会覆盖开头的声明,需要删掉)

    ② 检查发起签约页面跳转微信时是否有处理过(比如中转页面或着在后台跳转的),必须是商户前端发起的跳转,否则不会生效

    ③由于iOS15对referrer policy更加严格,referer只带了host没有带path,但iOS14以及之前版本的referer带了host和path,导致了iOS15以上目前只能返回商户域名页面


    2.商户发起签约页面地址中有片段标识符:

    片段标识符(URI Fragment,即URL中#号后面的部分)仅用作浏览器端的处理,不会参与到服务端请求中,故签约完成回跳不会带上这部分信息。


    2023-08-10
    有用
    回复 2
    • L神
      L神
      2023-08-10
      第二个微信返回可以设置自定义链接吗,我知道在页面中设置 <meta name="referrer" content="unsafe-url">  会跳到原始链接,但我想跳到我设置的链接,要怎么处理
      2023-08-10
      回复
    • Memory
      Memory
      2023-08-10回复L神
      我编辑一下回答,你自己刷新看
      2023-08-10
      回复
登录 后发表内容