聚美智数


发票开具-全电

<p>[TOC]</p> <p>&lt;a name=&quot;使用流程&quot;&gt;&lt;/a&gt;</p> <h2>使用流程</h2> <p>第一步:用户提供【企业税号、所属省份、复核人、收款人、开票人、地址&amp;电话、银行&amp;帐号】,由聚美智数通过这个信息生成唯一spid [税票id] 第二步:聚美智数提供全电发票开具接口配套系统,用户安装 第三步:通过生成的 spid [税票id] ,拼装发票报文json ,调用发票开票接口即可</p> <p>&lt;a name=&quot;接口调用方式&quot;&gt;&lt;/a&gt;</p> <h2>接口调用说明</h2> <h3>请求方式</h3> <p>如接口没有单独说明,均为:<strong>POST</strong></p> <h3>请求格式</h3> <p>如接口没有单独说明,均为:<strong>application/x-www-form-urlencoded</strong></p> <h3>请求参数</h3> <p>请求参数包括公共参数和业务参数(业务参数见具体接口说明) 调用接口时,需要把<strong>公共参数</strong>和<strong>业务参数</strong>一并放在<strong>请求参数</strong>中提交</p> <h4>公共请求参数</h4> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th>&lt;div style=&quot;width:420px;&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>appId</td> <td>String</td> <td>是</td> <td>服务商分配的唯一标识</td> </tr> <tr> <td>timestamp</td> <td>Long</td> <td>是</td> <td>当前时间戳(毫秒)</td> </tr> <tr> <td>sign</td> <td>String</td> <td>是</td> <td>签名,详见&lt;a href=&quot;#签名算法&quot;&gt;签名算法说明&lt;/a&gt;</td> </tr> </tbody> </table> <p>&lt;a name=&quot;签名算法&quot;&gt;&lt;/a&gt;</p> <h4>签名算法说明</h4> <pre><code>sign = sha256(appId + appSecret + timestamp)</code></pre> <p>用服务商分配的 <strong>appId</strong>、服务商分配的 <strong>appSecret</strong>,当前时间戳(毫秒) <strong>timestamp</strong>,按上述顺序拼接成字符串,再进行 <strong>sha256</strong> 哈希得到。如下:</p> <pre><code class="language-java">String appId = &amp;quot;xyzxy2121zxyz&amp;quot;; String timestamp = &amp;quot;1555378976238&amp;quot;; String appSecret = &amp;quot;efcefcef1121cefcefc1212121&amp;quot;; String str = appId + appSecret + timestamp; String sign = sha256(str);</code></pre> <h3>返回说明</h3> <h4>公共返回字段说明</h4> <p>所有接口均返回以下公共字段:</p> <table> <thead> <tr> <th>字段名</th> <th>&lt;div style=&quot;width:420px&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>code</td> <td>返回码,详见:公共code返回码说明</td> </tr> <tr> <td>msg</td> <td>code对应的描述</td> </tr> <tr> <td>charge</td> <td>计费标志</td> </tr> <tr> <td>taskNo</td> <td>本次请求号</td> </tr> <tr> <td>data</td> <td>返回具体结果,object类型,详见data返回字段描述</td> </tr> </tbody> </table> <h4>公共code返回码说明</h4> <p>所有接口公共返回码如下:</p> <table> <thead> <tr> <th>code</th> <th>&lt;div style=&quot;width:420px;&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>200</td> <td>成功,注:开票接口指接口调用成功,不表示发票开具成功</td> </tr> <tr> <td>400</td> <td>参数错误</td> </tr> <tr> <td>404</td> <td>接口地址不正确</td> </tr> <tr> <td>500</td> <td>系统维护,请稍候再试</td> </tr> <tr> <td>601</td> <td>接口未开通</td> </tr> <tr> <td>602</td> <td>账号停用</td> </tr> <tr> <td>604</td> <td>接口停用</td> </tr> <tr> <td>606</td> <td>调用超限,请稍候再试</td> </tr> <tr> <td>607</td> <td>ip不在白名单</td> </tr> <tr> <td>609</td> <td>请求过于频繁,请稍候再试</td> </tr> <tr> <td>610</td> <td>请求超时</td> </tr> <tr> <td>999</td> <td>其他,以实际返回为准</td> </tr> </tbody> </table> <p>&lt;a name=&quot;全电发票开具&quot;&gt;&lt;/a&gt;</p> <h2>全电发票开具</h2> <h3>接口描述</h3> <ul> <li>全电发票开具(含蓝字和红字发票)</li> </ul> <h3>请求地址</h3> <p><code>https://api.jumdata.com/invoice/makeout</code></p> <h3>业务参数</h3> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th>&lt;div style=&quot;width:420px;&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>spid</td> <td>String</td> <td>是</td> <td>税票id,联系服务商获取</td> </tr> <tr> <td>data</td> <td>String</td> <td>是</td> <td>发票报文json,详见发票报文data说明</td> </tr> </tbody> </table> <h3>发票报文data说明</h3> <h4>报文结构</h4> <p>&gt; 注:报文节点全大写</p> <pre><code>[{ &amp;quot;XTLSH&amp;quot;: &amp;quot;单据号&amp;quot;, &amp;quot;KHMC&amp;quot;: &amp;quot;客户名称&amp;quot;, &amp;quot;KHSH&amp;quot;: &amp;quot;税号&amp;quot;, &amp;quot;KHDZ&amp;quot;: &amp;quot;地址&amp;quot;, &amp;quot;KHKHYHZH&amp;quot;: &amp;quot;客户银行账号&amp;quot;, &amp;quot;FPZL&amp;quot;: &amp;quot;发票种类&amp;quot;, &amp;quot;BZ&amp;quot;: &amp;quot;备注&amp;quot;, &amp;quot;KPR&amp;quot;: &amp;quot;开票人&amp;quot;, &amp;quot;SKR&amp;quot;: &amp;quot;收款人&amp;quot;, &amp;quot;FHR&amp;quot;: &amp;quot;复核人&amp;quot;, &amp;quot;QYKHYHZH&amp;quot;: &amp;quot;企业开户银行账号&amp;quot;, &amp;quot;QYDZDH&amp;quot;: &amp;quot;企业地址电话&amp;quot;, &amp;quot;YFPHM&amp;quot;: &amp;quot;红冲原发票号&amp;quot;, &amp;quot;XXBBH&amp;quot;: &amp;quot;信息表编号&amp;quot;, &amp;quot;QDBZ&amp;quot;: &amp;quot;清单标志&amp;quot;, &amp;quot;KHYJ&amp;quot;: &amp;quot;客户邮件&amp;quot;, &amp;quot;KHSJ&amp;quot;: &amp;quot;客户手机号&amp;quot;, &amp;quot;JDC&amp;quot;: &amp;quot;机动车标识&amp;quot;, &amp;quot;DBTS&amp;quot;: &amp;quot;代办退税标识&amp;quot;, &amp;quot;ITEM&amp;quot;: [{ &amp;quot;CPMC&amp;quot;: &amp;quot;产品名称1&amp;quot;, &amp;quot;CPXH&amp;quot;: &amp;quot;产品型号&amp;quot;, &amp;quot;CPDW&amp;quot;: &amp;quot;产品单位&amp;quot;, &amp;quot;SL&amp;quot;: &amp;quot;税率&amp;quot;, &amp;quot;CPSL&amp;quot;: &amp;quot;数量&amp;quot;, &amp;quot;BHSJE&amp;quot;: &amp;quot;不含税金额&amp;quot;, &amp;quot;SE&amp;quot;: &amp;quot;税额&amp;quot;, &amp;quot;FLBM&amp;quot;: &amp;quot;分类编码&amp;quot;, &amp;quot;XSYH&amp;quot;: &amp;quot;税率优惠&amp;quot;, &amp;quot;KCJE&amp;quot;:&amp;quot;0&amp;quot; }, { &amp;quot;CPMC&amp;quot;: &amp;quot;产品名称2&amp;quot;, &amp;quot;CPXH&amp;quot;: &amp;quot;产品型号&amp;quot;, &amp;quot;CPDW&amp;quot;: &amp;quot;产品单位&amp;quot;, &amp;quot;SL&amp;quot;: &amp;quot;税率&amp;quot;, &amp;quot;CPSL&amp;quot;: &amp;quot;数量&amp;quot;, &amp;quot;BHSJE&amp;quot;: &amp;quot;不含税金额&amp;quot;, &amp;quot;SE&amp;quot;: &amp;quot;税额&amp;quot;, &amp;quot;FLBM&amp;quot;: &amp;quot;分类编码&amp;quot;, &amp;quot;XSYH&amp;quot;: &amp;quot;税率优惠&amp;quot;, &amp;quot;KCJE&amp;quot;:&amp;quot;0&amp;quot; },... ] },... ] </code></pre> <h4>字段说明</h4> <table> <thead> <tr> <th>字段</th> <th>是否必需</th> <th>&lt;div style=&quot;width:420px;&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>XTLSH</td> <td>是</td> <td>单据号,由调用方自行生成,唯一。返回时会同样返回,便于匹配结果</td> </tr> <tr> <td>KHMC</td> <td>是</td> <td>客户名称</td> </tr> <tr> <td>KHSH</td> <td>否</td> <td>客户税号</td> </tr> <tr> <td>KHDZ</td> <td>否</td> <td>客户地址</td> </tr> <tr> <td>KHKHYHZH</td> <td>否</td> <td>开户银行账号</td> </tr> <tr> <td>FPZL</td> <td>是</td> <td>发票种类 &lt;br/&gt;- 020 全电专票 &lt;br&gt;- 021 全电普票</td> </tr> <tr> <td>BZ</td> <td>否</td> <td>备注</td> </tr> <tr> <td>KPR</td> <td>否</td> <td>开票人</td> </tr> <tr> <td>SKR</td> <td>否</td> <td>收款人</td> </tr> <tr> <td>FHR</td> <td>否</td> <td>复核人</td> </tr> <tr> <td>QYKHYHZH</td> <td>否</td> <td>销方银行账号</td> </tr> <tr> <td>QYDZDH</td> <td>否</td> <td>销方地址电话</td> </tr> <tr> <td>YFPHM</td> <td>条件是</td> <td>原发票号(原发票代码+原发票号码) &lt;br&gt;红字发票必传,普票和电票必有&lt;br&gt;注:含(代码)总共18位或20位。</td> </tr> <tr> <td>XXBBH</td> <td>条件是</td> <td>信息表编号 红字专票必传,普票电票不需要传</td> </tr> <tr> <td>QDBZ</td> <td>否</td> <td>清单标志 默认为0</td> </tr> <tr> <td>KHYJ</td> <td>否</td> <td>客户邮件 自动发邮件</td> </tr> <tr> <td>KHSJ</td> <td>否</td> <td>客户手机</td> </tr> <tr> <td>JDC</td> <td>否</td> <td>机动车标识 1为开具机动车专票</td> </tr> <tr> <td>DBTS</td> <td>否</td> <td>代办退税标识 1为开具代办退税发票</td> </tr> <tr> <td>ITEM</td> <td>是</td> <td>详见ITEM字段说明</td> </tr> </tbody> </table> <p>&gt; 注:非必须节点,可以不带此节点</p> <h4>ITEM字段说明</h4> <table> <thead> <tr> <th>字段</th> <th>是否必需</th> <th>&lt;div style=&quot;width:420px;&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>CPMC</td> <td>是</td> <td>产品名称 如果是折扣行,必需与正数行一致的名称</td> </tr> <tr> <td>CPXH</td> <td>否</td> <td>产品型号 如果是折扣行,此值为空</td> </tr> <tr> <td>CPDW</td> <td>否</td> <td>产品单位 如果是折扣行,此值为空</td> </tr> <tr> <td>SL</td> <td>是</td> <td>税率</td> </tr> <tr> <td>CPSL</td> <td>否</td> <td>产品数量 红冲时为负,红冲时,不能有正数金额。</td> </tr> <tr> <td>BHSJE</td> <td>是</td> <td>不含税金额 红冲时为负</td> </tr> <tr> <td>SE</td> <td>是</td> <td>税额 红冲时为负</td> </tr> <tr> <td>FLBM</td> <td>是</td> <td>分类编码 必需到未级编码</td> </tr> <tr> <td>XSYH</td> <td>否</td> <td>税收优惠 有优惠1, 无优惠0 默认 0</td> </tr> <tr> <td>KCJE</td> <td>否</td> <td>扣除金额 差额开票时有用</td> </tr> </tbody> </table> <p>&gt; 注:非必须节点,可以不带此节点</p> <h3>返回说明</h3> <pre><code class="language-json">{ &amp;quot;code&amp;quot;: 200, // 200指接口调用成功,不表示发票开具成功,详见code返回码说明 &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot;, // code对应的描述 &amp;quot;taskNo&amp;quot;: &amp;quot;69564903663951243279&amp;quot;, // 本次唯一请求号 &amp;quot;data&amp;quot;: { &amp;quot;successList&amp;quot;: [{ // 成功列表 &amp;quot;XTLSH&amp;quot;: &amp;quot;001&amp;quot;, // 单据号 &amp;quot;JQBH&amp;quot;: &amp;quot;&amp;quot;, // 机器编号 &amp;quot;FPDM&amp;quot;: &amp;quot;1233456789012&amp;quot;, // 发票代码 &amp;quot;FPHM&amp;quot;: &amp;quot;12345678&amp;quot;, // 发票号码 &amp;quot;KPRQ&amp;quot;: &amp;quot;2019-01-12t11:20:33&amp;quot;, // 开票日期 &amp;quot;SKM&amp;quot;: &amp;quot;密文&amp;quot;, // 密文 &amp;quot;JYM&amp;quot;: &amp;quot;校验码&amp;quot;, // 校验码 &amp;quot;EWM&amp;quot;: &amp;quot;二维码&amp;quot;, // 二维码 &amp;quot;URL&amp;quot;: &amp;quot;&amp;quot;,// 电子发票下载网址【永久有效】 &amp;quot;KPJG&amp;quot;: &amp;quot;&amp;quot;,// 开票结果 1开票成功 0开票失败 &amp;quot;KPFK&amp;quot;: &amp;quot;&amp;quot;// 开票反馈信息 },... ], &amp;quot;errorList&amp;quot;: [ // 失败列表 { &amp;quot;XTLSH&amp;quot;: &amp;quot;&amp;quot;, // 单据号 &amp;quot;ERRMSG&amp;quot;: &amp;quot;&amp;quot; // 错误信息 },... ]} }</code></pre> <ul> <li>当离线开票或税盘不在线时可能只是接口调用成功,此时需要关注下errorList这个值,此时有可能是部份成功,部份不成功。</li> <li>唯一能确定开票成功开票的情况:successList列表中的发票号码不是为空</li> </ul> <h4>开具成功示例</h4> <pre><code class="language-json">{ &amp;quot;code&amp;quot;: 200, // 200指接口调用成功,不表示发票开具成功,详见code返回码说明 &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot;, // code对应的描述 &amp;quot;taskNo&amp;quot;: &amp;quot;69564903663951243279&amp;quot;, // 本次唯一请求号 &amp;quot;data&amp;quot;: { &amp;quot;successList&amp;quot;: [{ // 成功列表 &amp;quot;XTLSH&amp;quot;: &amp;quot;001&amp;quot;, // 单据号 &amp;quot;FPZL&amp;quot;: &amp;quot;&amp;quot;, // 发票种类 &amp;quot;FPDM&amp;quot;: &amp;quot;1233456789012&amp;quot;, // 发票代码 &amp;quot;FPHM&amp;quot;: &amp;quot;12345678&amp;quot;, // 发票号码 &amp;quot;KPRQ&amp;quot;: &amp;quot;2019-01-12t11:20:33&amp;quot;, // 开票日期 &amp;quot;JQBH&amp;quot;: &amp;quot;&amp;quot;, // 机器编号 &amp;quot;SKM&amp;quot;: &amp;quot;密文&amp;quot;, // 密文 &amp;quot;JYM&amp;quot;: &amp;quot;校验码&amp;quot;, // 校验码 &amp;quot;EWM&amp;quot;: &amp;quot;二维码&amp;quot;, // 二维码 &amp;quot;URL&amp;quot;: &amp;quot;&amp;quot;,// 电子发票下载网址 &amp;quot;KPJG&amp;quot;: &amp;quot;&amp;quot;,// 开票结果 1开票成功 0开票失败 &amp;quot;KPFK&amp;quot;: &amp;quot;&amp;quot;// 开票反馈信息 },... ] }</code></pre> <h4>开具失败示例</h4> <pre><code class="language-json">{ &amp;quot;code&amp;quot;: 999, // &amp;quot;msg&amp;quot;: &amp;quot;&amp;quot;, // code对应的描述 &amp;quot;taskNo&amp;quot;: &amp;quot;69564903663951243279&amp;quot;, // 本次唯一请求号 &amp;quot;data&amp;quot;: { &amp;quot;errorList&amp;quot;: [{ &amp;quot;XTLSH&amp;quot;: &amp;quot;001&amp;quot;, // 单据号 &amp;quot;ERRMSG&amp;quot;: &amp;quot;&amp;quot; // 错误信息 },... ] }</code></pre> <h4>接口调用失败示例</h4> <pre><code class="language-json">{ &amp;quot;code&amp;quot;: 400, &amp;quot;msg&amp;quot;: &amp;quot;税盘id不能为空&amp;quot; }</code></pre> <hr /> <p>&lt;a name=&quot;发票开具结果查询&quot;&gt;&lt;/a&gt;</p> <h2>发票开具结果查询</h2> <h3>接口描述</h3> <ul> <li>查询发票开具结果</li> </ul> <h3>请求地址</h3> <p><code>https://api.jumdata.com/invoice/makeout-result</code></p> <h3>业务参数</h3> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th>&lt;div style=&quot;width:420px;&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>spid</td> <td>String</td> <td>是</td> <td>税票id,联系服务商获取</td> </tr> <tr> <td>fpzl</td> <td>String</td> <td>是</td> <td>发票种类 &lt;br&gt;- 020 全电专票 &lt;br&gt;- 021 全电普票</td> </tr> <tr> <td>xtlsh</td> <td>String</td> <td>是</td> <td>单据号,即开具发票的传入的单据号</td> </tr> </tbody> </table> <h3>返回说明</h3> <pre><code class="language-json">{ &amp;quot;code&amp;quot;: 200, // 详见code返回码说明 &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot;, // code对应的描述 &amp;quot;taskNo&amp;quot;: &amp;quot;69564903663951243279&amp;quot;, // 本次唯一请求号 &amp;quot;data&amp;quot;: { &amp;quot;XTLSH&amp;quot;: &amp;quot;001&amp;quot;, // 单据号 &amp;quot;FPHM&amp;quot;: &amp;quot;12345678&amp;quot;, // 发票号码(18位或20位)包含发票代码 。18位:发票代码前10位,发票号码后8位;20位:发票代码前12,发票号码后8位 &amp;quot;KPRQ&amp;quot;: &amp;quot;2021-11-12 00:00:00.000&amp;quot;, // 开票日期 &amp;quot;MW&amp;quot;: &amp;quot;[ODA0NDw2KjYwMD]&amp;quot;, // 发票密文, 前后都有中括号 &amp;quot;XYM&amp;quot;: &amp;quot;57408721592&amp;quot;,//校验码 &amp;quot;JQBH&amp;quot;: &amp;quot;66180&amp;quot;, //机器编号 &amp;quot;URL&amp;quot;: &amp;quot;574087215921.PDF&amp;quot;//发票下载地址 } } </code></pre> <hr /> <p>&lt;a name=&quot;发票重新下载&quot;&gt;&lt;/a&gt;</p> <h2>发票重新下载</h2> <h3>接口描述</h3> <ul> <li>因网络抖动原因,个别发票PDF无法下载,该接口可重新下载</li> </ul> <h3>请求地址</h3> <p><code>https://api.jumdata.com/invoice/makeout/pdf/reload</code></p> <h3>业务参数</h3> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th>&lt;div style=&quot;width:420px;&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>taskNo</td> <td>String</td> <td>是</td> <td>发票开具接口返回的请求号</td> </tr> </tbody> </table> <h3>返回说明</h3> <pre><code class="language-json">{ &amp;quot;charge&amp;quot;: false,//该接口不收费 &amp;quot;code&amp;quot;: 200,//详见code返回码说明 &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot;,//code对应的描述 &amp;quot;taskNo&amp;quot;: &amp;quot;332844491207624722580105&amp;quot;,//本次唯一请求号 &amp;quot;data&amp;quot;: { &amp;quot;result&amp;quot;: true,//是否成功,true:成功,false:失败 &amp;quot;message&amp;quot;: &amp;quot;成功&amp;quot;, &amp;quot;url&amp;quot;: &amp;quot;https://xxxxxx.pdf&amp;quot; //发票开具接口返回的链接 } } </code></pre> <h3>失败示例</h3> <pre><code class="language-json">{ &amp;quot;code&amp;quot;: 400, &amp;quot;msg&amp;quot;: &amp;quot;taskNo不能为空!&amp;quot; }</code></pre> <h2>获取刷脸认证二维码</h2> <h3>接口描述</h3> <ul> <li>用于电子税务局刷脸认证时使用,延长税局在线时间和身份验证</li> </ul> <h3>请求地址</h3> <p><code>https://api.jumdata.com/tax-plate/face-qrcode</code></p> <h3>业务参数</h3> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>必须</th> <th>&lt;div style=&quot;width:420px;&quot;&gt;说明&lt;/div&gt;</th> </tr> </thead> <tbody> <tr> <td>spid</td> <td>String</td> <td>是</td> <td>税票id,联系服务商获取</td> </tr> </tbody> </table> <h3>返回说明</h3> <pre><code class="language-json">{ &amp;quot;code&amp;quot;: 200, // 详见code返回码说明 &amp;quot;msg&amp;quot;: &amp;quot;成功&amp;quot;, // code对应的描述 &amp;quot;taskNo&amp;quot;: &amp;quot;69564903663951243279&amp;quot;, // 本次唯一请求号 &amp;quot;data&amp;quot;: { &amp;quot;Qrcode&amp;quot;:&amp;quot;&amp;quot; } } </code></pre>

页面列表

ITEM_HTML