2012-07-24 74 views
11

所以我在我的網站中實現了paypal IPN,並且我處於 工作過程的中間。現在,我想在第形式 使用超過1個自定義變量我目前使用這一個只Paypal IPN處理多個自定義變量

<input type="hidden" name="custom" value="<?php echo $user_id; ?>"> 

所以我知道這個名字「自定義」的變量是允許的。我想知道如果 我可以傳遞更多變量,所以我可以根據他們的標準篩選付款。 因此,如果例如航運高於$ 0.00美元我設置一個變量「shipping_cost」是這樣的:

<input type="hidden" name="shipping_cost" value="<?php echo $cost; ?>"> 

或用於其他目的。這是否允許?或者,paypal有一個我們可以使用的已允許的變量列表 ?我真的想解決這個問題,因爲並不總是有一種類型的 我們可以處理... 謝謝你們。

回答

4

正如我(和許多其他我想象的)也面臨這個問題,我想我會分享我遇到的一些解決方案。

This one在PayPal社區中引發,建議使用Option Variables,它似乎提供了一個鍵/值對實現來促進多達99個變量(對於我沒有實際嘗試過的記錄)。

最普遍接受的解決方案(我也贊成)是將所有數據添加到數據庫記錄,然後使用自定義變量來存儲您的記錄ID,這顯然可以在以後使用(例如通過IPN)檢索您的數據。

3

PayPal定義了您可以使用的字段here。任何其他字段將被忽略。

定義了一個'shipping'字段,PayPal將使用該字段的值對運費收取額外費用。您也將能夠從IPN或PDT數據中獲得該值。

如果您需要傳遞其他值,則可以考慮在「自定義」字段中傳遞以查詢字符串樣式格式化的字符串(var1 = value1 & var2 = value2 ...)。請注意,此字段中允許的最大字符數爲256.當您獲得IPN或PDT響應時,您將解析此字符。

如果自定義字段的大小太過限制,那麼您可以嘗試我在另一個answer here中描述的內容。

+0

真令人失望。我必須使用其他允許的貝寶ip變量來實現我的意圖。我使用了產品名稱和說明。謝謝你的回答。 – inrob 2012-07-28 20:33:15

+1

你確定你不能只使用「custom2」嗎?我正在瀏覽一些遺留代碼,我看到一個帶有「custom」和「custom2」的表單作爲發送到PayPal的字段。 – CMCDragonkai 2015-03-16 12:36:26

8

這種方式,您可以通過更多參數

<input type="hidden" name="custom" value="variable1=234&var2=summa&etc=xyz"/> 

使用PayPal表格上面的一個。

並通過以下代碼進行處理。

parse_str($_POST['custom'],$_MYVAR); 

echo $_MYVAR['variable1']; 
echo $_MYVAR['var2']; 
echo $_MYVAR['etc']; 

我希望這個幫助你。

+0

好方法謝謝。 – inrob 2015-08-22 14:15:26

+0

您也可以將自定義數據作爲JSON發送(使用'json_encode($ data)''從PHP數據類型轉換而來],然後使用'json_decode($ _ POST ['custom'])''檢索它。 – 2015-10-08 18:55:00

+0

這是一個很好的解決方案。謝謝+1 – 2016-04-27 14:28:44