Кто может поделиться опытом работы со Stripe и помочь с созданием счетов?

Я работаю с официальным SDK на PHP. У меня возникла проблема: создаются пустые счета без строк с товарами. Ниже приведён код, который я использую:

<pre><code class="php">$stripe = new StripeClient($apiKey);
$customer = $stripe-&gt;customers-&gt;create([
            'email' =&gt; 'my@email.com'
]);

$stripe-&gt;invoiceItems-&gt;create([
            'customer' =&gt; $customer-&gt;id,
            'amount' =&gt; 5000,
            'currency' =&gt; 'aed',
            'description' =&gt; 'Оплата за услугу',
]);

$invoice = $stripe-&gt;invoices-&gt;create([
            'customer'   =&gt; $customer-&gt;id
]);

$invoice-&gt;finalizeInvoice();
return $invoice;</code></pre>

В результате счета создаются без invoiceItems и остаются пустыми. Как я могу исправить эту ситуацию?
  • 27 марта 2025 г. 7:14
Ответы на вопрос 1
Проблема, с которой вы столкнулись, скорее всего связана с порядком создания и финализации счёта (инвойса). Давайте рассмотрим корректный порядок операций.

Вам нужно сначала создать элементы счёта (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, чтобы убедиться, что все шаги выполняются корректно.
Похожие вопросы