【问题标题】:PayPal is Truncating My Return Query StringPayPal 正在截断我的退货查询字符串
【发布时间】:2015-08-15 18:24:25
【问题描述】:

连接到 PayPal 时,我使用这样的 URL(我在这里使用假值,但结构是真实的):

https://www.paypal.com/cgi-bin/webscr?&business=ZDS346347&cmd=_xclick&amount=100&item_name=Test&no_note=1&no_shipping=1&rm=2&return=http://www.website.com/registration.php?paypal=1&classid=122&sessionid=264&studentid=2286

问题是当我发送这个 url 时,它会截断我的返回值查询字符串:

paypal=1&classid=122&sessionid=264&studentid=2286

到这里:

paypal=1

返回值中的 & 符号让人困惑,但我需要使用它们,以便在返回时处理这些查询字符串值。

有没有办法,我可以将整个返回字符串传递给 PayPal,这样它就不会在遇到第一个 & 符号后被截断。

谢谢,

克里斯

【问题讨论】:

    标签: php paypal


    【解决方案1】:

    urlencode 包装传递的URL 以将& 符号转换为PayPal 可解析的字符,然后在调用您的URL 时使用urldecode 对其进行解码。

    发生这种情况是因为 PayPal 的 URL 只是将 ? 之后的所有内容通过 & 符号分割成块。它不知道什么时候是您网站的一部分。所以它发送 PayPal classid=122 作为它自己的键/值对,而不是你的 URL 的一部分。以这种方式对 URL 进行编码应该可以使其正常工作。

    edit 引用了错误的 PHP 函数。 urlencode/decode 用于 GET 参数传递,htmlspecialchars 用于存储 HTML 数据

    【讨论】:

    • 我可以看到如何使用 htmlspecialchars 使字符串不会被 PayPal 分解,但是当 PayPal 将我的客户发送回来时,它不会将其发送回正确的字符串 - 它会将其发送回带有特殊字符的字符串。到那时,再解码就太晚了——还是我遗漏了什么?
    • 查看编辑!意思是 URLENCODE! PayPal可能自动正确调用回调 URL。老实说,我不是 100% 确定,但我会先测试一下。我怀疑你需要做更多的工作。如果它不起作用,那意味着您的 $_GET 将有一个大字符串,其中只有第一个参数(在您的示例中,paypal 等于其他所有参数)。只需获取那个凌乱的字符串,对其进行解码并爆炸,如下所示:$gets = explode('&', urldecode($_GET['paypal'])); 现在您可以将$gets 视为$_GET,正确设置。不过,我再次怀疑 PayPal 会正确回调。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    相关资源
    最近更新 更多