Я работаю с API Recurly PHP и пытаюсь найти способ выяснить, есть ли у подписки просроченные счета, следовательно, подписка просрочена (даже при наличии просроченных счетов состояние подписки не изменяется и по-прежнему отображается как активное).
Для доступа к подписке я использую:
try{
$subscriptions = Recurly_SubscriptionList::getForAccount('1');
foreach ($subscriptions as $subscription) {
print $subscription;
}
}
Это возвращает:
activated_at="2014-10-08 13:18:27 +00:00",
collection_method="manual",
currency="USD",
current_period_ends_at="2014-11-08 14:00:00 +00:00",
current_period_started_at="2014-10-08 14:00:00 +00:00",
invoice=,
net_terms=0,
plan="",
quantity=120,
state="active",
subscription_add_ons=[],
trial_ends_at="2014-10-08 14:00:00 +00:00",
trial_started_at="2014-10-08 13:18:27 +00:00",
unit_amount_in_cents=500,
uuid="VALUE"
Внутри $ subscription есть счет, но он пуст, если я использую:
print_r($subscription->invoice);
это возвращает:
Recurly_Stub Object ( [objectType] => invoice [_href:protected] => https://subdomain.recurly.com/v2/invoices/1004 [_client:protected] => [_links:protected] => Array ( ) )
Счет 1004 является просроченным, поэтому я хочу показать, что подписка просрочена, но я не могу получить доступ к значению _href: protected и не вижу другого способа определить, содержит ли подписка просроченные счета?
Кто-нибудь знает альтернативный способ узнать, содержит ли подписка просроченные счета или, если это не удалось, как я могу получить доступ к _href: protected, чтобы я мог хотя бы затем запустить API get invoice API для проверки счета?
Короткая версия, вы должны позвонить $subscription->invoice->get()
, $subscription->invoice
возвращает Recurly_Stub
объект, и вам нужно будет вызвать его get()
способ заставить его загрузить весь объект.
Мы документировать это но ясно, что у нас нет этого в правильном месте.
Отступая, вы можете обнаружить, что быстрее получить все просроченные счета Recurly_InvoiceList::getPastDue()
и поищите их подписки.
Других решений пока нет …