Я использую пример php с сайта authorize.net, но не могу заставить его работать. Я уже загрузил все программное обеспечение поставщика и обновил композитор.
В phplog я продолжаю получать ту же ошибку:
<code>E00045</code>
<text>The root node does not reference a valid XML namespace.</text>
</message></messages></ErrorResponse>
После обновления ошибки композитора больше не регистрируются.
Мой php:
требуют ( "anetsdkphp / autoload.php"); $ logName = "MYAUTHKEY"; $ transKey = "MYTRANSKEY"; используйте net \ authorize \ api \ contract \ v1 в качестве AnetAPI; используйте net \ authorize \ api \ controller в качестве AnetController; define ("AUTHORIZENET_LOG_FILE", "phplog"); function chargeCreditCard ($ amount) { // Общая настройка для учетных данных API $ merchantAuthentication = new AnetAPI \ MerchantAuthenticationType (); $ MerchantAuthentication-> SetName ($ LogName); $ MerchantAuthentication-> setTransactionKey ($ transKey); $ refId = 'ref'. время(); // Создать данные платежа для кредитной карты $ creditCard = new AnetAPI \ CreditCardType (); $ CreditCard-> setCardNumber (4111111111111111); $ CreditCard-> setExpirationDate (1238); $ paymentOne = new AnetAPI \ PaymentType (); $ PaymentOne-> setCreditCard ($ Creditcard); // создать транзакцию $actionRequestType = new AnetAPI \ TransactionRequestType (); $actionRequestType-> setTransactionType ("authCaptureTransaction"); $ TransactionRequestType-> setAmount ($ сумма); $ TransactionRequestType-> setPayment ($ paymentOne); $ request = new AnetAPI \ CreateTransactionRequest (); $ Request-> setMerchantAuthentication ($ merchantAuthentication); $ Request-> setRefId ($ RefID); $ Request-> setTransactionRequest ($ transactionRequestType); $ controller = new AnetController \ CreateTransactionController ($ request); $ response = $ controller-> executeWithApiResponse (\ net \ authorize \ api \ constants \ ANetEnvironment :: SANDBOX); # $ result = str_replace ('xmlns = "AnetApi / xml / v1 / schema / AnetApiSchema.xsd"', '', $ result); if ($ response! = null) { $ tresponse = $ response-> getTransactionResponse (); if (($ tresponse! = null) ($ tresponse-> getResponseCode () == "1")) { echo "Платежная кредитная карта AUTH CODE:". $ tresponse-> getAuthCode (). "\ П"; echo "Charge Credit Card TRANS ID:". $ tresponse-> getTransId (). "\ П"; echo $ tresponse-> getResponseCode (); } еще { echo "Ошибка кредитной карты: неверный ответ \ n"; var_dump ( "$ tresponse"); } } еще { echo "Charge Credit card Null response return"; } } chargeCreditCard (55.00);
Отклик:
ОШИБКА кредитной карты: неверный ответ (0)
Ответ после обновления композитора:
ОШИБКА кредитной карты: неверный ответ
Большое спасибо заранее!
Ваше сообщение немного старое, и я уверен, что оно было решено. Тем не менее, проблема почти наверняка ваши входные данные. Этот ответ довольно расплывчатый и не обязательно даст решение, но поможет определить причину.
print_r($response)
Вы увидите следующие представления объектов:
[messages:net\authorize\api\contract\v1\ANetApiResponseType:private] => net\authorize\api\contract\v1\MessagesType Object
(
[resultCode:net\authorize\api\contract\v1\MessagesType:private] => Error
[message:net\authorize\api\contract\v1\MessagesType:private] => Array
(
[0] => net\authorize\api\contract\v1\MessagesType\MessageAType Object
(
[code:net\authorize\api\contract\v1\MessagesType\MessageAType:private] => ERROR_CODE_IS_HERE
[text:net\authorize\api\contract\v1\MessagesType\MessageAType:private] => ERROR_MESSAGE_IS_HERE)
Других решений пока нет …