37

サブスクリプションが作成されたときに受信したものと、後で次の支払いで送信されたもの (サブスクリプションが月額 $x の場合は月単位など) の両方のペイパル サブスクリプション IPN をテストしたいと思います。

ただし、2 番目の IPN を受け取るのに 1 か月または 1 日も待たされるのは避けたいと思います。ペイパルまたはそのサンドボックスを使用して、1 時間ごとなど、IPN をより速く送信する方法はありますか?

ドキュメントには、サブスクリプション期間として年、月、日、および週のみを指定できると記載されています。

4

5 に答える 5

57

PayPalの開発者サポートとドキュメントは彼らにとって恥ずかしいものです。しかし、この特定の制限は、最初は赤面しているように見えるほど衰弱させるものではありません。

テストでは、無料トライアルがないように定期支払いを定義します。新しいサブスクリプションを作成すると、サーバーは2つのIPNメッセージをすばやく連続して受信します。1つはサブスクリプションを作成するためのもので、もう1つは支払いを適用するためのものです。基本的に、テストする必要があるのはそれだけです。

無料トライアルがある場合は、基本的に同じメッセージのペアを受け取りますが、それらの間にトライアル期間があります。:)

最初のメッセージ(「サブスクリプションの作成」)は次のようになります。'txn_type'に注意してください。これは、2つのメッセージを明確にするための重要な情報です。

{
  "txn_type"=>"subscr_signup",
  "subscr_id"=>"unique_id",
  "verify_sign"=>"random_gibberish",

  "item_number"=>"your_subscription_name"
  "subscr_date"=>"14:32:23 Feb 15, 2010 PST",
  "btn_id"=>"1111111",
  "item_name"=>"Your Subscription Description",
  "recurring"=>"1",
  "period1"=>"1 M",

  # This example is from a "free trial" IPN notification-- if you don't have a 
  # free trial defined, there will only be 'period1' fields, and they'll
  # have the data that appears here in the 'period3' fields.
  "amount1"=>"0.00",
  "mc_amount1"=>"0.00",
  "period3"=>"1 M",
  "amount3"=>"34.95",
  "mc_amount3"=>"34.95",
  "mc_currency"=>"USD",

  "payer_status"=>"verified",
  "payer_id"=>"payer_unique_id",
  "first_name"=>"Test",
  "last_name"=>"User",
  "payer_email"=>"test_xxxx@example.com",
  "residence_country"=>"US",

  "business"=>"seller_xxxxxxx@example.com",
  "receiver_email"=>"seller_xxxxxxx@example.com",

  "reattempt"=>"1",

  "charset"=>"windows-1252","notify_version"=>"2.9","test_ipn"=>"1",
}

この場合、2番目のメッセージはより興味深いメッセージです。これは基本的に、後で定期支払いが適用されたときに表示されるメッセージとまったく同じになります。これは次のようになります。

{
  "txn_type"=>"subscr_payment",
  "subscr_id"=>"unique_id",
  "verify_sign"=>"random_gibberish",

  "txn_id"=>"payment_unique_id",
  "payment_status"=>"Completed",
  "payment_date"=>"12:45:33 Feb 16, 2010 PST",

  "item_number"=>"your_subscription_name"
  "subscr_date"=>"14:32:23 Feb 15, 2010 PST",
  "custom"=>"data-you-sent-in-a-custom-field",

  "id"=>"1",
  "payment_gross"=>"34.95",
  "mc_currency"=>"USD",
  "payment_type"=>"instant",
  "payment_fee"=>"1.31",
  "payer_status"=>"verified",
  "mc_fee"=>"1.31",
  "mc_gross"=>"34.95",
  "btn_id"=>"1111111",

  "payer_id"=>"payer_unique_id",
  "first_name"=>"Test",
  "last_name"=>"User",
  "payer_email"=>"test_xxxx@example.com",
  "residence_country"=>"US",

  "receiver_id"=>"your_merchant_id",
  "business"=>"seller_xxxxxxx@example.com",
  "receiver_email"=>"seller_xxxxxxx@example.com",

  "protection_eligibility"=>"Ineligible",
  "transaction_subject"=>"",
  "charset"=>"windows-1252","notify_version"=>"2.9","test_ipn"=>"1",
}

したがって、1日も待たずにほとんどすべてのテストを実行できます。あなたがそれを釘付けにしたと思う時までに、あなたは翌日たくさんのサブスクリプションIPNメッセージを受け取るでしょう。

さらに、参照用にPayPalのドキュメントへのリンクがあります。

于 2010-02-22T20:59:24.467 に答える
8

テスト IPN を再送信することは可能であるため、テスト用に 1 つのサブスクリプションを「購入」するだけで済みます。サブスクリプションを 1 つ購入したら、次のことを行います。

  1. PayPal サンドボックス販売者アカウントにログインします。
  2. 「プロフィール」=>「私の出品設定」を選択します。
  3. 3 列目から [即時支払い通知設定] を選択します。
  4. IPN が有効になっており、URL が正しいことを確認します。
  5. IPN Historyページへのリンクをクリックします。
  6. 下にスクロールし、1 つ以上の IPN にチェックマークを付けて、[再送信] をクリックします。

確認後、選択した IPN が指定した URL に再送信されます。同じ IPN で無制限に繰り返すことができます。

@dondoによる優れた回答が残りをカバーしています。

于 2014-09-25T18:34:06.643 に答える
7

以前は、日単位で指定された期間がテスト サーバーによって分として扱われていたため、'd3' を指定すると 3 分ごとに呼び出されていました。彼らはこれを削除したと思いますが、サブスクリプションをテストするための代替機能については知りません。

于 2009-09-01T20:26:19.253 に答える
6

ねえ、私はニールに叫びたかった.

信じられないかもしれませんが、paypal では、ipn ファイルを使用したサブスクリプション テストを簡単に行うことができません:/

だから、私がここでそれを見なかったという理由だけで、OPの種類は、教皇からの2つの可能な応答のみを期待するという印象を受けているように聞こえました-

他の誰かが問題を抱えている場合は、テスト中に私のipnにヒットした他のtxn_typeを次に示します。

//when paypal subscription profile is created for the subscriber
subscr_signup 

//payment made for a given billing cycle
subscr_payment 

//when subscription fails
subscr_failed 

//user cancels subscription - not
subscr_cancel 

//end of term - paypal is "done" with that subscriber 
subscr_eot 

//why I was looking for this thread to begin with lol
recurring_payment_suspended_due_to_max_failed_payment

その最後の 1 つは、今朝、私のテスト サブスクライバーの最後の 1 つに対して私の IPN をヒットしました。その意味を調べていたところ、以下も取得可能であることがわかりました。

recurring_payment_profile_created

recurring_payment_profile_cancel

recurring_payment_profile_modify

recurring_payment

recurring_payment_skipped

recurring_payment_failed

サブスクリプションと定期的な支払いは、PayPal の目には技術的に異なるため、それを得るために何をしたかわかりません (サブスクリプションはおそらく終了することはありませんが、定期的な支払いには、誰かが「サブスクリプション」に対して行うことができる合計支払いに上限があります) が、それらのドキュメントどちらも常に簡単ではないので、わかりません。これはサンドボックス マーチャント アカウントによって生成されたサブスクリプション ボタンだったので、まだ調査中です。

幸せな頭痛:)

更新:私は今自分の問題を理解しました-だから、私が何をしているのか知っているように聞こえるので、説明します...

Paypal のサブスクリプション サンドボックス環境は、徐々に死につつあると思います。先日、sandbox.paypal.com をいじっていると、「致命的な失敗」が何度も発生することに気付きました。ページを更新すると、ほとんどの場合これが修正されるようですが、画面が元に戻るまで数回更新する必要がある場合があります。

私の IPN ファイルをヒットした彼らからも同じ応答が返ってきました。Neil のおかげで、私は IPN 応答を再送信することができ、それをテキスト ファイルにキャプチャし (笑)、応答で読み取っている IPN ファイルをヒットし、それをペイパルに送り返しました (それよりも本当に複雑です。簡単に聞こえるようにします)。

いずれにせよ、ページを更新することで、ペイパル ハンドシェイクをオンデマンドで開始できます。そうすると、50/50 になります。検証済みになることもあれば、致命的な失敗になることもあります。サンドボックス サイト (致命的な失敗) で。

以下は、私が彼らから得た失敗した応答の一部の例です... 私は 200 を得るので、彼らのサーバーにアクセスすることは接続の問題ではないと思いますが、ここで「致命的な失敗」のパターンを見始めています。これは私よりも彼らの終わりを指している

HTTP/1.1 200 OK 
Date: Tue, 29 Sep 2015 02:41:00 GMT 
Server: Apache 

Fatal Failure 
于 2015-09-29T02:03:20.907 に答える