【问题标题】:Worldpay Payment Gateway - Make submission more secureWorldpay 支付网关 - 让提交更安全
【发布时间】:2017-12-29 03:52:09
【问题描述】:

您好,我目前正在尝试将 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,但是根据我的阅读,您无法将用户重定向到您已将数据提交到的页面?

提前致谢, 约旦

【问题讨论】:

    标签: php integration worldpay


    【解决方案1】:

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

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

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

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

    • 其他支付服务允许您从商家帐户中创建安全的Pay 按钮。这是对每种产品成本的预先约定。然后在浏览器中,您甚至不需要设置金额、产品 ID 等...只需创建 Pay 按钮 ID。

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

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

    【讨论】:

    • 啊,我明白了。我能做到这一点的唯一方法是根据 Worldpay 返回的值以及交易 ID 来验证订单金额。感谢您的帮助。
    猜你喜欢
    • 2018-11-07
    • 2013-08-28
    • 2015-10-08
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    • 2013-03-08
    相关资源
    最近更新 更多