2017-08-01 2 views
0

Ich habe gerade einen eWAY-Pay-Button eingeführt und habe ein seltsames Verhalten bemerkt, das nur auf einem Tablet mit Microsoft Edge auftritt.eWAY Pay-Button, scheint einen Fehler zu haben?

Grundsätzlich kann das Datenresultat verwendet werden, um nach erfolgreicher Zahlung, z.

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

In meiner Situation, ich bringe über die Session-Variablen auf die booking.php Seite, so dass sie in die Datenbank schreiben, eine Bestätigungs-E-Mail an Kunden und eine E-Mail an admin, End-Sitzung senden, leiten dann zu einer Buchung Seite -success.html.

Wenn Sie jedoch auf die Schaltfläche "Jetzt bezahlen" klicken, wird ein Modal wie normal geladen. Wenn Sie jedoch auf Abbrechen klicken, wird das Datenergebnis ausgelöst. Senden der E-Mails und Schreiben in die Datenbank. Es wird nicht zur Erfolgsseite umgeleitet.

Im Wesentlichen Benutzer können Buchungen vornehmen, ohne zu bezahlen.

Win10 Microsoft Rand ist nicht durch den Fehler betroffen.

So bin ich ratlos, was hier eigentlich passiert, wie ist das überhaupt möglich?

Ich habe gerade versucht, Daten-resulturl zu payment.php mit einer Weiterleitung zu booking.php zu senden, aber es feuert immer noch die E-Mails und db schreiben.

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

Antwort

1

Es klingt wie Sie einen Fehler mit dem Pay Now Button erlebt habe, dass etwas ist, das sich am besten durch Annäherung an eWay mit einigen Details wie die Microsoft Edge-Version direkt behandelt wird, der das Problem auftritt.

In diesem Zusammenhang sollten Sie beachten, dass die Schaltfläche "Jetzt bezahlen" auf die angegebene URL umleitet, wenn eine Transaktion abgeschlossen ist - selbst wenn die Zahlung fehlgeschlagen ist. Auf Ihrer booking.php Seite möchten Sie das Transaktionsergebnis unter Verwendung der in der Abfragezeichenfolge übergebenen AccessCode überprüfen.

Um dies zu tun, Sie ein Transaction Query, zum Beispiel durchführen kann die PHP SDK mit:

<?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>"; 
    } 
} 

Dieser Benutzer nur verhindern, wird auch booking.php den Besuch ihrer Buchung abzuschließen. Protokollieren Sie die AccessCodes für zusätzliche Sicherheit, damit sie nicht wiederverwendet werden können, um mehrere erfolgreiche Buchungen zu erstellen.

+0

Dies ist eine gute Lösung und es behebt auch den Fehler. – Jon

Verwandte Themen