确定谁购买了 PayPal - IPN

Posted

技术标签:

【中文标题】确定谁购买了 PayPal - IPN【英文标题】:Identify who made the purchase PayPal - IPN 【发布时间】:2015-03-10 17:07:03 【问题描述】:

我正在开发一个 Twitter 网络应用程序,用户可以在其中购买硬币包。

一旦他们点击了 paypal 按钮并想要结帐,他们就会被指示输入他们的凭据并最终确定 paypal。然后,PayPal 服务器将依次向我的后端 servlet(我在 Java 中执行此操作)发送一个 HTTP,其中包含有关交易的信息。

我的问题是我如何知道是哪个用户进行了购买?问题是,贝宝服务器发送的 IPN 消息包含一组来自他们的预定义参数。这意味着我无法真正确定是哪个用户付款!

由于这是一个 twitter 应用程序,因此无需用户名/电子邮件/密码即可注册该网站。

我需要和想要的只是一种将进行购买的用户的 dbUserId 发送到 paypal IPN 请求的方法,这样一旦 PayPal 发送 IPN POST,我就知道谁进行了购买,从而将硬币添加到他/她的记录。

我需要所有帮助。

谢谢

【问题讨论】:

我们是合作伙伴...回到我的问题,让我给你一个场景,以便你更好地理解:1)用户x点击PayPal按钮并想要购买2)用户x进入Pay​​Pal凭证并进行付款,然后 PayPal 将 IPN 消息发送到我们的后端 servlet。现在,我怎么知道是用户 x 进行了交易,以便我可以更新用户 x 的数据库记录?? 他们给你payer_email,但你不知道电子邮件,因为你只知道 Twitter id,对吧?所以这是一个泡菜。 是的.. 但是即使我们假设我有一个普通的网站,使用普通的用户名/电子邮件/密码,仍然可能存在用户有一个电子邮件用于他的帐户的情况,一个完全独立于他的贝宝。我想知道是否有办法将用户 dbId 记录与发送到贝宝的请求一起发送,从而可以将其发回或其他什么? 【参考方案1】:

您可以在标准按钮代码或 API 请求的“自定义”参数中发送您的 ID 值。此参数允许您存储最多 256 个字符的任何内容,并且在 IPN 中的“自定义”参数中也会返回相同的值。

另一种选择是在将用户发送到 PayPal 进行付款之前为用户保存本地发票/订单记录。这样,您可以在 PayPal 请求中的“invoice”参数中发送发票/订单 ID,并且该值将在 IPN 中的“invoice”参数中返回。

无论哪种方式,您都可以提取该值,然后在 IPN 脚本中从您自己的系统中提取您需要的任何其他详细信息。

【讨论】:

感谢您的评论!但是有一个问题,当您说“自定义”参数时,您的意思是我要在 PayPal 的 html 按钮中插入一个隐藏的“输入”值吗?即,像这样: 那么你的意思是在我的servlet中我可以做这样的事情吗? String dbId = req.getParameter("dbUserId"); ? 参数的实际名称叫做“custom”。你不能编自己的名字。 好的,为了清楚起见,换句话说,我必须将这一行添加到我的按钮代码中? 然后在我的 servlet 中检索它,如下所示: String value = req.getAttribute("custom"); ?

以上是关于确定谁购买了 PayPal - IPN的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 PayPal 购买和重定向后使用 IPN/PDT 显示收据和数字和/或可下载产品

Paypal 立即购买按钮如何在 ipn 侦听器中捕获价格/选项下拉数据

如何在不使用“立即购买”按钮的情况下为自定义购物车集成 Paypal IPN

Paypal 自适应支付 IPN 回调:如何返回完整未更改的 ipn 消息

Paypal 中的 IPN 与 PDT

Paypal 中的 IPN 与 PDT