2015-02-24 160 views
0

我目前使用Paypal REST API來爲具有多個計劃的用戶處理結算協議。Paypal REST API返回頁面

當用戶註冊一個計劃時,他們需要PayPal來支付。完成該步驟後,PayPal將其重定向到我提供的返回URL。

問題是,有時用戶會話從貝寶返回時不會持續!

我有session_start()作爲我所有文件中的第一行,所以會話正在創建。在將用戶帶到PayPal之前,我已經驗證$_SESSION陣列正在被填充 - 這只是在PayPal後才被帶回。

是否有更好的方式來保存這樣的數據,以便我可以更新從PayPal返回的用戶帳戶?或者,也許有一種方法可以通過PayPalrequest傳遞電子郵件,這樣它就會返回到他們返回給我的網站的對象中?

+0

您應該將用戶標識添加到發送到PayPal的輸入中,然後返回給您 – 2015-02-24 03:14:26

+0

雖然沒有輸入發送到PayPal。我有一個按鈕「Pay with paypal」,他們點擊它,然後我發佈了一個「使用PayPal創建結算協議」的方法:http://htmlpreview.github.io/?https://raw.githubusercontent .com/paypal/PayPal-PHP-SDK/master/sample/doc/billing/CreateBillingAgreementWithPayPal.html – 2015-02-24 03:22:53

+0

計劃是否存在或如何創建? – 2015-02-24 03:26:55

回答

0

如果您在註冊頁面和PayPal重定向到的頁面上通過session_start()正確啓動會話,您的會話應該正常啓動。

假設您不是無意中closing the sessionregenerating the ID,聽起來好像沒有實際的「會話管理」問題,但可能與PayPal重定向到的URL有關。

PHP會話的一個常見問題是,使用默認的PHP配置,它們不包含在子域之間。

例如,如果我訪問您的域名爲example.com,我的會話將只在example.com上激活。如果我然後去www.example.com,我將收到一個新的會話。

您可以通過訪問您的網站example.comwww.example.com並檢查設置了哪個域名來驗證此cookie。如果.example.com(注意是領先.),那麼這就是問題=]

爲了幫助解決這個問題,你可以修改服務器的配置設置.example.com作爲cookie的域。從this answer摘自:

session.cookie_domain = ".example.com" 
0

我給了一個最近的問題相同的答案應該在這裏工作,以及:

我用同樣的問題的解決方案是建立在結算協議 override_merchant_preferences,其中 return_url包含查詢中的用戶標識,如 www.domain.com/api/handler.php?uid=42&action=return

雖然當然你可以通過$_GET這樣的方式傳遞你想要的任何標識符。

+0

好想,謝謝你的輸入! – 2015-03-31 15:12:40