Я пытаюсь создать повторяющиеся подписки Authorize.net с использованием PHP.
Я установил 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-> execute (‘https: // apitest…’) # 1 /home/tpmadmin/public_html/test.php(58): net \ authorize \ api \ controller \ base \ ApiOperationBase-> executeWithApiResponse (‘https: // apitest…’) # 2 {main} добавлено в /home/tpmadmin/public_html/vendor/authorizenet/authorizenet/lib/net/authorize/api/controller/base/ApiOperationBase.php в строке 122
Я проверил журнал ошибок, и он показывает мне следующее:
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 без удачи. Любая помощь или совет будут потрясающими!
ОБНОВЛЕНИЕ: это работает на реальном счете, но не на учетной записи Песочницы -_-
У меня была похожая проблема, но я только хочу разрешить.
Итак, для моей ситуации с запросами authOnly SANDBOX я изменил HttpClient для включения curl_setopt ($ curl_request, CURLOPT_SSL_VERIFYPEER, false);
Если бы я делал больше, чем запросы authOnly, я бы, вероятно, использовал другой API авторизации (например, CIM через SOAP)
Один из моих коллег считает, что PROD не решит проблему и не должен требовать curl_setopt ($ curl_request, CURLOPT_SSL_VERIFYPEER, false), но я не проверил это полностью.
Других решений пока нет …