我们正在使用 WorldPay 处理分级会员系统的付款,该系统的付款金额取决于所选的会员级别。
付款通过多个隐藏字段的表单帖子传递给 WorldPay,包括:
<input type="hidden" name="amount" value="295.00" />
本质上,表单是通过 POST 提交给 WorldPay,用户按照多个步骤处理他们的付款。完成后,用户将被重定向到指定的确认页面。
这似乎是 WorldPay 接受付款的典型方式。这里有一个明显的问题,隐藏字段的值很容易被任何具有 HTML 基础知识的人篡改。该表格直接发布到 WorldPay,因此我们没有 PostBack 来验证会员级别的金额。
当 WorldPay 向我们返回支付通知时,我们可以选择在确认页面之前通过处理程序路由回调来验证支付金额;但是,我想避免用户提交被篡改的表格,支付不正确的金额并且没有获得会员资格,然后必须联系公司要求退款的情况。
在处理付款之前,我们如何验证提交的金额是否正确?
更新
我想到我们还有一个问题,即使我们在服务器端验证表单发布,也没有什么能阻止恶意用户将表单发布直接欺骗到 WorldPay。