PayPal PHP SDK REST API响应不是JSON
当我进行API调用时,我得到一个包含嵌套对象嵌套数组的对象。在SDK中,我将头设置为accept:application/json。我想知道为什么要取回对象和数组 以下是答复的一部分:PayPal PHP SDK REST API响应不是JSON,php,rest,paypal,Php,Rest,Paypal,当我进行API调用时,我得到一个包含嵌套对象嵌套数组的对象。在SDK中,我将头设置为accept:application/json。我想知道为什么要取回对象和数组 以下是答复的一部分: PayPal\Api\CreditCard Object ( [_propMap:PayPal\Common\PPModel:private] => Array ( [type] => amex [number] => xx
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;
}
公共静态函数get($creditcardd,$apiContext=null){
如果($creditCardId==null)| |(strlen($creditCardId)执行(数组('PayPal\Rest\RestHandler'),“/v1/vault/credit-card/$creditCardId”,“GET”,$payLoad);
$ret=新信用卡();
$ret->fromJson($json);
返回$ret;
}
很可能SDK在通信层接受JSON,然后运行返回一个可以使用的对象。我自己的API系统将响应转换回PHP数组。好的,谢谢Machavity的帮助。问题是在我上面发布的函数中,它接受JSON响应并将其转换对于某个wierd对象:
$ret->fromJson($json);
我删除了这一行,现在得到了JSON。我仍然想知道为什么我最初发布的对象会有帮助,它可以在哪里使用。我还想知道为什么SDK文档没有明确声明SDK不会返回JSON作为最终格式。我觉得如果PayPal通知开发人员响应nse被转换为一个对象,因此我们不必搜索数千行代码来找出它。json\u解码($call->execute(数组('PayPal\Rest\RestHandler'),“/v1/vault/credit-card/$creditcardd”,“GET”,“$payLoad))Hmm,有趣的是,当我搜索文档时,它只列出JSON作为响应。我觉得我遗漏了一些东西。原始响应(PayPal向您发送的内容)很可能是JSON格式。您必须构建自己的请求或修改SDK才能看到它。我仍然不知所措。我已将配置设置为返回JSON。我发布的是响应的print_r(),因此SDK尚未处理响应。我猜,如果这是“正常”的话,如何访问此对象中的所有数据。对象中的数组键有斜杠和分号,这不是我以前处理过的。在我使用过的其他API中,它只是一个简单的json响应?SDK已经为您解析了响应,您显然通过对象引用了它。您可以发布代码吗这样我就可以看到您的调用了?进行调用的函数:公共静态函数get($creditcardd,$apiContext=null){if($creditcardd==null)|(strlen($creditcardd)execute(数组('PayPal\Rest\RestHandler'),“/v1/vault/credit-card/$creditcardd”,“get”,$payLoad);$ret=new CreditCard();$ret->-fromJson($json);return$ret;我一直在想如何简单地通过PHP PayPal SDK获取原始JSON,然后“发送”和“接收”…用于日志记录/跟踪目的!我不想要SDK的整个对象包装器和处理程序,我只想要PayPal上下的负载用于日志记录(因为SDK记录器已损坏/根本不工作)。