Проблема, с которой вы столкнулись, скорее всего связана с порядком создания и финализации счёта (инвойса). Давайте рассмотрим корректный порядок операций.
Вам нужно сначала создать элементы счёта (invoice items), а затем создать сам счёт. При создании счёта (`$stripe->invoices->create`) необходимо указать, что вы хотите включить созданные ранее элементы счёта.
Ваш код выглядит в целом правильно, но возможно, вам поможет добавить ключ `auto_advance` при создании инвойса, чтобы инвойс автоматически включал все предыдущие элементы.
Попробуйте обновить свой код следующим образом:
```php
$stripe = new StripeClient($apiKey);
// Создаем нового клиента
$customer = $stripe->customers->create([
'email' => 'my@email.com'
]);
// Создаем элемент счёта
$stripe->invoiceItems->create([
'customer' => $customer->id,
'amount' => 5000,
'currency' => 'aed',
'description' => 'Оплата за услугу',
]);
// Создаем инвойс с указанием авто-выставления (auto_advance)
$invoice = $stripe->invoices->create([
'customer' => $customer->id,
'auto_advance' => true // Это может помочь в автоматической обработке
]);
// Финализируем инвойс
$invoice->finalizeInvoice();
// Возвращаем инвойс
return $invoice;
```
Убедитесь также, что ваш API ключ (в переменной `$apiKey`) действителен и имеет права на создание элементов и инвойсов.
Если инвойс по-прежнему остаётся пустым, проверьте наличие ошибок в процессе создания инвойсов и элементов счёта, просматривая логи API Stripe, чтобы убедиться, что все шаги выполняются корректно.