class UmfCheckReqDataAndEncrypt

Public Instance Methods

doCheck(params) click to toggle source

参数校验 service对应必填字段校验 & 正则校验

# File lib/UmfCheckReqDataAndEncrypt.rb, line 16
def doCheck(params)
  service = params["service"]
  serviceRuleMap = ServiceRule
  # service对应的必填字段校验
  paramStr = serviceRuleMap[service]
  # 该service对应的必传字段数组
  if paramStr!=nil && paramStr.length>0
    arr = paramStr.split(',')
    arr.each{ |elem|
      if params[elem] == "" || params[elem] == nil
        UmfLogger.logInfoMsg("[UMF SDK]请求接口 service = " + service + " 的参数值 "+ elem + " 不能为空")
        UmfLogger.logInfoMsg("--------------------log end---------------------")
        exit
      end
    }
    # 历史订单查询接口mer_order_info_query
    # trade_no和order_id这两个字段必填字段传一个即可
    if service=="mer_order_info_query"
      order_id = params["order_id"]
      trade_no = params["trade_no"]
      if (""==order_id||nil==order_id) && (""==trade_no||nil==trade_no)
        UmfLogger.logInfoMsg("[UMF SDK]请求接口 service = " + service + " 的参数值 " + "order_id 和 trade_no" + " 不能同时为空")
        UmfLogger.logInfoMsg("--------------------log end---------------------")
        exit
      end
    end
  end
  # 该service对应的字段正则校验
  ruleMap = ReqRule
  ruleMapKeys = ruleMap.keys
  mapKeys = params.keys
  mapKeys.each{ |elem|
    value = params[elem]
    if !(ruleMapKeys.include?(elem))
      next
    elsif ruleMapKeys.include?(elem)
      regex = ruleMap[elem]
      if value!="" && value!=nil && regex!="" && regex!=nil
        #TODO 存在正则校验不通过的情况
        if regex.match(value)
          UmfLogger.logInfoMsg("[UMF SDK]请求接口 service = "+ service +" 的参数值 "+ elem +" 正则校验通过")
        else
          UmfLogger.logInfoMsg("[UMF SDK]请求接口 service = "+ service +" 的参数值 "+ elem +" 正则校验未通过,对应的正则表达式为 regex = " + regex)
          # UmfLogger.logInfoMsg("--------------------log end---------------------")
          # exit
        end
      end
    end
  }
end
doEncrypt(params) click to toggle source

敏感字段加密

# File lib/UmfCheckReqDataAndEncrypt.rb, line 69
def doEncrypt(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
    UmfLogger.logInfoMsg("[UMF SDK]请求接口 service = " + params["service"] + " 的参数值 " + elem +" 是敏感字段需要进行RSA公钥加密")
    # utf8 --> gbk
    val = value.encode('gbk','utf-8')
    params[elem] = UmfRSACryptUtil.new.encrypt(val)
  }
  return params
end