Aktualnie integruję się z programem Stripe i zanim zaktualizuję istniejącą subskrypcję, potrzebuję pobrać wszystkie istniejące subskrypcje, aby znaleźć prawidłowy identyfikator subskrypcji.Jak iterować nad kolekcją subskrypcji Stripe
Jednak, kiedy używam biblioteki Stripe PHP, wydaje mi się, że nie jestem w stanie powtórzyć aktualnej kolekcji subskrypcji.
ten sposób odzyskać kolekcję Subskrypcja:
$subscriptions = $customer->subscriptions->all();
Próbowałem również ten, który powinien być taki sam i nie wydaje się, aby różnica w efekcie końcowym:
$subscriptions = \Stripe\Customer::retrieve($customer->id)->subscriptions->all();
Dla zdrowia, po uzyskaniu kolekcji subskrypcji I echo
a count()
na niej, aby zobaczyć, ile elementów zawiera:
echo count($subscriptions); // echos '1' which is what I expect.
Kiedy I print_r()
cały obiekt rzeczywiście widzę jedną istniejącą subskrypcję, więc zweryfikuję, że została ona pobrana.
Następnie chcę po prostu powtórzyć kolekcję za pomocą foreach
. Powinno to być możliwe, ponieważ StripeObject
(klasa bazowa dla wracającej kolekcji) realizuje ArrayAccess
:
foreach($subscriptions as $subscription)
{
print_r($subscription);
}
Jednak to nie skutkuje niczym.
Jak poprawnie wykonać iterację w kolekcji subskrypcji Stripe?
$ subskrypcje jest obiektem StripeList, $ Abonament-> danych jest rzeczywista tablica –
Nie, to nie jest. To 'Collection' ->' ApiResource' -> 'StripeObject', który implementuje' ArrayAccess'. Poza tym "dane" są "chronione". – Luke
testowanie iteracyjne za pośrednictwem $ subscriptions-> data, gdy print_r będzie wyświetlane jako chronione, ale nadal jest dostępne. –