php - 将其存储为对象

标签 php json paypal

解决方案: 每个以 :private 结尾的键都有一个 __get()toJSON() 方法,这是从它们获取数据所必需的,因为 _propMap 是私有(private)的。

我正在使用 PayPal 的 PHP API 从 PayPal 接受付款,付款完成后我得到的数据会这样返回

Array
(
[PayPal\Common\PPModel_propMap] => Array
    (
        [id] => PAY-THEID
        [create_time] => 2013-12-03T15:47:15Z
        [update_time] => 2013-12-03T15:47:34Z
        [state] => approved
        [intent] => sale
        [payer] => PayPal\Api\Payer Object
            (
                [_propMap:PayPal\Common\PPModel:private] => Array
                    (
                        [payment_method] => paypal
                        [payer_info] => PayPal\Api\PayerInfo Object
                            (
                                [_propMap:PayPal\Common\PPModel:private] => Array
                                    (
                                        [email] => my@email.com
                                        [first_name] => Tom
                                        [last_name] => Hart
                                        [payer_id] => thePayerId
                                        [shipping_address] => PayPal\Api\Address Object
                                            (
                                                [_propMap:PayPal\Common\PPModel:private] => Array
                                                    (
                                                        [line1] => 1 Main Terrace
                                                        [city] => Wolverhampton
                                                        [state] => West Midlands
                                                        [postal_code] => W12 4LQ
                                                        [country_code] => GB
                                                    )

                                            )

                                    )

                            )

                    )

            )

        [transactions] => Array
            (
                [0] => PayPal\Api\Transaction Object
                    (
                        [_propMap:PayPal\Common\PPModel:private] => Array
                            (
                                [amount] => PayPal\Api\Amount Object
                                    (
                                        [_propMap:PayPal\Common\PPModel:private] => Array
                                            (
                                                [total] => 0.33
                                                [currency] => GBP
                                                [details] => PayPal\Api\Details Object
                                                    (
                                                        [_propMap:PayPal\Common\PPModel:private] => Array
                                                            (
                                                                [subtotal] => 0.11
                                                                [tax] => 0.11
                                                                [shipping] => 0.11
                                                            )

                                                    )

                                            )

                                    )

                                [description] => Payment description
                                [item_list] => PayPal\Api\ItemList Object
                                    (
                                        [_propMap:PayPal\Common\PPModel:private] => Array
                                            (
                                                [items] => Array
                                                    (
                                                        [0] => PayPal\Api\Item Object
                                                            (
                                                                [_propMap:PayPal\Common\PPModel:private] => Array
                                                                    (
                                                                        [name] => Flowers
                                                                        [price] => 0.11
                                                                        [currency] => GBP
                                                                        [quantity] => 1
                                                                    )

                                                            )

                                                    )

                                            )

                                    )

                                [related_resources] => Array
                                    (
                                        [0] => PayPal\Api\RelatedResources Object
                                            (
                                                [_propMap:PayPal\Common\PPModel:private] => Array
                                                    (
                                                        [sale] => PayPal\Api\Sale Object
                                                            (
                                                                [_propMap:PayPal\Common\PPModel:private] => Array
                                                                    (
                                                                        [id] => 9L998852HN614082X
                                                                        [create_time] => 2013-12-03T15:47:15Z
                                                                        [update_time] => 2013-12-03T15:47:34Z
                                                                        [state] => completed
                                                                        [amount] => PayPal\Api\Amount Object
                                                                            (
                                                                                [_propMap:PayPal\Common\PPModel:private] => Array
                                                                                    (
                                                                                        [total] => 0.33
                                                                                        [currency] => GBP
                                                                                    )

                                                                            )

                                                                        [parent_payment] => PAY-4S184757A49956741KKO72AY
                                                                        [links] => Array
                                                                            (
                                                                                [0] => PayPal\Api\Links Object
                                                                                    (
                                                                                        [_propMap:PayPal\Common\PPModel:private] => Array
                                                                                            (
                                                                                                [href] => https://api.sandbox.paypal.com/v1/payments/sale/9L998852HN614082X
                                                                                                [rel] => self
                                                                                                [method] => GET
                                                                                            )

                                                                                    )

                                                                                [1] => PayPal\Api\Links Object
                                                                                    (
                                                                                        [_propMap:PayPal\Common\PPModel:private] => Array
                                                                                            (
                                                                                                [href] => https://api.sandbox.paypal.com/v1/payments/sale/abc/refund
                                                                                                [rel] => refund
                                                                                                [method] => POST
                                                                                            )

                                                                                    )

                                                                                [2] => PayPal\Api\Links Object
                                                                                    (
                                                                                        [_propMap:PayPal\Common\PPModel:private] => Array
                                                                                            (
                                                                                                [href] => https://api.sandbox.paypal.com/v1/payments/payment/PAY-abc
                                                                                                [rel] => parent_payment
                                                                                                [method] => GET
                                                                                            )

                                                                                    )

                                                                            )

                                                                    )

                                                            )

                                                    )

                                            )

                                    )

                            )

                    )

            )

        [links] => Array
            (
                [0] => PayPal\Api\Links Object
                    (
                        [_propMap:PayPal\Common\PPModel:private] => Array
                            (
                                [href] => https://api.sandbox.paypal.com/v1/payments/payment/abc
                                [rel] => self
                                [method] => GET
                            )

                    )

            )

    )

)

我想将其中的一部分(shipping_address 是其中之一)转换为 json 对象(使用 json_encode/decode()),并将其存储在我的数据库中,以便在管理部分我可以查看地址,以便我知道将东西发送到哪里,但是,我无法将其转换为 json 对象,它只返回 {}。我如何将这些详细信息存储在我的数据库中以供以后查看?

编辑:

Json_encode代码

$db['address'] = json_encode((array) $dets->payer->payer_info->shipping_address);
var_dump(json_last_error());
$db['payerId'] = $dets->payer->payer_info->payer_id;
$db['prices'] = json_encode((array) $dets->transations[0]->amount);
var_dump(json_last_error());
$db['description']  = $dets->transations[0]->description;
$db['items'] = json_encode((array) $dets->transations[0]->item_list->items);
var_dump(json_last_error());
$db['links'] = json_encode((array) $dets->related_resources[0]->sale->links);
var_dump(json_last_error());

$db数组的输出是

Array
(
[userId] => 10
[paymentId] => PAY-4VC71851RJ180032AKKPAB3Y
[state] => approved
[address] => {"\u0000PayPal\\Common\\PPModel\u0000_propMap":{"line1":"1 Main Terrace","city":"Wolverhampton","state":"West Midlands","postal_code":"W12 4LQ","country_code":"GB"}}
[payerId] => P77LD9M7MUQN2
[prices] => []
[description] => 
[items] => []
[links] => []
)

所以有些正在编码,有些正在编码。

最佳答案

这也困扰了我一段时间,我努力寻找一个直截了当的答案。我使用的是当前的 PHP REST STK,在示例 ExecutePayment.php 文件中看到如下内容:

// Execute the payment
// (See bootstrap.php for more on `ApiContext`)
$result = $payment->execute($execution, $apiContext);

echo "<html><body><pre>";
var_dump($result);
echo "</pre><a href='../index.html'>Back</a></body></html>";

如前所述,$result 对象对于导航不是很有帮助。您不能直接对对象进行编码,因为 PayPal 在 SDK 中自己做了一些疯狂的事情。如前所述,解决方案是使用 PPModal 类中的 toJSON() 方法将该对象直接转换为 JSON:

$result = $payment->execute($execution, $apiContext);

$array = $result->toJSON();

echo '<pre>';
print_r($array);
echo '</pre>';

我希望有人能更清楚一点。

关于php - 将其存储为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20355757/

相关文章:

php - 在 WordPress 插件中调用 TinyMCE

php - 根据下拉列表中选定的值自动填充文本字段

javascript - json - 无法访问 json 参数

Paypal 一次性无效 ipn?

php - 如何通过添加标题将二维数组转换为 csv 文件

php - 在 PHP 中从 jquery 访问 DELETE

ios - 如何将 POST 数据(包括 JSON)从 iOS 应用程序发送到网络服务器

javascript - 通过 JSON 应答验证简单的 HTML 表单

php - 用于集成 PayPal IPN 的示例 php 代码

PayPal Express Checkout - 稍后获取交易数据