require 'json' class MercadoPago::Client module Authentication def authenticate response = send_authentication_request @auth_response = JSON.parse(response) rescue RestClient::Exception => e @errors << I18n.t(:authentication_error, scope: :mercado_pago) raise RuntimeError.new e.message end private def send_authentication_request RestClient.post( 'https://api.mercadolibre.com/oauth/token', {:grant_type => 'client_credentials', :client_id => client_id, :client_secret => client_secret}, :content_type => 'application/x-www-form-urlencoded', :accept => 'application/json' ) end def client_id @payment_method.preferred_client_id end def client_secret @payment_method.preferred_client_secret end def access_token authenticate unless @auth_response @auth_response['access_token'] end end end