1

我必须为我正在维护的网站实施支付网关,而我以前没有做过这样的事情。以前为了实现支付处理,该网站会建立一个交易并将其直接发送到支付处理器并等待结果。由于该站点处理了信用卡信息的收集、交易的构建以及请求/响应,因此我不必担心以前的开发人员尚未涵盖的内容。

现在我正在实施支付网关,有什么我应该检查或验证的吗?

该处理器的工作方式是,我构建了一个表单,其中包含隐藏字段中的订单 ID、金额、货币等。该表单被发送到网关,网关将处理处理,然后将表单发送回我们的服务器,我们可以在其中更新购物车并完成订单。

我唯一能想到的是用户在我们将表单字段发布到网关之前修改它们。例如添加 100 美元的物品并更改

<input name="amount" value="100.00" type="hidden"> 

<input name="amount" value="0.01" type="hidden"> 

因此,当我收到帖子时,我必须验证支付的金额是否等于所欠的金额。还有什么我想念的吗?实现文档甚至没有提到与上述类似的场景,所以我有点担心我会遗漏其他东西并使网站对进一步的利用开放。

4

3 回答 3

0

我认为您最好创建一个专用的 Web 服务来处理您在这里进行的这种“第 3 方”管道架构,您基本上扮演中间人和 HTML 表单对我来说只是不必要的开销,除非它是必需的要以这种特定方式完成,我将转向 Web 服务。

话虽如此,请将其视为任何客户端应用程序,不要相信他们给您的任何东西,在执行操作之前根据需要验证和清理信息。

我还建议构建或集成对登录到您的中间件系统的支持,因此如果出现问题,您可以通过某种方式捕获问题并为将来跟踪它们、错误修复、支持电话等。

这可能很明显,但请确保验证您的订单#,用户可以在其中放置他们想要的任何东西,再次验证和清理数据并记录真正奇怪的情况。

于 2010-08-24T18:40:20.220 回答
0

首先,我必须同意 Capital G。建立服务器到服务器的连接比尝试通过客户端浏览器处理表单提交要容易得多。

要检查的一件事:在提交到网关之后,客户端是否会发起回发到您的服务器,或者网关服务器是否处理它?如果客户启动它,是什么阻止他们向您发布订单已完成而无需前往网关?听起来您可能需要向网关发出 Web 服务请求,以在接受声称已完成的客户端 POST 之前验证付款实际已完成。

你能在通讯中添加一个摘要吗?如果您与网关有一个共享的秘密,您可以验证共享信息的完整性,即使它通过客户端传递,也可以通过两种方式包含摘要。

说得通?

卡尔

于 2010-08-24T23:43:38.610 回答
0

首先,我不认为您正在实施支付网关。听起来你只是在使用一个。如果这是错误的,请忽略此答案的其余部分,我会尽可能删除它:)

从简单的 HTTP 表单使用支付网关

Google Checkout ——作为一个例子——允许您使用您所描述的“未签名购物车”。另一种选择是通过网络服务界面发布,并进行正确的错误检查等。当您使用 HTML 表单提交订单时,Google Checkout 会警告您,商家,“购物车未签名”(稍后在管理员屏幕)。这意味着购物车中的信息——尤其是价格——是不可信的。最终用户放入信用卡的事实基本上证明了交易对他/她来说是可以的。因此,您只需检查用于达到最终总数的数字——或欠款金额,或无论您的业务是什么——签出。所以你在做的事情在低层次上是好的。

您应该使用 Web 服务提交服务的原因——以及对购物车的安全签名等——是……如果数字错误,你会怎么做?打电话给最终用户并解释情况?所以这有点棘手,因为你不能假设欺诈。有许多奇怪的原因可以改变购物车,而用户实际上并不想欺骗你。

于 2010-08-24T23:53:32.250 回答