当我进行API调用时,我得到一个嵌套对象嵌套数组的对象。在SDK中,我将标头设置为接受:application / json。我想知道为什么我要回到对象和数组?
以下是回复的部分内容:
PayPal\Api\CreditCard Object
(
[_propMap:PayPal\Common\PPModel:private] => Array
(
[type] => amex
[number] => xxxxxxxxxxx0005
[expire_month] => 5
[expire_year] => 2015
[cvv2] => 1234
[first_name] =>
[last_name] =>
[payer_id] => 3zIVtTFQ7UdKjP5mssjtzoUo6NvrsExl466oPC4Mm8nwOjI6BS
[id] => CARD-35X96613EN689504VKKCA4RA
[state] => ok
[valid_until] => 2015-06-01T00:00:00Z
[create_time] => 2013-11-13T23:41:56Z
[update_time] => 2013-11-13T23:41:56Z
[links] => Array
(
[0] => PayPal\Api\Links Object
(
[_propMap:PayPal\Common\PPModel:private] => Array
(
[href] => https://api.sandbox.paypal.com/v1/vault/credit-card/CARD-35X96613EN689504VKKCA4RA
[rel] => self
[method] => GET
)
)
[1] => PayPal\Api\Links Object
......等等 创建此代码的代码
public static function get($creditCardId, $apiContext = null) {
if (($creditCardId == null) || (strlen($creditCardId) <= 0)) {
throw new \InvalidArgumentException("creditCardId cannot be null or empty");
}
$payLoad = "";
if ($apiContext == null) {
$apiContext = new ApiContext(self::$credential);
}
$call = new PPRestCall($apiContext);
print_r($call);
die;
$json = $call->execute(array('PayPal\Rest\RestHandler'), "/v1/vault/credit-card/$creditCardId", "GET", $payLoad);
$ret = new CreditCard();
$ret->fromJson($json);
return $ret;
}
答案 0 :(得分:2)
好的,谢谢Machavity的帮助。问题是,在我上面发布的函数中,它接受JSON响应并将其转换为一些奇怪的对象:
$ret->fromJson($json);
我删除了该行,现在我获得了JSON。我仍然想知道为什么我在国内发布这个对象会有所帮助,并且可以使用它。我也想知道为什么SDK文档没有明确声明SDK 不返回JSON作为最终格式。我觉得如果PayPal通知开发人员将响应转换为对象,这将节省大量时间,因此我们不必搜索数千行代码来解决问题。
答案 1 :(得分:0)
可能SDK正在接受通信层上的JSON,然后运行json_decode以传回您可以使用的对象。我自己的API系统将响应转换回PHP数组。
答案 2 :(得分:0)
json_decode($ call-&gt;执行(数组(&#39; PayPal \ Rest \ RestHandler&#39;),&#34; / v1 / vault / credit-card / $ creditCardId&#34;,&#34 ; GET&#34;,$ payLoad));