OmniPay APIを使用しているときに、2Checkout から Authorization Failed という応答を受け取りました。
Stripe と OmniPay の接続に成功したので、2Checkout の接続に取り掛かりました。これを行うと、Github の最初のパッケージで、ユーザー collizo4sky から新しいバージョンを取得するように警告されます。それで、私はそうしましたが、致命的なエラーなしでわずかに動作するようになりました。
私の Web フォームでは、トークンを適切に生成し、2Checkout のサンドボックス ログでこれを確認しています。次に、OmniPay で次のコードを使用して、カードへの請求を試みます。
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());
}
ただし、「Authorization Failed」というメッセージが返されます。それで、このパスにある collizo4sky のパッケージの OmniPay API のソース コードに入りました...
omnipay/vendor/collizo4sky/omnipay-2checkout/src/Message/TokenPurchaseRequest.php
...さらに、sendData() クラス メソッドのログ ファイル デバッグを追加しました。これはそれが応答したものであり、明らかなプライバシー上の理由からいくつかの値を変更したことに注意してください。
array (
'sellerId' => '901414261',
'privateKey' => 'EAEC8615-4C48-4D98-B7E5-4B6D8865E1BA',
'merchantOrderId' => 65639323,
'token' => 'FDI1ZTM3N2UtY2VkZS00NTM1LWE5MTctYzI4MjA5YWI4Yjhm',
'currency' => 'USD',
'total' => '519.00',
)
はい、sellerID と privateKey は、最初に Web フォームでトークンを生成したときに発行可能なキーと同様に、サンドボックス アカウントから取得されました。
とにかく、これがサンドボックス URL に送信されると、次の応答が返されます。
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"}}
私は何を間違っていますか?
編集:
次に、彼らが提供する2Checkout 対応の PHP ライブラリを使用してみました。私はまったく同じトランザクションを行いましたが、それも「Authorization Failed」を返します。
サンドボックスを使っているのに自分のアカウントの設定なのかな?つまり、私はまだ本番環境で承認されておらず、デモを行うためにそれまでサンドボックスを動かそうとしていました.
また、サンドボックスで API キーを再生成して再試行しましたが、失敗しました。
私が使用したクレジット カードは、サンドボックス API キーの下のサンドボックスで提供されたもので、有効期限が 12/18 の 123 の CVV を使用しました。次に、4桁の年が必要だと思ったので、それを更新して再試行しましたが、同じ一貫した「認証に失敗しました」というエラーで失敗しました。
「Authorization Failed」の意味を確認すると、問題はクレジット カードのようです。
これまでのところ、私の直感は、私がすべて正しく行っていること、そして問題は私のアカウントのフラグであることを示しています. 通常のアカウントがまだ承認されていない場合でも、サンドボックスは機能しますか?