Я только что внедрил кнопку eWAY Pay Now и заметил странное поведение, которое происходит только на планшете с Microsoft Edge.
В основном, используя data-resulturl, можно перенаправить после успешной оплаты, например.
data-resulturl="https://www.mysite.com.au/booking.php" >
В моей ситуации я перенесу переменные сеанса на страницу booking.php, запишу их в базу данных, отправлю электронное письмо с подтверждением клиенту и письмо администратору, завершу сеанс, а затем перенаправлю на страницу booking-success.html.
Тем не менее, если вы нажмете кнопку «оплатить сейчас», на планшете будет запущен модальный режим, как обычно, но при нажатии кнопки «Отмена» будет запущен data-resulturl. отправка электронных писем и запись в базу данных. он не перенаправляет на страницу успеха.
По сути, пользователи могут делать заказы без оплаты.
Win10 Microsoft edge не влияет на ошибку.
Так что я в недоумении от того, что на самом деле здесь происходит, как это вообще возможно?
Я только что попытался отправить data-resulturl на payment.php с редиректом на booking.php, но он все равно запускает электронные письма и запись в БД.
<?php
$thankyouurl = "https://www.mysite.com.au/booking.php" ;
header( "Location: $thankyouurl" );
exit ;
?>
Похоже, вы столкнулись с ошибкой с помощью кнопки «Оплатить сейчас», которую лучше всего решить, обратившись к eWAY напрямую с некоторыми деталями, такими как версия Microsoft Edge, с которой возникла проблема.
Что касается примечания, вы должны знать, что кнопка «Оплатить сейчас» будет перенаправлена на указанный URL-адрес после завершения транзакции, даже если платеж не прошел. На ваше booking.php
страница, на которой вы хотите проверить результат транзакции, используя AccessCode
передается в строке запроса.
Для этого вы можете выполнить Запрос транзакции, например, используя PHP SDK:
<?php
$apiKey = 'key';
$apiPassword = 'password';
$apiEndpoint = \Eway\Rapid\Client::MODE_SANDBOX; // Use \Eway\Rapid\Client::MODE_PRODUCTION when you go live
$client = \Eway\Rapid::createClient($apiKey, $apiPassword, $apiEndpoint);
$response = $client->queryTransaction($_GET['AccessCode']);
$response = $response->Transactions[0];
if ($response->TransactionStatus) {
echo 'Transaction successful! ID: '.$response->TransactionID;
} else {
$errors = split(', ', $response->ResponseMessage);
foreach ($errors as $error) {
echo "Payment failed: ".\Eway\Rapid::getMessage($error)."<br>";
}
}
Это также не позволит пользователям просто посещать booking.php для завершения бронирования. Для дополнительной безопасности зарегистрируйте коды доступа, чтобы их нельзя было повторно использовать для создания нескольких успешных заказов.
Других решений пока нет …