Проверка возврата на Authorize.net с использованием тестовой учетной записи?
Я занимаюсь разработкой веб-сайта, который использует Authorize.net, но в настоящее время я использую тестовый аккаунт. Для проверки возврата требуется уникальный идентификатор транзакции, но поскольку я использую только тестовую учетную запись, он не возвращает уникальный идентификатор транзакции при выполнении тестовой транзакции (всегда 2147483647). Есть ли другой способ для этого работать? Мне нужно посмотреть, будет ли мой код работать с API.
3 ответа
Какой бы код вы ни использовали для анализа "идентификатора транзакции", который Authorize.net возвращает вам после успешной транзакции, он преобразует идентификатор транзакции в целое число. Его следует рассматривать как строку, а не как целое число. В 2008 году Authorize объявил, что они переключаются с целочисленного на строковый идентификатор транзакции, поскольку у них заканчиваются 32-разрядные целые числа.
2147483647 - это самое большое целое число из 10, которое вы можете сделать с 32 двоичными разрядами (1111 1111 1111 1111 1111 1111 1111 1111). Это означает, что Authorize возвращает идентификатор транзакции> 2147483647 (например, 3000000000), а ваш язык программирования усекает биты до максимально допустимого значения, 2147483647.
Изучите свой PHP-код и убедитесь, что идентификатор транзакции приводится к значению в виде строки. Чтобы быть уверенным, вы, возможно, захотите просмотреть свой код и привести его в действие. Например:
(string)$transaction_id
Также убедитесь, что ваш код не выполняет функции, которые автоматически приводят строки как целые числа. Например:
$transaction_id + 1
Наконец, если идентификатор транзакции читается из базы данных, убедитесь, что база данных хранит идентификатор транзакции в виде строкового типа данных. Например, с mysql используйте CHAR или VARCHAR и сделайте его больше 10. Попробуйте 16 или 24, чтобы быть в безопасности.
Рекомендации:
Если вы публикуете свои запросы на https://test.authorize.net/gateway/transact.dll вы всегда получите 0 в качестве транзакции_id.
Короче говоря, вам понадобится реальная учетная запись для проверки ваших возмещений. Вы можете установить x_test_request=TRUE и отправить сообщение на https://secure.authorize.net/gateway/transact.dll и проверить, вернули ли вы верный идентификатор транзакции. Но опять же вам понадобится действительная учетная запись Live с Authorize.Net, чтобы иметь возможность размещать транзакции на Live URL
Для получения идентификатора транзакции при отправке запроса транзакции в тестовом режиме необходимо задать в списке параметров запроса:
x_test_request=FALSE
тогда вы получите правильный идентификатор