Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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
C# 商户网站在实施支付网关时应该担心什么?_C#_Security_Payment Gateway_Payment Processing - Fatal编程技术网

C# 商户网站在实施支付网关时应该担心什么?

C# 商户网站在实施支付网关时应该担心什么?,c#,security,payment-gateway,payment-processing,C#,Security,Payment Gateway,Payment Processing,我必须为我维护的网站实现一个支付网关,我以前从未做过类似的事情。在执行支付处理之前,该站点将构建一个事务,并将其直接发送给支付处理程序,然后等待结果。由于该网站处理信用卡信息的收集、交易的构建以及请求/响应,因此我不必担心之前的开发人员还没有涵盖这些内容 现在我正在实现一个支付网关,有什么我应该检查或验证的吗 这个处理器的工作方式是,我构建一个表单,在隐藏字段中包含订单id、金额、货币等。该表单被发布到网关,网关将处理该处理,然后将表单发布回我们的服务器,在那里我们可以更新购物车并完成订单 我唯

我必须为我维护的网站实现一个支付网关,我以前从未做过类似的事情。在执行支付处理之前,该站点将构建一个事务,并将其直接发送给支付处理程序,然后等待结果。由于该网站处理信用卡信息的收集、交易的构建以及请求/响应,因此我不必担心之前的开发人员还没有涵盖这些内容

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

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

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

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



因此,当我收到邮件时,我必须核实支付的金额是否等于所欠的金额。我还缺什么吗?实施文档甚至没有提到与上述类似的场景,因此我有点担心我遗漏了其他内容,并将网站留给进一步开发。

我认为您最好创建一个专用的web服务来处理您正在使用的“第三方”管道体系结构,你基本上扮演中间人和HTML表单对我来说是不必要的开销,除非需要这样做,否则我会转向web服务

也就是说,像对待任何客户端应用程序一样对待它,不要信任它们提供给您的任何东西,在执行操作之前,根据需要验证和清理信息

我还建议构建或集成对登录到中间件系统的支持,以便在出现问题时,您可以通过某种方式捕获问题并跟踪问题,以便将来进行bug修复、支持呼叫等


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

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

需要检查的一件事是:在提交到网关之后,客户端是否会启动回服务器的post,或者网关服务器是否会处理它?如果是客户发起的,是什么阻止他们在没有进入网关的情况下向您发布订单已完成?听起来您可能需要向网关发出一个webservice请求,以在接受声称付款确实通过的客户端帖子之前验证付款是否确实通过

你能给这封信加个摘要吗?如果您与网关共享了一个秘密,那么您可以通过双向包含摘要来验证共享信息的完整性,即使它通过客户端也是如此

有道理吗


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

使用来自简单HTTP表单的支付网关

例如,Google Checkout允许您使用您描述的“未签名购物车”。另一个选项是通过web服务接口发布,并执行正确的错误检查等。。当您使用HTML表单提交订单时,Google Checkout会警告您(商户)“购物车未签名”(稍后在管理员屏幕中)。这意味着购物车中的信息——特别是价格——不可信。最终用户存入信用卡的事实基本上证明了交易对他/她没有问题。因此,你只需检查用于得出最终总数的数字——或欠款金额,或你的业务是什么——就可以了。所以你在低层次上做的很好


您应该使用web服务提交到该服务以及购物车的安全签名等的原因是。。。如果数字错了怎么办?给最终用户打电话解释情况?所以这有点棘手,因为你不能假设欺诈。有很多奇怪的原因,用户会在不想欺骗你的情况下更改购物车。

知道你正在实施哪个网关会很有帮助。大多数网关服务都提供支持和代码示例。如果你没有,你可能想考虑切换到一个。
<input name="amount" value="0.01" type="hidden">