lib/active_merchant/billing/gateways/forte.rb in activemerchant-1.86.0 vs lib/active_merchant/billing/gateways/forte.rb in activemerchant-1.87.0

- old
+ new

@@ -189,11 +189,11 @@ Response.new( success_from(response), message_from(response), response, - authorization: authorization_from(response), + authorization: authorization_from(response, parameters), avs_result: AVSResult.new(code: response['response']['avs_result']), cvv_result: CVVResult.new(response['response']['cvv_code']), test: test? ) end @@ -217,12 +217,16 @@ def message_from(response) response['response']['response_desc'] end - def authorization_from(response) - [response.try(:[], 'transaction_id'), response.try(:[], 'response').try(:[], 'authorization_code')].join('#') + def authorization_from(response, parameters) + if parameters[:action] == 'capture' + [response['transaction_id'], response.dig('response', 'authorization_code'), parameters[:transaction_id], parameters[:authorization_code]].join('#') + else + [response['transaction_id'], response.dig('response', 'authorization_code')].join('#') + end end def endpoint "/accounts/act_#{@options[:account_id].strip}/locations/loc_#{@options[:location_id].strip}/transactions/" end @@ -251,16 +255,16 @@ def split_authorization(authorization) authorization.split('#') end def authorization_code_from(authorization) - _, authorization_code = split_authorization(authorization) - authorization_code + _, authorization_code, _, original_auth_authorization_code = split_authorization(authorization) + original_auth_authorization_code.present? ? original_auth_authorization_code : authorization_code end def transaction_id_from(authorization) - transaction_id, _ = split_authorization(authorization) - transaction_id + transaction_id, _, original_auth_transaction_id, _= split_authorization(authorization) + original_auth_transaction_id.present? ? original_auth_transaction_id : transaction_id end end end end