Каждая покупка менее 1000 долларов показывает правильную оплату. Только при покупке на сумму более 1000 долларов на полосе отображается плата в размере 1 доллар США. Я понимаю, что стоимость полосок указана в центах, и мне придется умножить на 100, чтобы преобразовать в доллары. Я не знаю, почему это происходит.
$charge_amount = number_format($grand_total, 2)*100;
// Charge the user's card
try {
$charge = \Stripe\Charge::create(array(
"amount" => $charge_amount,
"currency" => CURRENCY, //defined in another file
"description" => $description,
"source" => $token,
"receipt_email" => $email,
"metadata" => $metadata)
);






number_format() предназначен для форматирования чисел для отображения людям. Он делает такие вещи, как разделение каждых 3 цифр символами ,. Stripe API ожидает фактическое число, и когда он пытается его проанализировать, он останавливается на запятой.
Если вы просто хотите получить число с двумя десятичными знаками, используйте round(), а не number_format().
$charge_amount = round($grand_total, 2) * 100;
Как этот код должен помочь нам помочь вам?