iframe 中显示的嵌入式付款返回 url

Posted

技术标签:

【中文标题】iframe 中显示的嵌入式付款返回 url【英文标题】:Embedded Payment return url shown in iframe 【发布时间】:2012-03-02 01:38:45 【问题描述】:

我正在尝试将自适应支付实现为带有灯箱的嵌入式支付。

在用户付款之前它可以正常工作,但在用户完成付款之后 return url 指定的页面在 iframe 中加载。 我希望它被加载到窗口而不是 iframe 中。 以下是我拥有的代码。我错过了什么吗?

环境 Java(播放框架) PayPal_Platform_Java_SDK_N

预期的页面转移场景 PageA - (“使用贝宝付款”按钮点击) → 贝宝对话框 - (“关闭”按钮单击) → 页面B

PageA.html

<form action="https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay" target="PPDGFrame">
  <dl>
    <dt></dt>
    <dd>
      <input id="type" type="hidden" name="expType" value="light">
      <input id="paykey" type="hidden" name="paykey" value="AP-KEY">
      <input type="submit" id="paypalSubmitBtn" value="Pay with paypal" />
    </dd>
  </dl>
</form>
<script type="text/javascript"> 
  var dgFlow;
  $(function()
    dgFlow = new PAYPAL.apps.DGFlow( trigger: 'paypalSubmitBtn' );
  ); 
</script>

PageB.html

<p>Thank you for your payment!</p>

<script type="text/javascript">
  function handleEmbeddedFlow() 
    if (top && top.opener && top.opener.top) 
      top.opener.top.dgFlow.closeFlow();
    
    else
      top.dgFlow.closeFlow();
    
    top.close();
  

  jQuery.event.add(window, "load", function()
    alert("window.load");
    handleEmbeddedFlow();
  );
</script>

我还注意到,dgFlow 在 PageB.html 中的 else case 的 top.dgFlow.closeFlow(); 中无法解析。

【问题讨论】:

我只是想知道其他尝试相同事情的开发人员是否成功...... 好的,让灯箱工作,但正如提到的,迷你浏览器很可能会显示给 90% 的用户,因为谁实际上仍然登录到 PayPal?我得到和你一样的结果,returnUrl 和 cancelUrls 出现在 IFrame 中。很烦人。你找到解决办法了吗?是否可以在关闭之前获取 IFrame 的 url? 【参考方案1】:

您可以尝试检测页面是否在 iframe 中运行,如果是则直接重定向到该页面。

如何检测: How to identify if a webpage is being loaded inside an iframe or directly into the browser window?

如何重定向: Redirect the parent page from IFrame

【讨论】:

以上是关于iframe 中显示的嵌入式付款返回 url的主要内容,如果未能解决你的问题,请参考以下文章

从嵌入按钮复制的 iframe 中未显示正确的 url

为什么我不能在iframe中嵌入特定的URL?

react添加/嵌入 iframe

iframe跳转401报错

iframe和框架的区别

vue-router内嵌iframe页面,回退异常