JS建立连接通道
JS建立连接通道
引入连接库文件
<script type="text/javascript" src="https://img-expense.piaozone.com/static/gallery/socket.io.js"></script>
<script type="text/javascript" src="https://img-expense.piaozone.com/static/public/js/pwy-socketio-v2.js"></script>
获取linkkey
获取建立通道的唯一标识ID
创建票无忧socket对象
var pwyWebsocket = new PwyWebSocket({
env: 'prod', //正式环境: prod, 测试环境: test
tin: tin, ///tin为获取userKey时的税号
eid: eid, //eid为获取userKey时的用户eid
client_id: client_id, // 发票云授权标识(client_id)
sign: sign, // 签名规则:MD5(client_id + client_secret + timestamp)
timestamp: timestamp, // 签名时的时间戳
name: linkKey, // 建立通道的唯一标识ID
sourceType: 'socket', // 默认socekt, 对于不支持socket的端请设置为polling
onOpen: function(){ // 连接成功的回调
//console.log("连接成功"+ this.name);
},
onMessage: function(msg){
//msg为接收到的消息, 消息格式:{"type":"saveBill", data: {}}
//当type为saveBill时, data的数据为导入的发票数据
//当type为saveEntrys时, data的数据为分录调整后的数据
//当type为updateInvoice, data的数据为修改的发票基本信息
//接收到消息后,企业处理好自己业务,处理完成关闭窗口即可
},
onError: function(errText, errCode){ //失败时的回调
}
// 关闭连接, 接受到消息之后需要先关闭连接,需要再次使用需要重新创建socket对象
pwyWebsocket.close();
});
:::tip
- linKey的获取方式详见获取linkKey
- client_id等授权信息在激活邮件时下放
- 采集发票导入之后,onMessage会收到回调,在业务方处理完内容之后,务必关闭采集发票页面的窗口,如要再次采集,应再次打开采集发票页面
- 回推的数据为发票要素,如果需要详细数据,可以使用根据发票流水号获取发票详细数据
:::
msg的消息格式
消息格式: {"type":"saveBill", data: {}}
type为saveBill时为导入时的发票数据
费用单据的数据格式:billType为空字符串
//type为消息类型,saveBill为发票数据,saveEntrys为分录数据
{
"type": "saveBill",
"data": {
"billnumber": "2018-11-28-00001898", //单据编号
"bxd_key": "Ik2TrOC5RSCOND0pE9J8=", //单据全球唯一key
"data": [{
"serialNo": 1125866, //发票流水号
"invoiceType": "1", //发票种类,1.普通电子发票2.电子发票专票3.普通纸质发票4.专用纸质发票5.普通纸质卷票7.通用机打8.的士票9.火车票10.飞机票11.其他12.机动车.13.二手车14.定额发票15.通行费16.客运发票17.过路过桥费19.完税证明20.轮船票21.海关缴款书23.通用机打电子发票24.火车票退票凭证25.财政电子票据26.数电票(普通发票)27.数电票(增值税专用发票)28.数电票(航空运输电子客票行程单)29.数电票(铁路电子客票)
"invoiceCode": "044031600113", //发票代码
"invoiceNo": "30819002", //发票号码
"invoiceDate":"2020-01-01",//发票日期
"checkStatus": 1, //1查验通过,2查验不通过
"expenseStatus": 1, //单据状态,1为未使用,30为使用中,60为已使用
"amount": 383.76, //合计不含税金额
"totalAmount": 449, //价税合计
"taxAmount": 66.24, //开票合计税额
"taxRate":"0.09",//税率,针对多税率的情况下传99
"goodsCood": "1010115010000000000", //商品编码,取明细第一条
"sallerName": "新华书店总店", //购货方名称
"sallerTaxNo": "440301999999980", //购货方纳税人识别号
"buyerName": "新华书店总店", //销货方名称
"buyerTaxNo": "440301999999980" //销货方纳税人识别号
}],
"invoiceSerialNos":"e7601aa2a677467bbf0271fbde682d910,e7fde3adddbe46328aa3405085854c250",//当前单据导入的发票流水号集合
"invoicesAmount": 178860,//发票金额总和
"invoicesTaxAmount": 0,//发票税额总和
"isElectronicInvoice": false,//当前单据导入的发票是否全是电票,true为是,false为否
"certificateList": [
{
"originalFileName": "20240401162430_782.xlsx",//附件全名称
"gatherTime": 1720108800000,//采集时间戳
"attachmentName": "20240401162430_782",//附件名称,不带后缀
"remark": "",//备注
"serialNo": "",//附件流水号
"localUrl": ""//附件地址
}
]
"userid": "eid-1544414642579" //对应用户的eid
}
}
智能差旅行程单的数据数据格式, billType为:Tra
{
"type": "saveBill",
"data": {
"billnumber": "2018-11-28-00001898", //单据编号
"bxd_key": "Ik2TrOC5RSCOND0pE9J8=", //单据全球唯一key
"data": [{
"invoiceData": [{
"salerAccount": "中国银行5218666111888", //销方银行名称和账号
"stationGeton": "", //
"classify": "other", //分类
"amount": 50.91, //不含税金额,飞机票则采用票价
"salerName": "航信培训企业", //销方名称
"invoiceDate": "2018-09-29", //开票日期
"invoiceCode": "", //发票代码
"serialNo": "", //发票流水号
"totalAmount": 56, //价税合计
"taxRate": "0.099980", //税率
"seatGrade": "",
"salerAddressPhone": "广东省深圳市南山区 xxxx", //销方地址电话
"stationGetoff": "",
"salerTaxNo": "", //销方税号
"invoiceType": "1", //发票种类,1.普通电子发票2.电子发票专票3.普通纸质发票4.专用纸质发票5.普通纸质卷票7.通用机打8.的士票9.火车票10.飞机票11.其他12.机动车.13.二手车14.定额发票15.通行费16.客运发票17.过路过桥费19.完税证明20.轮船票21.海关缴款书23.通用机打电子发票24.火车票退票凭证25.财政电子票据26.数电票(普通发票)27.数电票(增值税专用发票)28.数电票(航空运输电子客票行程单)29.数电票(铁路电子客票)
"goodsCode": "3079900000000000000", //商品编码
"taxAmount": 5.09, //总税额
"invoiceNo": "", //发票号码
"airItemsArr": [], //如果是机票,可能有多条行程
"goodsName": "*水果*苹果", //商品名称
"classifyName": "其他费用" //分类中文名
}],
"totalAmount": 60.3,
"amount": 54.97,
"costName": "其他费用",
"size": 2,
"costType": "other",
"taxAmount": 6.33,
"invoiceDate": "2018-09-29"
}],
"invoicesTotalAmount": 76.98,//发票金额总和
"invoicesTaxAmount": 5.82,//发票税额总和
"allSize": 3,//导入该单据的发票总数量
"invoiceSerialNos":"e7601aa2a677467bbf0271fbde682d910,e7fde3adddbe46328aa3405085854c250",//当前单据导入的发票流水号集合
"isElectronicInvoice": false,//当前单据导入的发票是否全是电票,true为是,false为否
"certificateList": [
{
"originalFileName": "20240401162430_782.xlsx",//附件全名称
"gatherTime": 1720108800000,//采集时间戳
"attachmentName": "20240401162430_782",//附件名称,不带后缀
"remark": "",//备注
"serialNo": "",//附件流水号
"localUrl": ""//附件地址
}
]
"userid": "eid-1544420896749"//对应用户的eid
}
}
智能物品采购单据-数据数据格式, billType为:Pur
{
"type": "saveBill",
"data": {
"billnumber":"", //对应传入的billnumber
"bxd_key":"", //对应传入的bxd_key
"type":"", //前端约定交互方式识别
"userid":"", //对应传入的eid
"isElectronicInvoice": false,//当前单据导入的发票是否全是电票,true为是,false为否
"certificateList": [
{
"originalFileName": "20240401162430_782.xlsx",//附件全名称
"gatherTime": 1720108800000,//采集时间戳
"attachmentName": "20240401162430_782",//附件名称,不带后缀
"remark": "",//备注
"serialNo": "",//附件流水号
"localUrl": ""//附件地址
}
]
"invoiceSerialNos":"e7601aa2a677467bbf0271fbde682d910,e7fde3adddbe46328aa3405085854c250",//当前单据导入的发票流水号集合
"data":
{
//收款方信息集合
"buyerInfo":[
{
"buyerName":"", //收款方企业名称
"buyerTaxNo":"", //收款方企业税号
"buyerAddressPhone":"", //收款方地址电话
"buyerAccount":"", //收款方银行帐号
}
],
//采购列表信息,按供应商、品名划分
"purchaseInfo":[
{
"salerName":"", //销方名称,即供应商名称
"salerTaxNo":"", //销方税号,即供应商税号
"goodsName":"", //品名
"goodsCode":"", //品名对应的商品编码
"invoiceDate":"", //日期,默认取第一个
"unit":"", //单位,默认取第一个
"num":"", //数量,数量总和
"unitPrice":"", //单价,平均单价
"detailAmount":"", //金额
"taxAmount":"", //合计税额
"size":"", //品名条数
"invoiceData":[] //发票流水号集合
}
]
}
}
}
智能对公单据-数据数据格式, billType为:BizOut
{
"type": "saveBill",
"data": {
"billnumber": "RH-365-20181117-1054", //单据编号
"bxd_key": "iCFJ7WdQTrxjJTCkx2fAmKk7FTnPXj=", //单据ID
"type": "savebill",
"userid": "", //用户eid
"invoicesTotalAmount": 1000, //总价税合计总额
"invoicesTaxAmount": 200, //总税额
"data": [ //按税号、银行帐号划分
{
"salerTaxNo":"", //开票方税号
"salerName":"", //开票方名称
"salerAddressPhone":"", //开票方地址、帐号
"salerAccount":"", //开票方银行开户行、帐号
"amount": 1000, //总金额(不含税)
"taxAmount": 200, //总税额
"totalAmount":"", //价税合计总额
"invoiceType":"", //发票类型
"invoiceNo":"", //发票号码
"invoiceCode":"",//发票代码
"goodsCode":"", //税收分类编码,发票数据中取第一条信息为准
"goodsName":"", //货物名称,发票数据中取第一条信息为准
"taxRate":"", //税率 ,发票数据中取第一条信息为准
"serialNo":"" //发票流水号
}]
}
}
最后修改时间: 5 个月前