PayPal从IPN端点删除QueryString值

时间:2017-03-08 11:03:49

标签: paypal paypal-ipn

我们已经与PayPal进行了5年的简单付款集成,直到今天仍然没有问题。在IPN URL(notify_url)中,我们在查询字符串中传递3个值,例如

https://www.example.com/callback/ipn?pspId=A&secCode=MnBP%2fxOwbQhXLd%2arD5xd6g%3d%3d&isPur=false

从今天开始,PayPal会删除最后两个值,并使用第一个查询字符串值进行调用,例如

https://www.example.com/callback/ipn?pspId=A

我们使用secCode值作为我们在回调上验证的签名,以防止对表单进行任何修改。为什么PayPal会突然开始从查询字符串中删除值?我怀疑他们应该在POST,但我不确定为什么突然改变?

1 个答案:

答案 0 :(得分:3)

好的,我们现在已经意识到PayPal服务器的某些服务器终止于第一个&符号。这解释了为什么我们得到第一个查询字符串值而不是其他值。

似乎此行为不仅限于notify_url值,但正如Mike在评论中所建议的那样,这也发生在CUSTOM字段中。如果您使用&号分隔符推送一系列名称值对,则需要切换到其他分隔符或URL对整个值进行编码。

我们现在正在测试以查看编码整个回调网址的URL是否仍然会导致实际的回调。

编辑:

是编码整个notify_url值的URL解决了问题并保留了查询字符串。

编辑2:

似乎编码整个值的URL不再有效,所以我假设P​​ayPal在遇到这些问题之前已恢复原来的行为。希望这将在所有入站服务器上保持一致,并且现在将保持不变。