对于异步支付方式,如js支付和Native支付(刷卡支付不通知),平台会通过主动发起http post请求的方式,把支付结果通知到该交易上送的地址。
注意:因为以后可能会增加通知参数,请获取全量变量,然后遍历获取非空变量,而不能用request.getparam(“key”)这样用文档中的字段名来一个个获取,到时候收银宝增加通知字段,就无法兼容了.请参考demo
通知的每一个字段都会进行UTF-8的UrlEncode,如果商户接收结果的服务器用web容器进行接收,例如TOMCAT,IIS.则无需进行URLDecode,如果不是用web容器进行接收,而是读数据流自己进行解析,则需要进行UTF-8的UrlDecode
以java为例:
String trxreserve = "订购人+10086";
String sendData = URLEncoder.encode(trxreserve, "UTF-8");
String getData = URLDecoder.decode(sendData, "UTF-8");
通知响应结果:
商户服务端在接收到结果通知并正确处理后,应响应消息。正确处理响应success,其他响应或者不响应通联开发平台则通过重发机制进行重发,重发次数为5次
对后台通知交互时,如果通联收到商户的应答不符合规范或超时,通联认为通知失败,通联会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但通联不保证通知最终能成功。
(通知频率为15s/15s/5m/10m/15m - 总计30m30s)
字段名称 | 类型 | 可空 | 说明 | 最长长度 | 备注 |
---|---|---|---|---|---|
appid | String | 否 | 通联分配的appid | 8 | |
outtrxid | String | 否 | 第三方交易号 | 50 | 暂未启用 |
trxcode | String | 否 | 交易类型 | 8 | 详见附录5.3 |
trxid | String | 否 | 交易流水号 | 50 | 通联收银宝交易流水号 |
trxamt | Long | 否 | 金额 | 20 | 单位分 |
trxdate | String | 否 | 交易请求日期 | 8 | yyyymmdd |
paytime | String | 否 | 交易完成时间 | 14 | yyyymmddhhmmss |
chnltrxid | string | 可 | 渠道流水号 | 64 | 如支付宝,微信平台订单号 |
trxstatus | String | 否 | 交易结果码 | 4 | 交易状态详见附录 |
cusid | String | 否 | 商户号 | 15 | |
termno | String | 否 | 终端编码 | 8 | 终端代码 |
termbatchid | String | 否 | 终端批次号 | 16 | 终端批次号 |
termtraceno | String | 否 | 终端流水 | 6 | 终端流水 |
termauthno | string | 可 | 终端授权码 | 20 | |
termrefnum | string | 可 | 终端参考号 | 50 | |
trxreserved | String | 可 | 业务关联内容 | 160 | 交易备注 |
srctrxid | String | 可 | 原交易流水 | 50 | 通联原交易流水,冲正撤销交易本字段不为空 |
cusorderid | String | 否 | 业务流水 | 32 | 如订单号等 |
acct | String | 可 | 交易帐号 | 64 | 如果是刷卡交易,则是隐藏的卡号,例如621700****4586 |
fee | string | 可 | 手续费 | 15 | 单位:分 |
cmid | string | 是 | 渠道子商户号 | 32 |
支付宝有效 微信有效 |
chnlid | String | 是 | 渠道号 | 32 | 微信有效 |
signtype | String | 可 | 签名类型 | 4 |
RSA SM2 |
sign | String | 否 | sign校验码 | 32 |