贝宝支付嵌入导致当前页面中的iframe

问题描述:

打开我遇到了贝​​宝付款自适应API一些真的很烦人的问题。我试图在支持嵌入式iframe中嵌入付款,我已按照说明执行了所有操作。当我付费时,点击按钮,即可打开lightbox的iframe,我可以毫无问题地执行付款。但是,如果我取消付款或通过付款并获取paymentSuccess调用,则结帐页面将加载到iframe中,但未关闭。该paymentCanceled根本没有被调用,因为没有显示皮诺应该警惕。贝宝支付嵌入导致当前页面中的iframe

我展示一些代码给你,但事实是,它是从一个WordPress插件,尚未采取的工作,我因此不能告诉你页面的“工作版本”。无论如何,如果你需要更多的细节,只要问一下,我会尽量让它们可用。

贝宝的JavaScript

<script type="text/javascript" charset="utf-8"> 
      var dgFlow = new PAYPAL.apps.DGFlow({trigger: 'post_pay_counter_paypal_execute_payment'}); 

      function MyEmbeddedFlow(embeddedFlow) { 
        this.embeddedPPObj = embeddedFlow; 
        this.paymentSuccess = function() { 
         this.embeddedPPObj.closeFlow(); 
         // handle payment success here 
         top.close(); 
        }; 
        this.paymentCanceled = function() { 
         alert('pippo'); 
         this.embeddedPPObj.closeFlow(); 
         // handle payment cancellation here 
         top.close(); 
        } 

      } 
      var myEmbeddedPaymentFlow = new MyEmbeddedFlow(dgFlow); 
    </script> 

谢谢大家!

我有我的问题解决了。代码如下:

jQuery(document).ready(function($) { 
    //Manage the closing of the iframe when payment is executed/canceled 
    if (window != top) { 
     top.location.replace(document.location); 
    } 
} 

//Initialize PayPal embedded payment flow. Now loading it on document ready so that we only have it if user prepares payment, not just loads the page... 
var dgFlow = new PAYPAL.apps.DGFlow({trigger: 'post_pay_counter_paypal_execute_payment'}); 
+0

是的! 'top.location.replace'是关闭灯箱和重定向的方式;如果你需要重定向,'closeFlow()'不起作用。详情请参阅[本页](https://developer.paypal.com/docs/classic/express-checkout/digital-goods/ClosingWindow/)。 – bjnord

+0

我正在努力解决这个问题,但这里的解决方案并不适合我 - 任何人都可以给我更多的细节吗? –