3

PayPal サブスクリプションでは、フィールドを確認する以外は、通常の IPN のように扱うだけでよいようtxn_typeです。次のステータス コードのいずれかが表示されたら、管理者に電子メールを送信して、PHP で構築しているソフトウェアの管理パネルでそのメンバーを手動で期限切れにすることを検討します。

ステータスは次のいずれかであると思われ、顧客がキャンセルしたか、契約期間が終了したか、単に支払っていないことを示しています。これらがチェックするのに適切なステータスであることを誰かが確認できますか、それとも正しくないカップルを含めましたか?

  • subscr_cancel
  • subscr_eot
  • subscr_failed
  • recurring_payment_failed
  • recurring_payment_suspended_due_to_max_failed_pa​​yment
  • recurring_payment_outstanding_payment_failed
  • recurring_payment_profile_cancel
  • recurring_payment_expired
4

3 に答える 3

2

サブスクリプションボタンのメカニズムを実行したことがあり、それが事前に承認された定期支払いの1つではない場合は、「subscr」というプレフィックスが付いたものだけが表示されると思います。

私は自分のアプリで「subscr_cancel」に個人的に応答しません。そのためのIPNは、ユーザーがキャンセルした瞬間に送信されます。その時点でアクセスを無効にしたくないので、「subscr_eot」のアクセスを待ってから実行します。

したがって、1年間サインアップして翌日キャンセルした場合でも、PayPalが「subscr_eot」を送信する年末にアクセスできます。彼らは常に両方を送信します。

于 2013-01-15T17:10:20.070 に答える
2

これらは、コード内の「メンバーシップの終了」タイプの反応に関して注目すべきものであることがわかりました。

  • subscr_cancel
  • subscr_eot
  • recurring_payment_profile_canceled
  • recurring_payment_expired

他のすべては、「メンバーシップの終了」ステータスに関する単なる「ノイズ」です。たとえば、支払いの「失敗」タイプの IPN に対応するのは間違っています。最終的には PayPal が再試行後に顧客の問題を修正する可能性があるためです。そのため、キャンセルと有効期限のイベントは実際に探す必要があります。

于 2012-12-23T20:57:55.650 に答える
1

私はこの投稿で少し遅れていることを知っていますが、ここにあなたの質問に対する簡単な解決策 (php) があります:

switch ($_POST['txn_type']) {
    case 'cart':
          //for products without subscription
     break;
    case 'subscr_payment':
        //subscription payment recieved
        break;

    case 'subscr_signup':
        //subscription bought payment pending
        break;

    case 'subscr_eot':
       //subscription end of term
        break;

    case 'subscr_cancel':
        //subscription canceled
        break;
 }
于 2015-01-29T01:04:58.023 に答える