代码之家  ›  专栏  ›  技术社区  ›  Brandon

在实现支付网关时,商家网站应该担心什么?

  •  1
  • Brandon  · 技术社区  · 16 年前

    我必须为我正在维护的网站实现一个支付网关,而且我以前没有做过类似的事情。在实施支付处理之前,该网站将构建一个交易,并将其直接发送到支付处理器,等待结果。由于该网站处理了信用卡信息的收集、交易的建立和请求/响应,所以我不必担心以前的开发人员还没有覆盖。

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

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

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

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

    因此,当我收到邮件时,我必须核实支付的金额是否等于所欠金额。我还缺什么吗?实现文档甚至没有提到类似于上面的场景,所以我有点担心我遗漏了其他东西,并让站点开放以供进一步利用。

    3 回复  |  直到 16 年前
        1
  •  0
  •   Capital G    16 年前

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

    这就是说,像对待任何客户机应用程序一样对待它,不要相信他们给你的任何东西,在执行操作之前根据需要验证和清理信息。

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

        2
  •  0
  •   Carl    16 年前

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

    你能在通讯中加上摘要吗?如果您与网关共享了一个秘密,则可以通过包含双向摘要来验证共享信息的完整性,即使它通过客户端传递。

    卡尔

        3
  •  0
  •   Dan Rosenstark    16 年前

    首先,我认为你没有实现支付网关。听起来你只是在用一个。如果这是错误的,忽略这个答案的其余部分,我会在可能的时候删除它:)

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

    Google Checkout——举个例子——允许您使用一个“未签名购物车”,就像您描述的那样。另一个选择是通过web服务界面发布,并进行错误检查等。。当您提交带有HTML表单的订单时,Google Checkout会警告您,即商家,“购物车未签名”(稍后在管理屏幕中)。这意味着购物车里的信息——特别是价格——是不可信的。最终用户使用信用卡基本上可以证明他/她交易顺利。所以你只需要检查一下用来计算最终总数的数字——或者欠款,或者你的生意是什么——就可以了。所以你做的事情在低层次上是好的。

    你不能认为是欺诈。 有很多奇怪的原因,如果用户不想欺骗你,购物车就会被修改。