#javascript #php #paypal
#javascript #php #paypal
Вопрос:
Этот вопрос касается API paypal v2 о том, как перезапустить страницу после завершения транзакции.
С помощью моего фактического кода я могу выполнить транзакцию, и она успешно сохраняется в моей базе данных.
единственная часть — как перезагрузить после полного выполнения?
вот мой код
paypal.Buttons({
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value:''.$amount.'',
}
}]
});
},
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
return fetch("/__path_to_save_db.php", {
method: "post",
headers: {
"content-type": "application/json"
},
body: JSON.stringify({
orderID: data.orderID,
paymentID: data.paymentID,
payerID: data.payerID,
})
});
});
}
}).render("#paypal-button-container");
Я попытался добавить перезагрузку javascript, но она перезагружается до окончания выполнения: (
здесь
return actions.order.capture().then(function(details) {
location.reload();
return fetch("/__path_to_save_db.php", {
кажется, что location.reload() запускается слишком быстро…. как заставить его выполняться только после полной загрузки ответа paypal?
Ответ №1:
Вы не должны фиксировать платежи на стороне клиента, а затем в зависимости от клиента отправлять эту информацию на сервер.
Измените это на правильную интеграцию платежей с клиент-сервером. Создайте два маршрута, один для «Настройки транзакции» и один для «Захвата транзакции», описанный здесь .
Соедините два ваших маршрута со следующим потоком утверждения: https://developer.paypal.com/demo/checkout/#/pattern/server
Ваш код для отображения сообщения об успешном завершении — или для «перезагрузки» страницы или перенаправления, если вы чувствуете себя старомодным дизайнером web 2.0 — должен использоваться в случае, который обрабатывается, когда сервер возвращает успешный захват.
Комментарии:
1. Но с помощью этого кода: на стороне PHP я повторяю «что-то», и это нигде не отображается в html страницы: ( как я могу добавить taget div, чтобы вернуть «эхо» PHP?
2. Приведенный выше код на стороне сервера не выводится на веб-страницу, поэтому говорить о целевом div не имеет смысла. Он предназначен для асинхронного запроса и выводит JSON.
Ответ №2:
Я нашел решение, которое работает для меня
return actions.order.capture().then(function(details) {
if(confirm("transaction completed")){ setTimeout(function(){ location.reload(); }, 1000);}
return fetch("/__path_to_save_db.php", {
«подтвердить» после задержки в 1 секунду, чтобы иметь диалоговое окно, которое при нажатии перезагружается