Кнопка PayPal отправляет JSESSIONID в бэкэнд Spring Security - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь интегрировать кнопку проверки Paypal с моим Spring Boot Backend.Мне удалось заставить его работать, единственная проблема заключалась в следующем:

Поскольку PayPal делает обратный вызов в Backend после того, как платеж был авторизован, jsessionid потерян (он же отсутствует) Этот идентификатор используется SpringБезопасность для определения вошедшего в систему пользователя информации.Когда я пытаюсь выяснить, какой пользователь заплатил (и продолжаю свою бизнес-логику, зная, что платеж был одобрен), Spring security видит пользователя как anonymous.

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

В основном это код, который я использую для кнопки:

paypal.Button.render({
  env: 'sandbox', // Or 'sandbox',

  commit: true, // Show a 'Pay Now' button

  style: {
    color: 'gold',
    size: 'small'
  },

  payment: function(data, actions) {
    // Set up a url on your server to create the payment
    var CREATE_URL = 'http://127.0.0.1:8080/payment/generate';

    // Make a call to your server to set up the payment
    return paypal.request.post(CREATE_URL)
      .then(function (res) {
        console.log("PAYMENT: ", res);
        return res.paymentID;
      });
  },

  onAuthorize: function(data, actions) {
    // Set up a url on your server to execute the payment
    var EXECUTE_URL = 'http://127.0.0.1:8080/payment/execute';

    // Set up the data you need to pass to your server
    var data = {
      paymentID: data.paymentID,
      payerID: data.payerID
    };

    // Make a call to your server to execute the payment
    return paypal.request.post(EXECUTE_URL, data)
      .then(function (res) {
        window.alert('Payment Complete!');
      });
  }

}, '#paypal-button');

Я также могу предоставить коддля Бэкена, если это необходимо.

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