我接受付款时遇到了严重问题。
我在隐藏的字段中传递总金额
<input type="hidden"
name="checkout-flow-support.merchant-checkout-flow-support.shipping-methods.flat-rate-shipping-1.price"
value="129.00"/>
有些用户使用firebug将此值更改为2并提交了表单。我们只获得了2美元,而不是获得129美元。
我不知道如何处理,任何人都可以帮助我。
答案 0 :(得分:9)
我在隐藏字段中传递总金额
不要这样做!
由于您知道用户尝试购买的商品,请计算成本服务器端。
答案 1 :(得分:3)
这是一本教科书错误,类似于询问实体店的客户该项目的成本和信任该响应的程度。这是一般安全原则的一个特例:不信任客户。霍博德的答案是正确的;计算价格,税收等服务器端。
答案 2 :(得分:3)
通过支付服务提供商(PSP),通用通信设置通常类似于:
1)您的服务器联系PSP并设置交易,指定所需金额和您的PSP帐户详细信息。
2)PSP使用事务标识符进行响应,然后将其添加到表单中。此事务标识符不包含有关所涉及价格的信息 - 它只是您的服务器使用PSP设置的交易记录的标识符。
3)访客填写发送给PSP的表格。然后,他们将访问者重定向回您的网站。
4)您的服务器查询PSP服务器并检查交易是否成功(即访客付款方式确定与PSP的交易等)
服务器到PSP的通信通常使用curl等库来完成。
Google提供了许多关于如何正确处理交易的图书馆/示例(根据我的经验,大多数其他PSP都会这样做): http://code.google.com/apis/checkout/samplecode.html
确切的通信细节可能会因PSP而异,但基本上不应该让“总金额”通过显示给访问者的表格。这一切都是服务器到服务器完成的,因此访问者不可能改变细节。