Nano Hash - криптовалюты, майнинг, программирование

Как читать товары из запроса при создании платежа с несколькими товарами?

Я настраиваю сайт с помощью сервера Express.js и пытаюсь реализовать модуль npm paypal-node-sdk. Веб-сайт будет использоваться для продажи моих книг. Пользователь может добавить книги в корзину, а затем щелкнуть Оформить заказ с помощью PayPal. При нажатии это должно отправить содержимое корзины в функцию paypal.payment.create(), которая будет использоваться для создания платежной информации пользователя.

Я взял шаблонный код со страницы paypal-node-sdk на GitHub. Однако, когда я пытаюсь вставить свои данные в этот код, они не отправляются функции create().

Я пробовал переформатировать данные различными способами и убедился, что они соответствуют шаблону, приведенному в документации GitHub paypal-node-sdk.

Моя программа использует ReactJS.

Вот как я вызываю API PayPal:

checkoutWithPayPal = () => {

    let items = [];
    let item;
    let cart = this.state.cart;

    for (var book in cart) {
        item = {
            name: cart[book].title,
            sku: book,
            price: cart[book].price,
            currency: "USD",
            quantity: 1
        }

        items.push(item);
    }

    API.payUsingPayPal(items)
        .then((res) => {
            console.log(res);

            for (var link in res.data.links) {
                if (res.data.links[link].rel === "approval_url") {
                    window.open(res.data.links[link].href);
                }
            }
        });
}

Вот запрос POST от axios:

payUsingPayPal: function(items) {
    return axios.post("/api/payPal/payUsingPayPal", items);
},

А вот как выглядит контроллер, который должен обрабатывать запрос и возвращать прямые ссылки для перехода пользователя в PayPal:

payUsingPayPal (req, res) {

    var create_payment_json = {
        "intent": "sale",
        "payer": {
            "payment_method": "paypal"
        },
        "redirect_urls": {
            "return_url": "http://return.url",
            "cancel_url": "http://cancel.url"
        },
        "transactions": [{
            "item_list": {
                "items": req.body
            },
            "amount": {
                "currency": "USD",
                "total": "1.00"
            },
            "description": "This is the payment description."
        }]
    };

    paypal.payment.create(create_payment_json, function (error, payment) {
        if (error) {
            console.log("Error processing payment", error);
        }

        // Used only to return axios promise
        db.Books.findOne({})
            .then(() => {
                res.json(payment);
            });
    });
}

Когда я console.log результат paypal.payment.create(), я бы ожидал, что свойство data будет содержать ссылки перенаправления, которые будут перенаправлять пользователя в PayPal и отображать информацию о транзакции. Однако свойство данных null.

14.06.2019

Ответы:


1

Ну разобрался. Сумма цен в item_list должна равняться сумме, переданной в раздел «сумма». Иногда самые очевидные проблемы решить труднее всего ....

18.06.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..