Authorize.net ARB SSL证书问题

时间:2015-10-13 07:08:42

标签: php ssl ssl-certificate authorize.net authorize.net-arb

我正在尝试使用PHP创建Authorize.net定期订阅。 我安装了Composer,然后使用这里显示的composer.json https://github.com/AuthorizeNet/sample-code-php/blob/master/composer.json来安装Authorize.net SDK。 现在,我正在尝试使用此处的代码在我的沙箱帐户上创建订阅:https://github.com/AuthorizeNet/sample-code-php/blob/master/RecurringBilling/create-subscription.php

当我尝试运行它时,它会给我以下错误:

  

致命错误:未捕获的异常'异常'有消息'错误从api获得有效响应。检查日志文件以获取错误详细信息'在/home/tpmadmin/public_html/vendor/authorizenet/authorizenet/lib/net/authorize/api/controller/base/ApiOperationBase.php:122堆栈跟踪:#0 / home / tpmadmin / public_html / vendor / authorizenet / authorizenet / lib /net/authorize/api/controller/base/ApiOperationBase.php(104):net \ authorize \ api \ controller \ base \ ApiOperationBase->执行(' https://apitest ...' )#1 /home/tpmadmin/public_html/test.php(58):net \ authorize \ api \ controller \ base \ ApiOperationBase-> executeWithApiResponse(' https://apitest ...')在第122行的/home/tpmadmin/public_html/vendor/authorizenet/authorizenet/lib/net/authorize/api/controller/base/ApiOperationBase.php中抛出#2 {main}

我检查了错误日志,它显示了以下内容:

Tue, 13 Oct 2015 06:51:05 +0000:CURL ERROR: SSL certificate problem: unable to get local issuer certificate
Tue, 13 Oct 2015 06:51:22 +0000: Request Serialization Begin
Tue, 13 Oct 2015 06:51:22 +0000: Request  Serialization End
Tue, 13 Oct 2015 06:51:22 +0000: Url: https://apitest.authorize.net/xml/v1/request.api
Tue, 13 Oct 2015 06:51:22 +0000:Request to AnetApi: 
<?xml version="1.0" encoding="UTF-8"?>
<ARBCreateSubscriptionRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
  <merchantAuthentication>
    <name><![CDATA[MY_API_LOGIN]]></name>
    <transactionKey><![CDATA[MY_TRANSACTION_KEY]]></transactionKey>
  </merchantAuthentication>
  <refId><![CDATA[ref1444719082]]></refId>
  <subscription>
    <name><![CDATA[Sample Subscription]]></name>
    <paymentSchedule>
      <interval>
        <length>1</length>
        <unit><![CDATA[months]]></unit>
      </interval>
      <startDate><![CDATA[2020-08-30]]></startDate>
      <totalOccurrences>12</totalOccurrences>
      <trialOccurrences>1</trialOccurrences>
    </paymentSchedule>
    <amount>10.29</amount>
    <trialAmount>0.00</trialAmount>
    <payment>
      <creditCard>
        <cardNumber><![CDATA[4111111111111111]]></cardNumber>
        <expirationDate><![CDATA[2020-12]]></expirationDate>
      </creditCard>
    </payment>
    <billTo>
      <firstName><![CDATA[John]]></firstName>
      <lastName><![CDATA[Smith]]></lastName>
    </billTo>
  </subscription>
</ARBCreateSubscriptionRequest>

Sending 'XML' Request type
Tue, 13 Oct 2015 06:51:22 +0000:Sending http request via Curl
Tue, 13 Oct 2015 06:51:23 +0000:Response from AnetApi: 


Tue, 13 Oct 2015 06:51:23 +0000:CURL ERROR: SSL certificate problem: unable to get local issuer certificate`

注意:在上面的消息中,我替换了我的实际API_LOGIN_ID和TRANSACTION_KEY。真实消息具有正确的登录信息。

我不太了解SSL证书或可能导致此问题的原因。我在Google上搜索了好几个小时没有运气。任何帮助或建议都会很棒!

更新:它正在使用真实帐户,但不在沙盒帐户上工作-_-

1 个答案:

答案 0 :(得分:1)

我有类似的问题,但我只是想要授权。

因此,对于我使用authOnly SANDBOX请求的情况,我修改了HttpClient以包含curl_setopt($ curl_request,CURLOPT_SSL_VERIFYPEER,false);

如果我做的不仅仅是authOnly请求,我可能会使用不同的Authorize API(例如,通过SOAP进行CIM)

我的一位同事认为PROD不会提出问题而且不应该要求curl_setopt($ curl_request,CURLOPT_SSL_VERIFYPEER,false),但我还没有彻底测试过。