32位
functionSHKP(parameter:pansichar):pansichar;stdcall; external SHKJKP.dll';
64位平台
functionSHKP(parameter:pansichar):pansichar;stdcall; external SHKJKPx64.dll';
说明:不同的parameter功能传不同的值,下面为各功能的值。
相应文件可以在http://sh-gz.cn/下载
航天初始化:
'{"LX":"Of_Uninit"}'
'{"LX":"Of_init","QYSH":"企业税号","CERT":"12345678","FJH":"0"}'
JSON说明:企业税号,证书密码,分机号
百旺初始化
'{"LX":"of_bw_init","URL":"https://skfp.tax.sh.gov.cn/acceptFramework/UniAcceptService","JSPPASSWORD":"","ZSPASSWORD":"12345678"}'
JSON说明:税务局URL(参考百旺的参数设置),金税盘口令,证书口令
初始化调用示例1: 传入参数:{"LX":"of_bw_init","JSPPASSWORD":"66666666","ZSPASSWORD":"12345678"}
初始化返回值: 成功 {"Result":"1","Message":""}
失败 {"Result":"0","Message":"失败说明"}
获取发票信息
'{"LX":"GetInfo","KPJLX":"0","FPZL":"41"}'
JSON说明:
开票机类型(0航天1百旺)、发票种类(0 专票,2 普票,51 电票,41卷式发票 12 机动车发票)
调用示例1: 查询参数:{"LX":"GetInfo","KPJLX":"1","FPZL":"0"}
返回{"Result":"1","FPDM":"4400173130","FPHM":"4094639","COUNT":"79","Message":""}
开票
'{"LX":"KP","KPJLX":"0","FPZL":"41","TEST":"1","XML":"XML并且经过base64编码"}'
JSON说明:
开票机类型(0航天1百旺)、发票种类 (0 专票,2 普票,51 电票,41卷式发票 12 机动车发票),TEST 是否检验数据1不开票仅做数据检查、0直接开票,KP的xml数据
开票调用示例1: 传入参数:
{"LX":"KP","KPJLX":"1","FPZL":"0","XML":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iR0IyMzEyIj8+DQo8Q29uZmlnPg0KICA8SW52b2ljZUxpc3Q+DQogICAgICAgIDxJbnZIZWFkIEludm9pY2VOdW1iZXI9IjQ5ODQwMzEwNTIwNjEzMTIiIEN1c3RvbWVyTmFtZT0iyc+6o760zamyzdL7udzA7dPQz965q8u+IiBDdXN0b21lclRheENvZGU9IjkxMzEwMjMwTUExSlk0TFE5UCIgQWRkcmVzc0FuZFBob25lPSKz58P3x/izx8fF1fLQ48m9wrc4usUztLHSu8f4MDIxLTgwMzkyNDE3IiBCYW5rQW5kQWNjb3VudD0i1tC5+sWp0rXS+NDQu8a2ydan0NAwMzgzMDEwMDA0MDA0ODM2MyIgSkdDUz0iMSIgU2VsbGVyQmFua05hbWU9ItXQyczS+NDQucm33dPQz965q8u+xP6yqL2tsbHWp9DQNTc0OTA2MjUzNjEwMjAxIiBLSFNKPSIxMzY4MTIzNDU2NzgiIEtIWUo9IjMyOTEwNDQ4NDZAcXEuY29tIiBTZWxsZXJBZHJyUGhvbmU9IrnjtqvKobnj1t3K0MzsutPH+NbQyb2087XAMTAzNbrF06+4u8nMzvG088/DN8KlMDIwMTIzNDU2NzgiIFNlbGxlclRheENvZGU9IjkxNDQwMTAxTUE1OUxDSzE3MCIgRlBaTD0iMCIgSW52b2ljZU1lbW89IrG416IxMjMiIEtQUj0iwLXQocflIiBTS1I9Ire2zsC9+iIgRkhSPSK3ts7AvfoiIEZQSE09IiIgQ0hGUEg9IiIgQW1vdW50PSIxMDAiIFRheEFtb3VudD0iNiIgSW5UYXhBbW91bnQ9IjEwNiIgVGF4UmF0ZT0iNiIgSXNMaXN0aW5nPSIwIiBKRUZTPSIwIiBSb3dDb3VudD0iMCIvPg0KICAgICAgICA8SW52RGV0YWlsPg0KICAgICAgICAgICAgPERldGFpbEVudHJ5IFByb2R1Y3RDb2RlPSIzMDQwMjAxMDMiIEVudHJ5TnVtYmVyPSIxIiBQcm9kdWN0TmFtZT0ivLzK9bf+zvG30SIgUHJvZHVjdE1vZGVsPSLV+8zXIiBQcm9kdWN0VW5pdD0izNciIFRheFJhdGU9IjYiIFF1YW50aXR5PSIxIiBQcmljZT0iMTAwIiBIU0RKPSIxMDYiIEFtb3VudD0iMTAwIiBUYXhBbW91bnQ9IjYiIFJvd0F0dHJpYj0iMCIgUHJvZHVjdFR5cGVzPSI0MDAxIiBGbGJtPSIzMDQwMjAxMDMwMDAwMDAwMDAwIiBYc3loPSIwIiBMc2x2YnM9IiIgWWhzbT0iIi8+DQogICAgICAgIDwvSW52RGV0YWlsPg0KICA8L0ludm9pY2VMaXN0ID4NCjwvQ29uZmlnPg0K"}
开票返回值:
{"Result":"1","XML":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iR0IyMzEyIj8+DQo8Q29uZmlnPg0KCTxJbnZvaWNlTGlzdD4NCgkJPEludkhlYWQgSW52b2ljZU51bWJlcj0iNDk4NDAzMTA1MjA2MTMxMiIgQ3VzdG9tZXJOYW1lPSLJz7qjvrTNqbLN0vu53MDt09DP3rmry74iIEN1c3RvbWVyVGF4Q29kZT0iOTEzMTAyMzBNQTFKWTRMUTlQIiBBZGRyZXNzQW5kUGhvbmU9IrPnw/fH+LPHx8XV8tDjyb3Ctzi6xTO0sdK7x/gwMjEtODAzOTI0MTciIEJhbmtBbmRBY2NvdW50PSLW0Ln6xanStdL40NC7xrbJ1qfQ0DAzODMwMTAwMDQwMDQ4MzYzIiBKR0NTPSIxIiBTZWxsZXJCYW5rTmFtZT0i1dDJzNL40NC5ybfd09DP3rmry77E/rKova2xsdan0NA1NzQ5MDYyNTM2MTAyMDEiIEtIU0o9IjEzNjgxMjM0NTY3OCIgS0hZSj0iMzI5MTA0NDg0NkBxcS5jb20iIFNlbGxlckFkcnJQaG9uZT0iueO2q8qhuePW3crQzOy608f41tDJvbTztcAxMDM1usXTr7i7yczO8bTzz8M3wqUwMjAxMjM0NTY3OCIgU2VsbGVyVGF4Q29kZT0iOTE0NDAxMDFNQTU5TENLMTcwIiBGUFpMPSIwIiBJbnZvaWNlTWVtbz0isbjXojEyMyIgS1BSPSLAtdChx+UiIFNLUj0it7bOwL36IiBGSFI9Ire2zsC9+iIgRlBITT0iIiBDSEZQSD0iIiBBbW91bnQ9IjEwMCIgVGF4QW1vdW50PSI2IiBJblRheEFtb3VudD0iMTA2IiBUYXhSYXRlPSI2IiBJc0xpc3Rpbmc9IjAiIEpFRlM9IjAiIFJvd0NvdW50PSIwIiBSRVRDT0RFPSIwMDAwMDAzMiIgUkVUTVNHPSLLsL/YyeixuNC0t6LGscP3z7jKsdLss6MgIERpc2tFcnI6MDlkMTFmIi8+DQoJCTxJbnZEZXRhaWw+DQoJCQk8RGV0YWlsRW50cnkgUHJvZHVjdENvZGU9IjMwNDAyMDEwMyIgRW50cnlOdW1iZXI9IjEiIFByb2R1Y3ROYW1lPSK8vMr1t/7O8bfRIiBQcm9kdWN0TW9kZWw9ItX7zNciIFByb2R1Y3RVbml0PSLM1yIgVGF4UmF0ZT0iNiIgUXVhbnRpdHk9IjEiIFByaWNlPSIxMDAiIEhTREo9IjEwNiIgQW1vdW50PSIxMDAiIFRheEFtb3VudD0iNiIgUm93QXR0cmliPSIwIiBQcm9kdWN0VHlwZXM9IjQwMDEiIEZsYm09IjMwNDAyMDEwMzAwMDAwMDAwMDAiIFhzeWg9IjAiIExzbHZicz0iIiBZaHNtPSIiLz4NCgkJPC9JbnZEZXRhaWw+DQoJPC9JbnZvaWNlTGlzdD4NCjwvQ29uZmlnPg0K"}
作废
'{"LX":"ZF","KPJLX":"0","FPZL":"41","FPDM":"","FPHM":""}'
JSON说明:
开票机类型(0航天1百旺)、发票种类 (0 专票,2 普票,51 电票,41卷式发票 12 机动车发票)、发票代码,发票号码
作废调用 示例1:
传入参数{"LX":"ZF","KPJLX":"1","FPZL":"0","FPDM":"4400173130","FPHM":"04138547"}
返回值 {"Result":"0","Message":"FPZF-ZF-不能作废发票或开具红字发票,原发票已开作废发票"}
打印发票
'{"LX":"PrintFP","KPJLX":"0","FPZL":"41","FPDM":"","FPHM":"","QDBZ":"","ISVISIBLE":""}'
JSON说明:
开票机类型(0航天1百旺)、发票种类(0 专票,2 普票,51 电票,41卷式发票 12 机动车发票),发票代码,发票号码,打印类型(0打印发票 1打印清单),是否显示打印设置窗口(0不显示 1显示)
打印调用示例1:
传入参数:
{"LX":"PrintFP","KPJLX":"1","FPZL":"0","FPDM":"4400173130","FPHM":"04138532","QDBZ":"0","ISVISIBLE":"0"}
返回值 :{"Result":"1","Message":""}
COM名称:KPOCXDLL.KP
functionSHKP(const Param1: WideString): WideString; safecall;
myCst.CallFun('SHKJKP.dll','SHKP','{"LX":"Of_init","QYSH":"税号","CERT":"12345678","FJH":"0"}');
myCst.CallFun('SHKJKP.dll','SHKP',''{"LX":"Of_Uninit"}');
myCst.CallFun('SHKJKP.dll','SHKP',''{"LX":"of_bw_init","JSPPASSWORD":"","ZSPASSWORD":"12345678"}'
);
alert(myCst.CallFun('SHKJKP.dll','SHKP','{"LX":"GetInfo","KPJLX":"0","FPZL":"41"}'));
alert(myCst.CallFun('SHKJKP.dll','SHKP','{"LX":"KP","KPJLX":"0","FPZL":"41","XML":"XML并且经过base64编码"}'));
alert(myCst.CallFun('SHKJKP.dll','SHKP','{"LX":"ZF","KPJLX":"0","FPZL":"41","FPDM":"","FPHM":""}'));
alert(myCst.CallFun('SHKJKP.dll','SHKP','{"LX":"PrintFP","KPJLX":"0","FPZL":"41","FPDM":"","FPHM":"","QDBZ":"0","ISVISIBLE":"1"}'));
xml:说明:
<?xmlversion="1.0" encoding="GB2312"?>
<Config>
<InvoiceList>
<InvHead InvoiceNumber="单据号" CustomerName="客户名称" CustomerTaxCode="税号" AddressAndPhone="地址" BankAndAccount="客户银行账号" JGCS=”1”SellerBankName="销方银行账号" KHSJ=”客户手机”KHYJ=”客户邮件” SellerAdrrPhone="销方地址和电话" SellerTaxCode=”销方税号”FPZL=”发票种类” InvoiceMemo="备注" KPR="开票人" SKR="收款人" FHR="复核人" FPHM=”红冲发票原发票号” CHFPH="信息表编号" Amount=”整张发票不含税金额” TaxAmount=”整张发票税额” InTaxAmount=”整张发票价税合计” TaxRate=”税率” IsListing=”是否开具清单0不强制开清单 1强制开清单”JEFS=”正常票0 红冲票1” RowCount=”0”/>
<InvDetail>
<DetailEntry ProductCode="产品代码" EntryNumber=”行号,从1开始算起”ProductName="产品名称" ProductModel="产品型号" ProductUnit="产品单位" TaxRate="税率" Quantity="数量" Price=”不含税价” HSDJ=”含税价” Amount="不含税金额" TaxAmount="税额" RowAttrib=”行性质0正常行 3被折扣行 4折扣行” ProductTypes="4001" Flbm="分类编码" Xsyh="税率优惠 0无优惠1有优惠" Lslvbs="零税率标志" Yhsm="优惠说明"/>
</InvDetail>
</InvoiceList >
</Config>
如果是多张发票:那么就多个 InvoiceList节点,如果一张发票,多行明细,那么就多个 DetailEntry节点
名称 |
说明 |
是否可以为空 |
备注 |
默认值 |
InvoiceNumber |
单据号 |
否 |
|
|
CustomerName |
客户名称 |
否 |
|
|
CustomerTaxCode |
客户税号 |
是 |
按税务规定,开具给企业的发票必需有税号 |
|
AddressAndPhone |
客户地址电话 |
是 |
|
|
BankAndAccount |
客户银行账号 |
是 |
|
|
KHSJ |
客户手机 |
是 |
|
|
KHYJ |
客户邮件 |
是 |
|
|
SellerBankName |
销方银行账号 |
否 |
|
|
SellerAdrrPhone |
销方地址和电话 |
否 |
|
|
SellerTaxCode |
销方税号 |
否 |
|
|
FPZL |
发票种类 |
否 |
|
|
InvoiceMemo |
备注 |
是 |
|
|
KPR |
开票人 |
否 |
|
|
SKR |
收款人 |
是 |
|
|
FHR |
复核人 |
是 |
|
|
FPHM |
红冲发票原发票号 |
是 |
当发票种类是普票、电票、卷票、运输发票并且JEFS=1时,必需传原发票号过来 |
|
CHFPH |
红字信息表编码 |
是 |
当发票种类是专票并且JEFS=1时,必需传红字信息表编号 |
|
Amount |
整张发票不含税金额 |
否 |
等于 明细行的 Amount 之和 |
|
TaxAmount |
整张发票税额 |
否 |
等于 明细行的 TaxAmount 之和 |
|
InTaxAmount |
整张发票价税合计 |
否 |
等于 Amount+ TaxAmount |
|
TaxRate |
税率 |
是 |
可以是17,也可以是0.17,当明细行有多种税率时,必需是空 |
|
IsListing |
是否强制开具清单 |
否 |
0 不进行强制,由系统自动处理,当超过8行明细时,系统自动出具清单。 1 进行强制转换成清单,强制转换后,没超过8行明细也会出具清单 |
0 |
JEFS |
开具类型 |
否 |
0 正常发票 1 红字发票 |
0 |
RowCount |
明细汇总行数 |
否 |
用固定值 0 |
0 |
明细字段说明 |
||||
ProductCode |
产品代码 |
是 |
|
|
EntryNumber |
行号 |
否 |
从1开始算起 |
|
ProductName |
产品名称 |
否 |
|
|
ProductModel |
产品型号 |
是 |
|
|
ProductUnit |
产品单位 |
是 |
|
|
TaxRate |
税率 |
否 |
可以是17,也可以是0.17 |
|
Quantity |
数量 |
是 |
当不需要打印数量时,传空 |
|
Price |
不含税价 |
是 |
当不需要打印单价时,传空 |
|
HSDJ |
含税价 |
是 |
当不需要打印单价时,传空 |
|
Amount |
不含税金额 |
否 |
|
|
TaxAmount |
税额 |
否 |
|
|
RowAttrib |
行性质 |
否 |
正常行 :0 被折扣行 3 折扣行 4 |
|
ProductTypes |
商品税目 |
是 |
4001代表是 商品销售 |
4001 |
Flbm |
分类编码 |
否 |
|
|
Xsyh |
税收优惠 |
否 |
无税收优惠0 有税收优惠1 |
|
Lslvbs |
零税率标志 |
是 |
当税收优惠=1时 免税 1出口零税 0不征税 2 其它3,当税收优惠是0时,空 |
|
Yhsm |
优惠说明 |
是 |
|
|
注意:如果红字 带清单的,只需要传一行明细, 产品名称必需是 详见对应正数发票及清单