0

PayPalからリクエストを受け取るPayPalリスナーがいますHTTP POST(またはPayPalのドキュメントに送信内容が示されているようです)。リスナーはPayPalによる検証のために情報を送り返し、情報が検証されるとデータベーストランザクションを実行します。これは通常のPayPalIPNプロセスであり、検証部分は正常に機能します。

PayPalから取得する配列の値の1つはPOST、トランザクション番号を追跡するために通過するものです。だから私は次のような呼び出しを行います:(実際のコードではありません;私はSQLインジェクションを完全に知っています)

UPDATE transactions SET status='paid' WHERE id=$_POST['invoice']

問題:リスナーにいくつかの入力を含むフォームをポイントして入力を偽造すると、すべてが正常に機能しますが、PayPalから実際のPOST配列を取得すると、データベースが実行されません。実際のPayPalデータを取得するときに変数が設定されていることを知ってい$_POST['invoice']ます。それをテストしましたが、84などの有効な値があるため、トランザクションが実行されない理由がわかりません。トランザクションの上下の行は両方とも実行されます。

実際のコードを投稿する必要があるかもしれませんが、PayPalからリクエストを受け取ったときにトランザクションを実行しないようにPHPを構成できる可能性はありますか?私が言ったように、PayPalはHTTP POSTリクエストを送信しているので、私の偽のフォームと見分けがつかないはずですが、何かが間違っています。

4

2 に答える 2

0

おそらく、フォーム入力は実際のIPNとは異なって見えます。

PayPalのIPNには配列を含めることができますが、$ _ POST変数から読み取る場合、phpではうまく処理されません。これがハンドラーを作動させている可能性があります(この場合、生データを読み取って操作する必要があります)。

可能であれば、他の人が示唆しているように、生の受信データを読み取り、シミュレートされたデータと比較してみてください。

于 2012-08-20T03:21:46.067 に答える
0

通知URLは、開発データベースのリスナーを指すように設定されました。そのため、POST ['invoice']変数が設定されたことを示すメールが届きましたが、すべてのトランザクションは開発データベースで実行されました。

于 2012-09-01T12:37:01.057 に答える