9

ミニブラウザ経由でチェックアウトを提供するために、Paypals Adaptive Payments と組み込みフロー機能を使用しています。支払いが正常に完了した場合、ユーザーが PAY API 要求で設定された returnUrl にリダイレクトされないことを除いて、すべてがサンドボックス環境で正しく機能しているようです。同様に、cancelUrl についても同様です。

支払いが完了すると、ミニブラウザに注文の概要が表示され、「閉じる」というボタンが表示されます。ユーザーがこのボタンをクリックすると、ミニブラウザが閉じます。

ユーザーがいつでもキャンセルをクリックすると、ミニブラウザが閉じられます。

ポーリングまたは意味をなさない何かを設定する以外に、ページに変更を認識させる方法はないようです。returnUrl と cancelUrl をどこかで使用する必要があります。

これは、リダイレクト URL を取得するための私のコードです (Adaptive Payments gem を使用):

pay_request = PaypalAdaptive::Request.new
data = {
  'requestEnvelope' => {'errorLanguage' => 'en_US'},
  'currencyCode' => 'USD',
  'receiverList' =>
          { 'receiver' => [
            {'email' => '...', 'amount'=> 10.00}
          ]},
  'actionType' => 'PAY',
  'returnUrl' => 'http://www.example.com/paid',
  'cancelUrl' => 'http://www.example.com/cancelled',
  'ipnNotificationUrl' => 'http://www.example.com/ipn'
}

pay_response = pay_request.pay(data)
redirect_to pay_response.approve_paypal_payment_url "mini"

そして、これが私がpaypal jsをセットアップする方法です:

var dg = new PAYPAL.apps.DGFlowMini({ trigger: "buyit", expType: "mini" });

それはすべて非常に簡単に思えますが、何が欠けているのかわかりません。

4

2 に答える 2

9

ええと - 私たちの側のバグのようです - 自分で試してみて、統合チームに確認しました. :-(

残念ながら、あなたが言及したこと(ポップアップウィンドウの存在を確認すること)以外に私が考えることができる他の短期的な修正は、サーバー側から PaymentDetails API を呼び出して支払いのステータスを確認することです。こちら側でバグをオープンしましたが、ETA がありません。

10/18 編集: 申し訳ありませんが、間違っています。これは機能しています。開発者ガイドに必要な情報がすべて記載されていないだけです。ミニブラウザ フローの場合は、「callbackFunction」を提供し、dgFlow 変数に「dgFlowMini」という名前を付ける必要があります。(後者は重要です - apdg.js は 'dgFlowMini' 変数が定義されていることを想定しているため) 動作するコードは次のとおりです。

var returnFromPayPal = function(){
   alert("Returned from PayPal");
   // Here you would need to pass on the payKey to your server side handle to call the PaymentDetails API to make sure Payment has been successful or not
  // based on the payment status- redirect to your success or cancel/failed urls
}
var dgFlowMini = new PAYPAL.apps.DGFlowMini({trigger: 'em_authz_button', expType: 'mini', callbackFunction: 'returnFromPayPal'});

ここに実際のサンプルがあります: https://pp-ap-sample.appspot.com/adaptivesample?action=pay (経験の種類として必ずミニを選択してください)

ドキュメントを更新し、apdg.js をクリーンアップして、JS 変数名への依存関係を削除します。

于 2012-10-18T00:26:17.267 に答える