2010-02-08 78 views
0

我在我的網站上有一個表單上的貝寶按鈕。表單有一個稱爲ID的附加輸入,用戶必須輸入一個特定的值。貝寶+ PHP:如何獲得成功銷售價值

出售完成後,貝寶用戶返回到domain.com/credits?done

我怎樣才能收到由/用戶輸入的原始ID值學分?做了什麼?需要它自動修改他的數據庫記錄。

謝謝。

回答

1

您可以創建一個簡單的購物車系統,該系統將具有唯一的發票以區分每筆交易。將支付數據發送到PayPal時,請將此發票作爲參數傳遞。任何其他數據都可以存儲在您的數據庫中,無需將其發送到PayPal,因爲您可以將發票中的每個交易確定爲唯一標識符。

您還需要創建一個ipn處理程序頁面,以便在用戶進行付款時從PayPal接收數據,以便您可以更新數據庫中的付款狀態。通過這種方式,用戶在付款後不必點擊返回到您的網站鏈接,但您仍然可以更新相關數據。

爲了使集成更容易,您可以考慮使用Micah Carrick's Paypal IPN Class。基本上它與PayPal提供的代碼是相同的代碼,但它被包裝到一個類中,所以你可以在你的頁面中使用它。

1

如果您所引用的ID是您使用的唯一參考,請使用item_number元素在Paypal和您的網站之間來回傳遞。

坐落在你展示給客戶,並注意你的HTML表單的ID也可以指定3個網址:

<input type="hidden" name="item_name" value="Box of stuff"></input> 
<input type="hidden" name="item_number" value="12345"></input> 
<input type="hidden" name="return" value="http://www.blah.com/paypal_thanks.asp"></input> 
<input type="hidden" name="notify_url" value="http://www.blah.com/paypal_callback.asp"></input> 
<input type="hidden" name="cancel_return" value="http://www.blah.com/paypal_cancel.asp"></input> 

當我用「paypal_callback.asp」上面,這將覆蓋IPN鏈接,你可以在您登錄PayPal並編輯您的設置時設置。所以這個值是可選的。

的SCRPT paypal_callback.asp(假設寫在ASP)然後只是說:

iAdvertId = Request.Form("item_number") 

注意,該頁面未顯示給用戶的一個!它在幕後被PayPal服務器擊中。令人討厭的是Paypal_callback.asp不會立刻被Paypal調用。這可能是3天后...或者他們可能會在一個月後收到付款。

在我的示例中,客戶將被重定向到paypal_thanks.asp或paypal_cancel.asp。這些頁面不會通過表單或查詢字符串,因此只有在用戶提交表單購買之前,才能獲取您在item_number中放置的號碼的唯一方法是將其存儲在cookie中。

當您從Paypal收到電子郵件時,item_number將在主題行中以及郵件正文中(在說明行末尾)提及。

也可以在自定義字段中設置附加信息。 Paypal documentation詳細說明了如何做到這一點,並且您可以在sandbox中用他們的IPN模擬器進行測試。

+0

以及如果我需要2個變量發送? – andufo 2010-02-12 18:02:19

+0

我測試了整個事情,但我有一個問題。一旦傳輸成功,它會將我重定向回domain.com/buy?merchant_return_link=blabla,而不是將按鈕中設置的鏈接視爲成功的返回點。 爲什麼? – andufo 2010-02-12 19:37:23

+0

我會編輯我的帖子,試着回答你的問題 – 2010-02-16 11:34:22