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