2017-02-09 15 views
2

サービスへの購読を購入する際に顧客IDを保存するための推奨ワークフローは何ですか?ここでPayPal IPNを使用している場合の顧客情報

が私の考えです:

  1. ユーザーは(まだログインしていない場合)
  2. ユーザーが
  3. セッション変数が
  4. は、ペイパルのトランザクションを実行します。確立されている中で、アカウントやログを作成し、購入することを決定
  5. IPN情報を取得し、適切なセッション変数をDBに追加します。

私は決して前払いを扱っておらず、正しい方法でやっていることを確認したかっただけです。私が見つけたいくつかのチュートリアルでは、特にその質問に対処していません。私は、ユーザーが支払い情報に基づいてツールを使用する権限を持っていることを確認します。私はPHPを使用しており、すでに働いているpaypalトランザクションを持っています。

payer_idは実際に変更する可能性があるため、これを実行する信頼性の高い方法ではないようです。だから私は実際にそのトランザクションの結果を、購入時にセッションがアクティブになる私のDBの既存の顧客に結びつける方法を探しています。その1つの問題は、ユーザーが支払い時にブラウザを閉じる可能性があるため、SUCCESS応答ではなくIPN応答で対処しなければならないということです。思考?

+0

私もこの回答を知りたいと思っています。サイドノートとして、ユーザーregポータルとpaypalをyoruselfで実装しましたか、既存のパッケージを使用しましたか? –

+0

私の実装はこのアプローチから派生しています[here](http://www.codexworld.com/paypal-standard-payment-gateway-integration-php/) –

+0

あなたは['custom'変数]にユーザIDを格納するべきですIPNハンドラがIDにアクセスできるようにするには、https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandand_htmlvariables/)を参照してください。 – Mikey

答えて

0

私は容認できる解決策を見つけました(実際には非常に単純です)。私はそれをどこでも見つけることができないので、ここに掲載しています。これを行う方法は、ログインしたユーザーのユーザーIDを取得するフォームに非表示のフィールドを追加することです。

<input type="hidden" name="custom" value="<?php echo $your_userid; ?>"> //set somewhere else in the code 

次に、あなたのIPNのURLに、そのフォームフィールドの値がPOSTを経由して戻ってあなたに利用できるようになるだろう:

$userid_to_log = $_POST['custom']; 

(例えば)ユーザIDという名前のお支払いのテーブルに新しい列を追加します。 は最後に、あなたのINSERT文でそのフィールドを含める:

$db->query("INSERT INTO payments(item_number,txn_id,payment_gross,currency_code,payment_status, userid) VALUES('".$item_number."','".$txn_id."','".$payment_gross."','".$currency_code."','".$payment_status."','".$userid_to_log."')"); 

このソリューションを使用すると、私の見解ではなく、中にIPNを有効にする必要があり、それがどのB SUCCESSオプションに頼るよりも安全ですasically GETを介してすべての変数を取得します。

関連する問題