lib/active_merchant/billing/gateways/mercado_pago.rb in activemerchant-1.75.0 vs lib/active_merchant/billing/gateways/mercado_pago.rb in activemerchant-1.76.0

- old
+ new

@@ -112,14 +112,16 @@ post end def add_additional_data(post, options) post[:sponsor_id] = options[:sponsor_id] + post[:device_id] = options[:device_id] if options[:device_id] post[:additional_info] = { ip_address: options[:ip_address] - } + }.merge(options[:additional_info] || {}) + add_address(post, options) add_shipping_address(post, options) end def add_customer_data(post, payment, options) @@ -189,11 +191,11 @@ def commit(action, path, parameters) if ["capture", "void"].include?(action) response = parse(ssl_request(:put, url(path), post_data(parameters), headers)) else - response = parse(ssl_post(url(path), post_data(parameters), headers)) + response = parse(ssl_post(url(path), post_data(parameters), headers(parameters))) end Response.new( success_from(action, response), message_from(response), @@ -219,11 +221,11 @@ def authorization_from(response, params) [response["id"], params[:transaction_amount]].join("|") end def post_data(parameters = {}) - parameters.to_json + parameters.clone.tap { |p| p.delete(:device_id) }.to_json end def error_code_from(action, response) unless success_from(action, response) if cause = response["cause"] @@ -234,16 +236,18 @@ end end def url(action) full_url = (test? ? test_url : live_url) - full_url + "/#{action}?access_token=#{@options[:access_token]}" + full_url + "/#{action}?access_token=#{CGI.escape(@options[:access_token])}" end - def headers - { + def headers(options = {}) + headers = { "Content-Type" => "application/json" } + headers['X-Device-Session-ID'] = options[:device_id] if options[:device_id] + headers end def handle_response(response) case response.code.to_i when 200..499