响应处理插件

大多数应用场景需要对异常报文格式做转换或者映射, 响应处理插件主要提供对异常响应报文的转换处理功能, 异常的处理范围一般为网关内部产生的异常 响应处理插件一般在网关的响应链的最后执行. 网关的默认异常响应报文格式为:

{
"returnCode": {
"type": "E",
"message": "asdf",
"code": "fasdg"
 }
}

各字段配置如下:

配置示例:

response:
  available: true
  pipeType: direct
  preFilters: CheckPayloadEmptyFilter
  localRecognizers:

- id: from_wlink_base
  matcher: '${msgFrom}->WLINK'
  type: date
  keyMap:
    resp_SysRtnTm: '${yyyy-MM-dd''T''HH:mm:ss}'

  values:

- id: epcc_from_wlink_outbound_not_reached_response
  sort: 1
  matcher: '${pathNo}->1285 && ${msgFrom}->WLINK && ${trxPhase}<>OUTBOUND_REACHED'
  type: default
  returnCodeKey: root.MsgBody.SysRtnInf
  typeKey: ''
  codeKey: SysRtnCd
  messageKey: SysRtnDesc
  replyKey: reply
  wrapReply: false
  ignoreReturnCode: false
  clearPayloadWhenFailed: false
  ignoreSuccessReturnCode: true
  extractReturnCode: false
  responseMappingCondition: failed
  defaultCodeMapping: {mappingCode: '${resp_CFlg}00099', msg: 系统异常}
  #如下配置, 假如异常响应报文的码值为 MSG_FMT_ERR, 则映射后的码值为 ${该配置为从上下文根据表达式获取值, 可不配} 00022,message为 请求报文格式有误
  codeMapping:
    MSG_FMT_ERR:      {mappingCode: '${resp_CFlg}00022', msg: 请求报文格式有误}
    FIELD_EMPTY:      {mappingCode: '${resp_CFlg}00023', msg: 请求报文必填参数缺失}
    PARAM_ERR:        {mappingCode: '${resp_CFlg}00024', msg: 请求报文的参数有误}
    VERSGN_FAIL:      {mappingCode: '${resp_CFlg}00025', msg: 请求报文签名未通过验证}
    DYPT_FAIL:        {mappingCode: '${resp_CFlg}00031', msg: 请求报文敏感字段解密失败}
    SYS_MAINT:        {mappingCode: '${resp_CFlg}00003', msg: 银行系统临时维护}
    GTW0026:          {mappingCode: '${resp_CFlg}00001', msg: 银行系统限制交易流量}
    GTW0012:          {mappingCode: '${resp_CFlg}00001', msg: 银行系统限制交易流量}
    GTW0020:          {mappingCode: '${resp_CFlg}00098', msg: 系统处理超时}
    GTW0000:          {mappingCode: '00000000',          msg: 系统处理完成}
  responseMapping:
    root.MsgHeader.MsgTp: '${resp_MsgTp}'
    root.MsgHeader.Drctn: '${resp_Drctn}'
    root.MsgBody.SysRtnInf.SysRtnTm: '${resp_SysRtnTm}'
- id: epcc_from_wlink_outbound_reached_response
  sort: 1
  matcher: '${pathNo}->1285 && ${msgFrom}->WLINK && ${trxPhase}->OUTBOUND_REACHED'
  type: default
  returnCodeKey: root.MsgBody.SysRtnInf
  typeKey: ''
  codeKey: SysRtnCd
  messageKey: SysRtnDesc
  replyKey: reply
  wrapReply: false
  ignoreReturnCode: false
  clearPayloadWhenFailed: false
  ignoreSuccessReturnCode: true
  extractReturnCode: false
  responseMappingCondition: failed
  defaultCodeMapping: {mappingCode: '${resp_CFlg}00098', msg: 系统异常}
  codeMapping:
    ENPT_FAIL:        {mappingCode: '${resp_CFlg}00030', msg: 响应报文敏感字段加密失败}
    GENSGN_FAIL:      {mappingCode: '${resp_CFlg}00026', msg: 响应报文生成签名失败}  #这个应该抛不出来,加签失败会直接关连接
    GTW0020:          {mappingCode: '${resp_CFlg}00098', msg: 系统处理超时}
    GTW0000:          {mappingCode: '00000000',          msg: 系统处理完成}
  responseMapping:
    root.MsgHeader.MsgTp: '${resp_MsgTp}'
    root.MsgHeader.Drctn: '${resp_Drctn}'
    root.MsgBody.SysRtnInf.SysRtnTm: '${resp_SysRtnTm}'
Copyright © 民生科技有限公司 2019 all right reserved,powered by Gitbook联系方式: wanglihang@mskj.com
修订时间: 2019-09-03 17:48:17

results matching ""

    No results matching ""