【发布时间】:2016-08-15 13:01:22
【问题描述】:
我在使用 OmniPay API 时收到来自 2Checkout 的授权失败响应。
我已经成功地将 Stripe 与 OmniPay 连接起来,所以我开始连接 2Checkout。当你这样做时,Github 上的初始包会警告你获取the newer version from a user 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());
}
但是,消息返回“授权失败”。于是,我就在这条路径中进入了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-supported PHP library。我做了完全相同的交易,它也返回“授权失败”。
我想知道这是否是我帐户中的一项设置,即使我使用的是沙盒?我的意思是,我还没有在生产中获得批准,并且一直在尝试让沙盒运行到那时,以便我可以进行演示。
我还在沙盒中重新生成了 API 密钥并再次尝试,但失败了。
我使用的信用卡是他们在沙盒 API 密钥下在沙盒上提供的信用卡,我使用的 CVV 为 123,到期日期为 12/18。然后我想它可能需要一个 4 位数的年份,所以我更新了它并再次尝试,但同样失败,同样出现“授权失败”的一致错误。
当我检查“授权失败”是什么意思时,似乎是信用卡出了问题。
到目前为止,我的直觉告诉我,我所做的一切都是正确的,问题是我帐户上的标志。我的意思是,如果我的常规帐户尚未获得批准,沙盒是否仍然有效?
【问题讨论】:
-
此时我很想联系 2checkout 支持。看起来你在做正确的事,一定是你的账户有问题。我不认为是卡,我不认为他们在沙盒模式下验证卡。
-
撞到床上。修复是演示模式参数。我会在几个小时后起床后发布答案。
标签: php payment-gateway payment-processing omnipay 2checkout