(HTML5) Web アプリにPayPal Digital Goods Express Checkoutを実装して、追加のアプリ コンテンツの「アプリ内」購入を有効にしています。私のデスクトップ ブラウザー (Chrome、Safari、Firefox) では、デジタル商品の流れは問題なく動作します。そのフローでは、ポップアップ ウィンドウがいくつかのポイントで開かれます。たとえば、ユーザーがログイン ボタンをクリックしたとき、またはクレジット カードで支払うボタンをクリックしたときです (つまり、paypal アカウントを持っていない場合)。ポップアップは、デスクトップ ブラウザーでは問題ありません。ただし、iPad 2 のモバイル Safari では、ポップアップ ウィンドウが常に (新しい) タブとして開かれます。、幅、高さなどを含むプロパティ文字列が JavaScript window.open() コマンドに渡された場合でも。これにより、PayPal Digital Goods Express Checkout を実装して、デスクトップ ブラウザーとモバイル Safari の両方で優れたユーザー エクスペリエンスを実現することができなくなります。Web アプリが iPad で (ホーム画面のアイコンを使用して) フルスクリーンで実行されている場合、ポップアップを開くことはさらに問題 (または不可能) になります。
私の問題を解決しようとして、次のオプションを思いつきましたが、いずれもまだ満足のいく結果にはなっていません。
支払いフローをカスタマイズします。もちろん、これはある程度までは可能ですが、ユーザーを PayPal へのログインを強制する「インコンテキスト」のエクスプレス チェックアウト ページにリダイレクトした後は、カスタマイズは私の手に負えません (私の知る限り)。たとえば、ログイン プロセス自体をカスタマイズして、(ポップアップ ウィンドウではなく) iframe で機能させることはできません。サーバー側で使用して、独自の (iframe 化された) ログイン フォームを使用して、ユーザーが自分で PayPal にログインできるようにする高度な API コマンドがあれば素晴らしいと思いますが、これはあまりにも大げさなようです。
Mobile Safari でポップアップ ウィンドウが期待どおりに動作するようにします。Web アプリがフルスクリーンで実行されている場合も可能です。Mobile Safari が新しいウィンドウをタブとして開くのは不思議ではないと思います (これを行うブラウザは他にもあります)。window.open と、ウィンドウの位置とサイズを定義するプロパティ文字列を使用して、JavaScript から開いたポップアップ ウィンドウがタブとして開かれるのは奇妙だと思います。ユーザーがブラウザの設定を変更しなくても、Mobile Safari でこのようなポップアップ ウィンドウを正常に開く方法を知っている人はいますか?
私の問題を示す (そして、このサイトの所有者はおそらく知らないかもしれませんが、私だけが問題に直面していないことを示すために ;-)、 iPad でdigitalmagazine.autosport.comにアクセスし、[PayPal で支払う] ボタンをクリックします。ページの左上にあります。PayPal iframe のログイン ボタンをクリックします。サイトが表示されなくなり、ログイン ページ (「アプリ内」エクスペリエンスのためにポップアップ ウィンドウで開かれることになっている) がフル ページで開きます。
同様のアプリ内支払いシステムで使用されているクライアント側 (JavaScript) の手法も調べましたが、それらも (当然のことながら) ポップアップ ウィンドウを使用します。したがって、上記で説明した2番目のソリューションをお勧めします。それはまた、はるかに少ない作業を必要とします。