Class: UmfCheckReqDataAndEncrypt

Inherits:
Object
  • Object
show all
Defined in:
lib/UmfCheckReqDataAndEncrypt.rb

Instance Method Summary collapse

Instance Method Details

#doCheck(params) ⇒ Object

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



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 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) ⇒ Object

敏感字段加密



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# 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