【发布时间】:2011-07-08 17:20:17
【问题描述】:
我有一个问题,我似乎无法正确解决。 我有一个网站,您可以在其中挑选一些报价并购买。 此过程的步骤是:
1)客户选择他喜欢的报价(index.php)并进入(buy.php)页面
2) 在 (buy.php) 页面,他选择数量和付款方式
3) 当客户按下购买键时,他会被重定向到 (payment.php),所有数据都会在此再次验证并进行一些数据库记录。 Payment.php 页面将用户处理到选定的支付网关(在我的网站之外)。
所以问题是我可以将 $_POST 数据从 buy.php 页面交换到 payment.php 并且支付页面会认为数据是正确的。
在我只是检查支付页面的价格是否是我的 $array 中允许的价格之一之前,我对此没有任何问题。但是现在我提供了折扣,我无法判断进来的金额是否确实正确。
通常如何处理所有这些?我是付款新手。
谢谢。
【问题讨论】:
-
永远不要在用户可访问的 POST 变量中传输支付数据。使用sessions。仅根据会话数据进行金额的最终计算。
-
作为一种良好做法,无论您是否过滤用户,您都不应该接受用户的价格。最好将价格与数据库中具有价格字段的产品或报价 ID 相关联。在传输信用卡数据时,请务必使用 HTTPS。我相信这是美国托管网站的法律。
-
@PhpMyCoder,PCI 对信用卡处理的要求比“使用 https”要复杂得多。 PCI 标准非常复杂,以至于大多数人只使用带有支付网关的商家帐户,就像 @arma 所做的那样。
-
我的网站未处理我将客户发送给第三方(银行或其他)的实际信用卡输入。问题是我似乎无法弄清楚如何在没有静态价格的情况下工作。就像如果我有 10 个数量并且价格是 1 美元,那么很容易确保正确的数量,但是如果我们有折扣,那么价格会与数据库价格不同。
-
@sarnold 感谢您的链接。我想我会把我所有的抄送处理留给贝宝。 @arma 尝试一个带有价格的产品 ID 数据库表和一个带有数量(或百分比)的折扣表。当用户提交订单时,将具有各自数量的产品 ID 以及任何折扣的 ID 发送到付款脚本。让它处理最终的价格计算。