РЕШЕНИЕ: Сохраните в дБ объект Зарядите с помощью идентификатора пользователя и проверяйте каждый раз, знаем ли мы этого пользователя:
$customerAlreadyKnown = OrdersModel::checkIfUserKnown($email);
Если мы знаем это, тогда мы должны обновить источник клиента (не знаю почему):
if(gettype($customerAlreadyKnown)=='array'){
\Stripe\Customer::update(
$customerAlreadyKnown[0]['user_id'],
['source' => $token]
);
$charge = \Stripe\Charge::create([
'customer' => $customerAlreadyKnown[0]['user_id'],
'amount' => $itemPrice,
'currency' => 'eur',
'description' => $_POST['description'],
'metadata' => array(
'order_id' => $orderID,
),
]);
В противном случае мы создаем нового клиента
}else{
// Add customer to stripe
$customer = \Stripe\Customer::create(array(
'email' => $email,
'card' => $token,
));
$charge = \Stripe\Charge::create([
'customer' => $customer->id,
'amount' => $itemPrice,
'currency' => 'eur',
'description' => $_POST['description'],
'metadata' => array(
'order_id' => $orderID,
),
]);
}