1

我有一个问题,我似乎无法正确解决。我有一个网站,您可以在其中挑选一些报价并购买。此过程的步骤是:

1)客户选择他喜欢的报价(index.php)并进入(buy.php)页面

2)在(buy.php)页面,他选择数量和付款方式

3)当客户按下购买时,他被重定向到(payment.php),所有数据都被再次验证并进行一些数据库记录。Payment.php 页面将用户处理到选定的支付网关(在我的网站之外)。

所以问题是我可以将 $_POST 数据从 buy.php 页面交换到 payment.php 并且支付页面会认为数据是正确的。

在我只是检查支付页面的价格是否是我的 $array 中允许的价格之一之前,我对此没有任何问题。但现在我提供折扣,我无法判断进来的金额是否确实正确。

通常如何处理所有这些?我是处理付款的新手。

谢谢。

4

2 回答 2

2

尝试一个带有价格的产品 ID 数据库表和一个带有金额(或百分比)的折扣表。当用户提交订单时,将具有各自数量的产品 ID 以及任何折扣的 ID 发送到付款脚本。让它处理最终的价格计算。

于 2011-03-11T22:00:57.833 回答
2

支付提供商执行此操作的通常方式如下。

  • 您有一个将生成 POST 数组的表单。
  • 使用散列向该数组添加一个字段。从字符串中生成此哈希,如下所示:
    • 定义一个秘密字符串(某种“盐”,但不同)
    • 按字母顺序对所有 POST 键进行排序。
    • 制作一个这样的字符串:
    • key=value.secretString.key2=value2.secretString ...等
    • 散列字符串并将其发送到帖子中。
    • (显然,不要发送、显示或泄露您的秘密字符串)

现在,当您收到 POST 时,您可以使用您的秘密字符串重新创建应该伴随它的散列,并将其与您获得的散列进行比较(当然也在帖子中,显然也不要散列)。如果相等,则为未被篡改的值。如果不是,您应该拒绝付款。

因为您还在帖子中包含日期、用户/订单 ID 等,所以不能为其他订单的帖子更改。更改帖子中的值之一也意味着必须更改 HASH,但由于用户无法创建它,因此不会这样做。

于 2011-03-11T22:15:14.887 回答