非NC模式对接工行接口,工行返回的xml报文转json

第一次写博客,写得不好请见谅!

公司本来有个旧项目是用PHP3.1开发的,结果现在增加了一个需求。项目要求:客户通过银行APP自助转账来入金到平台,平台则通过非NC方式对接工行接口出金。本来应该是没有我这边的事的,谁知最后开发的时候,工行的项目经理反馈说现在非NC模式不支持太老版本的PHP了(也可能是没找到文档???),建议使用JAVA做个中间件,中间件接收工行的XML报文,再通过接口的方式返回json给PHP,接口是尽量的简化了参数,毕竟大部分参数用不到。

对接工行接口:(不要问我为什么加高级,问就是工行文档)

高级鉴权指令提交(交易代码:AUTHCK);

高级鉴权指令查询(交易代码:QAUTHCK);

支付指令提交(交易代码:PAYENT);

支付指令查询(交易代码:QPAYENT);

高级明细查询(交易代码:QHISD);

高级新多账户余额查询(交易代码:QACCBAL);

 

下面是中间件与php的对接文档。

必看说明

本系统采用MD5的算法进行签名。

请求的签名生成方法如下:

将除 sign 外的其他全部字段按照参数字典(ASCII)顺序,组装形成一个待签名字符signSrc=k1=v1&k2=v2&kN=vN

将得到的字符串signSrc+key(申请的密钥)进行MD5作为sign字段;

返回的签名校验方法如下:

只有返回的json结果中code=success的情况下才需要验签;

返回的json参数data+key(密钥)进行MD5生成sign进行比对;

 

账户余额查询

发送请求------------http://地址/icbc/QACCBAL.do

参数名称

参数含义

必填

数据类型

说明

packageID

唯一编号

String(32)

order1575266396000

sign

签名

String(32)

MD5签名

返回的数据

{

    "code""success",

    "data": {

        "out": {

            "rd": {

                "AccBalance""7",

                "AccName""xxx有限公司",

                "AccNo""",

                "AcctProperty""004",

                "AcctSeq""",

                "Balance""7",

                "CashExf""0",

                "CurrType""001",

                "FrzAmt""0",

                "HoldAmt""0",

                "InterDeposit""1",

                "InterWithdrawal""1",

                "LastIntrDate""2019-09-21",

                "MainAcctNo""",

                "QueryTime""20191220135600000020",

                "RepReserved3""",

                "UsableBalance""7",

                "iRetCode""0",

                "iRetMsg""",

                "iSeqno"""

            }

        },

        "pub": {

            "BankCode""102",

            "CIS""证书号码",

            "ID""证书ID",

            "RetCode""0",

            "RetMsg""多账户余额查询成功",

            "TranDate""20191220",

            "TranTime""135620151",

            "TransCode""QACCBAL",

            "fSeqno"""

        }

    },

    "sign""a568d4e0bcf0431c2da86c87fe2c32bb"

}

 

鉴权

发送请求------------http://地址/icbc/AUTHCK.do

参数名称

参数含义

必填

数据类型

说明

packageID

唯一编号

String(32)

order1575266396000

accName

姓名

String(30)

张三

accNo

卡号

String(19)

6217232103000389459

certType

证件类型

String(2)

0-身份证 1-护照 2-军官证 3-士兵证 4-港澳台居民往来通行证 5-临时身份证 6-户口本 7-其他 9-警官证12-外国人永久居留证

certNo

证件号码

String(18)

 

isRealtime

是否同步鉴权

String(1)

0否  1是

sign

签名

String(32)

MD5签名

返回的参数

{

    "code""success",

    "data": {

        "out": {

            "MerID""银行卡部,商户档案号",

            "TotalNum""1",

            "rd": {

                "AccName""张三",

                "AccNo""银行卡号",

                "CertNo""证件号码",

                "CertType""0",

                "OrderNo""1",

                "Result""7",

                "iRetCode""0",

                "iRetMsg""交易成功"

            }

        },

        "pub": {

            "BankCode""102",

            "CIS""证书号码",

            "ID""证书ID",

            "RetCode""0",

            "RetMsg""",

            "SerialNo""KOA123456",

            "TranDate""20191220",

            "TranTime""140144051",

            "TransCode""AUTHCK",

            "fSeqno"""

        }

    },

    "sign""78be33849a82ce61f868b10004f0f213"

}

 

鉴权查询

 

发送请求------------http://地址/icbc/QAUTHCK.do

参数名称

参数含义

必填

数据类型

说明

packageID

唯一编号

String(32)

order1575266396000

二选一参数

qryfSeqno

鉴权接口上送的packageID

String(32)

鉴权上送的参数

qrySerialNo

鉴权接口返回的SerialNo

String(32)

鉴权返回的参数

sign

签名

String(32)

MD5签名

返回的参数

{

    "code""success",

    "data": {

        "out": {

            "MerID""银行卡部,商户档案号",

            "TotalNum""1",

            "rd": {

                "AccName""张三",

                "AccNo""银行卡号",

                "CertNo""证件号码",

                "CertType""0",

                "OrderNo""1",

                "Result""7",

                "iRetCode""0",

                "iRetMsg""交易成功"

            }

        },

        "pub": {

            "BankCode""102",

            "CIS""证书号码",

            "ID""证书ID",

            "RetCode""0",

            "RetMsg""",

            "SerialNo""KOA123456",

            "TranDate""20191220",

            "TranTime""140144051",

            "TransCode""AUTHCK",

            "fSeqno"""

        }

    },

    "sign""78be33849a82ce61f868b10004f0f213"

}

出金(入账方式采用逐笔入账)

 

发送请求------------http://地址/icbc/PAYENT.do

参数名称

参数含义

必填

数据类型

说明

packageID

唯一编号

String(32)

order1575266396000

totalAmt

总金额

String(20)

无正负号,不带小数点,以分作单位

recAccNo

对方账号

String(34)

 

payType

记账处理方式

String(1)

1:加急 2:普通(工行异地人民币转账不再区分普通\加急,统一按加急处理) 3:跨行快汇(当涉及账户管家账户转账时,记账方式不支持普通,工行异地转账不再区分普通\加急,统一按加急处理)

sysIOFlg

系统内外标志

String(1)

1:系统内

2:系统外

 

工行卡系统内,非工行卡系统外

useCN

用途中文描述

String(20)

用途描述

二选一必填参数

recAccNameCN

对方账户名称

String(100)

根据人行标准,人民币账户的户名不应超过60字节,否则该字段可能被截取

如:张三

recAccNameEN

对方账户英文名称

String(100)

zhangsan

跨行必填

prop

对公对私标志

String(1)

0:对公账户

1:个人账户

recBankNo

对方行行号

String(13)

非跨行支付时,此项上送空值

recBankName

交易对方银行名称

String(60)

跨行指令此项必输,中文,60位字符。

非必填参数(联系我,可增加其他参数)

recCityName

收款方所在城市名称

String(30)

跨行指令(非跨行快汇)此项必输

(经测试,工行内部加急转账不传也可以。)

isSameCity

同城异地标志

String(1)

1:同城

2:异地

recICBCCode

交易对方工行地区号

String(5)

4位工行地区号

postScript

附言

String(100)

如果是跨行交易,目前最多只支持60个字符。

summary

摘要

String(20)

 

sign

签名

String(32)

MD5签名

返回的参数

{

    "code""success",

    "data": {

        "out": {

            "AlertFlag""0",

            "BusType""",

            "OnlBatF""1",

            "PackageName""",

            "QrySerialNo""CMM123456",

            "QryfSeqno""",

            "SettleMode""0",

            "rd": {

                "BankRetTime""20191219142008",

                "BankType""",

                "BusCode""",

                "CrvouhName""",

                "CrvouhNo""",

                "CrvouhType""",

                "CurrType""001",

                "ERPSqn""",

                "ERPcheckno""",

                "EnSummary""",

                "FileNames""",

                "Indexs""",

                "IsSameCity""1",

                "MCardName""",

                "Oref""",

                "PayAccNameCN""xxx有限公司",

                "PayAccNameEN""",

                "PayAccNo""付款银行账号",

                "PayAmt""1000",

                "PaySubNo""",

                "PayType""3",

                "PostScript""用户提现",

                "QryOrderNo""1",

                "QryiSeqno""12345678",

                "RecAccNameCN""张三",

                "RecAccNameEN""",

                "RecAccNo""银行卡号",

                "RecBankName""中国农业银行股份有限公司",

                "RecBankNo""103100000026",

                "RecCityName""",

                "RecICBCCode""0000",

                "Ref""",

                "ReimburseNo""",

                "ReimburseNum""",

                "Result""6",

                "StartDate""",

                "StartTime""",

                "Summary ""用户提现",

                "SysIOFlg""2",

                "UseCN""用户提现",

                "UseCode""",

                "iRetCode""0",

                "iRetMsg""",

                "iSeqno""1",

                "instrRetCode""4102",

                "instrRetMsg""余额不足"

            }

        },

        "pub": {

            "BankCode""102",

            "CIS""证书号码",

            "ID""证书ID",

            "RetCode""0",

            "RetMsg""",

            "TranDate""20191220",

            "TranTime""140659740",

            "TransCode""QPAYENT",

            "fSeqno"""

        }

    },

    "sign""a4de6cd22eeccf806d47159adb855f12"

}

 

出金订单查询

 

发送请求------------http://地址/icbc/QPAYENT.do

参数名称

参数含义

必填

数据类型

说明

packageID

唯一编号

String(32)

order1575266396000

二选一参数

qryfSeqno

出金接口上送的packageID

String(32)

出金上送的参数

qrySerialNo

出金返回的SerialNo

String(32)

出金返回的参数

sign

签名

String(32)

MD5签名

返回的参数

{

    "code""success",

    "data": {

        "out": {

            "AlertFlag""0",

            "BusType""",

            "OnlBatF""1",

            "PackageName""",

            "QrySerialNo""CMM123456",

            "QryfSeqno""",

            "SettleMode""0",

            "rd": {

                "BankRetTime""20191219142008",

                "BankType""",

                "BusCode""",

                "CrvouhName""",

                "CrvouhNo""",

                "CrvouhType""",

                "CurrType""001",

                "ERPSqn""",

                "ERPcheckno""",

                "EnSummary""",

                "FileNames""",

                "Indexs""",

                "IsSameCity""1",

                "MCardName""",

                "Oref""",

                "PayAccNameCN""xxx有限公司",

                "PayAccNameEN""",

                "PayAccNo""付款银行账号",

                "PayAmt""1000",

                "PaySubNo""",

                "PayType""3",

                "PostScript""用户提现",

                "QryOrderNo""1",

                "QryiSeqno""12345678",

                "RecAccNameCN""张三",

                "RecAccNameEN""",

                "RecAccNo""银行卡号",

                "RecBankName""中国农业银行股份有限公司",

                "RecBankNo""103100000026",

                "RecCityName""",

                "RecICBCCode""0000",

                "Ref""",

                "ReimburseNo""",

                "ReimburseNum""",

                "Result""6",

                "StartDate""",

                "StartTime""",

                "Summary ""用户提现",

                "SysIOFlg""2",

                "UseCN""用户提现",

                "UseCode""",

                "iRetCode""0",

                "iRetMsg""",

                "iSeqno""1",

                "instrRetCode""4102",

                "instrRetMsg""余额不足"

            }

        },

        "pub": {

            "BankCode""102",

            "CIS""证书号码",

            "ID""证书ID",

            "RetCode""0",

            "RetMsg""",

            "TranDate""20191220",

            "TranTime""140659740",

            "TransCode""QPAYENT",

            "fSeqno"""

        }

    },

    "sign""a4de6cd22eeccf806d47159adb855f12"

}

 

需要代码可以联系779293860

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值