class GeeePay::Utils::HttpPost

Constants

DEFAULT_ERR_MSG

Public Class Methods

send_post(service_type, query_params, key) click to toggle source

发送请求

# File lib/geee_pay/utils/http_post.rb, line 10
def self.send_post(service_type, query_params, key)
  api_url = "#{GeeePay.api_base_url}/#{service_type}"
  # 对参数就行排序并签名
  sign_data, sign_str = GeeePay::Utils::Md5.sign(query_params, key)

  # 加签名的查询参数
  func_params = {"signData" => sign_data}

  func_all_params = query_params.merge(func_params)
  conn = Faraday.new(:url => api_url)

  # 设置超时时间
  conn.options.timeout = 20

  response = conn.post '', func_all_params
  html_response = response.body
  html_content = ''

  if GeeePay.debug_mode
    log_file = File.join(Rails.root, "log", "geee_pay.log")
    logger = Logger.new(log_file)
    logger.info('--------------GEEE PAY DEBUG--------------')
    logger.info("URL:#{api_url.to_s}")
    logger.info("PARAMS:#{func_all_params.to_s}")
    logger.info("SIGN_STR:#{sign_str}")
    logger.info("SIGN_DATA:#{sign_data}")
    logger.info("RESPONSE:#{html_response.force_encoding('UTF-8')}")
  end

  begin
    msg = JSON.parse(html_response)
  rescue JSON::ParserError => e
    html_content = html_response
    msg = JSON.parse(DEFAULT_ERR_MSG)
  end
  return msg, html_content
end