0

ミニブラウザで PayPal Adaptive Payments を使用する Ruby On Rails モバイル アプリを使用しています。このアプリは、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 自体で複数のウィンドウをサポートできます。Android の例:

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

新しいウィンドウで PayPal にリダイレクトするようにコードを変更するまで、同じ問題が発生していました。その後、ユーザーが支払いを完了するかキャンセルすると、ページはハングせず、自動的に閉じます。

ミニ ブラウザー エクスペリエンス (expType=mini) に関する詳細は、次の場所にあります。

モーダルボックスやポップアップのないアダプティブペイメント?

于 2013-07-18T16:44:06.983 に答える