0

我有一个 Ruby On Rails 移动应用程序,它使用带有迷你浏览器的 PayPal Adaptive Payments。该应用程序在 iPhone 上的 Safari 中运行时运行良好:完成支付(或取消支付)后,将执行returnFromPaypal回调函数并将用户重定向到预订页面。

但是,当我以全屏模式运行应用程序时(从保存到主屏幕的图标,这是预期的操作模式),当我取消付款或完成付款时,应用程序会挂在 PayPal 页面上,并且消息“请稍等 - 此窗口将自动关闭”和“返回”分别。

下面是我的付款页面的 .haml 视图(抱歉,我没有 HTML 版本)。

有人知道发生了什么吗?谢谢!

= javascript_include_tag  src="https://www.paypalobjects.com/js/external/apdg.js"
#edit_payment.current
  .scroll
    %ul
      %li
        = form_tag "https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay", :method=>'get', :target=>"PPDGFrame", :class=>"standard" do
          = hidden_field_tag :type, "mini", :name=>"expType"
          = hidden_field_tag :paykey, @pay_key, :name=>"paykey"
          = image_submit_tag "paypal_button.jpg", :id=>"submitBtn", :class=>"submit"
    :javascript
      var returnFromPayPal = function(){
          window.location.href = get_full_url("#{room_reservation_path(@room,@reservation)}");
      };                                                                                                                                  
      var dgFlowMini = new PAYPAL.apps.DGFlowMini({trigger: 'submitBtn',expType: 'mini', callbackFunction: 'returnFromPayPal'});

截图完成 http://ec2-23-21-163-203.compute-1.amazonaws.com/images/scrn_complete.png 截图取消 http://ec2-23-21-163-203.compute-1.amazonaws .com/images/scrn_canceled.png

4

2 回答 2

1

据我了解,这是“按设计工作”。只需在您的 WebView 中捕获https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/closewindow?execution=e7s1之类的重定向,然后在您的服务器上调用付款检查方法。

apdg.js你可以找到检查:

if (ua.match(/iPhone|iPod|Android|Blackberry.*WebKit/i)) {
    win = window.open('', this.name);
    winOpened = true;
}

所以你当前的窗口被完全替换了。没有回调的机会。

或者您可以在 WebView 本身中支持多个窗口。例如安卓:

mWebView.getSettings().setSupportMultipleWindows(true);
mWebView.getSettings().setUserAgentString("web browser");

和@Override

public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) {

不确定 iOS WebView 中的多个窗口。

于 2014-06-03T18:53:06.723 回答
0

I was experiencing this same issue until I changed my code to redirect to PayPal in a new window. Then when the user completes the payment or cancels, the page doesn't hang, it automatically closes.

More information regarding the mini browser experience (expType=mini) can be found here:

Adaptive Payments without modal box or popups?

于 2013-07-18T16:44:06.983 回答