Я пытаюсь интегрировать кнопку проверки 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');
Я также могу предоставить коддля Бэкена, если это необходимо.