module Fuiou::Service
Constants
- ENCODE_TYPE_GBK
- INVOKE_COMMON_QUERY_REQUIRED_FIELDS
- INVOKE_PRE_CREATE_REQUIRED_FIELDS
Public Class Methods
invoke_common_query(params)
click to toggle source
订单查询: fundwx.fuiou.com/doc/#/scanpay/api?id=_34-%e8%ae%a2%e5%8d%95%e6%9f%a5%e8%af%a2
# File lib/fuiou/service.rb, line 23 def invoke_common_query(params) check_required_options(params, INVOKE_COMMON_QUERY_REQUIRED_FIELDS) payload = xmlify_payload(params) invoke_remote(Fuiou.fuiou_30_url, { req: payload }) end
invoke_pre_create(params)
click to toggle source
主扫统一下单: fundwx.fuiou.com/doc/#/scanpay/api?id=_32-%e4%b8%bb%e6%89%ab%e7%bb%9f%e4%b8%80%e4%b8%8b%e5%8d%95
# File lib/fuiou/service.rb, line 15 def invoke_pre_create(params) check_required_options(params, INVOKE_PRE_CREATE_REQUIRED_FIELDS) payload = xmlify_payload(params) invoke_remote(Fuiou.fuiou_21_url, { req: payload }) end
Private Class Methods
check_required_options(options, names)
click to toggle source
# File lib/fuiou/service.rb, line 53 def check_required_options(options, names) names.each do |name| warn("Fuiou Warn: missing required option: #{name}") unless options.has_key?(name) end end
invoke_remote(url, payload, options = {})
click to toggle source
# File lib/fuiou/service.rb, line 31 def invoke_remote(url, payload, options = {}) resp = RestClient.post( url, payload, { content_type: "application/x-www-form-urlencoded", charset: ENCODE_TYPE_GBK } ) Fuiou::Result.parse(resp.body) end
xmlify_payload(params)
click to toggle source
# File lib/fuiou/service.rb, line 43 def xmlify_payload(params) rsa_string = params.sort.map{|k,v| "#{k}=#{v}&" unless k.start_with?("sign") || k.start_with?("reserved")}.join rsa_string = rsa_string.chop if rsa_string.end_with?("&") sign = Fuiou::Sign.rsa_sign(rsa_string) xml = "<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"yes\"?><xml>#{params.sort.map { |k, v| "<#{k}>#{v}</#{k}>" }.join}<sign>#{sign}</sign></xml>" (xml.encode(ENCODE_TYPE_GBK)).encode(ENCODE_TYPE_GBK) end