class UmfStringUtil

Public Instance Methods

getPlainSortByAnd(params) click to toggle source
# File lib/UmfStringUtil.rb, line 12
def getPlainSortByAnd(params)
  arg = ""
  paramter = {}
  if params.size>0
    keys = params.keys
    keys.each { |elem|
      if elem=="ret_url" || elem=="notify_url"
        params[elem] = CGI.escape(params[elem])
      end
      paramter = paramter.merge({elem+"="+params[elem].to_s => elem+"="+params[elem].to_s})
    }
    # 字母a到z排序后的数组
    # [["amount=1", "amount=1"], ["amt_type=RMB", "amt_type=RMB"]...]
    paramter = sorted_hash(paramter)
    # print paramter
    paramter.each{ |elem|
      arg = arg + elem[0] + "&"
    }
    # 去掉最后一个&字符
    arg = arg.chop
    return arg
  end
end
getPlainSortByAndWithSignType(params) click to toggle source

使用&符号组织签名明文串排序a-z 包含sign_type字段 做了urlencode

# File lib/UmfStringUtil.rb, line 67
def getPlainSortByAndWithSignType(params)
  arg = ""
  paramter = {}
  if params.size>0
    keys = params.keys
    keys.each { |elem|
      paramter = paramter.merge({elem+"="+URI::encode(params[elem].to_s) => elem+"="+URI::encode(params[elem].to_s)})
    }
    # 字母a到z排序后的数组
    paramter = sorted_hash(paramter)
    paramter.each{ |elem|
      arg = arg + elem[0].to_s + "&"
    }
    arg = arg.chop
    puts arg
    return arg
  else
    UmfLogger.logInfoMsg("[UMF SDK]获取请求参数明文字符串失败:传入参数为空!")
    exit
  end
end
getPlainSortByAndWithoutSignType(params) click to toggle source

使用&符号组织签名明文串排序a-z 去除sign_type字段 不做urlencode

# File lib/UmfStringUtil.rb, line 39
def getPlainSortByAndWithoutSignType(params)
  arg = ""
  paramter = {}
  if params.size>0
    keys = params.keys
    keys.each { |elem|
      # sign_type 不需要参与RAS签名
      if "sign_type" != elem
        paramter = paramter.merge({elem+"="+params[elem].to_s => elem+"="+params[elem].to_s})
      end
    }
    # 字母a到z排序后的数组
    # [["amount=1", "amount=1"], ["amt_type=RMB", "amt_type=RMB"]...]
    paramter = sorted_hash(paramter)
    paramter.each{ |elem|
      arg = arg + elem[0].to_s + "&"
    }
    # 去掉最后一个&字符
    arg = arg.chop
    return arg
  else
    UmfLogger.logInfoMsg("[UMF SDK]获取请求参数明文字符串失败:传入参数为空!")
    exit
  end
end
rasEncryptedStrEscape(params) click to toggle source
# File lib/UmfStringUtil.rb, line 90
def rasEncryptedStrEscape(params)
  chkKeys = [
      "card_id",
      "valid_date",
      "cvv2",
      "pass_wd",
      "identity_code",
      "card_holder",
      "recv_account",
      "recv_user_name",
      "identity_holder",
      "identityCode",
      "cardHolder",
      "mer_cust_name",
      "account_name",
      "bank_account",
      "endDate",
  ]
  chkKeys.each{ |elem|
    value = params[elem]
    if value=="" || value==nil
      next
    end
    params[elem] = CGI.escape(value)
  }
  return params
end

Private Instance Methods

sorted_hash(aHash) click to toggle source

hash升序排列

# File lib/UmfStringUtil.rb, line 121
def sorted_hash(aHash)
  return aHash.sort{|a,b| a.to_s <=> b.to_s}
end