2017-09-13 15 views
1

私は現在顧客に請求しており、その請求に基づいて顧客プロファイルを作成しようとしています。問題があっても応答がなく、代わりにコードであり、このチャンクの下にもう少し説明とするものです。ここ `authorize.netトランザクションから顧客プロファイルを作成

AttributeError: no such child: {AnetApi/xml/v1/schema/AnetApiSchema.xsd}customerProfileId

をプリントアウトすることを私に言って、私は試してみて、実際にそれが失敗した顧客を作成するときにということです私は応答を解析するためにやっています。

merchantAuth = apicontractsv1.merchantAuthenticationType() 
merchantAuth.name = app_config.AUTHORIZE_KEYS['apiLoginId'] 
merchantAuth.transactionKey = app_config.AUTHORIZE_KEYS['transactionKey'] 
# Create the payment object for a payment nonce 
opaqueData = apicontractsv1.opaqueDataType() 
opaqueData.dataDescriptor = request.form['dataDesc'] 
opaqueData.dataValue = request.form['dataValue'] 

# Add the payment data to a paymentType object 
paymentOne = apicontractsv1.paymentType() 
paymentOne.opaqueData = opaqueData 

# Create order information 
order = apicontractsv1.orderType() 
order.invoiceNumber = "invoice_%s" % user.id 
order.description = "Awesome" 
# Set the customer's identifying information 
customerData = apicontractsv1.customerDataType() 
customerData.type = "individual" 
customerData.id = "cus_%s" % user.id 
customerData.email = email 
# Giving the credit card info 
# Setting billing information 
billto = apicontractsv1.nameAndAddressType() 
billto.firstName = request.form['firstName'] 
billto.lastName = request.form['lastName'] 
billto.address = address1 
billto.city = city 
billto.state = state 
billto.zip = zipcode 
billto.country = country 
item = request.form['item'] 
if item == 'dollar': 
    amount = "3.00" 
if item == "monthly": 
    amount = "5.00" 
    length = 1 
if item == "annual": 
    amount = "50.00" 
    length = 12 
# Create order information 
order = apicontractsv1.orderType() 
order.invoiceNumber = "invoice_%s" % user.id 
order.description = "Awesomeness" 

# # Set the customer's Bill To address 
customerAddress = apicontractsv1.customerAddressType() 
customerAddress.firstName = request.form['firstName'] 
customerAddress.lastName = request.form['lastName'] 
customerAddress.address = address1 
customerAddress.city = city 
customerAddress.state = state 
customerAddress.zip = zipcode 
customerAddress.country = country 

# Create customer profile on transaction 
createcustomerprofile = apicontractsv1.customerProfilePaymentType() 
createcustomerprofile.createProfile = True 

# Create a transactionRequestType object and add the previous objects to it. 
transactionrequest = apicontractsv1.transactionRequestType() 
transactionrequest.transactionType = "authCaptureTransaction" 
transactionrequest.amount = amount 
transactionrequest.payment = paymentOne 
transactionrequest.order = order 
transactionrequest.billTo = customerAddress 
transactionrequest.customer = customerData 
transactionrequest.profile = createcustomerprofile 

# Assemble the complete transaction request 
createtransactionrequest = apicontractsv1.createTransactionRequest() 
createtransactionrequest.merchantAuthentication = merchantAuth 
createtransactionrequest.refId = refId 
createtransactionrequest.transactionRequest = transactionrequest 

# Create the controller 
createtransactioncontroller = createTransactionController(createtransactionrequest) 
createtransactioncontroller.setenvironment(app_config.AUTH_NET_ENVIRONMENT) 
createtransactioncontroller.execute() 

問題は、応答を試してみると発生するようです。私は実際にコードを実行するときには、開発者のドキュメントは、それが働いていないことを返している理由トランザクションがわからない際、あなたが顧客を作成することができ、そのdocumentationショーを考える

response = createtransactioncontroller.getresponse() 
logging.debug("%s" % response) 
if response is not None: 
     # Check to see if the API request was successfully received and acted upon 
    if response.messages.resultCode == "Ok": 
     # Since the API request was successful, look for a transaction response 
     # and parse it to display the results of authorizing the card 
     if hasattr(response.transactionResponse, 'messages') == True: 
      if hasattr(response.profileResponse, 'messages') == True: 
       print('made it here') 
      models.Payment(user=user, payment_date=datetime.utcnow(), 
            authorize={'email': email, 'updated': False, 
               'address': u'%s %s' % (address1, address2), 
               'messages': {'transId':'%s' % response.transactionResponse.transId, 
               'responseCode':'%s' % response.transactionResponse.responseCode, 
               'auth_code':'%s' % response.transactionResponse.messages.message[0].code, 
               'Description':'%s' % response.transactionResponse.messages.message[0].description, 
               'email':email}, 
               # 'customerProfileId': '%s' % response.profileResponse.customerProfileId, 
               # 'customerPaymentProfileIdList': '%s' % response.profileResponse.customerPaymentProfileIdList, 
               }) 

に提案されます。

また、schema for the XML responseをチェックすると正しく設定されているようです。

答えて

0

C#SDKでも同じ問題があります。これに乗って、「顧客プロファイルの作成に失敗しました。この支払い方法はプロファイルの作成をサポートしていません」というエラーメッセージが表示されます。だから私はあなたが不透明なカードのデータから支払いプロフィールを作ることができないと思います! :(

+0

不幸にも、これは間違いなく、フォーラムのディスカッションの後で、https://community.developer.authorize.net/t5/Integration-and-Testing/Make-customer-profile-when-charging-card/mp/59867#M34438それは、それが不透明なデータでは動作しないと言います – nadermx

関連する問題