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