cancel
Showing results for 
Search instead for 
Did you mean: 

Do the fingerprint rules change if split tender id is present?

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

 

 

 

jlbprof4567
Member
1 ACCEPTED SOLUTION

Accepted Solutions

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.

View solution in original post

RaynorC1emen7
Expert
3 REPLIES 3

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.

RaynorC1emen7
Expert

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

No it wasn't documentated, and I was try multiple way until this works.