我正在尝试使用PHP中的recurly.js api来获取订阅数据.Below是我的代码:
require_once('lib/recurly.php');
Recurly_Client::$subdomain = 'https://subdomain.recurly.com/v2/subscriptions';
Recurly_Client::$apiKey = 'privatekey';
$subscriptions = Recurly_SubscriptionList::getActive();
print_r($subscriptions);
foreach ($subscriptions as $subscription) {
print_r($subscription);
}
$ subscriptions正在打印:
Recurly_SubscriptionList Object(
[_position:Recurly_Pager:private] => 0
[_objects:protected] =>
[_href:protected] => /subscriptions?state=active
[_type:protected] =>
[_client:protected] => Recurly_Client Object
(
[_apiKey:Recurly_Client:private] =>
[_acceptLanguage:Recurly_Client:private] => en-US
)
[_links:protected] => Array
(
)
)
虽然$ subscription没有打印。但是结果不是订阅列表出了什么问题。
答案 0 :(得分:1)
自print_r(gettype($ subscription));是一个对象,你不能把它当作一个数组。为了将对象的属性作为数组获取,您可以使用内置函数get_obj_vars。
您可以遵循以下代码:
require_once('lib/recurly.php');
Recurly_Client::$subdomain = 'https://subdomain.recurly.com/v2/subscriptions';
Recurly_Client::$apiKey = 'privatekey';
$subscriptions = Recurly_SubscriptionList::getActive();
foreach(get_obj_vars($subscription) as $key => $value) {
echo $key . ' => ' . $value;
}
这基本上会在对象 $ subscriptions 中创建一个包含所有公共成员的数组。但是,作为print_r的输出($ subscriptions);只包含私有成员和受保护成员,它实际上会返回一个空数组。
答案 1 :(得分:0)
订阅数组可以使用预格式标记以可读格式打印,如下所示。另请注意,已对代码中输入子域的方式进行了更正。
<?php
require_once('lib/recurly.php');
Recurly_Client::$subdomain = '<mySubdomain>'; //Only enter the Recurly subdomain name here, not URL
Recurly_Client::$apiKey = 'privatekey';
$subscriptions = Recurly_SubscriptionList::getActive();
print_r($subscriptions);
foreach ($subscriptions as $subscription) {
//print_r($subscription);
echo '<pre>';
print_r (array($subscription));
echo '</pre>';
}
?>
答案 2 :(得分:0)
目前,您已编写了导致问题的子域的完整网址。 所以只需替换这一行
Recurly_Client::$subdomain = 'https://subdomain.recurly.com/v2/subscriptions';
带
Recurly_Client::$subdomain = 'your-subdomain-name'; // i.e devapp,myapp..etc
您不需要编写完整的子域名网址,只需传递您在配置中找到的子域名 - &gt;站点设置(仅限子域名)。
在注册时向您的子域名提供的任何名称。