一、 项目概述1.1背景本方案适用于ERP集成防伪开票需求的企业。 1.2概况业务系统、防伪开票系统属两个独立的系统。开票系统以IE浏览器ActiveX控件(仅支持32位系统)的方式提供开票系统的接口,业务系统可以通过调用该接口实现增值税发票的开具、打印、作废等操作。 1.3使用人员主要使用人员为公司开票人员。 二、 接口说明2.1控件调用2.1.1控件调用实例调用实例(参考Demo) //实例化ActiveX开票对象 <OBJECT id="MyControl" name="MyControl" classid= "clsid:{94882155-3B7C-48E3-B357-234D56D8F15A}" width = 288 height = 72/ > 1.打开金税卡 MyControl.OpenTax();//打开金税卡 String TaxMessage =MyControl.TaxMessage //函数返回值 String TaxStatus =MyControl.TaxStatus //函数返回值 String TaxMachineNo= MyControl.TaxMachineNo //开票机号 2.开票、作废、打印、红冲 MyControl.TaxInXml=发票数据 //输入开票信息 MyControl.TaxJson (); //开票、作废、打印、红冲,Json格式 String TaxMessage =MyControl.TaxMessage //函数返回值 String TaxStatus =MyControl.TaxStatus //函数返回值 3.回传已开具发票信息 MyControl.ERPNumber=”201305080001” //ERP销售单据编号 MyControl. SelectTaxJson (); //回传发票信息,Json格式 String TaxMessage =MyControl.TaxMessage //函数返回值,回传的发票信息 String TaxStatus =MyControl.TaxStatus //函数返回值 4.关闭金税卡 MyControl.CloseTax(); String TaxMessage =MyControl.TaxMessage //函数返回值 String TaxStatus =MyControl.TaxStatus //函数返回值 4.异常处理 调用CloseTax()强制释放金税卡资源。 注意事项: 1.业务系统可设定一个全局变量,记录金税卡是否开启的状态信息。 2.业务系统可设定一个全局变量,实例化开票对象。 3.每次开启业务系统【税控发票管理模块】,调用OpenTax()开启金税卡,然后调用Tax()进行开票作废打印红冲等操作,所有操作结束调用CloseTax()关闭金税卡。 2.1.2控件说明:1.OpenTax(功能:开启金税卡) 参数说明: 参数名称 | 数据类型 | 类型 | 参数含义 | TaxStatus | string | 返回值 | 命令执行结果(S-成功,F-失败)。 | TaxMessage | string | 返回值 | 返回命令(成功为金税开启成功,失败为金税开启失败)。 | TaxMachineNo | string | 返回值 | 开票机号。 |
2. TaxJson(功能:开票、作废、打印) 参数说明: 参数名称 | 数据类型 | 类型 | 参数含义 | TaxInXml | string | 传值 | 发票数据,Json格式。输入参数格式定义详见2.2.1~2.2.3节 | TaxStatus | string | 返回值 | 命令执行结果(S-成功,F-失败)。 | TaxMessage | string | 返回值 | 返回命令(成功为返回已开具的发票信息,失败为错误信息)。返回值参数Json格式定义详见2.2.4节。 |
3.CloseTax(功能:关闭金税卡) 参数说明: 参数名称 | 数据类型 | 类型 | 参数含义 | TaxStatus | string | 返回值 | 命令执行结果(S-成功,F-失败)。 | TaxMessage | string | 返回值 | 返回命令(成功为金税关闭成功,失败为金税关闭失败)。 |
4. SelectTaxJson(功能:回传已开具的发票信息) 参数说明: 参数名称 | 数据类型 | 类型 | 参数含义 | ERPNumber | string | 传值 | ERP销售单据编号 | TaxStatus | string | 返回值 | 命令执行结果(S-成功,F-失败)。 | TaxMessage | string | 返回值 | 返回命令(成功为返回已开具的发票信息,失败为错误信息)。返回值参数Json格式定义详见2.2.4节。 |
TaxMessage返回错误信息说明: Message | 金税盘正在使用中 金税盘在其他程序中打开了 没有发票了 已到抄税期 发票类型不对 红蓝字验证不对 购方企业名称不对 购方税号不对 购方开户行不对 购方银行账号不对 购方地址不对 购方电话不对 销方开户行不对 销方银行账号不对 销方地址不对 销方电话不对 税率不对 备注不对 开票人不对 复核人不对 收款人不对 物品是否为附件不对 销售订单号码不对 无清单明细 物品名称不对 规格型号不对 规格型号不对 计量单位不对 是否含税不对 金额不对 折扣不对 传入发票数据不合法 开票前金税卡状态错 金税卡开票调用错误 开票后取金税卡状态错 开票失败 所开发票已作废 未找到发票或清单 打印成功 未打印 打印失败 当月发票库未找到该发票 该发票已经作废 作废成功 未作废 金税盘未打开 输入的信息不正确 此销售单据已开 无可用发票 |
2.2控件参数格式与定义2.2.1生成发票1.实例: Json格式 {"siiscmd":{"issueinv":{"invrecord":{"invrecordhead":{"machinetaxnr":"320501000000001","machinenr":"0","invkind":{"value":"0"},"doctype":{"value":"1"},"docnr":"00128614","docdate":"2013-11-29 16:22:31","custnr":"YNPT(SZ)WLYXGS","custname":"优尼派特(苏州)物流有限公司","custtaxnr":"321700677602732","custaddrtel":"苏州工业园区现代大道88号普罗斯物流园C25仓库南二单元;0512-67332100","custbankacct":"中国银行苏州工业园区支行;502758194313","memo":"HCYNPA10月份","memo2":"","refinvcode":"","refinvnr":"","rednoticenr":"","issuer":"徐全易","checker":"沈洁","payee":"邢彩红","sellerbankacct":"中行苏州浒关支行;497558193319","selleraddrtel":"苏州西环路6号国际经贸大厦五楼 0512-66325299"},"invrecorditem":[{"prodnr":"","prodname":"包干费","spec":"","unit":"个","quantity":"1.0","price":"0.0","amount":"23764.29","taxrate":"0.06"},{"prodnr":"","prodname":"包装费","spec":"","unit":"张","quantity":"1.0","price":"0.0","amount":"2000","taxrate":"0.06"}]}}}} 2.参数格式:Json,参数类型:string 参数内容: 参数名称 | 类型 | 长度 | 说明 | 必填 | machinetaxnr | 字符 |
| 销方税务登记号 | 是 | machinenr | 字符 |
| 税控机编号 | 是 | invkind | 数值 |
| 0-专用发票,2-普通发票 | 是 | doctype | 数值 |
| 1-正常单据,2-红冲单据,3-折扣单据(折扣处理是对于单据的所有物品的折扣) | 是 | docnr | 字符 | 50 | ERP系统发票号 | 否 | docdate | 日期 |
| ERP系统发票日期(YYYY-MM-DD HH:MI:SS) | 否 | custnr | 字符 | 100 | 客户编号 | 否 | custname | 字符 | 100 | 客户名称 | 是 | custtaxnr | 字符 | 20 | 客户税号 | 是 | custaddrtel | 字符 | 100 | 客户地址电话 | 否 | custbankacct | 字符 | 100 | 客户银行及帐号 | 否 | memo | 字符 | 250 | 备注(红冲专用发票第一行必须有这几个字:“开具红字增值税专用发票通知单号”)(红冲普通发票第一行必须有这几个字:“对应正数发票代码:3200051620号码:00030501”)(红冲普通发票第一行字“号码:00030501”前面有空格) | 红冲必填 | memo2 | 字符 | 4000 | 备注2 | 否 | refinvcode | 字符 | 10 | 对应正数发票代码(仅用于普通发票) | 否 | refinvnr | 数值 |
| 对应正数发票号码(仅用于普通发票) | 否 | rednoticenr | 字符 | 20 | 红票通知单号(仅用于专用发票) | 否 | issuer | 字符 | 10 | 开票人 | 是 | checker | 字符 | 10 | 复核人 | 否 | payee | 字符 | 10 | 收款人 | 否 | selleraddrtel | 字符 | 100 | 销方地址电话 | 是 | sellerbankacct | 字符 | 100 | 销方银行及帐号 | 是 | prodnr | 字符 | 50 | 产品编号 | 否 | prodname | 字符 | 100 | 产品名称 | 是 | spec | 字符 | 50 | 规格型号 | 否 | unit | 字符 | 50 | 计量单位 | 是 | quantity | 数值 |
| 数量 | 是 | price | 数值 |
| 单价(含税) | 是 | amount | 数值 |
| 金额(含税) | 是 | taxrate | 数值 |
| 税率 | 是 |
开票必输项销方地址电话、发票含税标志(含税)、是否使用销货清单标志(销货清单可以进行设置默认不是销货清单如果超过8行会默认销货清单)、发票只能开同一税率的物品不能开不同税率的。 2.2.2打印发票1.实例: Json格式: {"siiscmd":{"printinv":{"key":{"invkind":{"value":"0"},"invcode":"3200051560","invnr":"00000171"}}}} 2.参数格式:Json,参数类型:string 参数内容: 参数名称 | 类型 | 长度 | 说明 | invkind | 数值 | 1 | 0-专用发票,2–普通发票 | invcode | 字符 | 10 | 发票代码 | invnr | 数值 |
| 发票号码 |
2.2.3作废发票1.实例: Json格式 {"siiscmd":{"cancelinv":{"key":{"invkind":{"value":"0"},"invcode":"3200051560","invnr":"00073727"}}}} 2.参数格式:Json,参数类型:string 参数内容: 参数名称 | 类型 | 长度 | 说明 | invkind | 数值 | 1 | 0-专用发票,2 –普通发票 | invcode | 字符 | 10 | 发票代码 | invnr | 数值 |
| 发票号码 |
2.2.4返回发票1.实例: Json格式 {"?xml":{"@version":"1.0"},"siiscmd":{"@xmlns":"http://www.aisino.sh.cn","sendbackinv":{"sendbackinvrecord":{"sendbackinvrecordhead":{"binvkind":{"value":"0"},"binvcode":"3200051560","binvnr":"00000173","binvdate":"201407310644","bmachinenr":"0","bcancelled":"0","invkind":{"value":"0"},"doctype":{"value":"1"},"docnr":"00128634","docdate":"201311291622","custnr":"YNPT(SZ)WLYXGS","custname":"优尼派特(苏州)物流有限公司","custtaxnr":"321700677602732","custaddrtel":"苏州工业园区现代大道88号普罗斯物流园C25仓库南二单元;0512-67332100","refinvnr":null,"custbankacct":"中国银行苏州工业园区支行;502758194313","memo":"HCYNPA10月份","memo2":null,"refinvcode":null,"rednoticenr":null,"issuer":"徐全易","checker":"沈洁","payee":"邢彩红","sellerbankacct":"中行苏州浒关支行;497558193319","selleraddrtel":"苏州西环路6号国际经贸大厦五楼 0512-66325299","totalamount":"23764.29","totaltax":"1345.15"},"sendbackinvrecorditem":{"prodnr":null,"prodname":"包干费","spec":null,"unit":"个","quantity":"1","price":"0","amount":"23764.29","taxrate":"0.06","tax":"1345.15"}}}}} 2.参数格式:Json,参数类型:string 参数内容:日期格式返回都为YYYYMMDDHHMI 参数名称 | 类型 | 长度 | 说明 | binvkind | 数值 | 1 | 0-专用发票,2 –普通发票 | binvcode | 字符 | 10 | 发票代码 | binvnr | 数值 |
| 发票号码 | binvdate | 日期 |
| 开票日期(YYYYMMDDHHMI) | bmachinenr | 字符 | 3 | 开票机号 | bcancelled | 数值 |
| 0-正常发票,1-作废发票 | invkind | 数值 |
| 0-专用发票,2-普通发票 | doctype | 数值 |
| 1-正常单据,2-红冲单据,3-折扣单据 | docnr | 字符 | 50 | ERP系统发票号 | docdate | 日期 |
| ERP系统发票日期(YYYYMMDDHHMI) | custnr | 字符 | 100 | 客户编号 | custname | 字符 | 100 | 客户名称 | custtaxnr | 字符 | 20 | 客户税号 | custaddrtel | 字符 | 100 | 客户地址电话 | custbankacct | 字符 | 100 | 客户银行及帐号 | memo | 字符 | 250 | 备注 | memo2 | 字符 | 4000 | 备注2 | refinvcode | 字符 | 10 | 对应正数发票代码(仅用于普通发票) | refinvnr | 数值 |
| 对应正数发票号码(仅用于普通发票) | rednoticenr | 字符 | 20 | 红票通知单号(仅用于专用发票) | issuer | 字符 | 10 | 开票人 | checker | 字符 | 10 | 复核人 | payee | 字符 | 10 | 收款人 | selleraddrtel | 字符 | 100 | 销方地址电话 | sellerbankacct | 字符 | 100 | 销方银行及帐号 | totalamount | 数值 |
| 发票价税合计 | totaltax | 数值 |
| 发票税额合计 | prodnr | 字符 | 50 | 产品编号 | prodname | 字符 | 100 | 产品名称 | spec | 字符 | 50 | 规格型号 | unit | 字符 | 50 | 计量单位 | quantity | 数值 |
| 数量 | price | 数值 |
| 单价(含税) | amount | 数值 |
| 金额(含税) | taxrate | 数值 |
| 税率 | tax | 数值 |
| 税额 |
2.2.5回传发票信息1.实例: Json格式 [{"A.发票种类":"s","A.类别代码":"3200051560","A.发票号码":174,"开票机号":0,"A.销售单据编号":"05128634","购方名称":"損swG|╫#观顖尿閜0f盞‐l柱u0005su001d?? u0004","购方税号":"絬?鱠5鶟6#結w
? u0002","购方地址电话":"苏州工业园区现代大道88号普罗斯物流园C25仓库南二单元;0512-67332100","购方银行帐号":"苖H枆婕翢Oj?貇–?u0015鉃?k
fP?樗囲u0004@u001e? u0005","销方名称":"ht1","销方税号":"320501000000001","销方地址电话":"苏州西环路6号国际经贸大厦五楼 0512-66325299","销方银行帐号":"中行苏州浒关支行;497558193319","销售部门":null,"异地销售":true,"加密版本号":"11","密文":"?﹢?u003c亂Yy杫辚Hg?浟??p稄鱼u0013Fs-嫇摤欩?u001cu0004D筁u0015Pn?5嵨?峸?$鴓k僺u001e?u00276$壨Hc?溴跖@u0012發?u0011黟鳌?購H:F絻?νp? u000e","开票日期":"/Date(1406736000000)/","所属月份":7,"合计金额":22419.14,"A.税率":0.06,"合计税额":1345.15,"主要商品名称":"包干费","A.商品税目":null,"记帐凭证号码":null,"备注":"HCYNPA10月份","开票人":"徐全易","复核人":"沈洁","收款人":"邢彩红","打印标志":false,"清单标志":false,"购方编号":null,"部门编号":null,"A.商品编号":null,"作废标志":false,"报税标志":false,"登记标志":false,"外开标志":false,"修复标志":false,"校验码":"71583175473844050592","报税期":1,"选择标志":0,"凭证类别":null,"凭证号码":0,"凭证业务号":null,"凭证状态":0,"凭证日期":null,"索引号":1,"设备标志":1,"营业税标志":"0000000000","B.发票种类":"s","B.类别代码":"3200051560","B.发票号码":174,"发票明细序号":1,"B.销售单据编号":null,"发票行性质":0,"金额":22419.14,"B.税率":0.06,"税额":1345.15,"商品名称":"包干费","B.商品税目":null,"规格型号":null,"计量单位":"个","数量":1,"单价":23764.29,"含税价标志":true,"B.商品编号":null,"单据明细序号":1}] 2.参数格式:Json,参数类型:string 参数内容:日期格式返回都为YYYYMMDDHHMI 参数名称 | 类型 | 长度 | 说明 | binvkind | 数值 | 1 | 0-专用发票,2 –普通发票 | binvcode | 字符 | 10 | 发票代码 | binvnr | 数值 |
| 发票号码 | binvdate | 日期 |
| 开票日期(YYYYMMDDHHMI) | bmachinenr | 字符 | 3 | 开票机号 | bcancelled | 数值 |
| 0-正常发票,1-作废发票 | invkind | 数值 |
| 0-专用发票,2-普通发票 | doctype | 数值 |
| 1-正常单据,2-红冲单据,3-折扣单据 | docnr | 字符 | 50 | ERP系统发票号 | docdate | 日期 |
| ERP系统发票日期(YYYYMMDDHHMI) | custnr | 字符 | 100 | 客户编号 | custname | 字符 | 100 | 客户名称 | custtaxnr | 字符 | 20 | 客户税号 | custaddrtel | 字符 | 100 | 客户地址电话 | custbankacct | 字符 | 100 | 客户银行及帐号 | memo | 字符 | 250 | 备注 | memo2 | 字符 | 4000 | 备注2 | refinvcode | 字符 | 10 | 对应正数发票代码(仅用于普通发票) | refinvnr | 数值 |
| 对应正数发票号码(仅用于普通发票) | rednoticenr | 字符 | 20 | 红票通知单号(仅用于专用发票) | issuer | 字符 | 10 | 开票人 | checker | 字符 | 10 | 复核人 | payee | 字符 | 10 | 收款人 | sellerbankacct | 字符 | 100 | 销方银行及帐号 | selleraddrtel | 字符 | 100 | 销方地址电话 | totalamount | 数值 |
| 发票价税合计 | totaltax | 数值 |
| 发票税额合计 | prodnr | 字符 | 50 | 产品编号 | prodname | 字符 | 100 | 产品名称 | spec | 字符 | 50 | 规格型号 | unit | 字符 | 50 | 计量单位 | quantity | 数值 |
| 数量 | price | 数值 |
| 单价(含税) | amount | 数值 |
| 金额(含税) | taxrate | 数值 |
| 税率 | tax | 数值 |
| 税额 |
2.3控件安装接口按以下步骤安装使用: 开票客户端: 步骤 | 说明 | 所需文件 | 1.安装.Net FrameWork4.0 | 双击dotNetFx40_Full_x86_x64.exe安装,直至安装成功。 | dotNetFx40_Full_x86_x64.exe | 2.安装ActiveX控件 | 双击SetupActiveX.msi安装,直至安装成功。 | setup.exe、SetupActiveX.msi |
2.4其他注意事项1.客户端IE设置: a. Internet选项->添加信任站点 b. Internet选项->自定义级别->和ActiveX有关选项都启用 c. Internet选项->高级->【启用内存保护减少联机攻击】不勾选 2.本地系统工具->事件查看器->应用程序-属性->最大日志文件大小至少512MB 3防火墙阻拦开票打印,请重新设置本地防火墙安全等级。 三、 业务流程3.1开具发票(含红冲)3.2重打印发票3.3作废发票
信息发布:广州名易软件有限公司 http://www.myidp.net
|