Проблемы разработчика PayPal с запятой - PullRequest
0 голосов
/ 21 ноября 2018

Я столкнулся с ошибкой.Я использую https://developer.paypal.com/docs/checkout/integrate/ для осуществления платежа PayPal в моем проекте ASP.NET MVC.Моя валюта - поплавок, и у проекта есть цены как 150,99.Всякий раз, когда эта цена проходит, он скажет, что цена составляет 99,00 евро.Он читает только то, что стоит за запятой.Всякий раз, когда цена составляет 190,00, это будет правильно сказать, что цена составляет 190,00 евро.Как это исправить?

Код JavaScript на внешнем интерфейсе в настоящее время таков:

<script>
    var totalPrice = (@ViewBag.totalPrice);
</script>
<script src="https://www.paypalobjects.com/api/checkout.js"></script>
<script>
    // Render the PayPal button
    paypal.Button.render({
        // Set your environment
        env: 'sandbox', // sandbox | production

        // Specify the style of the button
        style: {
            layout: 'horizontal',  // horizontal | vertical
            size: 'large',    // medium | large | responsive
            shape: 'pill',      // pill | rect
            color: 'black'       // gold | blue | silver | white | black
        },

        // Specify allowed and disallowed funding sources
        //
        // Options:
        // - paypal.FUNDING.CARD
        // - paypal.FUNDING.CREDIT
        // - paypal.FUNDING.ELV
        funding: {
            allowed: [
                paypal.FUNDING.CARD,
                paypal.FUNDING.CREDIT
            ],
            disallowed: []
        },

        // Enable Pay Now checkout flow (optional)
        commit: true,

        // PayPal Client IDs - replace with your own
        // Create a PayPal app: https://developer.paypal.com/developer/applications/create
        client: {
            sandbox: '<removed>',
            production: '<insert production client id>'
        },

        payment: function (data, actions) {
            return actions.payment.create({
                payment: {
                    transactions: [
                        {
                            amount: {
                                total: totalPrice,
                                currency: 'EUR'
                            }
                        }
                    ]
                }
            });
        },

        onAuthorize: function (data, actions) {
            return actions.payment.execute()
                .then(function () {
                    window.alert('Payment Complete!');
                });
        }
    }, '#paypal-button-container');
</script>

И фон для цены такой:

        [HttpGet]
        public IActionResult Index()
        {
            ...
            float totalPrice = 0;
            float sendcost = 2.95f;
            ...
                        foreach(ShoppingCartModel item in model)
                        {
                            item.subtotal = item.qty * item.price;
                            totalPrice += item.subtotal;
                        }
                        if(totalPrice < 100)
                        {
                            ViewBag.totalPrice = totalPrice + sendcost;;
                        }
                        else
                        {
                            ViewBag.totalPrice = totalPrice;
                        }
                    }
                }
                ...
        }

1 Ответ

0 голосов
/ 21 ноября 2018

Официальный ответ заключается в том, что языковая настройка вашего веб-приложения заставляет сервер выводить числовые значения с запятой в качестве десятичного разделителя.Таким образом,

var totalPrice = (@ViewBag.totalPrice);

заканчивается

var totalPrice = (150,99);

в браузере, и, поскольку в JavaScript есть нечто, называемое оператор запятой , totalPrice теперь 99.

Чтобы исправить это на стороне сервера, вы можете изменить языковой стандарт, используемый для форматирования, на английский, добавив

CultureInfo.DefaultThreadCurrentCulture = CultureInfo.GetCultureInfo("en-US");

к методу Configure() в Startup.cs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...