urldecode()不解码+符号

时间:2015-03-04 14:41:49

标签: php paypal paypal-ipn

我正在使用PayPal支付系统,我想在自定义字段中发送2个值。因此我使用了urlencode(json_encode())功能。一个没有urlencoding的样子的例子。

$customData = array();
$customData['invoiceID'] = $invoiceID;
$customData['username'] = urlencode($_GET['username']);

$p->add_field('custom', urlencode(json_encode($customData)));

输出是:

%7B%22invoiceID%22%3A108674%2C%22username%22%3A%22Just%2Btesting%22%7D

urldecoding和jsondecoding时所需的输出:

{"invoiceID":108674,"username":"Just testing"}

但它在urldecoding和jsondecoding之后给了我这个:

{"invoiceID":108674,"username":"Just+testing"}

此问题的解决方法是再次对用户名本身进行urldecode。但为什么我必须加倍urldecode只是为了获得我在一次运行此函数时urlencoded的值?

2 个答案:

答案 0 :(得分:1)

好像您要对数据应用两次urlencode(),因此您需要应用两次urldecode()或删除其中一项。

答案 1 :(得分:0)

我认为" custom"字段用于在另一端标识您的请求,对吗?所以,该字段是供您使用而不是贝宝。我认为对它进行编码是一个好主意。但是,如果你想让它在后端生存,你可能想要使用base64encode和base64decode。