如何在贝宝结帐期间验证交易 ID (TXN)

Posted

技术标签:

【中文标题】如何在贝宝结帐期间验证交易 ID (TXN)【英文标题】:How to Validate Transaction id (TXN) during paypal checkout 【发布时间】:2016-10-08 07:47:20 【问题描述】:

所以我需要在我的网站中集成 PAYPAL 结帐。而且我对 Paypal 集成没有太多经验。如果你能帮上忙,那就太好了。 所以我遵循了这个 Tutorial

我创建了两个 PAYPAL 沙盒帐户。一个给买方,另一个给卖方。 我可以用这些付款。 但问题出在success.php页面 我需要验证付款的地方。

我所做的是检查事务 ID 是否已存在于数据库中。但问题是success.php 使用GET 方法,并且可以在GET 方法中编辑事务ID。因此,将交易 ID 更改为任何内容(随机字符串)将验证交易 ID 不存在于数据库中并且您可以付款的条件。

因此,付款被标记为有效,余额被添加到用户数据库中。有什么方法可以检查交易 ID 是 Valid Paypal TX id。

谢谢:)

【问题讨论】:

呃...我认为本教程有点错误。您依靠用户返回您的成功页面来存储交易信息。如果用户在完成交易后没有返回您的成功页面会怎样?那么你会遇到问题,因为事务不会保存在你的数据库中。 但如果他们使用 html 代码,并更改成功页面,那么这是他们的问题。 我不是指他们搞乱 HTML。我说的是他们没有点击返回您网站的链接。即使您添加设置以自动将他们重定向回您的站点,在他们无法到达您的站点的情况下也可能发生某些事情。处理付款的正确或更安全的方法是使用 PayPal IPN,如教程末尾所述并由 jsabina 概述。 【参考方案1】:

您不应依赖退货页面来验证交易。 您通过 GET 收到的内容可以更改,客户可能会在之前关闭页面或连接问题永远不会被重定向。 使用 PayPal 标准,您应该使用 IPN 来验证付款 https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/ 网上有关于他们的文档和脚本示例的信息。 您需要设置一个监听器,在交易执行后将由 paypal 调用

【讨论】:

是的,IPN 是 PayPal 推荐的完成订单的方式,主要是因为它是一种强大且安全的机制。 PDT 只是为了向客户提供确认,如果他们返回站点。 PayPal 建议检查多个 IPN 值是否存在欺诈,例如,receiver_email 与您的主要 PP 电子邮件匹配,以及产品代码和价格匹配,此外仅针对 txn_id 的一条“已完成”txn_status IPN 消息发送商品。请注意,IPN 处理并非微不足道,但他们提供的 PHP 代码示例非常可靠。

以上是关于如何在贝宝结帐期间验证交易 ID (TXN)的主要内容,如果未能解决你的问题,请参考以下文章

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

10609 交易 ID 在贝宝沙箱中无效

如何在贝宝的 notify_url 页面中获取交易详情

我如何在贝宝中找到不是通过 rest api 进行的交易?

是否可以在贝宝快速结帐中更新经常性金额?

如何以访客身份启用贝宝快速结帐