Response.Redirect & window.location.href
对接中信的微信H5支付时,对方(其实是微信)需要对我们的域名进行授权,即,我方需向渠道报备支付域名,微信只认可由此域名发起的支付交易。
支付中心只提供了一套支付接口供下游系统访问。因为给渠道报备的域名是支付中心的域名,为此,支付中心需要做一个中间页,由这个中间页发起到渠道的支付请求。
protected void Page_Load(object sender, EventArgs e) { LogHelper.Write("h5请求url:" + Request.Url.ToString()); if ("" != Request.QueryString["mweb_url"]) { Response.Redirect(Request.QueryString["mweb_url"]); } else { Response.Write("ok"); Response.Write(Request.Url.ToString()); } }
测试时,发现微信仍然提示域名不一致。
于是,修改代码,废掉Response.Redirect,改用js的window.location.href来实现浏览器重定向跳转。再次发起支付,发现果然ok!
通过demo测试,使用Response.Redirect做页面跳转时,无法获取到上次请求的url信息,而通过window.location.href是可以的。这也证明了为什么微信校验请求域名失败。
当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/buguge/p/8042439.html