删除客户付款资料

时间:2020-02-10 22:48:51

标签: authorize.net

我有一个测试端点,可以像我们的应用一样将卡添加到客户资料中。创建配置文件,添加付款配置文件,其他所有操作都可以正常进行(我今天再次进行测试以确保),但是删除将不起作用。至少在Python SDK中,错误输出小于最佳数量,并且日志记录信息甚至更糟。我真的很茫然,我想补充什么。从根本上说,这只是sample code稍微重构了。

我尝试设置验证模式(添加卡所需),并将控制器环境显式设置为dev / sandbox网址(到目前为止,尚无此要求)。

调用以下方法的代码基本上只是从数据库中获取内容,以提供函数本身所需的参数,而这些参数也可以正常工作。

import logging 

from authorizenet import apicontractsv1
from authorizenet import apicontrollers 
from errors import PaymentGatewayError

class AuthDotNet(object):
    def __init__(self):
        super().__init__()
        self.logger = logging.getLogger('authorizenet.sdk')
        handler = logging.FileHandler('anetSdk.log')
        formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
        handler.setFormatter(formatter)
        self.logger.addHandler(handler)
        self.logger.setLevel(logging.DEBUG)
        self.logger.debug('Logger set up for Authorizenet Python SDK complete')


    def init_app(self, flask_app):
        self.merchantAuth = apicontractsv1.merchantAuthenticationType()
        self.merchantAuth.name = flask_app.config['AUTHDOTNET_LOGIN_ID']
        self.merchantAuth.transactionKey = flask_app.config['AUTHDOTNET_TRANSACTION_KEY']
        self.validationMode = flask_app.config['AUTHDOTNET_VALIDATION_MODE'] # testMode
        self.api = flask_app.config['AUTHDOTNET_API'] # https://apitest.authorize.net/xml/v1/request.api


    def delete_payment_method(self, customer_profile_id, pm_gateway_id):
        request = apicontractsv1.deleteCustomerPaymentProfileRequest()
        request.merchantAuth = self.merchantAuth
        request.customerProfileId = customer_profile_id
        request.customerPaymentProfileId = pm_gateway_id
        request.validationMode = self.validationMode  # this was necessary in create_payment_profile

        controller = apicontrollers.deleteCustomerPaymentProfileController(request)
        # controller.setenvironment(self.api)
        controller.execute() # this line breaks it
        response = controller.getresponse()

        if (response.messages.resultCode != 'Ok'):
            # TODO Figure out some fail case codes
            http_code = status.HTTP_500_INTERNAL_SERVER_ERROR

            raise PaymentGatewayError(
                    http_code=http_code,
                    gateway_code=response.messages.message['code'].text,
                    gateway_message=response.messages.message['text'].text
                )

        return response

记录器输出:

2020-02-10 16:14:43,375 authorizenet.sdk DEBUG    Logger set up for Authorizenet Python SDK complete
2020-02-10 16:14:50,475 authorizenet.sdk DEBUG    performing custom validation..
2020-02-10 16:14:50,475 authorizenet.sdk DEBUG    Executing http post to url: https://apitest.authorize.net/xml/v1/request.api
2020-02-10 16:14:50,476 authorizenet.sdk DEBUG    building request..
2020-02-10 16:14:50,476 authorizenet.sdk DEBUG    building request..

异常打印

(
    <authorizenet.apicontractsv1.CTD_ANON_57 object at 0x04A76190>, 
    <pyxb.utils.fac.Configuration object at 0x057AF1A8>, 
    [], {
        <pyxb.binding.content.ElementDeclaration object at 0x04E30160>: ['sdk-python-1.1.3'], 
        <pyxb.binding.content.ElementDeclaration object at 0x04E5EC88>: ['VALID_USER_ID'], 
        <pyxb.binding.content.ElementDeclaration object at 0x04E5ECD0>: ['VALID_PAYMENT_METHOD_ID']
    }
)

堆栈跟踪:第1点

Traceback (most recent call last):
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\authorizenet\apicontrollersbase.py", line 134, in execute        
    xmlRequest = self.buildrequest()
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\authorizenet\apicontrollersbase.py", line 105, in buildrequest   
    xmlRequest = self._request.toxml(encoding=constants.xml_encoding, element_name=self.getrequesttype())
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\pyxb\binding\basis.py", line 555, in toxml
    dom = self.toDOM(bds, element_name=element_name)
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\pyxb\binding\basis.py", line 527, in toDOM
    self._toDOM_csc(bds, element)
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\pyxb\binding\basis.py", line 2661, in _toDOM_csc
    order = self._validatedChildren()
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\pyxb\binding\basis.py", line 2188, in _validatedChildren
    return self.__automatonConfiguration.sequencedChildren()
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\pyxb\binding\content.py", line 638, in sequencedChildren
    cfg = self._diagnoseIncompleteContent(symbols, symbol_set)
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\pyxb\binding\content.py", line 493, in _diagnoseIncompleteContent
    raise pyxb.IncompleteElementContentError(self.__instance, cfg, symbols, symbol_set)
pyxb.exceptions_.IncompleteElementContentError: (<authorizenet.apicontractsv1.CTD_ANON_57 object at 0x04A76190>, <pyxb.utils.fac.Configuration object at 0x05530778>, [], {<pyxb.binding.content.ElementDeclaration object at 0x04E30160>: ['sdk-python-1.1.3'], <pyxb.binding.content.ElementDeclaration object at 0x04E5EC88>: ['VALID_USER_ID'], <pyxb.binding.content.ElementDeclaration object at 0x04E5ECD0>: ['VALID_PAYMENT_METHOD_ID']})

堆栈跟踪:第2点

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\jmbzy\Documents\Gophr\api-payments\route_resources.py", line 473, in delete
    pg_response = pg.provider.delete_payment_method(user_pg_id, pm_gateway_id)
  File "C:\Users\jmbzy\Documents\Gophr\api-payments\gateway.py", line 325, in delete_payment_method
    controller.execute()
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\authorizenet\apicontrollersbase.py", line 137, in execute
    anetLogger.error( 'Error retrieving http response from: %s for request: %s', self.endpoint, self.getprettyxmlrequest())
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\authorizenet\apicontrollersbase.py", line 113, in getprettyxmlrequest
    xmlRequest = self.buildrequest()
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\authorizenet\apicontrollersbase.py", line 105, in buildrequest
    xmlRequest = self._request.toxml(encoding=constants.xml_encoding, element_name=self.getrequesttype())
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\pyxb\binding\basis.py", line 555, in toxml
    dom = self.toDOM(bds, element_name=element_name)
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\pyxb\binding\basis.py", line 527, in toDOM
    self._toDOM_csc(bds, element)
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\pyxb\binding\basis.py", line 2661, in _toDOM_csc
    order = self._validatedChildren()
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\pyxb\binding\basis.py", line 2188, in _validatedChildren
    return self.__automatonConfiguration.sequencedChildren()
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\pyxb\binding\content.py", line 638, in sequencedChildren
    cfg = self._diagnoseIncompleteContent(symbols, symbol_set)
  File "c:\users\jmbzy\documents\gophr\api-payments\venv\lib\site-packages\pyxb\binding\content.py", line 493, in _diagnoseIncompleteContent
    raise pyxb.IncompleteElementContentError(self.__instance, cfg, symbols, symbol_set)
pyxb.exceptions_.IncompleteElementContentError: (<authorizenet.apicontractsv1.CTD_ANON_57 object at 0x04A76190>, <pyxb.utils.fac.Configuration object at 0x057AF1A8>, [], {<pyxb.binding.content.ElementDeclaration object at 0x04E30160>: ['sdk-python-1.1.3'], <pyxb.binding.content.ElementDeclaration object at 0x04E5EC88>: ['VALID_USER_ID'], <pyxb.binding.content.ElementDeclaration object at 0x04E5ECD0>: ['VALID_PAYMENT_METHOD_ID']})

注意:插入VALID_*代替实际值,并且line 325, in delete_payment_method指上面的controller.execute()

0 个答案:

没有答案