承接第三方开票业务,接收第三方发票订单,具备电子发票资质的企业用户通过此接口填写销方、购方、商品明细等信息发起开票请求。
名称 | 类型 | 是否必须 | 示例值 | 描述 |
---|---|---|---|---|
appMethod | String | Y | suning.custom.category.query | 方法名 |
appRequestTime | String | Y | 2012-04-25 20:23:30 | 时间戳,格式为yyyy-MM-dd HH:mm:ss,例如:2012-04-25 20:23:30。API服务端允许客户端请求时间误差为10分钟。 |
format | String | N | XML | 默认xml,可指定格式为xml,json |
appKey | String | Y | b0c332a133c102765f39de********** | 分配给应用的访问令牌 |
versionNo | String | Y | v1.2 | API的版本,目前为v1.2版本 |
signInfo | String | Y | 460d7ff15b073e463125b4********** | appSecret,appMethod ,appRequestTime, appKey, versionNo, 请求报文base64加密后的数据顺序MD5(32位小写),其中appSecret为appKey对应的密钥 |
access_token | String | N | a1c5c62b08df3a3cbf7efd********** | 采用OAuth授权方式为必填参数 |
名称 | 类型 | 是否必须 | 示例值 | 描述 |
---|---|---|---|---|
platformCoding | String | Y | 70069114 | 商户编码 |
sysSource | String | N | 例如:ZY:自营 | 系统来源 |
orderNum | String | Y | 32018091901 | 订单号(每个企业唯一) |
orderReturnNum | String | N | 32018091901 | 退货单号 |
orderTime | String | Y | 2018-09-28 14:26:11 | 订单时间 |
saleTaxNum | String | Y | 140301193302051282 | 销货方税号 |
saleName | String | N | 南京苏宁软件技术有限公司 | 销货方公司名称(50汉字,100字符) |
saleAddress | String | N | 南京市玄武区苏宁大道1号 | 销货方公司地址 |
saleTel | String | N | 025-66996699 | 销货方电话 |
saleBank | String | N | 中国银行 | 销货方开户行 |
saleBankNum | String | N | 622848039260099 | 销货方开户行账号 |
clientName | String | N | 个人 | 购货方名称,扫码开不传,其余必传(50汉字,100字符) |
clientTaxNum | String | N | 622848039260099 | 购货方识别号,当购方类型为01时,必填(15,18,20位,长度15-20位) |
clientAddress | String | N | xx市xx区 | 购货方地址(40汉字,80字符) |
clientTel | String | N | 025-8888 | 购货方固定电话 |
clientPhone | String | N | 18551620000 | 购货方手机,非扫码开必传(11位) |
clientEmail | String | N | xxx@163.com | 购货方邮箱(20位) |
clientType | String | N | 01 | 购货方企业类型,01:企业 02:机关事业单位 03:个人 04:其它(非扫码开必传) |
clientBank | String | N | 中国银行 | 购货方开户行(40汉字,开户行+帐号:50汉字,100字符) |
clientBankNum | String | N | 622848039260099 | 购货方开户行账号(40位,开户行+帐号:50汉字,100字符) |
ticketName | String | N | 张三 | 开票人(8汉字) |
payeeName | String | N | 李四 | 收款人(8汉字) |
reviwerName | String | N | 李五 | 复核人(8汉字) |
ticketType | String | Y | 1 | 开票类型,1 蓝字发票、-1 红字发票 |
countMoney | String | Y | 100 | 合计开票金额 |
oldTicketCode | String | N | 150003528888 | 原发票代码,开票类型为-1时必传 |
oldTicketNum | String | N | 62786934 | 原发票号码,开票类型为-1时必传 |
remark | String | N | xx | 电子发票票面备注信息栏展示用(50汉字,100字符) |
buySign | String | N | 1 | 收购标志,1:收购票(Y)代开标志为1时,不能填Y 2:非收购票:此字段为空 3:收购票扣除额必须为空 4:收购票税率必须为0 |
specialRedSign | String | N | 0 | 默认传0:正常冲红,红票必传 |
detialSign | String | Y | 0 | 清单标志,0:普通电子发票 1:普通电子发票-清单 2:收购电子发票 3:收购电子发票-清单 4:成品油电子发票 默认0 大于8行 是否自动转清单票 |
extendField | String | N | xx | 扩展字段 |
cmmdtys | String | N | ||
goodSerialNum | String | Y | 0001 | 明细行序号 |
goodId | String | N | 000101 | 业务行号 |
goodsName | String | Y | 空调 | 商品名称(35汉字,70字符) |
goodUnit | String | N | 台 | 项目单位(5汉字) |
goodModel | String | N | P | 规格型号(20汉字,40字符) |
goodNum | String | Y | 10 | 项目数量 |
goodPrice | String | Y | 100.00 | 项目单价 |
goodContainTaxSign | String | Y | 1 | 含税标志,表示项目单价和项目金额是否含税。 0 表示都不含税,1 表示都含税。 |
goodDiscount | String | N | 5 | 商品折扣 |
goodsCode | String | N | 600012346 | 商户自己的商品编码,用于获取商品税率、税收分类编码(商品编码不传则税分类编码和税率必传) |
goodTaxCode | String | N | 654334 | 商品税收分类编码,如商品编码不传,则必填 |
goodCountAmount | String | Y | 1000 | 项目金额 |
goodRate | String | N | 0.16 | 税率,如商品编码未传,则必填 |
goodGovSign | String | N | 0 | 优惠政策标识,0:不使用,1:使用,默认传0 |
goodTaxAmount | String | N | 160 | 税额 |
goodZeroTaxSign | String | N | 0 | 零税率标识,0:出口零税率,1:免税,2:不征税,0%税率但不享受优惠政策或享受除上述三种优惠政策 3税率为非 0% 空 |
goodSpecialSign | String | N | 不征税 | 增值税特殊管理,当优惠政策标识为1时必填 当零税率标识为0时:出口零税率 当零税率标识为1时:免税 当零税率为2时:不征税 |
goodDeductions | String | N | -10 | 扣除额 |
receiveMode | String | N | 02 | 01-sop下发,02-api,03-h5扫描开,04-手工开票 |
howtoPrint | String | N | 0 | 开票方式,0实时开,1扫码开(该字段废弃,不传) |
orderNumPwd | String | N | 1B0A2C64C2A1A7FAB7DEBE25FED8B742 | 扫码开必填,用于扫码开场景小票上订单二维码参数使用,由消费端生成,无规律,建议使用UUID |
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
billNumber | String | 2018090112984 | 业务单号 |
fpqqlsh | String | 201809201151292543956 | 发票请求流水号 |
respCode | String | 0000 | 返回编码 |
respMsg | String | 成功 | 返回描述 |
<sn_request> <sn_body> <receiveInvorder> <clientTaxNum>622848039260099</clientTaxNum> <orderReturnNum>32018091901</orderReturnNum> <clientName>个人</clientName> <saleBankNum>622848039260099</saleBankNum> <sysSource>例如:ZY:自营</sysSource> <saleTel>025-66996699</saleTel> <orderNum>32018091901</orderNum> <clientBank>中国银行</clientBank> <remark>xx</remark> <clientAddress>xx市xx区</clientAddress> <oldTicketCode>150003528888</oldTicketCode> <clientTel>025-8888</clientTel> <payeeName>李四</payeeName> <saleName>南京苏宁软件技术有限公司</saleName> <clientType>01</clientType> <orderTime>2018-09-28 14:26:11</orderTime> <oldTicketNum>62786934</oldTicketNum> <cmmdtys> <goodUnit>台</goodUnit> <goodRate>0.16</goodRate> <goodGovSign>0</goodGovSign> <goodDiscount>5</goodDiscount> <goodContainTaxSign>1</goodContainTaxSign> <goodId>000101</goodId> <goodPrice>100.00</goodPrice> <goodSerialNum>0001</goodSerialNum> <goodTaxAmount>160</goodTaxAmount> <goodTaxCode>654334</goodTaxCode> <goodZeroTaxSign>0</goodZeroTaxSign> <goodSpecialSign>不征税</goodSpecialSign> <goodDeductions>-10</goodDeductions> <goodModel>P</goodModel> <goodCountAmount>1000</goodCountAmount> <goodsCode>600012346</goodsCode> <goodsName>空调</goodsName> <goodNum>10</goodNum> </cmmdtys> <extendField>xx</extendField> <clientEmail>xxx@163.com</clientEmail> <howtoPrint>0</howtoPrint> <platformCoding>70069114</platformCoding> <saleTaxNum>140301193302051282</saleTaxNum> <clientBankNum>622848039260099</clientBankNum> <ticketType>1</ticketType> <reviwerName>李五</reviwerName> <clientPhone>18551620000</clientPhone> <orderNumPwd>1B0A2C64C2A1A7FAB7DEBE25FED8B742</orderNumPwd> <saleAddress>南京市玄武区苏宁大道1号</saleAddress> <buySign>1</buySign> <receiveMode>02</receiveMode> <detialSign>0</detialSign> <countMoney>100</countMoney> <specialRedSign>0</specialRedSign> <saleBank>中国银行</saleBank> <ticketName>张三</ticketName> </receiveInvorder> </sn_body> </sn_request>
{ "sn_request": { "sn_body": { "receiveInvorder": { "clientTaxNum": "622848039260099", "orderReturnNum": "32018091901", "clientName": "个人", "saleBankNum": "622848039260099", "sysSource": "例如:ZY:自营", "saleTel": "025-66996699", "orderNum": "32018091901", "clientBank": "中国银行", "remark": "xx", "clientAddress": "xx市xx区", "oldTicketCode": "150003528888", "clientTel": "025-8888", "payeeName": "李四", "saleName": "南京苏宁软件技术有限公司", "clientType": "01", "orderTime": "2018-09-28 14:26:11", "oldTicketNum": "62786934", "cmmdtys": [ { "goodUnit": "台", "goodRate": "0.16", "goodGovSign": "0", "goodDiscount": "5", "goodContainTaxSign": "1", "goodId": "000101", "goodPrice": "100.00", "goodSerialNum": "0001", "goodTaxAmount": "160", "goodTaxCode": "654334", "goodZeroTaxSign": "0", "goodSpecialSign": "不征税", "goodDeductions": "-10", "goodModel": "P", "goodCountAmount": "1000", "goodsCode": "600012346", "goodsName": "空调", "goodNum": "10" } ], "extendField": "xx", "clientEmail": "xxx@163.com", "howtoPrint": "0", "platformCoding": "70069114", "saleTaxNum": "140301193302051282", "clientBankNum": "622848039260099", "ticketType": "1", "reviwerName": "李五", "clientPhone": "18551620000", "orderNumPwd": "1B0A2C64C2A1A7FAB7DEBE25FED8B742", "saleAddress": "南京市玄武区苏宁大道1号", "buySign": "1", "receiveMode": "02", "detialSign": "0", "countMoney": "100", "specialRedSign": "0", "saleBank": "中国银行", "ticketName": "张三" } } } }
<sn_responseContent> <sn_body> <receiveInvorder> <fpqqlsh>201809201151292543956</fpqqlsh> <respMsg>成功</respMsg> <billNumber>2018090112984</billNumber> <respCode>0000</respCode> </receiveInvorder> </sn_body> </sn_responseContent>
{ "sn_responseContent": { "sn_body": { "receiveInvorder": { "fpqqlsh": "201809201151292543956", "respMsg": "成功", "billNumber": "2018090112984", "respCode": "0000" } } } }
异常码 | 错误描述 | 解决方案 |
---|---|---|
biz.custom.receiveinvorder.missing-parameter:* | 参数必填 | 请检查此参数的值,*号表示参数字段名 |
biz.custom.receiveinvorder.length-overlong:* | 参数的值超过规定长度 | 请检查此参数的值,*号表示参数字段名 |
isp.sys.service.unavailable.iips | 服务不可用 | 请联系苏宁技术人员 |
异常码 | 错误描述 | 解决方案 |
---|---|---|
sys.check.user-permission:inexistence | 访问令牌不存在 | 更换访问令牌 |
sys.check.user-permission:overdue | 访问令牌已过期 | 请使用刷新令牌刷新 |
sys.check.api-permission:inexistence | Api方法不存在 | 请参考帮助中心 |
sys.check.api-permission:overdue | Api方法已过期 | 请参考帮助中心 |
sys.check.method-permission:authority | 无权操作此api | 确认是否有访问该方法权限 |
sys.auth.vendor-request:errory | 无权操作此供应商 | 请确认供应商编码是否正确 |
sys.controller.api-request:limit | Api请求受控 | 超过请求次数 |
sys.check.app-time:error | 请求参数错误api请求时间误差大 | 参考帮助中心 |
sys.check.request-params:error | 请求报文结构错误 | 参考帮助中心、日期格式等 |
sys.check.starttime-format:error | 请求开始时间错误 | 参考帮助中心、日期格式等 |
biz.handler.data-get:success | 业务数据查询成功 | 无 |
biz.handler.data-get:fail | 业务数据查询失败 | 检查请求条件 |
biz.handler.data-get:no-result | 业务数据结果为空 | 无 |
sys.check.pageno-format:error | pageNo格式错误,只允许1到99999之间的整数 | 检查pageNo输入是否有误 |
sys.check.pagesize-format:error | pageSize格式错误,只允许1到50之间的整数(订单相关是1到100) | 检查pageSize输入是否有误 |
sys.check.page-param:error | pageNo或者pageSize不在要求范围内,pageNo只允许1到99999之间的整数,pageSize只允许1到50之间的整数(订单相关是1到100) | 检查pageNo和pageSize输入是否有误 |
sys.check.miss-time:starttime | 不存在开始时间(节点) | 检查输入 |
sys.check.miss-time:endtime | 不存在结束时间(节点) | 检查输入 |
sys.check.starttime-value:null | 开始时间为空(值) | 检查输入 |
sys.check.endtime-value:null | 结束时间为空(值) | 检查输入 |
sys.check.starttime-format:error | 校验开始时间不合法,格式yyyy-MM-dd HH:mm:ss | 检查时间格式 |
sys.check.endtime-format:error | 校验结束时间不合法,格式yyyy-MM-dd HH:mm:ss | 检查时间格式 |
sys.check.query-time:error | 开始时间是否小于结束时间 | 检查开始和结束时间大小 |
sys.check.query-time:outofrange | 时间查询是否超出指定范围 | 检查时间范围 |
sys.check.app-sign:null | 签名信息为空 | 检查签名信息 |
sys.check.app-sign:error | 签名信息错误 | 检查签名信息 |
sys.check.missing-parameter:apiversion | API版本号未指定 | 检查API版本号 |
sys.check.missing-parameter:appRequestTime | 请求时间丢失 | 检查请求时间 |
sys.check.missing-nestElement:sn_body | 缺少sn_body节点 | 检查sn_body是否存在 |
sys.check.user-permission:inexistence | 用户key不存在 | 检查用户key是否存在 |
biz.handler.batch-handler:no-support | 非查询类API不支持批量操作 | 检查API类型 |
biz.handler.request-message:error | 查询类API输入多个业务节点 | 检查业务节点 |
sys.check.header-param:null | header参数为空 | 请检查header参数 |
sys.controller.api-access:limit | 访问限制 | 无 |
sys.controller.api-frequency:limit | 访问频率限制 | 无 |
sys.error.network:failure | 网络异常 | 无 |
sys.error.network-status:? | 响应失败 ?为状态码 | 无 |
sys.check.snunionid.length.is.not:48 | 混淆会员编码长度不是48位 | 使用转换器转换混淆会员编码规定要求混淆会员编码48位 |