【问题标题】:How do I verify a PayPal IPN against a product price?如何根据产品价格验证 PayPal IPN?
【发布时间】:2012-05-29 04:46:57
【问题描述】:

我正在构建一个软件交付平台。我有一个使用 PayPal 编写的完整的自定义 IPN 脚本,用 PHP 编写,但我遇到的问题是确认价格。

简单地说,将实际产品价格与来自 PayPal IPN 的字段进行比较的算法是什么?

我将产品价格标记为 1.00 美元,但来自英国的 IPN(使用美元货币)显示 mc_gross 为 1.20 美元,而 mc_fee 显示为 0.34(并且没有 mc_shipping 值)。请注意,这是一个简单的产品 - 没有订阅、运输、税收和其他复杂性。

因此,由于 1.00 美元与 1.20 美元不匹配,并且 ($1.00 - $0.34 = $0.86 !== $1.00),我真的不知道确认该价格的公式是什么。这意味着有人可以拿 PP 按钮代码,更改价格,然后购买。然后 IPN 会耸耸肩接受这个价格,除非我能找到验证这个价格的窍门。

请注意,我确实传递了一个自定义字段,该字段告诉我产品 ID 是什么以及购买的数量,例如 4pk 小部件。

我研究了使用 PHP 即时制作加密支付按钮需要什么,它需要一个具有完整根功能的专用托管计划,因为它涉及安全证书和其他几个因素。所以,这看起来不太可能在这里使用。

【问题讨论】:

  • 您在购物车中发送了多少件商品?
  • 1 项。它价值 1.00 美元。
  • 你能尝试获取 $mc_gross_x = $_POST['mc_gross_1'];的值吗
  • 在这种情况下,因为只有一个产品,所以没有_x。我拥有的 $_POST 值是 mc_gross、payment_gross、payment_fee 和 mc_fee 等。我将产品价格与 mc_gross 进行了比较,但他们没有排队。所以,这行不通。

标签: php paypal-ipn


【解决方案1】:

制作加密支付按钮不需要完全根功能,但使用专用主机更容易保护您的私人证书安全。您可以咨询您的提供商,看看他们有哪些保护措施,以确保其他人不能只是进入您的主目录并四处窥探。

您可以在本地计算机上生成私有证书并将其上传到您的服务器。服务器将需要openssl 扩展来执行签名。

【讨论】:

  • 我不知道这个。谢谢你的提示。将进行调查。
猜你喜欢
  • 2022-12-14
  • 1970-01-01
  • 1970-01-01
  • 2018-04-17
  • 2021-07-10
  • 2015-05-27
  • 2017-11-14
  • 1970-01-01
  • 2012-03-09
相关资源
最近更新 更多