xml — Пример авторизации кредитной карты PHP API возвращает пустой ответ

Я использую пример 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)

Ответ после обновления композитора:

ОШИБКА кредитной карты: неверный ответ

Большое спасибо заранее!

3

Решение

Ваше сообщение немного старое, и я уверен, что оно было решено. Тем не менее, проблема почти наверняка ваши входные данные. Этот ответ довольно расплывчатый и не обязательно даст решение, но поможет определить причину.

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)

1

Другие решения

Других решений пока нет …