2

当我进行 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;
}
4

3 回答 3

3

好的,谢谢 Machavity 的帮助。问题是在我上面发布的函数中,它接受 JSON 响应并将其转换为一些奇怪的对象:

$ret->fromJson($json);

我删除了那行,现在我得到了 JSON。我仍然想知道为什么拥有我最初发布的那个对象会有帮助以及它可以在哪里使用。我还想知道为什么 SDK 文档没有明确声明 SDK 不会返回JSON 作为最终格式。我觉得如果 PayPal 通知开发人员将响应转换为对象,这将节省大量时间,这样我们就不必搜索数千行代码来找出答案。

于 2013-11-18T19:32:54.723 回答
0

SDK 很可能在通信层接受 JSON,然后运行​​json_decode将您可以使用的对象传回给您。我自己的 API 系统将响应转换回 PHP 数组。

于 2013-11-14T01:12:11.403 回答
0

json_decode( $call->execute(array('PayPal\Rest\RestHandler'), "/v1/vault/credit-card/$creditCardId", "GET", $payLoad) );

于 2014-12-26T09:43:29.590 回答