2013-03-14 71 views
0

我有一個Ruby On Rails移動應用程序,使用貝寶自適應付款與minibrowser。在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'}); 

screenshot complete http://ec2-23-21-163-203.compute-1.amazonaws.com/images/scrn_complete.png screenshot canceled http://ec2-23-21-163-203.compute-1.amazonaws.com/images/scrn_canceled.png

回答

0

,直到我改變了我的代碼重定向到貝寶在新窗口中,我遇到了同樣的問題。然後,當用戶完成付款或取消,頁面不會掛起,它會自動關閉。

關於迷你瀏覽器體驗(expType =小)的更多信息可以在這裏找到:

Adaptive Payments without modal box or popups?

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"); 

和 @覆蓋

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

不知道了解iOS的WebView多個窗口。