cancel
Showing results for 
Search instead for 
Did you mean: 

Xml parse error in XmlUtility.descapeStringForXml

Hello, recently got this error on auth.net response when trying to void a recurring payment:

 

2017-08-29 15:48:45,740 DEBUG [AWT-EventQueue-0] (gui.dialog.RefundTenderCreditDialog.cardSwiped()) - Card swipe event, parsed card data: CreditCard [nameOnCard=ANDERSON/CHRISTOPHER T, number=XXXXXXXXXXXX5098, track1=%BXXXXXXXXXXXXXXXX^ANDERSON/CHRISTOPHER T^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX?, track2=;XXXXXXXXXXXXXXXX=XXXXXXXXXXXXXXXXXXXX?, expireMonth=3, expireYear=25, type=null]
2017-08-29 15:48:45,755 INFO  [Thread-38] (gui.dialog.RefundTenderCreditDialog.processRequest()) - Sending authorizer request: DefaultPaymentProcessorRequest [creditCard=CreditCard [nameOnCard=ANDERSON/CHRISTOPHER T, number=XXXXXXXXXXXX5098, track1=%BXXXXXXXXXXXXXXXX^ANDERSON/CHRISTOPHER T^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX?, track2=;XXXXXXXXXXXXXXXX=XXXXXXXXXXXXXXXXXXXX?, expireMonth=3, expireYear=25, type=VISA] requestType=VOID_REFUND, customerNumber=null, transactionNumber=108585, amount=19.95, initAmount=19.95, authorizationCode=4RWILV, purchaseType=RECURRING_INITIAL_SALE, recordNumber=1501783604, referenceNumber=40006130205, referenceData=null, processData=null, transactionCompleteDate=Tue Aug 29 15:48:05 EDT 2017, token1=null, token2=null, salesDeviceId=1]
2017-08-29 15:48:45,756 INFO  [Thread-38] (payment.authorizedotnet.AuthorizeDotNetProcessor.authorize()) - Starting processing: 1504036125756
2017-08-29 15:48:45,756 WARN  [Thread-38] (payment.authorizedotnet.AuthorizeDotNetProcessor.validatePaymentAuthorizer()) - Test mode enabled, using test environment.
2017-08-29 15:48:45,762 INFO  [Thread-38] (payment.authorizedotnet.AuthorizeDotNetProcessor.getMerchant()) - Using getGatewayServiceId2: 6n5ZeZ9EaH9 getGatewayServicePassword2: ************m6hG
2017-08-29 15:48:45,773 INFO  [Thread-38] (payment.authorizedotnet.AuthorizeDotNetProcessor.logTransactionRequest()) - -->[Type=VOID Amount=19.95 CC-type=VISA CC-number=XXXXXXXXXXXX5098 CC-ExpDate=3/25 TransactionID=40006130205 AuthCode=4RWILV]
2017-08-29 15:48:45,773 INFO  [Thread-38] (payment.authorizedotnet.AuthorizeDotNetProcessor.getMerchant()) - Using getGatewayServiceId2: 6n5ZeZ9EaH9 getGatewayServicePassword2: ************m6hG
2017-08-29 15:48:46,588 WARN  [Thread-38] (authorize.util.XmlUtility.warn()) - Exception Details-> Code:'null', Message:'null'
2017-08-29 15:48:46,589 WARN  [Thread-38] (authorize.util.XmlUtility.warn()) - Error decoding from XML, value: '1.0|3|21|An error occurred during processing.  Please try again.||P||40006130205|30F81DB854A9A7EC36FFC52B642C1600||||||||||||XXXX5098|Visa|||||
', ErrorMessage: 'null'
Caused by: java.lang.NumberFormatException: For input string: "1.0"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:1.8.0_45]
        at java.lang.Integer.parseInt(Integer.java:580) ~[?:1.8.0_45]
        at java.lang.Integer.parseInt(Integer.java:615) ~[?:1.8.0_45]
        at net.authorize.aim.Result.createResult(Result.java:32) ~[anet-java-sdk-1.9.3.jar:?]
        at net.authorize.Merchant.postTransaction(Merchant.java:286) ~[anet-java-sdk-1.9.3.jar:?]
        at com.sonnyscontrols.payment.authorizedotnet.AuthorizeDotNetProcessor.sendRequest(AuthorizeDotNetProcessor.java:245) ~[payapi-1.0.6-RELEASE.jar:?]
        ... 4 more

 

This error is random, i could not reproduce this all the time when making a void transaction.

library: java-sdk -1.9.3

 

trace: our software calls Merchant.postTransaction() -> HttpClient.execute() -> at line 176 XmlUtility.descapeStringForXml() throws exception where looks like the very first parameter (1.0) is expected to be integer when parsing, but actually is a double so the error occures.

 

If it helps this is a void of initial recurring sale transaciton.

 

any help is appreciated. also, in my understanding, the void transaciton is actually processed fine, but since could not return a clean response, our software cannot record it as a final void.

autopilot
Contributor
18 REPLIES 18

Correct. Its included for both void and refund request.

Thanks for confirming. This might have to wait a while for me to try to duplicate. I'm on the road this week and most of next, so can't make any promises.

 

In the meantime, since this is happening in production, feel free to open a ticket and see if someone in support can't look into it from our end.

Checked again this morning: the first case is immediate void after sell, second refund on a next day.

 

2017-09-06 17:14:00,846 INFO  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.authorize()) - Starting processing: 1504732440846
2017-09-06 17:14:00,846 WARN  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.validatePaymentAuthorizer()) - Test mode enabled, using test environment.
2017-09-06 17:14:00,852 INFO  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.getMerchant()) - Using getGatewayServiceId2: 6n5ZeZ9EaH9 getGatewayServicePassword2: ************m6hG
2017-09-06 17:14:00,864 INFO  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.logTransactionRequest()) - -->[Type=VOID Amount=16.28 CC-type=MASTER_CARD CC-number=XXXXXXXXXXXX4444 CC-ExpDate=11/19, Request map: {x_test_request=FALSE, x_version=3.1, x_market_type=2, x_allow_partial_Auth=FALSE, x_device_type=10, x_invoice_num=217742},  TransactionID=40006505505 AuthCode=G8UAKA]
2017-09-06 17:14:00,864 INFO  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.getMerchant()) - Using getGatewayServiceId2: 6n5ZeZ9EaH9 getGatewayServicePassword2: ************m6hG
2017-09-06 17:14:02,137 INFO  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.logResponseRecurring()) - <--[Status=APPROVED ResponseText=This transaction has been approved. ReasonResponseCode=RRC_1_1 AuthorizationCode=G8UAKA TransactionId=40006505505]
2017-09-06 17:14:02,137 INFO  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.authorize()) - Finished processing: 1504732442137
2017-09-06 17:14:02,138 INFO  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.authorize()) - Total processing time: 1 second
2017-09-06 17:14:03,145 DEBUG [Thread-26] (gui.dialog.RefundTenderCreditDialog.close()) - Closing dialog box
2017-09-07 08:54:57,291 DEBUG [AWT-EventQueue-0] (gui.dialog.RefundTenderCreditDialog.actionPerformed()) - Ok button pressed
2017-09-07 08:54:57,299 INFO  [Thread-26] (gui.dialog.RefundTenderCreditDialog.processRequest()) - Sending authorizer request: DefaultPaymentProcessorRequest [creditCard=CreditCard [nameOnCard=null, number=XXXXXXXXXXXX4444, track1=null, track2=null, expireMonth=11, expireYear=19, type=MASTERCARD] requestType=VOID_REFUND, customerNumber=64560, transactionNumber=217741, amount=74.87, initAmount=74.87, authorizationCode=YIGBHA, purchaseType=RECURRING_INITIAL_SALE, recordNumber=1502039707, referenceNumber=40006504572, referenceData=null, processData=null, transactionCompleteDate=Wed Sep 06 17:10:16 EDT 2017, token1=null, token2=null, salesDeviceId=1]
2017-09-07 08:54:57,300 INFO  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.authorize()) - Starting processing: 1504788897300
2017-09-07 08:54:57,300 WARN  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.validatePaymentAuthorizer()) - Test mode enabled, using test environment.
2017-09-07 08:54:57,305 INFO  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.getMerchant()) - Using getGatewayServiceId2: 6n5ZeZ9EaH9 getGatewayServicePassword2: ************m6hG
2017-09-07 08:54:57,319 INFO  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.logTransactionRequest()) - -->[Type=VOID Amount=74.87 CC-type=MASTER_CARD CC-number=XXXXXXXXXXXX4444 CC-ExpDate=11/19, Request map: {x_test_request=FALSE, x_version=3.1, x_market_type=2, x_allow_partial_Auth=FALSE, x_device_type=10, x_invoice_num=217741},  TransactionID=40006504572 AuthCode=YIGBHA]
2017-09-07 08:54:57,319 INFO  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.getMerchant()) - Using getGatewayServiceId2: 6n5ZeZ9EaH9 getGatewayServicePassword2: ************m6hG
2017-09-07 08:54:58,414 ERROR [Thread-26] (gui.dialog.RefundTenderCreditDialog.processRequest()) - Error while processing payment authorization request.
com.sonnyscontrols.payment.PaymentProcessorException: There was an error communicating with Authorize.NET. Please verify the POS has internet connectivity and if so, then this issue is with Authorize.NET servers. Please contact Authorize.NET (877) 447-3938.
	at com.sonnyscontrols.payment.authorizedotnet.AuthorizeDotNetProcessor.sendRequest(AuthorizeDotNetProcessor.java:247) ~[classes/:?]
	at com.sonnyscontrols.payment.authorizedotnet.AuthorizeDotNetProcessor.authorize(AuthorizeDotNetProcessor.java:165) ~[classes/:?]
	at com.autopilotcontrols.pos.gui.dialog.RefundTenderCreditDialog$ProcessAuthorization.processRequest(RefundTenderCreditDialog.java:729) [classes/:?]
	at com.autopilotcontrols.pos.gui.dialog.RefundTenderCreditDialog$ProcessAuthorization.run(RefundTenderCreditDialog.java:825) [classes/:?]
	at java.lang.Thread.run(Thread.java:745) [?:1.8.0_40]
Caused by: java.lang.NumberFormatException: For input string: "1.0"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:1.8.0_40]
	at java.lang.Integer.parseInt(Integer.java:580) ~[?:1.8.0_40]
	at java.lang.Integer.parseInt(Integer.java:615) ~[?:1.8.0_40]
	at net.authorize.aim.Result.createResult(Result.java:32) ~[anet-java-sdk-1.9.3.jar:?]
	at net.authorize.Merchant.postTransaction(Merchant.java:286) ~[anet-java-sdk-1.9.3.jar:?]
	at com.sonnyscontrols.payment.authorizedotnet.AuthorizeDotNetProcessor.sendRequest(AuthorizeDotNetProcessor.java:245) ~[classes/:?]
	... 4 more

Aaron, hi,

 

i wrote twice to dev support about this issue but still no response.

Where do i need to create a bug?

Hi @autopilot,

 

Have you actually opened a case with support? If so, send me your case number and I'll escalate it. If not, please call our support to open a case, or log into the Merchant Interface and start an eTicket to open a case from there.

OK  we will call and opne a ticket becuase we do not have an account at account.authorize.net only test.

 

Today i tried to test a partial authorization transaction and got a similar xml parsing error:

 

2017-09-19 10:53:44,644 INFO  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.logTransactionRequest()) - -->[Type=AUTH_CAPTURE Amount=462.25 CC-type=VISA CC-number=XXXXXXXXX0027 CC-ExpDate=11/19, Request map: {x_test_request=FALSE, x_version=3.1, x_market_type=2, x_allow_partial_Auth=TRUE, x_device_type=10, x_invoice_num=1505832809329},  TransactionID= AuthCode=]

the response i received:

 

2017-09-19 10:53:45,442 WARN  [Thread-26] (authorize.util.XmlUtility.warn()) - Exception Details-> Code:'null', Message:'null'
2017-09-19 10:53:45,442 WARN  [Thread-26] (aim.cardpresent.Result.warn()) - Error de-serializing XML to PrepaidCard: '[PrepaidCard: null]', ErrorMessage: 'null'
2017-09-19 10:53:45,443 INFO  [Thread-26] (payment.authorizedotnet.AuthorizeDotNetProcessor.logResponse()) - <--[Status= refTransId=null authCode=4AP1CU transId=40007184638]

Not really sure why PrepaidCard is mentioned here as this transaction was made using 4007000000027 test VIsa card.

 

 

when using another card - MasterCard 5424000000000015 - same error occured by status was populated:

 

2017-09-19 11:13:47,480 INFO  [Thread-27] (gui.dialog.TenderCreditDialog.run()) - Sending authorizer request: DefaultPaymentProcessorRequest [creditCard=CreditCard [nameOnCard=null, number=XXXXXXXXXXXX0015, track1=null, track2=null, expireMonth=11, expireYear=19, type=MASTERCARD] requestType=SALE, customerNumber=null, transactionNumber=1505834015965, amount=462.26, initAmount=0.0, authorizationCode=null, purchaseType=ONE_TIME, recordNumber=null, referenceNumber=null, referenceData=null, processData=null, transactionCompleteDate=null, token1=null, token2=null, salesDeviceId=1]
2017-09-19 11:13:47,480 INFO  [Thread-27] (payment.authorizedotnet.AuthorizeDotNetProcessor.authorize()) - Starting processing: 1505834027480
2017-09-19 11:13:47,480 WARN  [Thread-27] (payment.authorizedotnet.AuthorizeDotNetProcessor.validatePaymentAuthorizer()) - Test mode enabled, using test environment.
2017-09-19 11:13:47,480 INFO  [Thread-27] (payment.authorizedotnet.AuthorizeDotNetProcessor.getMerchant()) - Using getGatewayServiceId: 5S8hU6ja getGatewayServicePassword: ************6gAm
2017-09-19 11:13:47,481 INFO  [Thread-27] (payment.authorizedotnet.AuthorizeDotNetProcessor.logTransactionRequest()) - -->[Type=AUTH_CAPTURE Amount=462.26 CC-type=MASTER_CARD CC-number=XXXXXXXXXXXX0015 CC-ExpDate=11/19, Request map: {x_test_request=FALSE, x_version=3.1, x_market_type=2, x_allow_partial_Auth=TRUE, x_device_type=10, x_invoice_num=1505834015965},  TransactionID= AuthCode=]
2017-09-19 11:13:47,481 INFO  [Thread-27] (payment.authorizedotnet.AuthorizeDotNetProcessor.getMerchant()) - Using getGatewayServiceId: 5S8hU6ja getGatewayServicePassword: ************6gAm
2017-09-19 11:13:48,207 WARN  [Thread-27] (authorize.util.XmlUtility.warn()) - Exception Details-> Code:'null', Message:'null'
2017-09-19 11:13:48,207 WARN  [Thread-27] (aim.cardpresent.Result.warn()) - Error de-serializing XML to PrepaidCard: '[PrepaidCard: null]', ErrorMessage: 'null'
2017-09-19 11:13:48,207 INFO  [Thread-27] (payment.authorizedotnet.AuthorizeDotNetProcessor.logResponse()) - <--[Status=APPROVED ReasonResponseCode=1 ReasonResponseText=This transaction has been approved. ResponseCode=1 ResponseCodeText=This transaction has been approved. refTransId=null authCode=46LBD1 transId=40007184951]

Another question: as i mentioned, i try to process a parial authorization here but never so far get an appropriate message, it always Approved for all 462.2x amounts. Am i doing sometihng wrong?

If you're trying to simulate a decline, use one of the triggers in our Testing Guide. For example, if you want a transaction to be declined in sandbox, send it with a zip code of 46282 or an amount of $70.02.

Aaron thanks,

 

i am not trying to simulate a decline, i am trying to simulate a partial auth case. So follow PARTIAL AUTHORIZATION RESPONSES section on http://developer.authorize.net/hello_world/testing_guide/ but so far for all cases receive approved response like this

 

2017-09-19 11:13:48,207 INFO  [Thread-27] (payment.authorizedotnet.AuthorizeDotNetProcessor.logResponse()) - <--[Status=APPROVED ReasonResponseCode=1 ReasonResponseText=This transaction has been approved. ResponseCode=1 ResponseCodeText=This transaction has been approved. refTransId=null authCode=46LBD1 transId=40007184951]

or no status in response as in he post above.

 

I simply want to receive a message "there is not enough of balance on the account".

 

our software includes x_allow_partial_auth = true and Partial Auth setting in the test account is also on.