【问题标题】:Paypal returns "?" in the middle of return URL (can't GET token and PayerID)贝宝返回“?”在返回 URL 中间(无法获取令牌和 PayerID)
【发布时间】:2018-07-03 23:23:01
【问题描述】:

Paypal 开始从沙盒返回此 URL:

http://www.url.com/en/order/201807035911&success=true&paymentId=PAY-3VW434721W751862GLO563ZQ?token=EC-1CD5257354412893B&PayerID=AZDJ2H9PDTOYY

URL 中间的问号 (.. 63ZQ**?**token=E ..)。 PHP SDK中配置的URL为:

$successUrl = "http://www.url.com/en/order/201807035911&success=true";

我可以毫无问题地通过_GET paymentId,但由于问号,无法访问token和PayerID。

我不知道如何以聪明的方式解决它。我什至尝试了 .htaccess,但这根本不起作用(我什至没有得到 paymentId 参数):

RewriteRule ^(.*)/order/(.*)&success=(.*)&paymentId=(.*)?token=(.*)&PayerID=(.*) overview.php?jazyk=$1&id=$2&success=$3&paymentId=PAY-$4&token=$5&PayerID=$6 [L]

通过我用于我的网站的这个 .htaccess,我可以获得 paymentID,但不能获得其余部分。

RewriteRule ^(.*)/order/(.*) overview.php?jazyk=$1&id=$2 [L]

如何访问令牌和 PayerID 参数?

【问题讨论】:

  • 你不应该在返回 url 上有自己的参数,这就是问题

标签: php .htaccess url paypal


【解决方案1】:

我会检查配置的回发 URL 是否正确。它似乎有一个&,前面没有?,以标记查询字符串的开始。

"http://www.url.com/en/order/201807035911&success=true"

您无需手动添加success=true,因为状态将在请求的查询字符串中提供。尝试将其设置为:

"http://www.url.com/en/order/201807035911"

【讨论】:

    【解决方案2】:

    您可以获取 URL,获取 ? 右侧的内容并使用 parse_str() 获取其他值。

    如果您已经拥有完整的 URL,则可以跳过第一步中的 $_SERVER['REQUEST_URI']。

    // your URL
    $url = $_SERVER['REQUEST_URI'] ;
    
    // split it on the '?'
    $urlParts = explode('?',$url) ;
    
    // grab the variables and put them in $rightOfTheQuestionMark
    parse_str($urlParts[1],$rightOfTheQuestionMark) ;
    

    你想要的现在在数组$rightOfTheQuestionMark

    【讨论】:

      猜你喜欢
      • 2013-12-01
      • 2017-04-12
      • 2013-05-23
      • 2017-02-26
      • 2011-02-20
      • 2017-10-05
      • 2015-10-31
      • 2011-03-06
      • 2015-10-16
      相关资源
      最近更新 更多