2012-07-13 46 views
3

這種情況是,Web應用程序的用戶可以購買數字項目。該Web應用程序將使用Paypal Instant Payment NotificationPaypal在Web應用程序中的集成

的IPN協議包括三個步驟:

  1. PayPal發送您的IPN監聽器,通知您事件

  2. 您的偵聽器將完整不變的消息回PayPal的消息;該消息必須包含相同順序的相同字段並以與原始消息相同的方式進行編碼

  3. PayPal發回一個單詞,如果消息始於PayPal,則返回驗證字,如果有,則返回INVALID與最初發送的內容不符。

比方說,這是VERIFIED,我怎麼能知道誰已經完成了交易或購買(Web應用程序的用戶)的項目,如果用戶在他/她的PayPal使用其他電子郵件地址?我已將該用戶的電子郵件地址存儲在session中,但如果他/她有不同的PayPal電子郵件,該怎麼辦? PayPal電子郵件包含在IPN消息中。

對於其他細節,可能沒有用處,應用程序使用Google-App-Engine中的Struts2編寫。

回答

0

爲什麼不使用PayPal的快速​​結賬?通過這種方式,您可以向server2server協商令牌,然後您可以使用PayPal檢查用戶返回時該令牌的結果。 如果用戶直接從您的應用程序購買,則更容易實施。 我認爲它比你使用的方法更強大(我以前從來沒有聽說過:D)

1

你需要一種方法將IPN數據與用戶關聯起來。要麼要求他們提供他們的PayPal電子郵件,要麼使用IPN服務中的用戶名/密碼生成工具。這裏是一個略微不雅但功能的方法:

  • 當IPN進來脫絲,堅持生成的用戶名/密碼和payer_id貝寶(或許在數據存儲區)。
  • 如果您不能通過電子郵件進行關聯,那麼當用戶回到您的網站請求時,他們輸入了從貝寶網站生成的用戶名/密碼一次(僅用於關聯)。
  • 查找用戶名/密碼,然後將它們的Userrid從UserService關聯回payerid。

使用IPN的原因是訂閱服務,因爲當訂閱被終止,取消或付款進入時(對於停止付款的賬戶),您可以獲得IPN消息。

要考慮的最重要的事情是如何將您網站的用戶關聯到用於支付他們正在使用的服務的payer_id(有時甚至是payer_id)。

另一方面,我不會使用會話來存儲IPN回調的信息,有時這些實際上可能需要很長的時間(比如x.com會議開啓時,每個人都在敲擊貝寶)。

如果您有一個正在運行的應用程序或對外觀&感覺更好的描述,我可能會想出一個更優雅的建議。讓我知道這是否有幫助。