module AllpayWebService
Constants
- VERSION
Public Instance Methods
parse(trade_type:, response: res_xml = nil)
click to toggle source
# File lib/allpay/client.rb, line 475 def parse trade_type:, response: res_xml = nil res_hash = nil case trade_type when :create_trade, :verify_order_by_otp, :resend_otp if trade_type == :create_trade pattern = /<CreateTradeResult>(.+)<\/CreateTradeResult>/ elsif trade_type == :verify_order_by_otp pattern = /<VerifyOrderByOtpResult>(.+)<\/VerifyOrderByOtpResult>/ elsif trade_type == :resend_otp pattern = /<ResendOtpResult>(.+)<\/ResendOtpResult>/ end match_result = pattern.match response.body unless match_result.nil? encrypted_result = match_result[1] res_xml = decrypt(encrypted_result) end when :query_trade pattern = /<QueryTradeResult>(.+)<\/QueryTradeResult>/ match_result = pattern.match response.body unless match_result.nil? res_xml = CGI.unescapeHTML match_result[1] end when :do_action res_xml = decrypt(response.body) end begin parser = Nori.new(:advanced_typecasting => false) res_hash = parser.parse(res_xml)['Root']['Data'] unless res_xml.nil? end { "Xml" => res_xml, "Hash" => res_hash } end
request(method: "POST", service_url:, data:, is_soap_request: false, platform_id: nil)
click to toggle source
# File lib/allpay/client.rb, line 438 def request method: "POST", service_url:, data:, is_soap_request: false, platform_id: nil api_url = URI.parse(service_url) http = Net::HTTP.new(api_url.host, api_url.port) http.use_ssl = true if api_url.scheme == "https" req = Net::HTTP::Post.new(api_url.request_uri, initheader = { "Accept-Language" => "zh-tw", "Accept-Charset" => "utf-8", "Content-Type" => is_soap_request ? "application/soap+xml" : "application/x-www-form-urlencoded", "Host" => api_url.host }) if is_soap_request req.body = data else form_data = { "MerchantID" => @merchant_id, "XMLData" => data } form_data["PlatformID"] = platform_id unless platform_id.nil? req.set_form_data(form_data) end http_response = http.request(req) case http_response when Net::HTTPOK http_response when Net::HTTPClientError, Net::HTTPInternalServerError raise Net::HTTPError.new(http_response.message, http_response) else raise Net::HTTPError.new('Unexpected HTTP response.', http_response) end end