2016-07-20 16 views
0

Ich habe versucht, Sage Pay Form Integration zu implementieren. Jedes Mal, wenn ich ein Formular abschicke, erhalte ich den Fehlercode: 5080 (Fehlerbeschreibung: Transaktionsregistrierung fehlgeschlagen). Ich habe versucht, in saypays Website nach Fehlercode zu suchen (https://www.sagepay.co.uk/support/error-codes), aber anscheinend existiert dieser Fehlercode nicht. Wenn ich in der Fehlerbeschreibung in SagePAY des Fehlercode Seite eingeben, anstatt der Fehlercode dann bekomme ich folgendes Ergebnis screenshotSagepay Formular Integration gibt weiterhin Fehler 5080 (Formulartransaktion Registrierung fehlgeschlagen)

jedoch sowohl mein Erfolg url und Miss url vorhanden ist.

Was geht hier vor?

Edit:

VendorTxCode=16-07-20-12-43-55-145161808&ReferrerID=&Amount=3,500.00&Currency=GBP&Description=Clarice Cliff SUNRAY LOTUS JUG C.1930&SuccessURL=http://test.co.uk/baskets/sagepay_success&FailureURL=http://test.co.uk/baskets/sagepay_failure&CustomerName=&CustomerEMail=&VendorEMail=&SendEMail=&eMailMessage=&BillingSurname=Tester&BillingFirstnames=Tester&BillingAddress1=Test Street&BillingAddress2=&BillingCity=London&BillingPostCode=TE14 1EE&BillingCountry=UNITED KINGDOM&BillingState=&BillingPhone=&DeliverySurname=Tester&DeliveryFirstnames=Tester&DeliveryAddress1=Test Street&DeliveryAddress2=&DeliveryCity=London&DeliveryPostCode=TE14 1EE&DeliveryCountry=UNITED KINGDOM&DeliveryState=&DeliveryPhone=&Basket=&AllowGiftAid=&ApplyAVSCV2=&Apply3DSecure=&BillingAgreement=&BasketXML=&CustomerXML=&SurchargeXML=&VendorData=&ReferrerID=&Language=&Website= 
+0

5080 ist die neue generische Fehlermeldung, die alle möglichen Fehler abdeckt (ich weiß, es ist ein Schmerz). Wenn Sie mir die rohe, unverschlüsselte Crypt-Zeichenfolge liefern können, sollte ich in der Lage sein, sie für Sie zu beheben .... –

+0

@RikBlacow Hallo, habe die unverschlüsselte Crypt-Zeichenfolge oben hinzugefügt! Danke –

+0

Nur für andere Leute mit diesem Fehler, fand ich das, weil mein VendorTxCode nicht eindeutig pro Bestellung war. Ich benutzte ein automatisch inkrementiertes Feld in meiner Bestellungstabelle für den VendorTxCode, ich hatte eine Last von Testtransaktionen gemacht, dann die Testaufträge gelöscht, bevor ich live ging, und dann, als ich anfing, diesen Fehler zu bekommen. Es stellte sich heraus, dass es VendorTxCode-Werte aus dem ID-Feld verwendete, das ich beim Testen verwendet hatte. Dies war ein Fehler beim Debuggen, da der Fehler gerade erst auftrat, obwohl sich kein Code geändert hatte. – AndyGaskell

Antwort

2

So habe ich es endlich nach Stunden Kopf kratzen herausgefunden. Ich schickte die Krypta über quer, aber nicht die anderen Daten wie TXT-Typ. Es war mir dumm, obwohl es nett gewesen wäre, einen Fehler von sagepay zu bekommen, der tatsächlich für das Problem relevant war, anstatt etwas so allgemein zu sein, dass man an irrelevanten Orten nach dem Problem sucht.

Danke für die Hilfe Jungs.

2

Simkhada

Es war Ihre BillingCountry und DeliveryCountry Felder - Sie ISO 2 Zeichenwerte verwenden sollten. Sie haben 'Vereinigtes Königreich' in dort - sollte 'GB' sein ....

Best wishes,

Rik

+0

Hallo Rik, ich habe es so geändert, dass beide Felder GB statt United Kingdom anzeigen. Aber ich bekomme immer noch den gleichen Fehler. Übrigens habe ich dieses Plugin benutzt (https://github.com/tolzhabayev/sagepayForm-php), da ich Schwierigkeiten hatte, die Verschlüsselung zu erreichen und mit dem von sagepay bereitgestellten PHP-Kit zu verschlüsseln. Danke –

+0

Dann vermute ich, dass es ein Problem mit Ihrem Verschlüsselungsalgorithmus ist - funktionierte gut für mich mit meiner Java-Implementierung .... –

+0

Dieses PHP-Beispiel in meiner Antwort unten funktioniert (zumindest war es - seit Ewigkeiten, seit ich irgendetwas damit gemacht habe!) –

0

Beispiel PHP-Code:

function addPKCS5Padding($input) 
{ 
    $blockSize = 16; 
    $padd = ""; 
    $length = $blockSize - (strlen($input) % $blockSize); 
    for ($i = 1; $i <= $length; $i++) 
{ 
    $padd .= chr($length); 
} 
    return $input . $padd; 
} 

function removePKCS5Padding($input) 
{ 
    $blockSize = 16; 
    $padChar = ord($input[strlen($input) - 1]); 
    $unpadded = substr($input, 0, (-1) * $padChar); 
    return $unpadded; 
} 


function encryptAes($string, $key) 
{ 
    $string = addPKCS5Padding($string); 
    $crypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $string, MCRYPT_MODE_CBC, $key); 
    return strtoupper(bin2hex($crypt)); 
} 


function decryptAes($strIn, $myEncryptionPassword) 
{ 

#Sagepay specific - remove the '@' 
$strIn = substr($strIn,1); 

    $strInitVector = $myEncryptionPassword; 
    $strIn = pack('H*', $hex); 
    $string = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $myEncryptionPassword, $strIn, MCRYPT_MODE_CBC,$strInitVector); 
    return removePKCS5Padding($string); 
} 
+0

Hallo, Rik. Ich habe Ihren Code implementiert (ich nahm an, dass der Schlüssel $ in der Funktion encryptAes das Verschlüsselungskennwort ist?), Aber immer noch kein Glück bekomme ich den gleichen Fehler. Die Tatsache, dass ich mit dem Test von sagepay (https://test.sagepay.com/gateway/service/vspform-register.vsp) verwende, sollte wirklich wichtig sein sollte es? –

+0

Sollte keinen Unterschied machen, aber die Verschlüsselungsschlüssel sind auf jeder Plattform unterschiedlich –

+0

Ich habe den richtigen Verschlüsselungsschlüssel, aber immer noch kein Glück. Vielleicht ist das Problem nicht die Verschlüsselung? –

0

Überprüfen Sie Ihre Verschlüsselungsschlüssel!

Ich hatte genau das gleiche Problem heute Morgen. Ich habe den Test Sage Pay-Gateway für die Entwicklung verwendet, wollte aber überprüfen, ob meine Krypta-Zeichenkette am Live-Gateway funktioniert hat. Ein Fehler 5080 wurde gemeldet. Ich erkannte, dass ich meinen Test-Verschlüsselungsschlüssel anstelle des Live-Schlüssels verwendete!

+0

Ich arbeite aber immer noch durch das Testgateway. Ich verwende meinen Test-Verschlüsselungsschlüssel und bekomme immer noch das Problem 5080. Nur um es zu tun habe ich müde den Live-Verschlüsselungsschlüssel mit (https://live.sagepay.com/gateway/service/vspform-register.vsp) dies zu verwenden. Immer noch kein Glück. Als ich mich jedoch im Live-Account anmeldete, hieß es, mein Account sei nicht auf dem neuesten Stand. Aber ich benutze 3.00 auf meinen Formen. Dies wird immer verwirrender. –

0

Ich hatte dieses genaue Problem und dachte, dass ich mein Problem/meine Lösung hinzufügen würde. Ich hatte diesen Testfehler und stellte fest, dass der DNS-Eintrag für unsere Testseite entfernt wurde. Ich habe diesen Fehler erhalten, weil SagePay nicht zur Rückgabe-URL gelangt ist, die ich angegeben habe.

Sobald ich den DNS-Eintrag zurück, konnte SagePay auf die Website und der Fehler ging weg.

0

Ich hatte das gleiche Problem und der Grund war, dass ich versehentlich eines der Adressfelder weggelassen hatte, von dem ich sicher war, dass es eingeschlossen wurde.

überprüfen, was Sie Sage Mitteilung verfassen, über var_dump($_POST)

dass Failing, sprechen Kunden-Support unter 0845 111 4466 an SagePay (ich glaube, es kostet, diese Zahl zu nennen) und ihnen das Problem berichten. Sie können Sie bitten, Ihr Formular an https://test.sagepay.com/showpost/showpost.asp zu senden, und sie können auf ihrem Ende sehen, welche Daten Sie POST sind und überprüfen, ob etwas an ihrem Ende fehlt.

0

Ich hatte dieses gleiche Problem.Stellt sich heraus, dass eine meiner Variablen aufgrund eines Datenbankabruffehlers leer war - also prüfe, ob du tatsächlich jedes Feld ausfüllst, indem du deinen Formulargenerierungscode durchsuchst (ich habe meinen dynamisch im serverseitigen Skript erstellt, also war es einfach genug, ihn zu identifizieren) .

In meinem Fall fütterte die "Rechnungsadresse" tatsächlich einen Zeichenfolgenwert von "", der beim Senden an SagePay fehlerhaft war.

0

Auf woocomerce gehen Sie zur Einstellung für Salbei Pay - stellen Sie sicher, "sellet shippig Adresse" wird an Rechnungsadresse statt Auto - einfache Lösung gesetzt.