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

时间:2014-04-09 14:34:51

标签: paypal coldfusion paypal-ipn coldfusion-9

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

1)创建以下基本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#" />

现在访问该页面并点击Submit按钮。请注意,您收到错误Form entries are incomplete or invalid。现在删除&#39;羁留&#39;从PAYMENT字段的末尾开始,因此该值仅包含数值。重新提交表单并注意错误消失。

2)现在研究FORM结构的CF Dump。请注意PAYMENT_DATE元素下逗号分隔列表中缺少FIELDNAMES的方式!显然它存在是因为它作为转储中倒数第二个元素可见。那为什么没有列出?

注意:这个奇怪的错误在我尝试集成PayPal IPN(即时付款通知)通知验证/验证阶段时浪费了4个小时,这需要您将所有内容发回PayPal服务器,其中包含提交给您时的顺序相同。由于缺少payment_date,因此返回 INVALID 。我修复了一个脏的hack,在循环遍历字段名并手动插入mc_gross时查找payment_date。 Eerrgh,我觉得不洁净!

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

实验2 证明FORM.PAYMENT_DATE是保留值,在填充FORM.FIELDNAMES时会被忽略。

为什么吗

1 个答案:

答案 0 :(得分:8)

在ColdFusion的表单范围中,以http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec173d0-7ffe.html为单位保留以_date结尾的任何内容以进行验证。

我无法复制您所遇到的问题&#39;付款&#39;是一个整数。只要我将payment_date字段更改为paymentdate,就可以提交。