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

时间:2017-08-01 21:31:54

标签: php e-commerce eway

我刚刚实施了eway pay now按钮,并注意到一些奇怪的行为只发生在具有Microsoft边缘的平板电脑上。

基本上使用数据结果,可以在成功支付后重定向,例如。

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

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

然而,在平板电脑上运行边缘,如果您点击“立即付款”'按钮按正常情况加载模态,但如果单击取消则会触发数据结果。发送电子邮件并写入数据库。它不会重定向到成功页面。

基本上,用户可以在不付款的情况下进行预订。

Win10 Microsoft边缘不受该bug的影响。

所以我对这里发生的事情感到茫然,这怎么可能呢?

我只是尝试将data-resulturl发送到payment.php并重定向到booking.php,但它仍会触发电子邮件和db write。

<?php
$thankyouurl = "https://www.mysite.com.au/booking.php" ;
header( "Location: $thankyouurl" );
exit ;
?>

1 个答案:

答案 0 :(得分:1)

听起来您已经遇到了“立即付款”按钮的错误,最好通过直接使用某些详细信息(例如遇到此问题的Microsoft Edge版本)与eWAY联系来解决此问题。

在相关说明中,您应该知道,当交易完成时,“立即付款”按钮将重定向到给定的网址 - 即使付款失败也是如此。在booking.php页面上,您将要使用查询字符串中传递的AccessCode检查交易结果。

要执行此操作,您可以执行Transaction Query,例如使用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来完成预订。为了提高安全性,请记录AccessCodes,以便无法重复使用它们来创建多个成功的预订。