eWAY 立即付款按钮,似乎有错误?

eWAY pay now button, seems to have a bug?

我刚刚实现了一个 eWAY 立即付款按钮,并注意到一些奇怪的行为只发生在装有 Microsoft edge 的平板电脑上。

基本上使用data-resulturl,支付成功后可以重定向,eg。

data-resulturl="https://www.mysite.com.au/booking.php" >

在我的情况下,我将会话变量带到 booking.php 页面,将它们写入数据库,向客户发送一封确认电子邮件,向管理员发送一封电子邮件,结束会话,然后重定向到预订-success.html 页。

但是在平板电脑 运行 edge 上,如果您单击 'pay now' 按钮,它会按正常方式加载模态,但如果您单击取消,它会触发 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 检查交易结果。

为此,您可以执行 Transaction Query, for example using the 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 来完成他们的预订。为了额外的安全性,请记录访问代码,这样它们就不会被重复用于创建多个成功的预订。