I am having trouble doing split_tender transactions. I am using DirectPost because it is easier for me to work with at this time. Here is the content of my first post to:
https://test.authorize.net/gateway/transact.dll
x_allow_partial_auth => 1 x_description => Mine x_relay_response => TRUE x_delim_data => FALSE x_relay_url => http://XXXXXX.com/cgi-bin/transact_reflect x_invoice_num => 1234 x_email => julian at jlbprof dot com x_zip => 46225 x_city => Houston x_company => Julian Brown x_version => 3.1 x_address => 123 Fake St. x_card_num => 4111111111111111 x_exp_date => 10/2015 x_last_name => Brown x_first_name => Julian x_type => AUTH_CAPTURE x_state => TX x_cust_id => 3219 x_method => CC x_country => US x_phone => 713 555 1212 x_email_merchant => TRUE x_login => XXXXXX x_amount => 121.00 x_fp_sequence => 455668 x_fp_timestamp => 1357845637 x_fp_hash => 1e8d49130782e73c01568852c2d379c0
I am using a zip code trigger to get this to partially approve for $1.23 here is the response:
x_response_code :4: x_response_reason_code :295: x_response_reason_text :The amount of this request was only partially approved on the given prepaid card. An additional payment is required to fulfill the balance of this transaction.: x_avs_code :Y: x_auth_code :ALTRPC: x_trans_id :2182619104: x_method :CC: x_card_type :Visa: x_prepaid_balance_on_card :: x_prepaid_requested_amount :121.00: x_account_number :XXXX1111: x_first_name :Julian: x_last_name :Brown: x_company :Julian Brown: x_address :123 Fake St.: x_city :Houston: x_state :TX: x_zip :46225: x_country :US: x_phone :713 555 1212: x_fax :: x_email :julian at jlbprof dot com: x_invoice_num :1234: x_description :Mine: x_type :auth_capture: x_cust_id :3219: x_ship_to_first_name :: x_ship_to_last_name :: x_ship_to_company :: x_ship_to_address :: x_ship_to_city :: x_ship_to_state :: x_ship_to_zip :: x_ship_to_country :: x_amount :1.23: x_tax :0.00: x_duty :0.00: x_freight :0.00: x_tax_exempt :FALSE: x_po_num :: x_MD5_Hash :686F714EF3E47E6EF2FB87D55D385D52: x_cvv2_resp_code :: x_cavv_response :2: x_split_tender_id :109312: x_split_tender_status :Held: x_test_request :false:
I say way cool, and prepare my 2nd transaction
x_description => Mine x_relay_response => TRUE x_delim_data => FALSE x_relay_url => http://XXXXXX.com/cgi-bin/transact_reflect x_invoice_num => 1234 x_email => julian at jlbprof dot com x_zip => 46225 x_city => Houston x_company => Julian Brown x_version => 3.1 x_address => 123 Fake St. x_card_num => 4111111111111111 x_exp_date => 10/2015 x_last_name => Brown x_first_name => Julian x_type => AUTH_CAPTURE x_state => TX x_cust_id => 3219 x_method => CC x_country => US x_phone => 713 555 1212 x_email_merchant => TRUE x_login => XXXXXX x_split_tender_id => 109312 x_amount => 119.77 x_fp_sequence => 45563269 x_fp_timestamp => 1357845367 x_fp_hash => fde9d4ddd1d2471fa5c3701a84c8b4ff
Here I added the split tender id from my previous transaction and set the amount to the difference from the previous transaction and the originally requested amount.
I update the fingerprint by normal rules and here is the failed response:
x_response_code :3|4: x_response_reason_code :99|295: x_response_reason_text :This transaction cannot be accepted.|The amount of this request was only partially approved on the given prepaid card. An additional payment is required to fulfill the balance of this transaction.: x_avs_code :P|Y: x_auth_code :|ALTRPC: x_trans_id :0|2182619104: x_method :CC|CC: x_card_type :|Visa: x_prepaid_balance_on_card :|: x_prepaid_requested_amount :|121.00: x_account_number :|XXXX1111: x_first_name :: x_last_name :: x_company :: x_address :: x_city :: x_state :: x_zip :: x_country :: x_phone :: x_fax :: x_email :: x_invoice_num :: x_description :: x_type :auth_capture: x_cust_id :: x_ship_to_first_name :: x_ship_to_last_name :: x_ship_to_company :: x_ship_to_address :: x_ship_to_city :: x_ship_to_state :: x_ship_to_zip :: x_ship_to_country :: x_amount :119.77|1.23: x_tax :0.00: x_duty :0.00: x_freight :0.00: x_tax_exempt :FALSE: x_po_num :: x_MD5_Hash :5073253C8BE7569B7EA186FA2DCC9079: x_cvv2_resp_code :| : x_cavv_response :|: x_split_tender_id :109312: x_split_tender_status :Held: x_test_request :false:
99 is the rejection code that you get if your fingerprint is incorrect. I looked at this nine ways to Sunday and cannot figure this out. One thing I do know is if I remove the x_split_tender_id field the transaction succeeds which should indicate that the fingerprint is correct:
x_description => Mine x_relay_response => TRUE x_delim_data => FALSE x_relay_url => http://XXXXXX.com/cgi-bin/transact_reflect x_invoice_num => 1234 x_email => julian at jlbprof dot com x_zip => 46225 x_city => Houston x_company => Julian Brown x_version => 3.1 x_address => 123 Fake St. x_card_num => 4111111111111111 x_exp_date => 10/2015 x_last_name => Brown x_first_name => Julian x_type => AUTH_CAPTURE x_state => TX x_cust_id => 3219 x_method => CC x_country => US x_phone => 713 555 1212 x_email_merchant => TRUE x_login => XXXXX x_amount => 119.77 x_fp_sequence => 45563269 x_fp_timestamp => 1357845367 x_fp_hash => fde9d4ddd1d2471fa5c3701a84c8b4ff
And the response when I remove the split tender id.
x_response_code :1: x_response_reason_code :1: x_response_reason_text :This transaction has been approved.: x_avs_code :Y: x_auth_code :GVAVPN: x_trans_id :2182619163: x_method :CC: x_card_type :Visa: x_account_number :XXXX1111: x_first_name :Julian: x_last_name :Brown: x_company :Julian Brown: x_address :123 Fake St.: x_city :Houston: x_state :TX: x_zip :46225: x_country :US: x_phone :713 555 1212: x_fax :: x_email :julian at jlbprof dot com: x_invoice_num :1234: x_description :Mine: x_type :auth_capture: x_cust_id :3219: x_ship_to_first_name :: x_ship_to_last_name :: x_ship_to_company :: x_ship_to_address :: x_ship_to_city :: x_ship_to_state :: x_ship_to_zip :: x_ship_to_country :: x_amount :119.77: x_tax :0.00: x_duty :0.00: x_freight :0.00: x_tax_exempt :FALSE: x_po_num :: x_MD5_Hash :17F7B2BB753545EA84DCDD6F634F228D: x_cvv2_resp_code :: x_cavv_response :2: x_test_request :false:
The second transaction should clearly indicate that the fingerprint is correct yet it fails because of fingerprint. Does the presence of a split tender id change the rules for calculating the fingerprint?
Thanx
Julian
Solved! Go to Solution.
โ01-10-2013 12:03 PM
ok. Here is the C# that works
HMAC_MD5(transactionKey, loginID + "^" + sequence + "^" + timeStamp + "^" + amount + "^" + "^" + splitID);
so is the x_login^x_fp_sequence^x_fp_timestamp^x_amount^^x_split_tender_id
two ^^ between x_amount and x_split_render_id, the reason I think is that authorize.net is going to support x_currency_code some time in the future
x_login^x_fp_sequence^x_fp_timestamp^x_amount^x_currency_code^x_split_tender_id
P.S. I only tested on the test server.
โ01-10-2013 05:52 PM - edited โ01-10-2013 05:53 PM
ok. Here is the C# that works
HMAC_MD5(transactionKey, loginID + "^" + sequence + "^" + timeStamp + "^" + amount + "^" + "^" + splitID);
so is the x_login^x_fp_sequence^x_fp_timestamp^x_amount^^x_split_tender_id
two ^^ between x_amount and x_split_render_id, the reason I think is that authorize.net is going to support x_currency_code some time in the future
x_login^x_fp_sequence^x_fp_timestamp^x_amount^x_currency_code^x_split_tender_id
P.S. I only tested on the test server.
โ01-10-2013 05:52 PM - edited โ01-10-2013 05:53 PM
That works, but does not seem to be documented. Did you just guess at that? Or is it documented somewhere where almighty Google failed me?
Thanx
Julian
โ01-11-2013 07:46 AM
No it wasn't documentated, and I was try multiple way until this works.
โ01-11-2013 07:49 AM