lib/active_merchant/billing/gateways/conekta.rb in activemerchant-1.79.2 vs lib/active_merchant/billing/gateways/conekta.rb in activemerchant-1.80.0

- old
+ new

@@ -21,45 +21,45 @@ add_order(post, money, options) add_payment_source(post, payment_source, options) add_details_data(post, options) - commit(:post, 'charges', post) + commit(:post, 'charges', post, options) end def authorize(money, payment_source, options = {}) post = {} add_order(post, money, options) add_payment_source(post, payment_source, options) add_details_data(post, options) post[:capture] = false - commit(:post, "charges", post) + commit(:post, 'charges', post, options) end def capture(money, identifier, options = {}) post = {} post[:order_id] = identifier add_order(post, money, options) - commit(:post, "charges/#{identifier}/capture", post) + commit(:post, "charges/#{identifier}/capture", post, options) end def refund(money, identifier, options) post = {} post[:order_id] = identifier add_order(post, money, options) - commit(:post, "charges/#{identifier}/refund", post) + commit(:post, "charges/#{identifier}/refund", post, options) end def void(identifier, options = {}) post = {} - commit(:post, "charges/#{identifier}/void", post) + commit(:post, "charges/#{identifier}/void", post, options) end def supports_scrubbing true end @@ -72,11 +72,11 @@ end private def add_order(post, money, options) - post[:description] = options[:description] || "Active Merchant Purchase" + post[:description] = options[:description] || 'Active Merchant Purchase' post[:reference_id] = options[:order_id] if options[:order_id] post[:currency] = (options[:currency] || currency(money)).downcase post[:monthly_installments] = options[:monthly_installments] if options[:monthly_installments] post[:amount] = amount(money) end @@ -171,39 +171,44 @@ def parse(body) return {} unless body JSON.parse(body) end - def headers(meta) + def headers(options) { - "Accept" => "application/vnd.conekta-v#{options[:version]}+json", - "Accept-Language" => "es", - "Authorization" => "Basic " + Base64.encode64("#{options[:key]}:"), - "RaiseHtmlError" => "false", - "Conekta-Client-User-Agent" => {"agent"=>"Conekta ActiveMerchantBindings/#{ActiveMerchant::VERSION}"}.to_json, - "X-Conekta-Client-User-Agent" => user_agent, - "X-Conekta-Client-User-Metadata" => meta.to_json + 'Accept' => "application/vnd.conekta-v#{@options[:version]}+json", + 'Accept-Language' => 'es', + 'Authorization' => 'Basic ' + Base64.encode64("#{@options[:key]}:"), + 'RaiseHtmlError' => 'false', + 'Conekta-Client-User-Agent' => {'agent'=>"Conekta ActiveMerchantBindings/#{ActiveMerchant::VERSION}"}.to_json, + 'X-Conekta-Client-User-Agent' => conekta_client_user_agent(options), + 'X-Conekta-Client-User-Metadata' => options[:meta].to_json } end + def conekta_client_user_agent(options) + return user_agent unless options[:application] + JSON.dump(JSON.parse(user_agent).merge!({application: options[:application]})) + end + def commit(method, url, parameters, options = {}) success = false begin - raw_response = parse(ssl_request(method, live_url + url, (parameters ? parameters.to_query : nil), headers(options[:meta]))) - success = (raw_response.key?("object") && (raw_response["object"] != "error")) + raw_response = parse(ssl_request(method, live_url + url, (parameters ? parameters.to_query : nil), headers(options))) + success = (raw_response.key?('object') && (raw_response['object'] != 'error')) rescue ResponseError => e raw_response = response_error(e.response.body) rescue JSON::ParserError raw_response = json_error(raw_response) end Response.new( success, - raw_response["message_to_purchaser"], + raw_response['message_to_purchaser'], raw_response, test: test?, - authorization: raw_response["id"] + authorization: raw_response['id'] ) end def response_error(raw_response) begin @@ -215,10 +220,10 @@ def json_error(raw_response) msg = 'Invalid response received from the Conekta API.' msg += " (The raw response returned by the API was #{raw_response.inspect})" { - "message" => msg + 'message' => msg } end end end end