Тестовые возвраты на Authorize.net с использованием тестовой учетной записи?

Я разрабатываю веб-сайт, который использует Authorize.net, но в настоящее время я использую тестовую учетную запись. Чтобы проверить возврат, требуется уникальный идентификатор транзакции, но, поскольку я использую только тестовую учетную запись, он не возвращает уникальный идентификатор транзакции при совершении тестовой транзакции (всегда 2147483647). Есть ли другой способ для этого работать? Мне нужно посмотреть, будет ли мой код работать с API.


person Singletonio    schedule 11.08.2009    source источник
comment
Я слишком долго не мог быть уверен, но я думаю, что вам нужно быть в режиме реального времени (не в тестовом режиме), чтобы возврат работал. Authorize.NET предлагает использовать транзакцию в 1 цент, в их Руководстве по интеграции с продавцом может быть более подробная информация.   -  person ryanday    schedule 11.08.2009


Ответы (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, чтобы быть в безопасности.

Использованная литература:

person mrbinky3000    schedule 10.03.2011

Если вы отправляете свои запросы на https://test.authorize.net/gateway/transact.dll, тогда вы всегда будете получать 0 в качестве transaction_id.

Короче говоря, вам понадобится реальный счет, чтобы проверить возврат средств. Вы можете установить x_test_request=TRUE и опубликовать на https://secure.authorize.net/gateway/transact.dll и проверьте, возвращаете ли вы действительный идентификатор транзакции. Но опять же вам понадобится действующая учетная запись Live с Authorize.Net, чтобы иметь возможность публиковать транзакции на Live URL.

person Narayan Varma    schedule 18.04.2012

Чтобы получить идентификатор транзакции, при отправке запроса на транзакцию в тестовом режиме необходимо установить в списке параметров запроса:

x_test_request=FALSE

тогда вы получите правильный идентификатор

person Michael Bagryantcev    schedule 03.12.2010
comment
В Magento 1.7.0.2 это значение устанавливается в /app/code/core/Mage/Paygate/Model/Authorizenet.php — в методе _getRequest() см. setXTestRequest() - person pspahn; 03.12.2012