Я рассчитываю промежуточные итоги, налоги, доставку и страховку исходя из следующего:
public getSubTotal() {
this.subTotal =
document.getElementById("total").value -
(document.getElementById("total").value * 0.07 +
document.getElementById("total").value * 0.03 +
document.getElementById("total").value * 0.01 +
1.0);
document.getElementById("tax").value =
document.getElementById("total").value * 0.07;
document.getElementById("shipping").value =
document.getElementById("total").value * 0.03;
document.getElementById("insurance").value =
document.getElementById("total").value * 0.01;
console.log(
"tax: " +
document.getElementById("total").value * 0.07 +
" shipping: " +
document.getElementById("total").value * 0.03 +
" ins: " +
document.getElementById("total").value * 0.01 +
" total: " +
document.getElementById("total").value +
" subtotal: " +
this.subTotal
);
return this.subTotal.toFixed(2);
}
details: {
subtotal: document.getElementById("subTotal").value,
tax: parseFloat(document.getElementById("tax").value).toFixed(
2
),
shipping: parseFloat(
document.getElementById("shipping").value
).toFixed(2),
handling_fee: "1.00",
shipping_discount: "0.00",
insurance: parseFloat(
document.getElementById("insurance").value
).toFixed(2)
}
Итого фиксируется с каждым продуктом.
Когда я публикую это в PayPal API, цифры иногда складываются, а иногда нет. Я теряюсь, как это исправить.
Ниже приведен пример публикации, и я не понимаю, почему PayPal отклоняет этот пример:
details {…}
handling_fee 1.00
insurance 0.23
shipping 0.68
shipping_discount 0.00
subtotal 19.30
tax 1.60
total 22.81
Все эти числа основаны на 22,81, и на консоли отображается:
tax: 1.5967
shipping: 0.6842999999999999
ins: 0.2281
total: 22.81
subtotal: 19.3009
Как я могу сохранить parseFloat (). ToFixed (2) от изменения чисел? И если я оставляю числа с числом более двух десятичных разрядов, PayPal отклоняет его за неправильное форматирование.
Когда я использую калькулятор для этих чисел, я получаю результат 22,81
Ниже приведена ошибка, которую я получаю от PayPal - если я закомментирую раздел подробностей, то сообщение проходит без ошибок:
Error: Request to post https://www.sandbox.paypal.com/v1/payments/payment failed with 400 error. Correlation id: 12d500c6247f1, 12d500c6247f1
{
"name": "VALIDATION_ERROR",
"details": [
{
"field": "transactions[0]",
"issue": "Item amount must add up to specified amount subtotal (or total if amount details not specified)"
}
],
"message": "Invalid request - see details",
"information_link": "https://developer.paypal.com/docs/api/payments/#errors",
"debug_id": "12d500c6247f1"
}
Ниже приведены несколько снимков экрана:
Конечно, по мере того, как количество продуктов увеличивается, увеличивается и разница в том, что добавляется вместе с общим количеством, что приводит к моему общему вопросу.
Как мне правильно рассчитать эти позиции?
Заранее спасибо