Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Worldpay支付网关-使提交更安全_Php_Integration_Worldpay - Fatal编程技术网

Php Worldpay支付网关-使提交更安全

Php Worldpay支付网关-使提交更安全,php,integration,worldpay,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="

嗨,我目前正在尝试将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英镑

我已经尝试了curl,但是从我读到的内容来看,您不能将用户重定向到您提交数据的页面

提前感谢,,
Jordan

根据您现有的体系结构,没有。因为用户没有先通过您的服务器就直接从页面向worldpay.com发送数据,所以您无法阻止用户检查即将发送的内容或更改值。即使你用javascript锁定了浏览器,还有什么能阻止我加载页面,然后通过命令行的cURL请求复制信息并直接发送给worldpay?这对你来说是一场失败的战斗

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

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

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

  • 其他支付服务允许您从商户帐户中创建安全的
    支付
    按钮。这是每个产品成本的预先协议。然后在浏览器中,您甚至不需要设置数量、产品ID等。。。只有创建的
    Pay
    按钮ID

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


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

啊,我明白了。我能做到这一点的唯一方法是基本上根据Worldpay return的价值以及交易id验证订单金额。感谢您的帮助。