Ich erhalte eine Autorisierung fehlgeschlagen Antwort von 2Checkout bei der Verwendung OmniPay API.2Checkout OmniPay - Autorisierung fehlgeschlagen
Ich hatte Stripe erfolgreich mit OmniPay verbunden, also ging ich zum Anschluss von 2Checkout. Wenn Sie dies tun, warnt Sie das erste Paket auf Github, the newer version from a user collizo4sky zu erhalten. Also tat ich es, und dann ging es leicht ohne fatalen Fehler zu arbeiten.
In meinem Webformular erstelle ich ein Token ordnungsgemäß und die Sandbox-Protokolle bei 2Checkout bestätigen dies. Ich habe dann diesen Code in OmniPay verwenden, um zu versuchen, die Karte zu laden:
use Omnipay\Omnipay;
$sMerchantTransID = rand(11111111,99999999);
$oGateway = Omnipay::create('TwoCheckoutPlus_Token');
$oGateway->setPrivateKey($config->TWOCHECKOUT_PRIVATE_KEY);
$oGateway->setAccountNumber($config->TWOCHECKOUT_SELLERID);
$oGateway->setTestMode(true);
$oResponse = $oGateway->purchase(array(
'amount' => $sPrice,
'currency' => 'USD',
'token' => $sToken,
'transactionId' => $sMerchantTransID
))->send();
if (!$oResponse->isSuccessful()) {
die('ERROR: ' . $oResponse->getMessage());
}
Jedoch kommt die Nachricht zurück mit „Autorisierung fehlgeschlagen“. Also ging ich in den Quellcode des OmniPay API für Paket collizo4sky in diesem Pfad ...
omnipay/vendor/collizo4sky/omnipay-2checkout/src/Message/TokenPurchaseRequest.php
... und fügte etwas Protokolldatei Debuggen der senddata() Klassenmethode. Dies ist, was es reagierte mit, und beachten Sie, dass ich einige der Werte, aus offensichtlichen Gründen der Privatsphäre geändert:
array (
'sellerId' => '901414261',
'privateKey' => 'EAEC8615-4C48-4D98-B7E5-4B6D8865E1BA',
'merchantOrderId' => 65639323,
'token' => 'FDI1ZTM3N2UtY2VkZS00NTM1LWE5MTctYzI4MjA5YWI4Yjhm',
'currency' => 'USD',
'total' => '519.00',
)
Ja, die SellerID und die privateKey aus der Sandbox-Konto kam, wie die veröffentlichbare Schlüssel tat, als ich die erzeugte Token in der Webform an erster Stelle.
Also, wie auch immer, wenn diese in der Sandbox-URL gesendet wird, gibt es mit dieser Antwort:
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Cache-Control: no-cache, no-store, must-revalidate
Date: Fri, 22 Apr 2016 03:30:37 GMT
Expires: 0
Pragma: no-cache
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
{"validationErrors":null,"response":null,"exception":{"errorMsg":"Authorization Failed","httpStatus":"400","exception":false,"errorCode":"600"}}
Was mache ich falsch?
EDIT:
Ich habe dann versucht, die 2Checkout-supported PHP library verwenden, die sie bieten. Ich habe genau die gleiche Transaktion ausgeführt und es gibt auch "Authorization Failed" zurück.
Ich frage mich, ob es eine Einstellung auf meinem Konto ist, obwohl ich eine Sandbox verwende? Ich meine, ich wurde noch nicht in der Produktion genehmigt und versuchte, die Sandbox bis dahin zu bekommen, damit ich eine Demo machen konnte.
Ich generierte auch API-Schlüssel in der Sandbox und versuchte es erneut, und das ist fehlgeschlagen.
Die Kreditkarte, die ich verwendete, war die, die sie auf der Sandbox unter den Sandbox-API-Schlüsseln bereitstellen, und ich verwendete eine CVV von 123 mit 12/18 als Ablaufdatum. Ich dachte dann, vielleicht wollte es ein 4-stelliges Jahr, also aktualisierte ich das und versuchte es erneut, und das scheiterte auch mit dem gleichen konsistenten Fehler von "Authorization Failed".
Wenn ich überprüfe, was "Authorization Failed" bedeutet, scheint es, dass es die Kreditkarte ist, die das Problem ist.
Mein Bauchgefühl sagt mir, dass ich alles richtig mache und dass es eine Flagge auf meinem Konto ist, dass das Problem ist. Ich meine, wenn mein regulärer Account noch nicht genehmigt ist, wird die Sandbox noch funktionieren?
An dieser Stelle ich versucht sein würde 2checkout Support zu kontaktieren. Es sieht so aus, als ob du das Richtige machst, es muss etwas mit deinem Account sein. Ich denke nicht, dass es die Karte ist, ich denke nicht, dass sie die Karte im Sandbox-Modus validieren. – delatbabel
Auf das Bett schlagen. Der Fix war der Demo-Modus-Parameter. Ich werde in ein paar Stunden eine Antwort schreiben, wenn ich wieder aufstehe. – Volomike