Coldfusion 是否可以记录表单提交?

Coldfusion 是否可以记录表单提交?,coldfusion,e-commerce,Coldfusion,E Commerce,情况是这样的。我的公司有一个电子商务商店,但我们自己不收集或处理信用卡信息。当用户选择“使用信用卡付款”时,他们会立即被带到付款网站,然后该网站处理他们的信用卡并将状态发送回我们,以便将订单标记为已付款。我们的站点运行在ColdFusion上,它从站点接收数据作为表单数据,处理表单变量,并为客户创建一个订单,标记为“已付款”。信用卡网站只发送一次信息,没有“握手” 在过去的一个半月里,我们遇到了一个问题,虽然他们说他们已经发送了信息,但我们偶尔无法从信用卡处理网站获得信息。因此,即使信用卡已被收

情况是这样的。我的公司有一个电子商务商店,但我们自己不收集或处理信用卡信息。当用户选择“使用信用卡付款”时,他们会立即被带到付款网站,然后该网站处理他们的信用卡并将状态发送回我们,以便将订单标记为已付款。我们的站点运行在ColdFusion上,它从站点接收数据作为表单数据,处理表单变量,并为客户创建一个订单,标记为“已付款”。信用卡网站只发送一次信息,没有“握手”

在过去的一个半月里,我们遇到了一个问题,虽然他们说他们已经发送了信息,但我们偶尔无法从信用卡处理网站获得信息。因此,即使信用卡已被收取费用,订单也不会被创建,产品也会被放在客户的手推车中。这个问题是间歇性的。我们无法将其与我们这方面的任何服务器更改联系起来,信用卡网站也拒绝了他们这方面的更改

因此,我们要做的一件事就是记录客户实际试图用信用卡付款的时间(这样我们可以更容易地抓住错过的时间)。所以我想在有人点击“用信用卡支付”时记录这个事件。问题是表单操作将数据提交到信用卡站点。我能想到的唯一方法是将表单操作更改为我们网站上的一个页面,记录付款尝试,然后再次将表单提交给信用卡公司。我知道我可以用JavaScript自动提交表单,但这似乎是一个糟糕的解决方案(如果关闭JS怎么办?),但我不知道如何实现服务器端

如果可能的话,请尽量避免使用涉及AJAX的解决方案,因为我对它知之甚少(一般来说,我是一个非常新手的web开发人员,只是继承了整个设置)

对于如何记录这一事件的更好的解决方案,或者对于这一混乱的总体建议,我们将不胜感激


对评论的答复:

致Sam Dufel: 想换一家像贝宝这样的供应商。不幸的是,我的公司实际上是一所大学的一部分,我们都必须使用相同的支付网关

要搞错: 使用301或302状态代码会保留表单数据吗?我试着查找这个,它看起来像是与“get”一起工作,但我需要它与“post”一起发送,因为这是支付网关所期望的

要安装此装置,请执行以下操作: 我们将其作为表单数据接收

为了报复: 问题是根本没有创建订单(因此客户和订单信息只是放在临时购物篮/客户/订单表中)。似乎应该处理来自支付网关的表单数据的页面没有被访问。我在那个页面上添加了一些日志记录,但是我的公司被吓坏了,他们已经禁用了信用卡支付,所以我没有得到任何数据。如果我能让他们相信我已经实现了一个很好的日志解决方案,可以快速识别出有问题的订单,他们就会重新启用它

致Laksma: 我们正在使用发送回的唯一标识符。我所说的握手是指支付网关验证他们是否已与我们的服务器建立连接的某种方式。也许我用错了这个词。谢谢你在接收页面上的日志建议-我已经添加了

至Nenotlep: 我知道我说过没有AJAX,但我想听听你的想法。对日志页面的调用是否会干扰表单提交?我假设它将被设置为在表单按钮的“onclick”事件中触发函数,然后表单提交将正常进行?如果很容易设置,那么这可能是一个很好的方法

我正在考虑尝试Sanjeev的解决方案,因为这与我计划要做的事情类似,但如果AJAX的想法真的那么简单,我真的很想听到更多关于它的信息,主要是因为它根本不会改变客户体验(不像看到重定向屏幕)

对史蒂夫的补充答复:


我很感激你的意见,通常我喜欢自学新东西,但我现在太不知所措了,甚至想不起解决一项新技术。

我在一个支付网关上工作,遇到了与你相同的问题。这就是我的解决方案-

  • 将这些值发布到名为“requestHandler.cfm”的中间页面

  • cfm将值保存到数据库表中

  • 继续创建一个包含所有必需值的。放置一个提交按钮和JavaScript,在2秒钟内启动“提交”。还要注意,“如果页面在某个时间内没有刷新,请单击提交按钮”。由于您不打算对表单进行任何验证,“提交”按钮只会在JavaScript处于活动状态或不处于活动状态的情况下提交表单
  • 信用卡公司将处理该信息,并将值回复到“responseHandler.cfm”页面
  • 我将根据发送给他们的“primarykeyvalue”更新我的数据。(或任何可以识别用户的引用)
  • 数据库表示例

    • TransactionID默认为“0”,并将更改为信用卡公司提供的号码
    • 默认为“N”的已付标志应更改为“Y”
    • 实际金额是我发送到用户信用卡上的费用
    • 支付的金额应与实际金额相符。这是为了帮助我发现用户或中间人是否在任何情况下篡改了详细信息

    我在一个支付网关上工作,遇到了与您相同的问题。这就是我的解决方案-

  • 将这些值发布到名为“requestHandler.cfm”的中间页面

  • cfm将值保存到数据库表中

  • 继续创建包含所有req的