Worldpay Payment Gateway - 提交提交更安全

时间:2017-07-23 13:38:10

标签: php integration worldpay

您好我正在尝试将worldpays支付网关集成到网站。

但我似乎无法以安全的方式提交表格。

这是一个示例形式:

<form method="POST" name="BuyForm" action="https://secure- test.worldpay.com/wcc/purchase">
<input type="hidden" value="yourinstid" name="instId">
<input type="hidden" value="yourcartid" name="cartId">
<input type="hidden" value="GBP" name="currency">
<input type="hidden" value="100" name="amount">
<input type="hidden" value="Product 1" name="desc">
<input type="hidden" value="100" name="testMode">
<input type=submit value="Buy Now">    
</form>

无论如何都要在php中提交此内容以阻止最终用户检查和更改金额,即将金额从100.00英镑更改为£1.00并提交订单并为100英镑的商品支付1英镑?

我尝试过卷曲然而从我读过的内容你不能将用户重定向到你提交数据的页面?

提前致谢, 乔丹

1 个答案:

答案 0 :(得分:1)

你拥有的架构,没有。由于用户在没有先通过服务器的情况下直接将数据从页面发送到worldpay.com,因此您无法阻止用户检查将要发送的内容或更改值。即使您使用javascript锁定浏览器,还有什么可以阻止我加载页面,然后通过命令行中的cURL请求复制信息并将其直接发送到worldpay?这对你来说是一场失败的战斗。

查看WorldPay文档,了解如何安全地提交转移。支付系统通常会解决这个问题。以下是我见过的一些技巧。

  • 我注意到有一个购物车ID。可能有一个API,您的服务器首先向worldpay发送请求以创建购物车或付款请求并获取一些令牌。然后,必须由用户将有效令牌与表单一起提交。这将允许worldpay将用于创建令牌的数据与表单提交进行比较,并注意任何更改。

  • 其他付款服务要求您使用从商家帐户获得的秘密令牌签署任何提交。基本上,签名是所有表单值的键控哈希值(以秘密键入,永远不会发送到浏览器)。如果客户更改表单并提交更改,则新表单输入将与签名不匹配。

  • 其他付款服务可让您在商家帐户中创建安全的Pay按钮。这是每个产品成本的预先协议。然后在浏览器中,您甚至不需要设置金额,产品ID等......只需创建的Pay按钮ID。

  • 最后,最简单的检查是在为用户创建表单之前在服务器上创建事务记录。收到付款通知后,在您的记录中查找付款或交易ID,并确保在处理订单之前排队。

底线是:您无法阻止用户更改她直接提交给worldpay的内容,因此如果您的安全性具有此要求,则会失败。您对worldpay安全支付流程的研究。