Ste*_*veL 5 iframe paypal framebusting
我们使用PayPal的Payments Pro NVP API在我们的网站上提供无缝的信用卡和PayPal处理.我们已经创建了一个基于iframe的购物车小部件,我们的客户将这些小部件放到他们的网站上,这样他们的用户就可以通过我们的Paypal帐户购买物
虽然信用卡交易工作正常,但当用户尝试使用PayPal帐户付款时,我们会发现问题.单击PayPal徽标时API会使用重定向,但PayPal的代码似乎运行了一个framebusting脚本,并且事务无法继续.
我正在寻求有关如何处理希望通过iframe支付PayPal的用户的建议或示例代码.一个选项是弹出一个新窗口,但随后它会使设计处于开放状态,因为用户可以在该窗口和包含iframe的窗口之间切换,并且可以想象购物车与PayPal窗口显示的内容不同步.
以上两个答案都是正确的.但是,PayPal技术支持提供了一套更全面的说明,我在下面提供了这些说明.希望他们会帮助别人.
修改您的SetExpressCheckout调用,以便RETURNURL和CANCELURL参数指向一个特殊的返回页面,该页面将处理为您关闭弹出窗口并继续正常结帐过程(稍后将详细介绍).
接下来,修改将买方重定向到PayPal网站的脚本.通常,此脚本会向浏览器返回"302 Found"(或类似)响应,告诉浏览器它应该遵循重定向到其他页面.(在PHP中,这通常使用"头"功能完成 - 例如,header(“Location: https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=$token”);.)相反,此脚本应发出以下HTML/JavaScript代码(将"TOKEN"替换为您从PayPal收到的令牌).这将打开一个弹出窗口,买家可以在PayPal上继续结账流程.您可以根据需要插入其他文本,以向买方表明他们应该使用弹出窗口来完成结帐.为了避免弹出窗口阻止程序出现问题,您可以在页面上创建一个链接或按钮,向买方表明他们应该单击链接/按钮继续,并将此代码用于对象的"onClick"处理程序.
<script type="text/javascript">
window.open("https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=TOKEN","_blank","width=1024,height=768,location=1,resizable=1,scrollbars=1,status=1",true);
</script>
现在,创建一个执行以下代码的新页面(或类似代码 - 此代码基于PHP,根据您使用的任何语言进行调整).此代码将关闭弹出窗口并继续现有iframe中的结帐流程.SetExpressCheckout调用的RETURNURL参数应指向此页面.将"paypalreturn.php"替换为您当前用来处理从PayPal返回购物车的买家的脚本.
<html>
<body>
<script type="text/javascript">
window.opener.location="http://www.regattacentral.com/paypalreturn.php?token=<? echo $_REQUEST["token"]; ?>&PayerID=<? echo $_REQUEST["PayerID"]; ?>";
window.close();
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
最后,为您的CANCELURL处理程序重复此步骤.
•购买在iframe内完成,并显示购买的交易ID.
| 归档时间: |
|
| 查看次数: |
15426 次 |
| 最近记录: |