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