我没有使用预制的购物车,我自己编程。它在 99% 的时间里都能正常工作,但大约每隔几个月就有一次订单以 0 美元的价格成交。我不知道为什么。我使用相同的产品和所有相同的信息进行了测试购买,但我无法将其设为 0 美元。我不知道如何解决这个问题,我确实有一个免责声明说我们不尊重错误的价格。客户希望这种情况停止发生。我正在使用 PHP 来完成所有这些工作。由于我自己似乎无法复制这种情况,因此我发现很难深入了解问题的根源。任何人都可以就如何解决这个问题提供一些建议吗?
谢谢!!
我没有使用预制的购物车,我自己编程。它在 99% 的时间里都能正常工作,但大约每隔几个月就有一次订单以 0 美元的价格成交。我不知道为什么。我使用相同的产品和所有相同的信息进行了测试购买,但我无法将其设为 0 美元。我不知道如何解决这个问题,我确实有一个免责声明说我们不尊重错误的价格。客户希望这种情况停止发生。我正在使用 PHP 来完成所有这些工作。由于我自己似乎无法复制这种情况,因此我发现很难深入了解问题的根源。任何人都可以就如何解决这个问题提供一些建议吗?
谢谢!!
最终,您会想弄清楚为什么会发生这种情况。如果没有看到您的代码,我真的无法为您提供太多帮助。不过,在短期内,为什么不在结账过程结束时添加健全性检查呢?
if ( $final_price < 1 ) {
do_epic_fail(); // Show an error, whatever.
}
我将从使用一些广泛的订单记录开始。每一次点击,每一次输入,每一次 sql 查询。然后,当它再次发生时,请查看该订单的日志以查看发生了什么。
有几种可能性浮现在脑海中。一,您在查询中出现暂时错误以提取项目总数。也许当查询失败时,您只需默认为 0.00。例如,当他们为数量输入 -1 或输入诸如“ABC”之类的文本时会发生什么
或者,您可能有一个 sql 注入问题,如果用户在其中一个字段中输入错误,它会加载一个零值的价格。
无论是什么,都将在正确的伐木中暴露出来。
你有网站的网址吗?
否则我只能猜测您允许用户传入的数据以确定用户可以覆盖的价格(例如隐藏字段或参数)。
确保您将产品的 ID 传递给您的服务器端代码,并将服务器上的价格乘以订单数量。(例如从不相信用户输入)
您的代码是否依赖于 $_SESSION 数据?如果用户要等待很长时间,一些必要的数据可能会过期,但结帐可能仍会继续。
正如其他人所说,没有源代码很难进一步评论。
您是否从客户端(隐藏的表单字段)将金额详细信息发布到支付网关?如果是这样,那么可以通过使用 Web 开发人员等浏览器工具栏轻松覆盖它。
始终从服务器端发布付款详细信息。
如果最终价格为 0,则可能再次检查订单以查看它是否实际包含任何商品。如果您有任何免费物品或特别促销活动,我可能会看到零订单,所以也许这就是要走的路。
如果没有看到您的消息来源,这是一个很难回答的问题。