2016-05-06 5 views
4

私は奇妙な問題を抱えています。PayPal REST API支払いの実行後に呼び出されるURLをキャンセルします

私はPHPとREST APIを使用しています。

1)ユーザーが

2)お支払いは

4)ユーザーが完了にリダイレクトされ

3)お支払いは

を実行され、承認されたチェックアウトボタンを押します。

この

はシナリオです購入ページ

5)数秒後に、取引のキャンセルURLが呼び出されます(ユーザーがキャンセルをクリックして私に戻ったときなど)支払いを承認するのではなく、魅力的なボタン)。

約100回の取引のうち、私はこの3つの方法ですべての支払いが実際に行われた3つと、利用可能な場合には資金を得ました。私はサーバーのアクセスログファイルをチェックしていて、2人がios 9.3.1を使用していて、1人がios 9.2.1でした。これはどのように可能ですか?

私が推測しているのは、何とかバックボタンを押した後、キャンセルボタンを押した場合です。

キャンセルキャンセルURLには、注文状況がキャンセルされていない場合にステータスをキャンセルに設定するようにスクリプトを調整する必要があります。

お支払いを実行した後で誰でもまだ支払いをキャンセルできますか?

答えて

2

私はok/cancelの返信ではなく、PayPalから送信されたIPNメッセージを「信頼する」べきだと思います。

https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/

OK /キャンセルurlはユーザーのみ

PayPalはあなたのIPNのエンドポイント(IPN GET/POSTメッセージが表示されますスクリプト)を知っているように情報を表示するために使用する必要があります。スクリプトが呼び出されたら、それに応じてデータベースを更新してください。

このようにすると、ユーザーはトランザクションを取り締まることができなくなります.1つのIPNメッセージを受け取ることが保証されます。トランザクションOKエラー "メッセージ

+0

唯一の問題は、IPNが販売(txn_id)を含み、最初のステップでユーザーがキャンセルをヒットした場合、IPNがまったく呼び出されないことです。私はIPNリスナーを持っていますが、私はすべての呼び出しのための通信を提供するためにサーバーを使用していますが、唯一の例外は、PayPalがサーバーからサーバーへの呼び出しの代わりにリダイレクトを使用しているためです。 –

1

あなたの問題は、投稿された質問hereに似ているようです。回答としてマークされていたuser2090027の応答から

「私たちは/チェックなしの支払いはPayPalの上に作られた後、我々が得る応答のないを維持することによってこれを克服することができます。

私たちは、この使用してクッキーを維持することができますセッションを使用しているサーバや他の何かに似ています」

これが役に立ちます。

+0

こんにちは。はい、私は同様の解決策(最終的なものか一時的なものかはっきりしていません)でカムアップしますが、データベースにトラックを保存し、最初に受け取った情報のみを受け付けます。 –

関連する問題