首页 文章

PayPal与基于iframe的购物车集成

提问于
浏览
5

我们使用PayPal 's Payments Pro NVP API to provide seamless credit card and paypal processing on our site. We' ve创建了一个基于iframe的购物车小部件,我们的客户将这些小部件放到他们的网站上,这样他们的用户就可以购买商品并通过我们的Paypal帐户付款 .

虽然信用卡交易工作正常,但当用户尝试使用PayPal帐户付款时,我们会发现问题 . 单击PayPal徽标时API会使用重定向,但PayPal的代码似乎运行了一个framebusting脚本,并且事务无法继续 .

我正在寻求有关如何处理希望通过iframe支付PayPal的用户的建议或示例代码 . 一个选项是弹出一个新窗口,但随后它会使设计处于开放状态,因为用户可以在该窗口和包含iframe的窗口之间切换,并且可以想象购物车与PayPal窗口显示的内容不同步 .

3 回答

  • 6

    以上两个答案都是正确的 . 但是,PayPal技术支持提供了一套更全面的说明,我在下面提供了这些说明 . 希望他们会帮助别人 .

    修改您的SetExpressCheckout调用,以便RETURNURL和CANCELURL参数指向一个特殊的返回页面,该页面将处理为您关闭弹出窗口并继续正常结帐过程(稍后将详细介绍) .

    接下来,修改将买方重定向到PayPal网站的脚本 . 通常,此脚本会向浏览器返回“302 Found”(或类似)响应,告诉浏览器它应该遵循重定向到其他页面 . (在PHP中,这通常使用“ Headers ”功能完成 - 例如, 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>
    

    最后,为您的CANCELURL处理程序重复此步骤 .

    •购买在iframe内部完成,并显示购买的交易ID .

  • 1

    出于安全原因,Pro Hosted中的PayPal Express Checkout /'Pay with PayPal'不支持iframe . 打开弹出窗口(或设置target = _parent)是正确处理此问题的唯一方法 .

  • 0

    将表单目标设置为 - target =“_ top”

相关问题