2016-08-23 1 views
0

私は、特定の製品に対してユーザーが支払う必要があるサービスを作成しています。今、私はトランザクションの部分に苦労しています。トランザクションを安全に処理する方法

ユーザーがチェックアウトページにアクセスした場合、トランザクションを作成しています。支払いゲートウェイは、次のURLを持っています

ReturnUrl -> The URL the costumer is being redirected to after a succesfull payment (after clicking "Back to Webshop") 
NotifyUrl -> The URL (server-to-server call) thats being called when the user finishes his payment, when the costumer is being redirected back via ReturnUrl 
CallbackUrl -> The URL thats being called when the user closes his browser after a succesfull payment, without clicking the "Back to Webshop" button, and hence not being redirected via ReturnUrl 

を今、私は彼らがNotifyUrlまたはCallbackUrlのいずれかに戻ったときにしっかりと完成にトランザクションを設定する方法に苦しんでいます。 権限のないユーザーが何も変更/変更できないように、トランザクションをデータベースに入れているときにトークンを生成しています。しかし、私は支払いのプロバイダにPOSTでトークンを送信しています。つまり、tokenとtransaction_idのようなすべての情報をGETリクエストに送るURLを知っていれば、実際にサーバーに支払って、リクエストは私のペイメントプロセッサーから来ました。

これを正しく実行するにはどうすればよいですか?

+0

私はあなたのロジックに従うことができるとは確信していません。誰が正確に何を閲覧することができましたか?あなたのトランザクションIDはシリアルである(つまり、誰かがそれを把握できる)ということと、支払いプロバイダからリクエストが来ているかどうかをチェックしていないというあなたの声をお聞かせください。 – Shadow

答えて

0

少なくとも、サーバーからサーバーへの呼び出しの発信元(IPアドレスまたはドメイン)を確認して、要求を行った支払いプロセッサであることを確認する必要があります。

一部の支払い処理業者(マルチスクリーン)は、お支払い状況が変更されたことを通知するだけで、目覚めメッセージをNotifyUrlに送信します。その後、サーバーは正確な詳細を要求している支払いプロセッサーに安全な呼び出しを行い、それに応じてローカル状況を更新することができます。

さらに、これらのシナリオでsslを使用することは常に賢明です。

関連する問題