【发布时间】:2014-11-04 09:57:19
【问题描述】:
所以,我一直在测试我的 IPN 脚本并开发它以满足我的需要,但我遇到了一个问题,我收到了“很抱歉,我们无法发送 IPN .”错误。
所有未提及的选项都是默认值
场景 1 - 成功
Transaction Type: Web Accept
All default information.
场景 2 - 成功
Transaction Type: Web Accept
Receiver_email: Example@domain.com
场景 3 - 成功
Transaction Type: Web Accept
Receiver_email: Example@domain.com
Item_name: My Item
场景 3 - 成功
Transaction Type: Web Accept
Receiver_email: Example@domain.com
Item_name: My Item
mc_gross: 39.99
场景 4 - 成功
Transaction Type: Web Accept
All defaults;
custom: Jimmy|0
场景 5 - 成功
Transaction Type: Web Accept
All defaults;
Reveiver_email: Example@domain.com
custom: Jimmy|0
场景 6 - 失败
Transaction Type: Web Accept
All defaults;
Reveiver_email: Example@domain.com
Item_name: My Item
custom: Jimmy|0
场景 7 - 失败
Transaction Type: Web Accept
Receiver_email: Example@domain.com
Item_name: My Item
mc_gross: 39.99
custom: Jimmy|0
那么,为什么我可以发送
自定义:吉米|0
在 scenario 4-5 中,然后发送所有其他信息,如 scenario 1-3 中显示的那样没有问题,但是只要我添加了 scenario 1-3 中的值strong>场景 6(自定义字段)发送到我的值,它会中断。
我已经用大约 4-5 个不同的值对此进行了测试,并且总共发送了几乎 IPN 请求来试图弄清楚。
似乎当同时使用 Item_name 和 Custom 方法时会导致这种情况,如场景 5 和 6
注意,从自定义 '|' 中删除分隔符值时IPN 会发送,但是为什么分隔符在所有其他情况下都起作用时会导致问题?我还将自定义字段扩展到许多字符,以确保它不是长度问题。
!!似乎在更改发送到 IPN 的分隔符时它工作正常,但似乎导致错误的问题实际上是我的 explode() 方法。
$custom = explode('~', $_POST['custom']);
$referral = $custom[0];
$software_type = $custom[1];
无论我从哪个角色爆炸都会导致错误。
但是,在将 $referral 和 $software_type 打印到 error_log 时,它会给出正确的值:
[04-Nov-2014 02:18:11 America/Los_Angeles] [Referral]: Jimmy
[04-Nov-2014 02:18:11 America/Los_Angeles] [Software]: 0
【问题讨论】:
标签: php paypal paypal-ipn paypal-sandbox