发票云(标准版)API文档
旗舰版标准版智能特性
旗舰版标准版智能特性
🤖 AI Support​​
    • 整体介绍
    • 对接约定
    • 授权
      • 获取AccessToken
        POST
    • 开票
      • 产品介绍
      • 开发指南
      • 税控&数电同步开票
        • 业务场景下接口调用顺序
        • 1.01.读取税盘信息(czlx-7)
        • 1.02 .读取票种信息(czlx-30)
        • 1.03.发票开具(czlx-3)
        • 1.04.发票作废(czlx-6)
        • 1.05.发票查询(czlx-5)
        • 1.06.发票打印(czlx-4)
        • 1.07.专用发票申请红字信息表(czlx-20)
        • 1.08.查询专用发票申请红字信息表(czlx-18)
        • 1.09.批量打印(czlx-32)
        • 1.11.机动车销售统一发票开具(czlx-40)
        • 1.12.机动车销售统一发票查询(czlx-41)
        • 1.13.机动车销售统一发票红冲(czlx-42)
        • 1.15.核定票种查询(czlx-51)
        • 1.21.二手车-发票开具(czlx-43)
        • 1.22.二手车-发票查询(czlx-44)
        • 1.23.二手车-发票红冲(czlx-45)
        • 1.30 .查询授信额度接口(czlx-122)
        • 2.01.电子发票开具(czlx-110) ,【注】开数电票请对接:1.03.发票开具(czlx-3)
        • 2.02.电子发票信息查询(czlx-113)
        • 2.03.电子发票红冲 (只支持全额红冲)(czlx-114)
        • 2.04.刷新PDF(czlx-115)
        • 2.05.查询电子发票余量(czlx-116)
        • 3.01.查询税收分类编码信息(czlx-504)
        • 3.03.获取打印机列表(czlx-901)
      • 数电异步开票
        • 异步开票-v4
        • 查询异步开票结果-v4
      • 扫码开票
        • 上传销售单模式扫码开票
          • 接入指南
          • 1.token获取
          • 2.上传发票销售单接口
          • 3.回推接口地址
        • 自定义扫码开票
          • 接入指南
          • 1.对接方按规则组装二维码链接
          • 2.查询开票明细
          • 3.回推接口地址
      • 企业级-发票云销项查询
        • 根据业务条件查询当前企业的销项发票
    • 收票
      • 开发指南
      • 发票数据规范
      • 发票数据
        • 机动车发票数据
        • 火车票数据
        • 火车票退票凭证数据
        • 财政电子票据数据
        • 客运票/轮船票数据
        • 其他发票数据
        • 完税证明数据
        • 飞机票数据
        • 数电票(铁路电子客票)数据
        • 数电票(航空运输电子客票行程单)数据
        • 数电票(专票/普票)数据
        • 的士票数据
        • 定额发票数据
        • 通用机打(纸质/电子)发票数据
        • 过路过桥费数据
        • 二手车票数据
        • 专票和普票数据
        • 通行费发票数据
        • 海关缴款书数据
        • 发票文件数据
      • 企业级-发票云进项查询
        • 根据业务条件查询当前企业采集的发票
        • 根据代码号码查询当前企业采集的发票
        • 根据开票时间范围和采集时间范围查询当前企业采集的发票
        • 根据发票流水号或者发票代码号码查询当前企业采集的发票
        • 根据业务条件查询指定用户采集的发票
      • 税盘&数电票下载
        • 开发指南
        • 1、获取税款所属期信息
        • 2、进项发票表头采集
        • 3、发票不抵扣勾选
        • 4、海关缴款书抵扣勾选(税盘模式不支持)
        • 5、海关缴款书不抵扣勾选(税盘模式不支持)
        • 6、海关缴款书表头采集(税盘模式不支持)
        • 7、全量发票查询
        • 8、当前统计查询
        • 9、历史统计查询
        • 10、生成统计表
        • 11、撤销统计表
        • 12、确认统计表
        • 13、获取当前已勾选或往期已认证发票(税盘模式不支持)
        • 14、当期已勾选或往期已认证缴款书(税盘模式不支持)
        • 15、发票抵扣勾选
      • 电子凭证解析
        • billTypeCode表
        • 解析 + 验签 指定文件的xbrl信息
        • xbrl字符串转json
        • json转xbrl字符串
      • 发票异步下载
        • 进项全量发票采集-异步申请
        • 进项全量发票采集-异步结果查询
      • 发票数据规范
    • 查验识别
      • 开发指南
      • 发票查验(单张)
      • 发票查验(多张异步)
      • 发票识别+查验(单张)
      • 发票识别(多张)
      • 发票识别+查验(多张)
      • 数电票文件识别+查验
      • 返回状态码
    • 报销
      • 发票助手移动端-h5对接
      • 发票助手移动端-小程序对接
      • 第三方发票报销查询
      • 发票助手PC端对接
        • 对接流程
        • JS建立连接通道
        • 采集发票
        • 后端建立通道
        • 查看发票
        • 编辑单张发票
        • 分录操作
        • 常见问题
        • 获取userKey
        • 获取linkKey
        • 缓存单据
        • 保存单据
        • 更新单据状态
        • 根据发票流水号获取发票详细数据
        • 根据userkey查询单据下所有发票列表
        • 删除单据
        • 再次查验
        • 回写入账信息
        • 删除入账信息
    • 影像
      • 开发指南
      • 对接约定
      • 影像系统对接
      • 授权
        • 获取AccessToken(影像系统)
    • 档案
      • 异构系统接口定义
      • 发票返结构体

    对接约定

    接入方式#

    发票云API采用RESTfull的设计方式,客户端通过HTTP协议的GET、POST(目前主要是这两种)方法请求进行调用。
    Restful:参考资料
    http://www.infoq.com/cn/articles/designing-restful-http-apps-roth
    API的调用地址基本上遵循如下约定的方式: API地址前缀 + 服务 + 资源 + 参数

    环境地址#

    测试环境: https://api-dev.piaozone.com/test
    正式环境: https://api.piaozone.com

    注:V3接口请求参数不需加密#

    开票测试环境V3: https://api-dev.piaozone.com/bill-websocket/v3/invoicewebsocket/push?taxNo=xxxxxxxxxx&clientId=xxxxxxxxx&debugOpenInvoice=1
    开票正式环境V3: https://api.piaozone.com/bill-websocket/v3/invoicewebsocket/push?taxNo=xxxxxxxxxx&clientId=xxxxxxxxx&reqid=1733386544113
    开票测试环境V4(注:V4环境不支持模拟开票): https://api-dev.piaozone.com/bill-websocket/v4/invoicewebsocket/invoice/query?access_token=xxxxxxxxreqid=xxxxxxxxxx&taxNo=xxxxx&fpdk_type=3&serialNo=xxxxxxxxxxxxx
    开票正式环境V4: https://api.piaozone.com/bill-websocket/v4/invoicewebsocket/push?access_token=xxxxxxxxreqid=xxxxxxxxxx&taxNo=xxxxx&fpdk_type=3&serialNo=xxxxxxxxxxxxx
    注意
    单机版开票等部分开票产品为兼容历史客户,维护了不同的环境地址。对接前,请务必阅读该产品的开发指南

    认证方式#

    对接过程中需要:
    发票云授权标识(client_id)
    授权密钥(client_secret)
    加密密钥(encrypt_key)
    client_id和client_secret用于授权认证:获取AccessToken
    encrypt_key用于报文加密(加密方式在下一节介绍)。
    每个环境的授权不同,获取方式可以找实施人员协助提供。如果是金蝶机构的同事,也可以直接通过智能审批获取,审批流名称如下:
    image.png

    签名规则#

    支持以下3种签名生成方式:
    1、MD5(encType=0) 代码示例:
    MD5(client_id + client_secret + timestamp)
    2、SHA256(encType=1) 代码示例:
    DigestUtils.sha256Hex(client_id + client_secret + timestamp)
    3、HMACSHA256(encType=2) 代码示例:
    HMACSHA256.sha256_HMAC((client_id + client_secret + timestamp), client_secret)
    HMACSHA256 工具类代码示例:
    import javax.crypto.Mac;
    import javax.crypto.spec.SecretKeySpec;
    public class HMACSHA256 {
    	/**
         * 将加密后的字节数组转换成字符串
         *
         * @param b 字节数组
         * @return 字符串
         */
    	public  static String byteArrayToHexString(byte[] b) {
            StringBuilder hs = new StringBuilder();
            String stmp;
            for (int n = 0; b!=null && n < b.length; n++) {
                stmp = Integer.toHexString(b[n] & 0XFF);
                if (stmp.length() == 1)
                    hs.append('0');
                hs.append(stmp);
            }
            return hs.toString().toLowerCase();
        }
        /**
         * sha256_HMAC加密
         * @param message 消息
         * @param secret  秘钥
         * @return 加密后字符串
         */
        public static String sha256_HMAC(String message, String secret) {
            String hash = "";
            try {
                Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
                SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
                sha256_HMAC.init(secret_key);
                byte[] bytes = sha256_HMAC.doFinal(message.getBytes());
                hash = byteArrayToHexString(bytes);
            } catch (Exception e) {
                System.out.println("Error HmacSHA256 ===========" + e.getMessage());
            }
            return hash;
        }
    }

    加密方式#

    部分接口需要做报文加密。
    方法:将请求体的json数据需采用AES128加密再传输,秘钥用的是上一节提到的encrypt_key。加密方式代码样例参考:JAVA方式、C++方式、C#方式

    返回格式#

    若无特别说明,接口返回如下:
    上一页
    整体介绍
    下一页
    获取AccessToken
    Built with