Я использую сценарий проверки PayPal на Angular5.
Я пытаюсь разбить строку, содержащую цену, и преобразовать результат в число с плавающей запятой, но получаю следующую ошибку:
{
"name": "VALIDATION_ERROR",
"details": [
{
"field": "transactions.amount",
"issue": "Currency amount must be non-negative number, may optionally contain exactly 2 decimal places separated by '.', optional thousands separator ',', limited to 7 digits before the decimal point and currency which is a valid ISO Currency Code"
}
],
"message": "Invalid request - see details",
"information_link": "https://developer.paypal.com/docs/api/payments/#errors",
"debug_id": "ea4b3e3713de"
}
request/</<@https://www.paypalobjects.com/api/checkout.js:14680:39
Вот моя конфигурация PayPal:
let price = parseFloat(this.objRate.split("$")[1]);
let amount = 1;
let total = price * amount;
this.payPalConfig = {
env: 'sandbox',
client: {
sandbox: '<key>',
production: '<key>'
},
commit: true,
payment: (data: any, actions: any) => {
return actions.payment.create({
payment: {
transactions: [{
amount: {
currency: "USD",
total: Number(total).toFixed(2)
}
}]
}
});
},
onAuthorize: (data: any, actions: any) => {
return actions.payment.execute().then((payment: any) => {
this.payPalSuccess = true;
});
}
заранее спасибо
Что вы имеете в виду под «жестко запрограммированной десятичной дробью»?
Вместо «total: Number (total) .toFixed (2)» передайте «1.00» ...
Фактически, когда я определил let price =1.55, он работает. Почему это могло быть?
Должна быть проблема с этим - parseFloat (this.objRate.split ("$") [1]); Попробуйте отладить ввод
Я отлаживаю это и возвращаю номер (console.info(typeof price))
Но каково значение числа? console.info(price)
Например, это строка 1 Month - $4.00 и вывод 4.
Хорошо, итого должно быть 4, можете ли вы подтвердить с помощью console.info(total). Также замените total: Number(total).toFixed(2) на Number.parseFloat(total).toFixed(2);
Итого не является строкой, и это аргумент для parseFloat()
какое значение выводится для console.info(total)
Обычно сумма, которую вы отправляете в PayPal, имеет неправильный формат. Чтобы увидеть, что вы отправляете, вы можете отлаживать локально или вы также можете проверить запрос, полученный от PayPal - войдите в песочницу и перейдите в меню / транзакции
Извините, но я вижу только успешные транзакции на странице "Сводка"



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я уже решил это, заменив переменную total в конфигурации paypal checkout на другое имя, например total1. Видимо возник конфликт между ключом конфигурации json и одноименной переменной.
Вы пытались передать жестко закодированную десятичную дробь в поле «Итого»?