class Skrill::Payment::Request
Constants
- API_HOST
- API_PATH
- OPTIONS_MAPPING
Attributes
error_message[R]
request_data[R]
status_id[R]
status_message[R]
transation_id[R]
Public Class Methods
new(config_data, payment_data)
click to toggle source
# File lib/skrill/payment/request.rb, line 25 def initialize(config_data, payment_data) @http_proxy = config_data.delete(:http_proxy) @request_data = map_data(config_data.merge(payment_data)) end
post(*data)
click to toggle source
# File lib/skrill/payment/request.rb, line 19 def self.post(*data) new(*data).post end
Public Instance Methods
post()
click to toggle source
# File lib/skrill/payment/request.rb, line 30 def post self.tap do response = send_payment_preparation session_identifier = response['sid'] if session_identifier.present? response = send_payment_confirmation(session_identifier) check_payment_status(response) else save_error(response) end end end
successful?()
click to toggle source
Checks if the request has been delivered and was successful.
@return [ true, false ] The payment success status.
@since 0.2.1
# File lib/skrill/payment/request.rb, line 49 def successful? error_message.nil? end
Private Instance Methods
check_payment_status(response)
click to toggle source
# File lib/skrill/payment/request.rb, line 80 def check_payment_status(response) transaction = response['transaction'] if transaction.blank? save_error(response) else save_transation_details(transaction) end end
connection()
click to toggle source
# File lib/skrill/payment/request.rb, line 100 def connection @connection ||= Faraday.new(API_HOST, connection_params) do |con| con.use(Faraday::Request::UrlEncoded) con.use(Faraday::Adapter::NetHttp) end end
connection_params()
click to toggle source
# File lib/skrill/payment/request.rb, line 107 def connection_params if @http_proxy.present? { :proxy => @http_proxy } else {} end end
map_data(input_data)
click to toggle source
# File lib/skrill/payment/request.rb, line 55 def map_data(input_data) input_data.tap do |data| OPTIONS_MAPPING.each do |given_key, api_key| value = data.delete(given_key) data[api_key] = value if value end end end
parse_response(response)
click to toggle source
# File lib/skrill/payment/request.rb, line 76 def parse_response(response) Hash.from_xml(response.body)['response'] end
save_error(response)
click to toggle source
# File lib/skrill/payment/request.rb, line 96 def save_error(response) @error_message = response['error']['error_msg'] end
save_transation_details(transaction)
click to toggle source
# File lib/skrill/payment/request.rb, line 90 def save_transation_details(transaction) @status_id = transaction['status'].to_i @status_message = transaction['status_msg'] @transation_id = transaction['id'].to_i end
send_payment_confirmation(session_identifier)
click to toggle source
# File lib/skrill/payment/request.rb, line 70 def send_payment_confirmation(session_identifier) confirmation_data = {sid: session_identifier, action: 'transfer'} raw_response = connection.post(API_PATH, confirmation_data) parse_response(raw_response) end
send_payment_preparation()
click to toggle source
# File lib/skrill/payment/request.rb, line 64 def send_payment_preparation preparation_data = request_data.merge(action: 'prepare') raw_response = connection.post(API_PATH, preparation_data) parse_response(raw_response) end