PHP - 贝宝支付交易

Posted

技术标签:

【中文标题】PHP - 贝宝支付交易【英文标题】:PHP - Paypal payment transaction 【发布时间】:2014-06-13 06:32:45 【问题描述】:

我在使用 Paypal IPN 时遇到了问题。回调效果很好。

我有一个网站,任何人都可以在我的网站上免费注册。之后,用户可以升级账户,这里干预paypal。

我如何确定用户 (A) 已向 transaction_id (0123) 付款?

例如

用户 (A) -> 点击按钮 (item_number = (0009)) -> 重定向到贝宝页面;

用户(?)付费 -> Paypal IPN 发送和服务器接收数据 -> [哪个用户付费了?]

!!这样,无需用户返回网站!!

谢谢

【问题讨论】:

解析用户id到paypal,你会在IPN中找回它 我不明白,抱歉。我不知道用户信息。我想过这样做:创建一个随机字符串并将其与用户 ID 一起保存在数据库中。我在 item_number 中输入此字符串,当我收到 IPN 时,我知道帐户 ID。但它很容易被破解,因为 bassta 将字符串替换为另一个用户的字符串。 所以一个人会替换字符串,从而为其他人付费 - 你认为这可能吗?在这种情况下,任何假装付款的人都没有任何好处。不需要随机字符串,id就可以了 你是对的 ;) 但是没有其他方法可以将 paypal 交易与网站帐户连接起来吗?如果没有,就说不 :) 谢谢 a.) 不要使用 Paypal-IPN(如果您没有经验,请求可能会被黑客入侵 - 您可以伪造交易),请使用 Paypal PDT,b.) 使用将交易分配给用户的自定义变量:google.de/search?q=paypal+IPN+custom+variables 【参考方案1】:

很抱歉@Vincenzo Raco,但这是个坏建议。

PDT 和 IPN 本质上是完全相同的,只是 PDT 将数据发送到您的返回 URL,而 IPN 将其发送到静默侦听器。

即使您启用了自动退货,也无法保证用户会返回您的退货网址,因此在退货网址上处理付款后处理任务绝不是一个好主意。如果您的 IPN 被黑客入侵,则意味着您的配置有问题。

所有 IPN 都通过 PayPal 的服务器进行验证,如果您使用 API 调用、托管按钮、加密按钮等。人们无法看到原始代码、复制它并调整定价,这将是只有任何人都可以做的潜在“黑客”。只要确保不使用基本的、标准的 html 按钮,潜在的问题就会消失。

IPN 绝对是您用来处理付款后处理的工具。在将用户发送到 PayPal 之前,您可以将用户记录或您正在使用的任何数据保存在数据库中。您可以在 PayPal 付款请求中包含数据库的记录 ID(我通常为此使用 invoice 参数),然后它将在 IPN 中返回,以便您可以将该数据从数据库中拉出或相应地添加新的相关数据。

【讨论】:

我读了很多,你说得对:PDT 和 IPN 是一回事,但 PDT 总是发送一次数据,而 IPN 会重新发送确认,直到您的站点确认收到。 PDT 它用于应用内购买(例如) - 所以,我有这些大问题: 1. 识别支付的人。用户 A、B 还是 C?怎么做? - 正如我上面写的,我认为一个解决方案:生成随机字符串并使用 user_id 保存到数据库中。将字符串插入 item_number 字段。用户点击,付款,我收到 IPN 并执行脚本。这是个好主意吗? 2.付款前检查数值。对于 IPN,它已经晚了/付款已经消失了 是否有加密数据的文档?我在 web 和 paypal 文档上搜索,但我没有找到这个。我知道有,但是在哪里? IPN 只会在您的脚本失败且未将成功响应发送回其服务器时重新发送。如果发生这种情况,那么您的脚本有问题需要修复。付款人状态、地址状态、卖家保护资格等都在 IPN 详细信息中返回,因此您可以验证付款人以及您认为可能需要的任何内容,以便在必要时自动执行程序。 检查这个:developer.paypal.com/docs/classic/paypal-payments-standard/…

以上是关于PHP - 贝宝支付交易的主要内容,如果未能解决你的问题,请参考以下文章

如何在贝宝支付中完成待处理交易

PHP Paypal IPN:交易未确认

贝宝链式支付计算

PayPal 直接支付 PHP 代码

贝宝沙盒账户交易失败

贝宝沙箱:“此交易无法完成”