У меня была такая же ошибка, и как я ее исправил, я изменил файл constants.py на credentials.py, а затем изменил переменную на MY_CONSTANTS, но вы можете изменить их на учетные данные, если хотите.
Если в тот момент это не сработало, вы можете вместо этого попытаться жестко закодировать его с помощью createtransactioncontroller.setenvironment ('https://api2.authorize.net/xml/v1/request.api'), но если этого не сделать, оставьте его постоянным. ПРОИЗВОДСТВО
createtransactioncontroller = createTransactionController(createtransactionrequest)
createtransactioncontroller.setenvironment(constants.PRODUCTION)
# or createtransactioncontroller.setenvironment('https://api2.authorize.net/xml/v1/request.api')
createtransactioncontroller.execute()
Я использовал словарь для своих учетных данных (константы в вашем случае), поэтому мой выглядит немного иначе.
import imp
import os
import sys
import importlib
from authorizenet.constants import constants
from authorizenet import apicontractsv1
from authorizenet.apicontrollers import createTransactionController
from .credentials import MY_CONSTANTS
# retrieved from the constants file
merchantAuth = apicontractsv1.merchantAuthenticationType()
merchantAuth.name = MY_CONSTANTS['apiLoginId']
merchantAuth.transactionKey = MY_CONSTANTS['transactionKey']
Надеюсь, это помогло вам.