class Webcomm
Public Class Methods
new(config, hk_id, logger)
click to toggle source
# File lib/whv_nz/webcomm.rb, line 7 def initialize(config, hk_id, logger) @hk_id = hk_id @logger = logger @config = config @conn = Faraday.new(:url => 'https://webcomm.paymark.co.nz/hosted/') do |faraday| faraday.request :url_encoded faraday.response :logger, @logger, { :bodies => false } faraday.use WebcommMiddleware faraday.use FaradayMiddleware::Gzip faraday.use FaradayMiddleware::FollowRedirects faraday.adapter Faraday.default_adapter end end
Public Instance Methods
hk()
click to toggle source
# File lib/whv_nz/webcomm.rb, line 41 def hk res = @conn.get do |req| req.params['hk'] = @hk_id end doc = Nokogiri::HTML(res.body) @rm_id = doc.xpath('//form').first.attributes["action"].value.split("=").last @logger.info "rm_id: #{@rm_id}" end
hkc()
click to toggle source
# File lib/whv_nz/webcomm.rb, line 73 def hkc if $whv.success @logger.info "exit" exit 2 end res = @conn.post do |req| req.params['hkc'] = @hkc_id req.params['rm'] = @rm_id credit_card = @config["credit_card"] req.body = { "cardnumber" => credit_card["cardnumber"], "use_card_security_code" => "Y", "enforce_card_security_code" => "N", "enforce_card_security_code_3party" => "Y", "enforce_card_security_code_futurepay" => "Y", "cardverificationcode" => credit_card["cardverificationcode"], "expirymonth" => credit_card["expirymonth"], "expiryyear" => credit_card["expiryyear"], "hk" => @hk_id, "hosted_responsive_format" => "N", "cardtype" => "MASTERCARD", "future_pay" => "N", "future_pay_save_only" => "", "cardholder" => credit_card["cardholder"], "pay_now" => "Pay Now" }.to_query end @logger.info res.body $whv.data["success"] = true end
pay()
click to toggle source
# File lib/whv_nz/webcomm.rb, line 24 def pay send_request "hk" send_request "rm" send_request "hkc" end
rm()
click to toggle source
# File lib/whv_nz/webcomm.rb, line 52 def rm res = @conn.post do |req| req.params['rm'] = @rm_id req.body = { "hk" => @hk_id, "hosted_responsive_format" => "N", "card_type_MASTERCARD.x" => "54", "card_type_MASTERCARD.y" => "15", "card_type_MASTERCARD" => "MASTERCARD", "processingStage" => "card_entry", "future_pay" => "", "future_pay_save_only" => "" }.to_query end form = Nokogiri::HTML(res.body).xpath('//form').first @hkc_id = form.attributes["action"].value.split("&").first.split("=").last @logger.info "hkc_id: #{@hkc_id}" end
send_request(form)
click to toggle source
# File lib/whv_nz/webcomm.rb, line 30 def send_request(form) @logger.info("Start(webcomm): " + form) send form @logger.info("Finish(webcomm): " + form) rescue Faraday::ClientError => e @logger.error(e) Rollbar.error(e) retry end