【发布时间】:2013-04-17 05:56:45
【问题描述】:
情况是这样的。我的公司有一家电子商务商店,但我们自己不收集或处理信用卡信息。当用户选择“使用信用卡付款”时,他们会立即被带到支付网站,然后该网站会处理他们的信用卡并将状态发送回给我们,以便将订单标记为已付款。我们的站点在 ColdFusion 上运行,它从站点接收数据作为表单数据,处理表单变量,并为客户创建一个订单,标记为已付款。信用卡网站只发送一次信息,没有“握手”。
在过去的一个半月里,我们遇到了一个问题,有时我们无法从信用卡处理网站获取信息,尽管他们说他们已经发送了信息。因此,没有创建订单,并且产品仍在客户的购物车中,即使信用卡已被收取费用。这个问题是间歇性的。我们不能将它与我们这边的任何服务器更改联系起来,信用卡网站否认他们这边的更改。
因此,我们正在尝试做的事情之一是记录客户实际尝试使用信用卡付款的时间(这样我们就可以更轻松地抓住错过的客户)。所以我想以某种方式记录有人点击“用信用卡付款”时的事件。问题是表单操作将数据提交到信用卡网站。我能想到的唯一方法是将表单操作更改为我们网站上的页面,记录付款尝试,然后再次将表单提交给信用卡公司。我知道我可以使用 JavaScript 自动提交表单,但这似乎是一个糟糕的解决方案(如果关闭 JS 会怎样?),但不知道如何在服务器端进行。
如果可能,请尽量避免涉及 AJAX 的解决方案,因为我对此知之甚少(总的来说,我是一个非常菜鸟的 Web 开发人员,只是继承了整个设置)。
将不胜感激有关如何记录此事件的更好解决方案,或针对此混乱的一般建议!
对 cmets 的回应:
致 Sam Dufel: 很想换到另一个提供商,比如 Paypal。不幸的是,我的公司实际上是一所大学的一部分,我们都必须使用相同的支付网关。
扑倒: 使用 301 或 302 状态码会保留表单数据吗?我试着查了一下,看起来它可以与“get”一起使用,但我需要用“post”发送它,因为这是支付网关所期望的。
致 imthepitts: 我们将其作为表单数据接收。
报复: 问题是根本没有创建订单(因此客户和订单信息只是放在临时购物篮/客户/订单表中)。似乎没有访问应该处理来自支付网关的表单数据的页面。我在该页面上添加了一些日志记录,但我的公司吓坏了,他们禁用了信用卡支付,所以我没有得到任何数据。如果我可以说服他们我已经实施了一个很好的日志记录解决方案来快速识别错误的订单,他们会重新启用它。
致拉克斯玛: 我们使用的是发回的唯一标识符。我所说的握手是支付网关验证他们已经与我们的服务器建立连接的某种方式。也许我用错了这个词。感谢您在接收页面上对日志的建议-我已添加。
致尼诺特莱普: 我知道我说没有 AJAX,但我想更多地了解您的想法。对日志页面的调用会完全干扰表单提交吗?我假设它会被设置为触发表单按钮的“onclick”事件,然后表单提交会正常进行?如果它很容易设置,那么也许这将是一个很好的方法。
我正在考虑尝试 Sanjeev 的解决方案,因为无论如何这与我计划做的类似,但我实际上想了解更多关于 AJAX 想法的信息,如果它真的那么简单,主要是因为它不会完全改变客户体验(与看到重定向屏幕不同)。
对史蒂夫的补充回应:
感谢您的意见,通常我喜欢自学新事物,但我现在实在是太不知所措了,甚至无法考虑处理新技术。
【问题讨论】:
-
我打算推荐一个简单的 AJAX 记录器,但是很好。构建它确实是一件非常简单的事情;最简单的 GET 请求对一个 URL 有一个参数,如“site.fi/log?msg=UserFoobarSentPostThing”,服务器端直接将消息强制输入您的日志记录系统。好的,也许一些原始数据过滤在恶意请求的情况下可能很有用,但实际上,即使它是 AJAX 构建类似的东西也非常非常简单:)
-
您的信用卡处理站点应该已经有交易日志。如果没有......我强烈建议你找一个更好的供应商。
-
您也许可以让“用信用卡付款”按钮指向您自己网站上的 URL,当它被点击时记录,然后发送 HTTP 301 or 302 以将浏览器重定向到实际信用卡网站。见stackoverflow.com/questions/2503300/…
-
你也许可以用 cfhttp 做点什么,但即使你成功了,你仍然处于“是的,我做了,不,你没有”的情况。
-
存储订单,但将其标记为“未付款”、“待抄送付款”,而不是“已付款”。间歇性问题听起来很可疑 - 我会继续关注付款供应商并在管理员中检查他们的付款日志。
标签: coldfusion e-commerce