2017-02-09 91 views
2

購買服務訂購時,推薦的工作流程用於存儲我的客戶ID?使用PayPal IPN時的客戶信息

這裏是我的想法:

  1. 用戶決定購買
  2. 用戶在創建帳戶或登錄(如果尚未登錄)
  3. 會話變量建立
  4. 做PayPal交易
  5. 獲取IPN信息並將適當的會話變量添加到數據庫中

我從來沒有處理過付款,只是想確保我以正確的方式做事。我能找到的幾個教程沒有具體解決這個問題。我將驗證我的用戶是否有權使用基於付款信息的工具。我正在使用PHP並且已經使貝寶事務工作。

似乎payer_id並不是一個非常可靠的方式來做到這一點,因爲它可能會改變。所以我非常想找一種方法將交易的結果與我的數據庫中的現有客戶聯繫起來,他們的會話將在購買時激活。其中一個問題是,我不得不在IPN響應中處理它,而不是SUCCESS響應,因爲用戶可能會在付款後關閉瀏覽器。思考?

+0

我很想知道這個答案。作爲邊注,你是否實現了用戶註冊門戶和paypal收費yoruself,還是你使用任何現有的軟件包? –

+0

我的實現來自這種方法[here](http://www.codexworld.com/paypal-standard-payment-gateway-integration-php/) –

+0

您應該將用戶標識存儲在['custom'變量]( https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/),以便您的IPN處理程序有權訪問該ID。 – Mikey

回答

0

我找到了一個可以接受的解決方案(很簡單,實際上),我在這裏發佈它,因爲我無法在任何地方找到它。做到這一點的方法是添加一個隱藏的字段到您的表單,該表單接受登錄用戶的用戶標識。

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

然後,在你的IPN的網址,該表單字段的值將是提供給您通過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更安全通過GET獲取所有變量。