对账

文档说明

阅读对象

1、本规范的使用对象为服务商的技术开发人员、产品及业务。
2、开发人员应该对post提交、json 格式、http/https传输、非对称秘钥和数据签名等有一定认识。

修订记录

2019-05-06:新增

相关术语

对账:商户交易对账单和结算对账单。

接口规则

协议规则

1、接口调用方式为http post。
2、数据传输使用json格式,编码使用utf-8,请求时存放json串的参数名为: jsonData,接口传递中文或含有特殊字符的参数时应URL Encoding,接口接收返回参数时应做URL Decoding。
3、如果json请求串中值为null,则json串格式应为{“test”: “”}。
4、接口的除merPriv字段之外,其他所有字段不应该包含特殊字符,如:“&”、”?”和”‘’”等。
5、后台通知商户返回应答参数的规则:为了表示商户交易系统已经收到交易应答,商户必须在应答接收页面输出一段特殊的字符串,组成规则为:固定字符串RECV_ORD_ID_加上交易应答中某一指定字段,指定字段请见具体接口商户应答参数。

安全规范

1、为了保证数据传输过程中的数据真实性和完整性,我们需要对数据进行数字签名,在接收签名数据之后进行签名校验。
2、详情请参见接口参数checkValue参数说明。
3、checkValue生成规则:目前仅支持CFCA签名方式,checkValue生成方法请参考CFCA签名。
简单示例:
HashMap<String , String> jsonDataMap = new HashMap<String , String>();
jsonDataMap.put("termOrdId" , "20180820020626985855");
jsonDataMap.put("memberId" , memberId);
jsonDataMap.put("ordAmt" , ordAmt);
jsonDataMap.put("authCode" , "134755413751742262");//二维码
jsonDataMap.put("goodsDesc" , URLEncoder.encode(goodsDesc , Constant.CHARSET_UTF8));
jsonDataMap.put("merPriv" , "{\"Ic\":\"2253425259\",\"merNoticeUrl\":\"http://172.31.13.182:38087/site/testHttp/testB/\",\"callType\":\"04\"}");
jsonDataMap.put("apiVersion" , apiVersion);

String jsonData = JSON.toJSONString(jsonDataMap);

// CFCA 签名
String checkValue = CFCASignature.signature("100001.pfx","888888", jsonData, "UTF-8").getSign();

对账

场景介绍

通过接口查询前一日的交易对账单和结算对账单。

功能描述

交易对账单查询接口:查询商户的交易对账单。
商户结算记录查询接口:查询商户的结算对账单。
结算状态变更异步通知:当商户的结算状态发生变更时发送通知到渠道商。

业务流程

1、交易对账单
A、联系运营申请开通接口获取交易对账单权限。
B、每日7点后可用接口获取前一天的交易对账单。
C、调用接口返回一个下载地址,下载地址10分钟内有效,超过10分钟后需重新调用接口查询。
2、结算对账单
A、每日16:30后可调商户结算记录查询接口,获取前一日的商户结算记录。不需要开通权限。
3、结算状态变更异步通知操作指引
A、服务商告知汇付开通结算状态变更异步通知。
B、填写”结算状态变更异步通知地址配置_模板”并发给相关汇付运营。
C、汇付运营进行开通后即时生效。
D、每天按照接口字段模板进行消息推送。
E、必须确认URL的有效性,即是生产真实、可用的消息接收地址,否则可能会导致推送消息发送失败,形成堆积。

API列表

对账文件推送

客户提供sftp地址、用户名和密码给汇付,由汇付配置白名单,每日7点推送对账文件。
推送内容为前一天的交易明细和结算记录,内容和画面查询基本一致。
交易对账单:日期_member_id_ord.csv(例:20180722_030147445000001986_ord.csv)
结算对账单:日期_member_id_set.csv(例:20180722_030147445000001986_set.csv)

交易对账单查询接口

发布路径

https://nspos.chinapnr.com/nsposmweb/webB7023

输入参数

输入参数

参数代码

参数名称

数据类型

是否必填

参数说明

checkValue

加签密文

String

必填

CFCA方式获取

jsonData

json

json

必填

jsonData数据,内容见下方描述

JsonData

参数代码

参数名称

数据类型

是否必填

参数说明

apiVersion

版本号

String(7)

必填

2.0.0.1

memberId

会员号

String(18)

必填

8位,商户号 /代理商号/渠道商号

transDate

交易日期

String(8)

必填

仅可传一个日期,格式:20180703允许
查交易日期自昨日起历史7天的交易数据

输出参数

输出参数

参数代码

参数名称

数据类型

是否必填

参数说明

checkValue

加签密文

String

必填

CFCA方式获取

jsonData

json

json

必填

jsonData数据,内容见下方描述

respCode

返回码

String

必填

00000表示成功,其余表示失败

respDesc

返回描述

String

必填

JsonData

参数代码

参数名称

数据类型

是否必填

参数说明

downloadUrl

交易对账单
下载地址

String

商户结算记录查询

发布路径

https://nspos.chinapnr.com/nsposmweb/webB7004

输入参数

输入参数

参数代码

参数名称

数据类型

是否必填

参数说明

checkValue

加签密文

String

必填

Cfca方式加签

jsonData

json

json

必填

jsonData数据,内容见下方描述

JsonData

参数代码

参数名称

数据类型

是否必填

参数说明

apiVersion

接口版本号

String(20)

必填

必填

memberId

商户号

String(18)

必填

商户号的长度不能超过18位。

agentId

代理商号

String(18)

必填

代理商号 ,最大长度18位

tellerId

代理商操作员号

String(32)

必填

代理商操作员号,最大长度32位

settleStartDate

结算开始日期

String(8)

必填

yyyyMMdd

settleEndDate

结算结束日期

String(8)

必填

yyyyMMdd

settleStat

结算状态

String(1)

非必填

U-未发起(已受理)
I-处理中(已汇出)
P-处理中
F-失败
S-成功

pageNum

当前页码

String(8)

非必填

默认是查询第一页数据传入值是一个正整数

输出参数

输出参数

参数代码

参数名称

数据类型

是否必填

参数说明

checkValue

加签密文

String

必填

CFCA方式验签

jsonData

json

String

必填

jsonData数据,内容见下方描述

respCode

返回码

String(6)

必填

000000表示成功,其余表示失败

respDesc

返回描述

String(32)

必填

描述信息

JsonData

参数代码

参数名称

数据类型

是否必填

参数说明

totalRecord

总记录数

String(8)

必填

总记录数

pageNum

当前页码

String(8)

必填

当前页码

pageSize

每页记录数

String(8)

必填

固定值,每页返回数据条数,
该字段值不代表当前页实际数据条数。

recordList

结算记录

Json数组

必填

包含字段见Record

recordList

参数代码

参数名称

数据类型

是否必填

参数说明

memberId

商户号

String(18)

必填

merchName

商户名称 (全称)

String(50)

必填

bankNumber

结算账号

String(32)

必填

settleTerm

结算方式

String(2)

必填

D1 :D+1,T1 :T+1,T0 :T0,TS :TS

settleAmt

结算金额

String(18)

必填

单位:元

settleDate

结算日期时间

String(8)

必填

yyyyMMdd:20181030

settleStat

结算状态

String(1)

必填

P-处理中 F-失败 S-成功

accountName

账户名称

String(32)

必填

local

银行所在地

String(32)

必填

freezeAmt

手续费

String(8)

必填

bankName

银行名称

String(60)

必填

settleMessage

结算信息

String(200)

必填

结算状态变更异步通知

提供给渠道商通过接收结算状态变更通知,保持结算状态同步。

输入参数

参数代码

参数名称

数据类型

是否必填

参数说明

respCode

返回码

String(6)

必填

000000表示成功,其余表示失败

respDesc

返回描述

String(32)

非必填

jsonData

json数据

json

必填

Json字符串数据,包含一条结算相关数据

checkValue

加签密文

String

必填

Cfca方式加签

JsonData

参数代码

参数名称

数据类型

是否必填

参数说明

apiVersion

版本号

String(7)

必填

默认值2.0.0.1

transId

汇付转账流水号

String(120)

必填

结算记录流水号,结算流水唯一标识一笔
结算,如果异步通知接收方无transId,
目前可使用memberId+ settleDate
定位唯一一笔结算

memberId

商户会员号

String(18)

必填

商户会员号18位

settleDate

结算日期时间

String(8)

必填

yyyyMMdd:20181030

merchName

商户名称

String(50)

必填

settleTerm

结算周期

String(2)

必填

结算模式 (类型) :D1 :D+1,
T1 :T+1,T0 :T0, TS :TS

settleAmt

结算金额

String(18)

必填

结算金额,单位元,保留两位小数,如:88.88

bankName

银行名称

String(60)

必填

银行名称,如:中国建设银行

local

银行所在地

String(32)

必填

银行所在地包含省份 城市,如:江苏苏州

accountName

账户名称

String(30)

必填

结算银行卡账户名称,如:张三

bankNumber

结算账号

String(32)

必填

结算账号: 62260*******48

settleStat

结算状态

String(1)

必填

F:失败 S:成功

settleMessage

结算信息

String(200)

必填

结算描述信息,如:交易成功

feeAmt

手续费

String(8)

必填

手续费,单位元保留两位小数,如:0.01

返回参数

返回参数

参数代码

参数名称

数据类型

是否必填

参数说明

transId

结算流水号

String(120)

必填

接收方应答内容中必须包含
RECV_ORD_ID_{ transId }字符串,
如如transId为000346888888,
则应答为内容必须包含:
RECV_ORD_ID_000346888888

错误码

错误码

常见错误码描述,如还未解决问题请及时联系专业技术支持人员。
错误码 描述                               错误码 描述                                       错误码 描述
000000 操作成功                            000098 请求参数非法                               000267 接口获取状态与订单状态不符
000093 请求参数不规范                       000097 数据库异常                                000268 二维码反向交易超时
000094 重复交易                            000234 订单生成失败                               000272 订单查询,未查询到记录
000095 验签失败                            000236 PA入账失败                                 000273 支付通道类型不为微信或者支付宝
000100 业务系统已关闭                       000238 对象属性复制异常                           000277 无此交易类型
000107 业务系统不存在                       000240 冻结账务对象不存在,分账串解析为空           000278 无此交易记录
000202 订单已存在                          000241 订单被风控拒绝,风控未通过                   000279 退货失败,该笔订单非退货交易
000203 原订单不存在                        000242 风控系统调用异常                            000197 控台系统异常,网络繁忙
000204 撤销金额与原订单金额不一致           000243 撤销或退货失败,PA冻结超时                   000281 交易处理中
000205 撤销日期与原订单日期不一致           000244 不存在该账务类型                             000099 网络繁忙,请稍后再试
000206 撤销失败,账务状态异常              000245 分账串异常                                   000219 订单校验失败
000207 撤销失败,PA冻结失败                000250 退货失败,PA退款失败                          000220 签名上送失败,订单未完成支付
000208 撤销失败,通道失败                  000256 退货失败,PA冻结超时                          000221 签名上传失败,已上传
000209 撤销失败,原订单未完成              000255 确认交易失败,账务状态异常                      000213 退货失败,超出退货期限
000210 退货失败,原订单未完成              000257 确认交易失败,原订单未成功                     000214 退货失败,PA冻结失败
000211 退货失败,账务状态异常              000258 确认交易失败,确认金额与原交易金额不一致         000215 退货失败,通道失败
000212 退货失败,超出可退货金额            000260 消费撤销发通道扣款超时                         000261 消费退货发通道扣款超时
000199 二维码交易处理中                    000198 二维码交易失败

SDK与DEMO

说明

SDK和DEMO作为参考或示例,请服务商在使用过程中,要专业技术人员指导使用,注意系统兼容性。

Java版本

即将更新。

PHP版本

即将更新。