2012-07-13 32 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会议开启时,每个人都在敲击贝宝)。

如果您有一个正在运行的应用程序或对外观&感觉更好的描述,我可能会想出一个更优雅的建议。让我知道这是否有帮助。