FORM.payment_date是Coldfusion中的保留名称错误,导致PayPal IPN在CF9中验证无效

FORM.payment_date是Coldfusion中的保留名称错误,导致PayPal IPN在CF9中验证无效,paypal,coldfusion,paypal-ipn,coldfusion-9,Paypal,Coldfusion,Paypal Ipn,Coldfusion 9,在ColdFusion服务器/开发环境上运行以下实验: 1)使用post方法创建以下提交给自身的基本HTML表单: <form method="post"> DATE: <input type="text" name="date" value="gfsgfdgfsd"><br> MARTIN: <input type="text" name="martin" value="beardy"><br> PAYMENT

在ColdFusion服务器/开发环境上运行以下实验:

1)使用post方法创建以下提交给自身的基本HTML表单:

<form method="post">
    DATE: <input type="text" name="date" value="gfsgfdgfsd"><br>
    MARTIN: <input type="text" name="martin" value="beardy"><br>
    PAYMENT: <input type="text" name="payment" value="50 POUNDS"><br>
    PAYMENT_DATE: <input type="text" name="payment_date" value="06:05:13 Apr 09, 2014 PDT"><br>
    XEVI: <input type="text" name="xevi" value="cool"><br>
    <input type="submit" value="submit"><br>
</form>

<cfdump var="#FORM#" />

日期:
马丁:
付款:
付款日期:
XEVI:

现在进入页面并点击
Submit
按钮。请注意,您会发现错误
表单条目不完整或无效
。现在从
付款
字段的末尾删除“磅”,使该值仅包含数值。重新提交表单,注意错误会消失

2)现在研究表单结构的CF转储。请注意
字段名
元素下的逗号分隔列表中如何缺少
付款日期
!显然,它的存在是因为它在转储中作为倒数第二个元素可见。那么为什么它没有被列出呢

注意:这个奇怪的错误浪费了我4个小时的时间,试图集成PayPal IPN(即时支付通知)通知验证/验证阶段,该阶段要求您将所有内容以提交给您时的相同顺序发布回PayPal服务器。由于
付款\u日期
丢失,因此返回为无效。我用一个肮脏的黑客程序修复了它,该程序查找
mc\u gross
,同时在字段名上循环并手动插入
payment\u date
。呃,我觉得不干净

实验1证明
FORM.PAYMENT
是一个必须为数字的保留值

实验2证明了
FORM.PAYMENT\u DATE
是一个保留值,在填充
FORM.FIELDNAMES
时会被忽略


为什么?

在ColdFusion的表单作用域中,任何以_date结尾的内容都将根据保留以进行验证


我无法复制您在“付款”为整数时遇到的问题。一旦我将payment_date字段更改为paymentdate,它就可以提交了。

有关详细信息,请参阅。+1向您发送,因为我正在键入类似的答案,但您比我快。我打算添加其他文档参考-{edit}哈!现在我看到@Leigh在评论中也击败了我。我今天一定很慢…您可以在Application.cfc文件中禁用此功能:this.serverSideFormValidation=“false”;太神了谢谢大家的帮助。哦,还有@RaymondCamden,两个月后我们将在SOTR14见面!:-)