Я интегрирую оплату через PayPal с решением для электронной коммерции, где после успешного создания PayPal заказа / платежа PayPal я выполняю некоторую обработку на стороне сервера, которая в конечном итоге возвращает RedirectResult
(с URL-адресом для платежа не удалось или, соответственно, успех) из моего контроллера обратно в клиентский / внешний интерфейс.
У меня есть следующий код ниже, и я ожидал, что он будет перенаправлен автоматически, но перенаправления не происходит.
paypal.Buttons({
createOrder: function (data, actions) {
return actions.order.create({
intent: "CAPTURE",
purchase_units: [{
amount: {
value: '5.20',
}
}]
});
},
onApprove: function (data, actions) {
return actions.order.capture().then(function (details) {
return fetch('/umbraco/surface/PayPalPayment/process', {
method: 'post',
redirect: 'follow',
body: JSON.stringify({
OrderID: data.orderID,
PayerID: data.payerID,
}),
headers: {
'content-type': 'application/json'
}
});
}).catch(error=>console.log("Error capturing order!", error));
}
}).render('#paypal-button-container');
Если я явно перенаправлю с кодом ниже, то действие выполняется.
onApprove: function (data, actions) {
return actions.order.capture().then(function (details) {
return fetch('/umbraco/surface/PayPalPayment/process', {
method: 'post',
redirect: 'follow',
body: JSON.stringify({
OrderID: data.orderID,
PayerID: data.payerID,
}),
headers: {
'content-type': 'application/json'
}
}).then(function () { window.location.replace('https://www.google.co.uk') });
}).catch(function (error) {
console.log("Error capturing order!", error);
window.location.replace('https://www.bbc.co.uk');
});
}
По сути, мне интересно, почему перенаправление fetch не следует за перенаправлением, возвращаемым из моего контроллера.Перенаправление контроллера для полной комплектации:
return new RedirectResult("/checkout/thank-you") ;