我们已经与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,但我不确定为什么突然改变?
答案 0 :(得分:3)
好的,我们现在已经意识到PayPal服务器的某些服务器终止于第一个&符号。这解释了为什么我们得到第一个查询字符串值而不是其他值。
似乎此行为不仅限于notify_url
值,但正如Mike在评论中所建议的那样,这也发生在CUSTOM
字段中。如果您使用&号分隔符推送一系列名称值对,则需要切换到其他分隔符或URL对整个值进行编码。
我们现在正在测试以查看编码整个回调网址的URL是否仍然会导致实际的回调。
编辑:
是编码整个notify_url
值的URL解决了问题并保留了查询字符串。
编辑2:
似乎编码整个值的URL不再有效,所以我假设PayPal在遇到这些问题之前已恢复原来的行为。希望这将在所有入站服务器上保持一致,并且现在将保持不变。