PayPal PHP SDK REST API响应而不是JSON

时间:2013-11-14 00:55:50

标签: php rest paypal

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

3 个答案:

答案 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));