Какой бы код вы ни использовали для анализа «идентификатора транзакции», который 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, чтобы быть в безопасности.
Ссылки: