3

Paypal の IPN を Codeigniter ベースの Web アプリに整数化しようとしたときの 2 つのランダムな質問です。

1) これらの 2 つの行は同じですか?

$data['pp_info'] = $this->input->post();

$data['pp_info'] = $_POST;

2) ユーザーは、PayPal を使用してサービスを使用するために月額料金を支払うことに同意します。これは、PayPal からデータが返されたときに、ユーザーが支払ったことを認識した最初の支払いです。しかし、ユーザーが次の月の料金を支払ったかどうかをどのように追跡しますか? ユーザーが自分のペイパル アカウントからキャンセルしていないことをどのように確認できますか?

助けてくれてありがとう

4

3 に答える 3

2

1) 注意してください - セキュリティのために CodeIgniter の post() ハンドラを使用したいのですが、CI は \n への改行を標準化していますが、PayPal は \r\n を想定していることに注意してください。したがって、注意しないと、PayPal は複数行の入力を無効として拒否します。私のPayPal IPN ライブラリでこれを回避するには、次のようにします。

    foreach (array_keys($_POST) as $field)
    {
            $value = $this->input->post($field);
            $ipnData[$field] = str_replace("\n", "\r\n", $value);
    }

2) 定期的な支払いに IPN を使用している場合、PayPal は、ユーザーのサブスクリプション レベルの更新に関する通知を IPN URL に送信します。txn_type 変数を調べたいとします。有効な値にはsubscr_signupsubscr_failedおよびsubscr_eot(学期末) が含まれます。これらの値を確認し、アプリで処理する必要があります。

于 2011-02-22T11:02:45.607 に答える
1

1) はい。ただし、CI が将来メソッド (セキュリティ フィルターなど) に変更を加える場合に備えて、最初のものを使用する必要があります。

2) PayPal には、「この人のカードは期限切れです」と「この他の人の定期支払いは処理されました」という数時間ごとに呼び出す必要がある URL があります。URL は PayPal のコントロール パネルに表示されます。

于 2010-03-26T21:21:23.943 に答える
0

1) いいえ、それらは同じではありません。

通常は $this->input->post(); を使用する必要があります。その POST 配列インデックスが設定されているかどうかを確認するのに役立つ省略形であるためです。

ページに何もポストされずに $_POST['mydata'] を呼び出すと、その配列インデックスが存在しないため、エラーが発生します。これを克服するには、「if (isset($_POST['mydata']))」チェックを行いますが、CI はすでにそれを行っています。

コロナタスが言ったように、追加のCIグッズを手に入れます

2) アレックス・ディーンが言ったように、数時間ごとにペイパルに電話しないでください。IPN を使用すると、何かが発生するたびにペイパルがサーバーに「プッシュ」します。

于 2012-02-18T13:25:06.797 に答える