響應處理插件
大(dà)多數應用場景需要(yào / yāo)對異常報文格式做轉換或者映射, 響應處理插件主要(yào / yāo)提供對異常響應報文的(de)轉換處理功能, 異常的(de)處理範围一(yī / yì /yí)般爲(wéi / wèi)網關内部産生的(de)異常 響應處理插件一(yī / yì /yí)般在(zài)網關的(de)響應鏈的(de)最後執行. 網關的(de)默認異常響應報文格式爲(wéi / wèi):
{
"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: 系統異常}
#如下配置, 假如異常響應報文的(de)碼值爲(wéi / wèi) MSG_FMT_ERR, 則映射後的(de)碼值爲(wéi / wèi) ${該配置爲(wéi / wèi)從上(shàng)下文根據表達式獲取值, 可不(bù)配} 00022,message爲(wéi / wèi) 請求報文格式有誤
codeMapping:
MSG_FMT_ERR: {mappingCode: '${resp_CFlg}00022', msg: 請求報文格式有誤}
FIELD_EMPTY: {mappingCode: '${resp_CFlg}00023', msg: 請求報文必填參數缺失}
PARAM_ERR: {mappingCode: '${resp_CFlg}00024', msg: 請求報文的(de)參數有誤}
VERSGN_FAIL: {mappingCode: '${resp_CFlg}00025', msg: 請求報文簽名未通過驗證}
DYPT_FAIL: {mappingCode: '${resp_CFlg}00031', msg: 請求報文敏感字段解密失敗}
SYS_MAINT: {mappingCode: '${resp_CFlg}00003', msg: 銀行系統臨時(shí)維護}
GTW0026: {mappingCode: '${resp_CFlg}00001', msg: 銀行系統限制交易流量}
GTW0012: {mappingCode: '${resp_CFlg}00001', msg: 銀行系統限制交易流量}
GTW0020: {mappingCode: '${resp_CFlg}00098', msg: 系統處理超時(shí)}
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: 響應報文生成簽名失敗} #這(zhè)個(gè)應該抛不(bù)出(chū)來(lái),加簽失敗會直接關連接
GTW0020: {mappingCode: '${resp_CFlg}00098', msg: 系統處理超時(shí)}
GTW0000: {mappingCode: '00000000', msg: 系統處理完成}
responseMapping:
root.MsgHeader.MsgTp: '${resp_MsgTp}'
root.MsgHeader.Drctn: '${resp_Drctn}'
root.MsgBody.SysRtnInf.SysRtnTm: '${resp_SysRtnTm}'