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