我们正在使用WorldPay来处理分层会员系统的付款,该系统的付款金额取决于所选的会员级别。

该付款通过表格中的多个隐藏字段传递到WorldPay,其中包括:

<input type="hidden" name="amount" value="295.00" />


本质上,该表单是通过POST提交给WorldPay的,并且用户遵循许多步骤来处理其付款。完成后,用户将被重定向到指定的确认页面。

这似乎是WorldPay接受付款的典型方式。这里有一个明显的问题,因为任何具有HTML基本知识的人都可以轻易地篡改隐藏字段的值。该表格直接发布到WorldPay,因此我们没有“回传”来根据会员级别验证金额。

当付款通知从WorldPay返回给我们时,我们可以选择通过在确认页面之前通过处理程序路由回叫来验证付款金额;但是,我想避免用户提交被篡改的表格,支付不正确的金额并且没有获得会员资格,然后不得不与公司联系以退还其款项的情况。

在处理付款之前,我们如何验证提交的金额正确无误?

更新资料

我想到,还有另一个问题,即使我们在服务器端验证表单发布,也无法阻止恶意用户欺骗直接发布到WorldPay的表单发布。

最佳答案

确实,这是一个漏洞,可以使用签名轻松解决。查看此链接:

http://culttt.com/2012/07/25/integrating-worldpay-into-a-database-driven-website/

应该在帮助页面上更好地推广此方法,这太糟糕了。

关于c# - 使用WorldPay验证付款金额,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15544633/

10-08 22:28