У вас уже есть хорошее начало. Вы захотите добавить хотя бы один дополнительный вызов, чтобы убедиться, что вы получите все необходимые данные, если хотите попробовать этот подход. Я также добавил бы дополнительную Transfer_group к вашим заголовкам, о которых я расскажу позже.
try {
$customer = \Stripe\Customer::create(array(
'email' => 'customer2@example.com',
'card' => $token
));
$charge = \Stripe\Charge::create(array(
'customer' => $customer->id,
'amount' => 500,
'description' => 'Event charge',
'currency' => 'usd',
'transfer_group' => 'Group Name'
));
$transactionCall = \Stripe\BalanceTransaction::retrieve($charge-> balance_transaction);
$transactionData = [
'id' => $charge->id,
'id_customer' => $charge->customer,
'product' => $charge->description,
'amount' => $charge->amount,
'currency' => $charge->currency,
'status' => $charge->status
];
$stmt = $con->prepare("INSERT INTO stripe (token_stripe, id_transaction, id_customer, product, currency, amount, status, inscribedDate,) VALUES (?,?,?,?,?,?,?)");
$stmt->bind_param("sssssss", $token,$transactionData['id'],$transactionData['id_customer'],$transactionData['product'],$transactionData['currency'],$transactionData['amount'],$transactionData['status'], $transactionCall['created'], );
$stmt->execute();
echo 'Successful transaction!';
Эта конечная точка выдаст вам вписанную дату, единственную другую часть данных, которая, по-видимому, вам не хватает, на основании быстрого обзора. Информация о клиенте у вас уже есть, вам просто нужно передать ее в объект клиента.
Что касается количества, вы можете вручную отслеживать количество продукта и выполнять несколько начислений, обновляя их по мере продвижения. Выполните одну большую зарядку, отследите ее в описании и проанализируйте значение. Или вы можете установить отдельные платежи, но связать их вместе, что может быть лучше для вашего случая. Для этого вам нужно будет включить поле Transfer_group, которое я включил выше. Я коснусь этого в нижней части.
https://stripe.com/docs/api/
В целом, если вы хотите сохранить ту же настройку, вы можете просто выполнить это действие для каждого отдельного клиента и затем передать данные, как вы делаете.
Однако я бы посоветовал взглянуть на этот справочник о том, как настроить Stripe различными способами, прежде чем идти дальше.
https://stripe.com/docs/connect/charges#choosing-approach
Я бы предложил использовать метод раздельных начислений и переводов, поскольку он ориентирован на тележки для покупок, как в вашем примере. В целом, этот метод позволяет вам сделать несколько транзакций / сборов и связать их вместе с разделом Transfer_group. Если вы воспользуетесь этим подходом, вы сможете лучше отслеживать количество товаров, так как вы можете делать отдельные сборы, а также иметь возможность сделать один звонок, чтобы собрать все товары, которые в настоящее время находятся в корзине, с помощью следующего звоните
\Stripe\Charge::all(["transfer_group" => 'group_name']);
вместо того, чтобы звонить каждому.
Ваша общая архитектура в этой настройке будет заключаться в том, что вы будете платить клиенту и каждому отдельному абоненту одну и ту же группу Transfer_group, а затем сделаете один вызов вышеуказанному API, который вернет вам массив всех необходимых вам данных.
Дайте мне знать, если вам понадобится дополнительная информация, для этого был очень короткий срок, и я хотел убедиться, что сделал это.