【问题标题】:How to pass the production variable to Authorize.Net API?如何将生产变量传递给 Authorize.Net API?
【发布时间】:2019-11-06 13:34:32
【问题描述】:

我正在处理 Authorize.Net API 上的交易。 我使用的是相同的代码示例,SDK 说为了切换到生产环境,我需要在控制器上设置环境变量。 链接是here。我不确定我应该在哪里添加这行代码

createtransactioncontroller.setenvironment(constants.PRODUCTION)

其余代码为here

这是使用控制器的正确方法吗

import os
import sys
import imp

from datetime import datetime, timedelta
from authorizenet import apicontractsv1
from authorizenet.apicontrollers import getSettledBatchListController
from authorizenet.apicontrollers import createTransactionController
constants = imp.load_source('modulename', 'constants.py')



def get_settled_batch_list():
    """get settled batch list"""
    createTransactionController.setenvironment(constants.PRODUCTION)
    merchantAuth = apicontractsv1.merchantAuthenticationType()

【问题讨论】:

  • 这段代码有效吗?你有错误吗?如果是这样,您会收到什么错误消息?
  • 我得到的错误是身份验证错误,因为我正在传递生产用户 ID 和密钥,并且 API 正在 ping 沙箱 api url
  • 代码默认命中 SANDBOX API,正如他们在 git hub 上提到的,我想将 PRODUCTION API 传递给控制器​​。我提到的问题是我不知道如何将值传递给控制器​​。
  • 您的代码似乎是正确的。您是否使用调试器来验证您是否正在执行此代码路径?
  • 是的,我这样做了,它仍然使用 sandbox 变量而不是 production

标签: python-3.x authorize.net


【解决方案1】:

我遇到了同样的错误,我修复它的方法是将文件 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']

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2019-05-28
    • 2020-10-30
    • 1970-01-01
    • 2018-05-17
    • 2016-01-26
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    相关资源
    最近更新 更多