我有一张付款表格。当我提交该表格时,它会在我成功提交后重定向到 PAYONE 以获取付款信息。该页面重定向到我网站的成功链接以获取更多详细信息。
现在我的问题开始了:我将支付网关 (PAYONE) 页面打开到同一窗口中的 iframe 中。但是当我成功提交信息并点击提交时。然后它将在 iframe 中重定向。
如何重定向到我在发布数据中提供的成功链接?
我知道这个问答比泥土更古老,但我想我会为其他寻找此信息的人澄清一下。
由于重定向将在同一域中的页面上,跨域脚本安全不会发挥作用,因此您无需在 iframe 父级上放置任何代码,只需让支付提供商返回页面具有以下内容:
<html><head><title></title></head>
<body onload="parent.location='http://www.google.com';">
If you are not redirect in 5 seconds, please click here... etc..
</body></html>
由于安全性和现在可以控制您的支付提供商,处理此问题的最简单方法是拥有一个“登陆”iframe 页面,客户从支付提供商处重定向回该页面。然后该页面调用一个函数来重新加载整个页面到一个新的 URL...
在父窗口中:将其放在该部分中
<script type="text/javascript">
function payment_redirect(url) { document.location=url;}
</script>
然后只需一个简单的 iframe 登陆页面即可触发更新
<html><head><title></title></head>
<body onload="parent.payment_redirect('http://www.google.com');">
If you are not redirect in 5 seconds, please click here... etc..
</body></html>
请注意我如何在父窗口中包含该函数,然后通过“父”从 iframe 页面调用它 - iframe 安全性不会让您直接从 iframe 重定向或刷新页面...
自从提出这个问题以来,PAYONE 已将iframe-busting合并到他们的 API 中。在为支付表单创建链接或 POST 参数时,请包含此参数:
'targetwindow' => 'top'
其他允许的值为:
从支付表单返回的用户将被发送到指定的目标窗口。