平台Api对接
  1. 开发指南
平台Api对接
  • 错误编码信息
  • 开发指南
    • 开发前必读
    • 对接地址
    • 接口调用规则
    • 认证鉴权
    • 认证鉴权
      POST
  • 发票夹业务
    • 介绍
    • 票夹发票查询
      POST
    • 发票使用状态推送
      POST
    • 同步组织(单位、部门、人员)结构接口
      POST
    • 邮局邮件获取
      POST
  • 进项业务
    • 介绍
    • 获取税款所属期
      POST
    • 进项发票采集
      POST
    • 进项发票勾选
      POST
    • 海关缴款书采集
      POST
    • 海关缴款书勾选
      POST
    • 申请发票统计
      POST
    • 发票统计确认签名
      POST
    • 撤销发票统计(统计确认签名)
      POST
  • 税局登陆业务
    • 介绍
    • 电子税务局账户登录接口(手机号短信)
      POST
    • 电子税务局账户上传短信验证码
      POST
  • 发票归集
    • 发票信息获取
      POST
  • 发票文件下载
    • 单张发票板式文件下载
  • 发票开具
    • 介绍
    • 红字发票
      • 红字确认单列表查询
      • 获取红字确认单明细信息
      • 红字确认单申请
      • 红字确认单确认操作
      • 红字确认单撤销操作
      • 红字发票概况统计查询
      • 红字发票开具
    • 附加要素
      • 获取附加要素列表
      • 附加要素添加
      • 附加要素编辑
      • 附加要素删除
    • 获取人脸识别认证二维码(税务app)
    • 获取人脸识别认证结果(税务app)
    • 获取企业基本信息
    • 获取开票统计信息
    • 发票开具申请
    • 获取开票结果
    • 发票邮件交付接口
    • 已开发票列表查询
    • 已开发票明细查询
    • 数电已开发票版式文件下载(单个)
    • 开票刷脸状态查询
  • 智能编码
    • 商品编码智能匹配
    • 企业名称模糊查询
  • 企业相关接口
    • 企业授权模块查询
  • 票据识别
    • 票据识别OCR
  • 发票查验
    • 增值税发票查验
  1. 开发指南

接口调用规则

HTTP调用方式可以面向HTTP接口进行开发,(软件开发商)可以根据自己系统的情况,选择不同的实现语言来实现对接。

请求参数#

公共请求头
除了HTTP协议中规定的头信息以外,本开放接口额外做以下头信息要求:
参数名称参数类型说明
ContentTypeString请填写text/plain;charset=UTF-8
accessTokenString大多数接口,需要通过验证身份以后才能访问,需要携带该头信息;请从OAuth接口 获取的accessToken,Token有效时间4小时
CommitDateLong当前时间戳的毫秒数。可以参考java的System.currentTimeMillis()方法生成;(如果未携带该头信息,或与服务端的时间差超过 15 分钟,则云端拒绝该请求)
signValueString签名校验请求的合法性
提交的Body值
Body值为JSON的Base64字符串,具体的JSON结构参考接口说明。
公共返回报文
在所有请求的返回值里,有一些公共的字段:
参数名称参数类型说明
codeInteger业务返回编码:0=成功
messageString业务返回消息
requestIDString当前业务的提交流水号,便于后期查询定位
timestampLong当前业务提交的时间戳(毫秒数)
tokenStringOAuth接口获取的accessToken,有效时间4小时,超时后需要重新申请
codeTypeInteger业务返回数据编码格式:0=不编码,1=AES,3=Base64
iszipInteger业务发挥的数据压缩标记:0=不压缩,1=zip压缩
dataString业务数据
返回结果示例

签名规则#

每个请求头都需要添加signValue字段,来验证请求的合法性,填写方法如下:
1、signValue头信息填写的内容如下:
其中:
Signature:为签名值,计算方法见下面描述
2、签名值的计算方法:
第一步,拼装待签名字符串
其中:
HTTPMethod:为请求的方法,通常为POST(大写)
ContentMd5:为请求Body内容的md5(32位小写)
CommitDate:为请求头信息中的CommitDate
accessToken:为登录后获取(Oauth2登陆接口值为空字符串)
AppSecret:为分配给接入方的密钥(Oauth2登陆接口值为空字符串)
注意:
签名字符串必须为UTF-8格式,含有中文字符的签名串必须先进行UTF-8编码
本文档中 md5 相关的结果都转为小写处理
第二步,计算签名

签名示例#

签名内容执行结果示例描述
Json信息:
{
"client_appkey":"2R68Fute8FeeeDeeyy8rF7J",
"client_secret":"bfd850c3333c4c62d35ed9496fedef1c"
}
Base64结果(没有换行符):
eyJjbGllbnRfYXBwa2V5IjoiMlI2OEZ1dGU4Rm
VlZURlZXl5OHJGN0oiLCJjbGllbnRfc2VjcmV0
IjoiYmZkODUwYzMzMzNjNGM2MmQzNWVkOTQ5Nm
ZlZGVmMWMifQ==
请求body(没有换行符):
eyJjbGllbnRfYXBwa2V5IjoiMlI2OEZ1dGU4Rm
VlZURlZXl5OHJGN0oiLCJjbGllbnRfc2VjcmV0
IjoiYmZkODUwYzMzMzNjNGM2MmQzNWVkOTQ5Nm
ZlZGVmMWMifQ==
请求body Md5结果:
26b2b53330461405e46c574c26f366f8
Base64字符串不能有换行符
待签名字符串:
signValue=HTTPMethod_ContentMd5_CommitDate_accessToken_appSecret
=POST_26b2b53330461405e46c574c26f366f8_CommitDate_xxx_zzz
签名值过程 md5之后结果:
a4b6e0831495c1a8a2afa88f47b3d076
1、CommitDate请替换成实际的时间戳,如:1581588537349的格式
2、xxx请替换成实际取到的accessToken, 如:63518b8d441a42f3816d877a3c924781@@1726459567923
3、zzz请替换成实际的appSecret,如: rC1r9ueqrePteeeG9Prterrr8ue8AyP9988Fr9J9
上述举例的数据是为了验证签名算法,请先按照举例的数据验证 md5 和 base64 算法,看看生成的签名值是否正确,实际请求请按照实际数据签名。

API鉴权调用常见问题#

1、login接口的client_secret需要MD5(appSecret)后32位小写。
2、login接口signValue签名中accessToken和AppSecret直接使用 空字符串。
3、header中的CommitDate和signValue签名中的CommitDate需要相同。
4、确认MD5函数的结果是否正确,校验使用https://www.sojson.com/encrypt_md5.html
5、body中请求参数和signValue签名中的请求参数要一致,使用字符串,不要有空格和回车。
6、login请求参数:
7、业务接口请求头中四个参数如下:
修改于 2024-09-29 03:13:23
上一页
对接地址
下一页
认证鉴权
Built with