В данный момент ваш код выполняет две функции: он создает Customer , а затем создает Subscription .Вторым шагом будет сопоставление 5 планов с вашим клиентом, чтобы он автоматически взимал плату каждую неделю или каждый месяц.Это приводит к немедленному созданию платежа для первого цикла выставления счетов (при условии отсутствия пробного периода).
В случае сбоя платежа создание подписки завершится неудачно.Вы должны убедиться, что ваш код правильно перехватывает все исключения, вызванные библиотекой, как описано в Stripe документация об ошибках .
Если исключение не возникло, то создание подписки выполнено успешно и карточка клиентабыл успешно заряжен.Это означает, что Счет был создан для ожидаемой общей суммы всех ваших планов и что Счет-фактура привел к созданию Charge по той же причине.
Теперь,в большинстве случаев вы, скорее всего, захотите сохранить всю эту информацию в своей базе данных: идентификатор клиента cus_1234
, полученный на первом этапе, идентификатор подписки sub_2222
, полученный на втором этапе, а затем идентификатор счета in_ABCD
иИдентификатор заряда ch_FFFF
.
Для двух последних лучшим решением будет использование API списка счетов и передача идентификатора клиента в параметре customer
.Поскольку это первый раз, когда этот Клиент выставляет счет, вы знаете, что получите только один результат.Код будет выглядеть следующим образом:
$invoices = \Stripe\Invoice::all(["limit" => 3]);
$invoiceId = $invoices->data[0]->id;
$chargeId = $invoices->data[0]->charge;
Вы также можете комбинировать это с функцией Expand , чтобы получить полный объект Charge с дополнительной информацией, например, о последних 4 картах.цифры:
$invoices = \Stripe\Invoice::all([
"limit" => 3,
"expand" => ["data.charge"],
]);
$invoiceId = $invoices->data[0]->id;
$chargeId = $invoices->data[0]->charge->id;
$cardLast4 = $invoices->data[0]->charge->source->last4;