<分区>
标签 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 中,但我不确定为什么突然改变?
最佳答案
好的,我们现在已经意识到 一些 PayPal 服务器在第一个 & 符号处终止。这解释了为什么我们得到第一个查询字符串值而不是其他值。
似乎这种行为不仅限于 notify_url
值,而且正如 Mike 在评论中所建议的那样,这种情况也发生在 CUSTOM
字段中。如果您要推送一系列带有与号分隔符的名称值对,您需要切换到其他分隔符或对整个值进行 URL 编码。
我们现在正在测试以查看对整个回调 URL 进行 URL 编码是否仍会导致进行实际回调。
编辑:
是的,对整个 notify_url
值进行编码的 URL 解决了这个问题并保留了查询字符串。
编辑 2:
似乎对整个值进行 URL 编码不再有效,所以我假设 PayPal 已经恢复到我们遇到这些问题之前的原始行为。希望这将在所有入站服务器中保持一致,并且现在将保持不变。
关于paypal - PayPal 从 IPN 端点删除的 QueryString 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42669566/