class UmfService

Public Class Methods

addMerPrivateCertMap(merId,privateKeyPath) click to toggle source

添加私钥

# File lib/UmfService.rb, line 498
def UmfService.addMerPrivateCertMap(merId,privateKeyPath)
  $merId = $merId.merge({merId=>merId})
  $privateKeyPath = $privateKeyPath.merge(merId=>privateKeyPath)
end
new(merId,privateKeyPath) click to toggle source

构造方法

# File lib/UmfService.rb, line 23
def initialize merId,privateKeyPath
  if merId==nil || merId==''
    return
  end
  if privateKeyPath==nil || privateKeyPath==''
    return
  end
  $merId = $merId.merge({merId=>merId})
  $privateKeyPath = $privateKeyPath.merge(merId=>privateKeyPath)
end

Public Instance Methods

H5AutoConnectMap(params) click to toggle source

H5直连-范围URL地址

# File lib/UmfService.rb, line 131
def H5AutoConnectMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service"=>"active_scancode_order_new" , "auto_pay" => "TRUE"}
  param = param.merge service
  reqDataGet = UmfMerToPlat.new.makeRequestDataByGet(param)
  get_url = reqDataGet.getUrl
  UmfLogger.logInfoMsg("[UMF SDK] 公众号支付 请求 service = active_scancode_order_new 生成的getUrl = " + get_url)
  return get_url
end
H5ConnectMap(params) click to toggle source

H5直连-返回请求参数

# File lib/UmfService.rb, line 144
def H5ConnectMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "active_scancode_order_new"}
  param = param.merge service
  return plainSortByAndPost(param)
end
H5FrontPageMap(params) click to toggle source

H5收银台 H5收银台—生成get后的请求参数,商户只需要拼接URL进行get请求即可

# File lib/UmfService.rb, line 51
def H5FrontPageMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "pay_req_h5_frontpage"}
  param = param.merge service
  reqDataGet = UmfMerToPlat.new.makeRequestDataByGet(param)
  get_url = reqDataGet.getUrl
  UmfLogger.logInfoMsg("[UMF SDK] H5收银台 请求 service = pay_req_h5_frontpage 生成的getUrl = " + get_url)
  return get_url
end
PublicPaymentMap(params) click to toggle source

公众号支付 公众号支付–生成get后的请求参数,商户只需要拼接URL进行get请求即可

# File lib/UmfService.rb, line 65
def PublicPaymentMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "publicnumber_and_verticalcode"}
  param = param.merge service
  reqDataGet = UmfMerToPlat.new.makeRequestDataByGet(param)
  get_url = reqDataGet.getUrl
  UmfLogger.logInfoMsg("[UMF SDK] 公众号支付 请求 service = publicnumber_and_verticalcode 生成的getUrl = " + get_url)
  return get_url
end
WebFrontPagePayMap(params) click to toggle source

Web收银台 Web收银台—生成get后的请求参数,商户只需要拼接URL进行get请求即可

# File lib/UmfService.rb, line 37
def WebFrontPagePayMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "req_front_page_pay"}
  param = param.merge service
  reqDataGet = UmfMerToPlat.new.makeRequestDataByGet(param)
  get_url = reqDataGet.getUrl
  UmfLogger.logInfoMsg("[UMF SDK] Web收银台 请求 service = req_front_page_pay 生成的getUrl = " + get_url)
  return get_url
end
activeNewScanPaymentMap(params) click to toggle source

收款 : 扫码支付 主扫支付

# File lib/UmfService.rb, line 121
def activeNewScanPaymentMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "active_scancode_order_new"}
  param = param.merge service
  return plainSortByAndPost(param)
end
activeScanPaymentMap(params) click to toggle source

收款 : 扫码支付 主扫支付

# File lib/UmfService.rb, line 112
def activeScanPaymentMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "active_scancode_order"}
  param = param.merge service
  return plainSortByAndPost(param)
end
addChildMerInfoMap(params) click to toggle source

子商户入网–添加子商户方法

# File lib/UmfService.rb, line 533
def addChildMerInfoMap(params)
  UmfLogger.logInfoMsg("--------------------log start---------------------")
  UmfLogger.logInfoMsg("[UMF SDK 子商户入网]本次请求原始参数 " + params.to_s)
  param = {
      "merId"=>params["merId"],
      "merName"=>UmfRSACryptUtil.new.encrypt(params["merName"]),
      "merType"=>params["merType"],
      "contActsName"=>UmfRSACryptUtil.new.encrypt(params["contActsName"]),
      "mobileNo"=>params["mobileNo"],
      "licenseType"=>params["licenseType"],
      "licenseNo"=>params["licenseNo"],
      "organizationId"=>params["organizationId"],
      "taxPayerNum"=>params["taxPayerNum"],
      "lawyer"=>UmfRSACryptUtil.new.encrypt(params["lawyer"]),
      "cardNo"=>UmfRSACryptUtil.new.encrypt(params["cardNo"]),
      "bankName"=>UmfRSACryptUtil.new.encrypt(params["bankName"]),
      "bankAccount"=>UmfRSACryptUtil.new.encrypt(params["bankAccount"]),
      "province"=>params["province"],
      "areaCode"=>params["areaCode"],
      "merNotifyUrl"=>params["merNotifyUrl"],
      "pubPriFlag"=>params["pubPriFlag"],
      "bankBrhName"=>UmfRSACryptUtil.new.encrypt(params["bankBrhName"]),
  }
  UmfLogger.logInfoMsg("[UMF SDK 子商户入网]本次请求处理后参数 " + param.to_s)
  jsonStr = param.to_json
  signature = UmfRSACryptUtil.new.sign(jsonStr,params["merId"],'sha256')
  headers = {
      "Content-type" => "application/json;charset=utf-8",
      "Signature" => signature,
      "Authorization" => "Bearer"+ getTokenMap
  }
  respObj = UmfHttp.new.httpRequestWithJson(UMF_RESTPAY_ADDCHILDMERINFO,true,jsonStr,headers)
  return respObj
end
cancelTradeMap(params) click to toggle source

撤销—撤销方法

# File lib/UmfService.rb, line 236
def cancelTradeMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "mer_cancel"}
  param = param.merge service
  return plainSortByAndPost(param)
end
changeChildMerInfoMap(params) click to toggle source

子商户入网–修改子商户信息方法

# File lib/UmfService.rb, line 604
def changeChildMerInfoMap(params)
  UmfLogger.logInfoMsg("--------------------log start---------------------")
  UmfLogger.logInfoMsg("[UMF SDK 子商户入网]本次请求原始参数 " + params.to_s)
  param = {
      "merId"=>params["merId"],
      "merName"=>UmfRSACryptUtil.new.encrypt(params["merName"]),
      "merType"=>params["merType"],
      "contActsName"=>UmfRSACryptUtil.new.encrypt(params["contActsName"]),
      "mobileNo"=>params["mobileNo"],
      "licenseType"=>params["licenseType"],
      "licenseNo"=>params["licenseNo"],
      "organizationId"=>params["organizationId"],
      "taxPayerNum"=>params["taxPayerNum"],
      "lawyer"=>UmfRSACryptUtil.new.encrypt(params["lawyer"]),
      "cardNo"=>UmfRSACryptUtil.new.encrypt(params["cardNo"]),
      "bankName"=>UmfRSACryptUtil.new.encrypt(params["bankName"]),
      "bankAccount"=>UmfRSACryptUtil.new.encrypt(params["bankAccount"]),
      "province"=>params["province"],
      "areaCode"=>params["areaCode"],
      "merNotifyUrl"=>params["merNotifyUrl"],
      "pubPriFlag"=>params["pubPriFlag"],
      "bankBrhName"=>UmfRSACryptUtil.new.encrypt(params["bankBrhName"]),
  }
  UmfLogger.logInfoMsg("[UMF SDK 子商户入网]本次请求处理后参数 " + param.to_s)
  jsonStr = param.to_s
  signature = UmfRSACryptUtil.new.sign(jsonStr,params["merId"],'sha256')
  headers = {
      "Content-type" => "application/json;charset=utf-8",
      "Signature" => signature,
      "Authorization" => "Bearer" + getTokenMap
  }
  respObj = UmfHttp.new.httpRequestWithJson(UMF_RESTPAY_CHANGECHILDREBUT,true,jsonStr,headers)
  return respObj
end
creditCardAuthenticationMap(params) click to toggle source

鉴权—借记卡实名认证

# File lib/UmfService.rb, line 348
def creditCardAuthenticationMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "comm_auth"}
  param = param.merge service
  param["version"] = "1.0"
  return plainSortByAndPost(param)
end
creditDirectMap(params) click to toggle source

收款—信用卡直连

# File lib/UmfService.rb, line 102
def creditDirectMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "credit_direct_pay" , "pay_type" => "CREDITCARD"}
  param = param.merge service
  return plainSortByAndPost(param)
end
debitCardAuthenticationMap(params) click to toggle source

鉴权—借记卡实名认证

# File lib/UmfService.rb, line 336
def debitCardAuthenticationMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "comm_auth"}
  param = param.merge service
  param["version"] = "1.0"
  return plainSortByAndPost(param)
end
debitDirectMap(params) click to toggle source

收款 : 借记卡直连

# File lib/UmfService.rb, line 92
def debitDirectMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service"=>"debit_direct_pay" , "pay_type"=>"DEBITCARD"}
  param = param.merge service
  return plainSortByAndPost(param)
end
epaymentOrderMap(params) click to toggle source

E秒付

# File lib/UmfService.rb, line 316
def epaymentOrderMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "epay_direct_req"}
  param = param.merge service
  return plainSortByAndPost(param)
end
generalRefundMap(params) click to toggle source

退款—普通退款方法

# File lib/UmfService.rb, line 246
def generalRefundMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "mer_refund"}
  param = param.merge service
  return plainSortByAndPost(param)
end
generateSign(params) click to toggle source

传入请求参数,成sign字段

# File lib/UmfService.rb, line 481
def generateSign(params)
  plain = UmfStringUtil.new.getPlainSortByAndWithoutSignType(params)
  sign = UmfRSACryptUtil.new.sign(plain,params['mer_id'],'sha1')
  return sign
end
getTokenMap() click to toggle source

子商户入网部分


子商户入网–获取token方法

# File lib/UmfService.rb, line 509
def getTokenMap
  # token在有效期内
  if $spayRestPayAccessTokenTime+$spayRestPayExpiresIn >= Time.new.to_i
    return $spayRestPayAccessToken
  end

  params = {
      "grant_type"=>"client_credentials",
      "client_id"=>UmfConfig.umf_mer_client_id ,
      "client_secret"=>UmfConfig.umf_mer_client_secret
  }
  UmfLogger.logInfoMsg("--------------------log start---------------------")
  UmfLogger.logInfoMsg("[UMF SDK 子商户入网]本次请求原始参数 " + params.to_s)
  jsonStr = params.to_json
  headers = {'Content-Type' => 'application/json'}
  respObj = UmfHttp.new.httpRequestWithJson(UMF_RESTPAY_AUTHORIZE,true,jsonStr,headers)
  $spayRestPayAccessToken = respObj['access_token']
  $spayRestPayAccessTokenTime = Time.new.to_i # 1970年到指定日期的秒数 当前的秒数
  $spayRestPayExpiresIn = respObj['expires_in'].to_i # 字符串转整数
  return respObj['access_token']
end
identityAuthenticationMap(params) click to toggle source

鉴权—身份认证

# File lib/UmfService.rb, line 359
def identityAuthenticationMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "comm_auth"}
  param = param.merge service
  param["version"] = "1.0"
  return plainSortByAndPost(param)
end
massTransferRefundMap(params) click to toggle source

退款—批量转账退费请求

# File lib/UmfService.rb, line 256
def massTransferRefundMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "split_refund_req"}
  param = param.merge service
  return plainSortByAndPost(param)
end
mobileGenerateSignMap(params) click to toggle source

APP支付—生成签名

# File lib/UmfService.rb, line 452
def mobileGenerateSignMap(params)
  if params['merId']==nil || params['merId']==''
    puts '[UMF SDK]签名参数商户号为空,请传入商户号'
    return
  end
  if params['orderId']==nil || params['orderId']==''
    puts '[UMF SDK]签名参数订单号为空,请传入订单号'
    return
  end
  if params['orderDate']==nil ||params['orderDate']==''
    puts '[UMF SDK]签名参数订单日期为空,请传入订单日期'
    return
  end
  if params['amount']==nil || params['amount']==''
    puts '[UMF SDK]签名参数订单金额为空,请传入订单金额'
    return
  end
  # TODO 正则校验
  merId = params['merId']
  orderId = params['orderId']
  orderDate = params['orderDate']
  amount = params['amount']
  plain = merId + orderId + amount + orderDate
  sign = UmfRSACryptUtil.new.mobileGenerateSign(plain,merId,'sha1')
  return sign
end
mobileOrderMap(params) click to toggle source

APP支付下单

# File lib/UmfService.rb, line 442
def mobileOrderMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "pay_req"}
  param = param.merge service
  return plainSortByAndPost(param)
end
notifyChildParserMap(notifyChildParamsStr) click to toggle source

子商户入网异步通知—联动通知商户数据,SDK解析结果

# File lib/UmfService.rb, line 658
def notifyChildParserMap(notifyChildParamsStr)
  if notifyChildParamsStr.length<0
    return
  end
  notifyParamsArr = notifyChildParamsStr.split('&')
  map = {}
  notifyParamsArr.each { |elem|
    arr = elem.split('=',2)
    map[arr[0]] = arr[1]
  }
  sign = map['sign']
  map.delete('sign')
  plain = UmfStringUtil.new.getPlainSortByAndWithoutSignType(map)

  verifyRet = UmfRSACryptUtil.new.verify(plain,sign,'sha1')
  if verifyRet == true
    puts '[UMF SDK 子商户入网] 平台通知数据验签成功'
    return map
  else
    puts '[UMF SDK 子商户入网] 平台通知数据验签失败'
    exit
  end
end
notifyDataParserMap(notifyParamsStr) click to toggle source

异步通知

# File lib/UmfService.rb, line 391
def notifyDataParserMap(notifyParamsStr)
  if notifyParamsStr.length<0
    return
  end
  # 联动发送异步通知URL地址后的参数
  notifyParamsArr = notifyParamsStr.split('&')
  map = {}
  sign = ''
  notifyParamsArr.each { |elem|
    arr = elem.split('=',2)
    if arr[0]=='sign'
      sign = CGI.unescape(arr[1])
      next
    elsif arr[0]=='sign_type'
      next
    else
      map[arr[0]] = CGI.unescape(arr[1])
    end
  }
  plain = UmfStringUtil.new.getPlainSortByAndWithoutSignType(map)
  verifyRet = UmfRSACryptUtil.new.verify(plain,sign,'sha1')
  if verifyRet
    puts '[UMF SDK] 平台通知数据验签成功'
    map.delete('version')
    return map
  else
    puts '[UMF SDK] 平台通知数据验签失败'
  end
end
pBankDirectMap(params) click to toggle source

收款 : 网银直连 网银直连SDK提供请求的最终URL生成,商户可以直接加载URL调起对应的支付方式

# File lib/UmfService.rb, line 79
def pBankDirectMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "pay_req_split_direct"}
  param = param.merge service
  reqDataGet = UmfMerToPlat.new.makeRequestDataByGet(param)
  get_url = reqDataGet.getUrl
  UmfLogger.logInfoMsg("[UMF SDK] 网银直连 请求 service = pay_req_split_direct 生成的getUrl = " + get_url)
  return get_url
end
passiveScanPaymentMap(params) click to toggle source

被扫支付

# File lib/UmfService.rb, line 154
def passiveScanPaymentMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "passive_scancode_pay"}
  param = param.merge service
  return plainSortByAndPost(param)
end
paymentOrderMap(params) click to toggle source

付款—下单

# File lib/UmfService.rb, line 286
def paymentOrderMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "transfer_direct_req"}
  param = param.merge service
  return plainSortByAndPost(param)
end
publicVerticalMap(params) click to toggle source

立码付API

# File lib/UmfService.rb, line 326
def publicVerticalMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "verticalcode_order"}
  param = param.merge service
  return plainSortByAndPost(param)
end
queryAccountBalanceMap(params) click to toggle source

付款—余额查询

# File lib/UmfService.rb, line 306
def queryAccountBalanceMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "query_account_balance"}
  param = param.merge service
  return plainSortByAndPost(param)
end
queryMerStateMap(params) click to toggle source

子商户入网–查询审核状态方法

# File lib/UmfService.rb, line 641
def queryMerStateMap(params)
  UmfLogger.logInfoMsg("--------------------log start---------------------")
  UmfLogger.logInfoMsg("[UMF SDK 子商户入网]本次请求原始参数 " + params.to_s)
  merId = params["merId"]
  licenseNo = params["licenseNo"]
  url = UMF_RESTPAY_SELECTCHILDMERSTATE + "?merId=" + merId + "&licenseNo=" + licenseNo
  headers = {
      "Content-type" => "application/json;charset=utf-8",
      "Authorization" => "Bearer" + getTokenMap
  }
  respObj = UmfHttp.new.httpRequestWithJson(url,false,"",headers)
  return respObj
end
queryPaymentStatusMap(params) click to toggle source

付款—付款状态查询

# File lib/UmfService.rb, line 296
def queryPaymentStatusMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "transfer_query"}
  param = param.merge service
  return plainSortByAndPost(param)
end
queryRefundStateMap(params) click to toggle source

退款—退款状态查询方法

# File lib/UmfService.rb, line 266
def queryRefundStateMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "mer_refund_query"}
  param = param.merge service
  return plainSortByAndPost(param)
end
queryhistoryOrderMap(params) click to toggle source

订单查询—查询历史订单方法

# File lib/UmfService.rb, line 215
def queryhistoryOrderMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "mer_order_info_query"}
  param = param.merge service
  return plainSortByAndPost(param)
end
querytodayOrderMap(params) click to toggle source

订单查询—查询当天订单状态

# File lib/UmfService.rb, line 226
def querytodayOrderMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "query_order"}
  param = param.merge service
  return plainSortByAndPost(param)
end
quickCancelSurrenderMap(params) click to toggle source

收款—快捷支付解约

# File lib/UmfService.rb, line 204
def quickCancelSurrenderMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "unbind_mercust_protocol_shortcut"}
  param = param.merge service
  return plainSortByAndPost(param)
end
quickGetMessageMap(params) click to toggle source

收款—快捷支付向平台获取短信验证码方法

# File lib/UmfService.rb, line 174
def quickGetMessageMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "sms_req_shortcut"}
  param = param.merge service
  return plainSortByAndPost(param)
end
quickPayConfirmMap(params) click to toggle source

收款—快捷支付确认支付

# File lib/UmfService.rb, line 184
def quickPayConfirmMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "confirm_pay_shortcut"}
  param = param.merge service
  return plainSortByAndPost(param)
end
quickPayOrderMap(params) click to toggle source

收款—快捷支付下单方法

# File lib/UmfService.rb, line 164
def quickPayOrderMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "apply_pay_shortcut"}
  param = param.merge service
  return plainSortByAndPost(param)
end
quickQuerybankSupportMap(params) click to toggle source

收款—快捷支付获取银行卡列表

# File lib/UmfService.rb, line 194
def quickQuerybankSupportMap(params)
    pubParams = publicParams
    param = pubParams.merge params
    service = {"service" => "query_mer_bank_shortcut"}
    param = param.merge service
    return plainSortByAndPost(param)
end
reconciliationDownloadMap(params) click to toggle source

对账

# File lib/UmfService.rb, line 370
def reconciliationDownloadMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "download_settle_file"}
  param = param.merge service
  reqDataPost = UmfMerToPlat.new.makeRequestDataByPost(param)
  post_url = reqDataPost.getUrl
  mapfield = reqDataPost.getField
  output = UmfHttp.new.httpPost(post_url,mapfield)
  bool = writeSettle(params["mer_id"],params["settle_date"],params["settle_path"],output)
  if bool
    puts "[UMF SDK]对账文件写入本地成功"
    return true
  else
    puts "[UMF SDK]对账文件写入本地失败"
    return false
  end
end
remedyRefundInformationMap(params) click to toggle source

退款—退费信息补录方法

# File lib/UmfService.rb, line 276
def remedyRefundInformationMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "refund_info_replenish"}
  param = param.merge service
  return plainSortByAndPost(param)
end
responseChildNotifyMap(params) click to toggle source

子商户入网异步通知—商户响应联动通知SDK生成字符串 该字符串拼装在HTML响应中的head中的meta标签CONTENT中

# File lib/UmfService.rb, line 684
def responseChildNotifyMap(params)
  merMap = {}
  merMap["merId"] = params["merId"]
  merMap["licenseNo"] = params["licenseNo"]
  merMap["ret_code"] = "0000"
  merPlain = UmfStringUtil.new.getPlainSortByAndWithoutSignType(merMap)
  merSign = UmfRSACryptUtil.new.sign(merPlain,params["merId"],"sha1")
  mer2UmfPlatStr = merPlain + "&sign=" + merSign
  return mer2UmfPlatStr
end
responseUMFMap(params) click to toggle source

异步通知-商户返回联动字符串拼接

# File lib/UmfService.rb, line 423
def responseUMFMap(params)
  merMap = {}
  merMap['mer_date'] = params['mer_date']
  merMap['mer_id'] = params['mer_id']
  merMap['order_id'] = params['order_id']
  merMap['ret_code'] = '0000'
  merMap['ret_msg'] = 'success'
  merMap['version'] = '4.0'
  merPlain = UmfStringUtil.new.getPlainSortByAndWithoutSignType(merMap)
  merSign = UmfRSACryptUtil.new.sign(merPlain,params['mer_id'],'sha1')
  mer2UmfPlatStr = 'mer_date=' + merMap['mer_date'] + '&' +
      'mer_id=' + merMap['mer_id'] + '&' +
      'order_id=' + merMap['order_id'] + '&' +
      'ret_code=0000&ret_msg=success&sign_type=RSA&version=4.0&sign=' + merSign
  return mer2UmfPlatStr
end
splitFileDownloadMap(params) click to toggle source

分账—分账文件下载

# File lib/UmfService.rb, line 727
def splitFileDownloadMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "download_settle_file"}
  param = param.merge service
  reqDataPost = UmfMerToPlat.new.makeRequestDataByPost(param)
  post_url = reqDataPost.getUrl
  mapfield = reqDataPost.getField
  output = UmfHttp.new.httpPost(post_url,mapfield)
  bool = writeSettle(params["mer_id"],params["settle_date"],params["settle_path"],output)
  if bool
    puts "[UMF SDK]对账文件写入本地成功"
    return true
  else
    puts "[UMF SDK]对账文件写入本地失败"
    return false
  end
end
splitRefundMap(params) click to toggle source

分账—分账退费

# File lib/UmfService.rb, line 717
def splitRefundMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "mer_refund"}
  param = param.merge service
  return plainSortByAndPost(param)
end
splitReqMap(params) click to toggle source

分账—分账请求针对标准分账的延时分账

# File lib/UmfService.rb, line 697
def splitReqMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "split_req"}
  param = param.merge service
  return plainSortByAndPost(param)
end
splitStateMap(params) click to toggle source

分账—分账状态查询

# File lib/UmfService.rb, line 707
def splitStateMap(params)
  pubParams = publicParams
  param = pubParams.merge params
  service = {"service" => "query_split_order"}
  param = param.merge service
  return plainSortByAndPost(param)
end
uploadMerFileMap(params,files) click to toggle source

子商户入网–上传商户资质方法

# File lib/UmfService.rb, line 570
def uploadMerFileMap(params,files)
  UmfLogger.logInfoMsg('--------------------log start---------------------')
  UmfLogger.logInfoMsg('[UMF SDK 子商户入网]本次请求原始参数 ' + params.to_s)
  UmfLogger.logInfoMsg('[UMF SDK 子商户入网]本次请求上传文件 ' + files.to_s)
  jsonStr = params.to_json
  signature = UmfRSACryptUtil.new.sign(jsonStr,params['merId'],'sha256')
  url = UMF_RESTPAY_UPLOADCHILDFILE + '?data=' + CGI.escape(jsonStr)
  body = ""
  boundary = '---------------------' + Time.new.strftime('%Y%m%d')
  files.each{ |elem|
    if !(File.exist?(elem))
      next
    end
    body = body + "\r\n--" + boundary
    data = File.binread(elem)
    v = elem.split('/').last
    body = body + "\r\n" + 'Content-Disposition: form-data; name="file"; filename="' + v + '"' + "\r\n"+
                           'Content-Type: application/octet-stream' + "\r\n" +
                           '' + "\r\n" +
                           data
  }
  body = body + "\r\n--" + boundary + "--\r\n"
  headers = {
      'Content-Type'=> 'multipart/form-data; boundary=' + boundary,
      'Signature' => signature,
      'Authorization' => 'Bearer' + getTokenMap
  }
  respObj = UmfHttp.new.httpRequestWithJson(url,true,body,headers)
  return respObj
end
verifySign(plain,sign,algorithmType) click to toggle source

验签方法 @param string plain 联动返回明文字符串按序拼接(明文串去除sign_type字段和sign字段) @param string $sign 密文sign字段 @return bool

# File lib/UmfService.rb, line 492
def verifySign(plain,sign,algorithmType)
  return UmfRSACryptUtil.new.verify(plain,sign,algorithmType)
end
writeSettle(mer_id,settle_date,settle_path,content) click to toggle source

对账文件下载后 写入数据到本地

# File lib/UmfService.rb, line 748
def writeSettle(mer_id,settle_date,settle_path,content)
  if mer_id=='' || settle_date=='' || settle_path=='' || content==''
    mer_id==nil || settle_date==nil || settle_path==nil || content==nil
    return false
  end
  lastChar = settle_path[-1,1]
  if lastChar == "/"
    filepath = settle_path + mer_id + "_" + settle_date + ".txt"
  else
    filepath = settle_path + "/" + mer_id + "_" + settle_date + ".txt"
  end
  settle_content = content.encode('utf-8','gbk')
  bool = File.open(filepath, "w+") { |file|
    file.write(settle_content)
  }
  if bool
    UmfLogger.logInfoMsg("[UMF SDK]对账文件写入成功,路径 " + filepath)
  else
    UmfLogger.logInfoMsg("[UMF SDK]对账文件写入失败,路径 "  + filepath)
  end
  UmfLogger.logInfoMsg("--------------------log end---------------------")
  return bool
end

Private Instance Methods

plainSortByAndPost(params) click to toggle source

post请求公共方法

# File lib/UmfService.rb, line 779
def plainSortByAndPost(params)
  reqDataPost = UmfMerToPlat.new.makeRequestDataByPost(params)
  post_url = reqDataPost.getUrl
  mapfield = reqDataPost.getField
  return UmfHttp.new.httpPost(post_url,mapfield)
end
publicParams() click to toggle source

公共参数

# File lib/UmfService.rb, line 787
def publicParams
  {
      "charset"=>"UTF-8",
      "sign_type"=>"RSA",
      "res_format"=>"HTML",
      "version"=>"4.0",
      "amt_type"=>"RMB"
  }
end