我正在使用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的值?
答案 0 :(得分:1)
好像您要对数据应用两次urlencode()
,因此您需要应用两次urldecode()
或删除其中一项。
答案 1 :(得分:0)
我认为" custom"字段用于在另一端标识您的请求,对吗?所以,该字段是供您使用而不是贝宝。我认为对它进行编码是一个好主意。但是,如果你想让它在后端生存,你可能想要使用base64encode和base64decode。