自助机顾客提交

## 生成待开申请链接 - 用户已完成订购/消费,通过合作方页面提交补开发票的请求,需填写抬头信息、邮寄地址和其他备注,而合作方需要传入开票明细内容(订单内容) ### 请求URL - `/openapi/invoice/application/addStayOpenApplication2 ` ### 请求方式 - POST ### 请求参数说明 | 名称 | 类型 | 必填 | 说明 | | ------------ | ------- | ---- | ------------------------- | | applicationNo | String | 是 | 申请单号| | applyType | Integer | 是 | 申请类型 1[待开申请(酒店行业叫后补开票),默认]| | storeId | Long | 否 | 票申的门店id(合作方为酒店时必填,这种情况下,合作方的storeNo是提前维护在票申数据库的,所以能建立两方门店的对应关系) | | storeNo | String | 否 | 合作方的门店编号(合作方为电商公司时必填)| | invoiceType| String|否 |s 专票 c 普票 ce 电票 | | autoDeal | Boolean | 否 | 是否系统自动开具,并推送给用户,只有后续提交的发票类型为电票才会自动开具 | | ticketHolder|String|否|开票人:只有自动开票时才会用到[但也是选填]| | payee|String|否|收款人:只有自动开票时才会用到[但也是选填]| | reviewer|String|否|复核人:只有自动开票时才会用到[但也是选填]。要求:开票人、收款人、复核人不能相同| | orderList|Array<订单详情>|是|订单列表| | orderList[#].orderNo|String|否|渠道订单号| | orderList[#].erpOrderNo|String|是|ERP订单号| | orderList[#].orderPrice|Double|是|订单金额| | orderList[#].items|Array<商品详情>|是|订单商品列表| | orderList[#].items[#].identifier |String|是|商品唯一识别编码。需提前在商户后台上维护,且保证在商户下唯一,后续无法变更。如,酒店行业约定以“ZSF0000001”作为住宿费这一商品的唯一识别码。(待开申请必填)| | orderList[#].items[#].quantity|Double|否|数量| | orderList[#].items[#].unitPrice|Double|否|单价(含税)| | orderList[#].items[#].totalPrice|Double|是|总价(含税)。注:若单价、数量、均不为空,则要求:总价=单价*数量(待开申请必填)| | extension|Object|否|扩展信息| | extension.roomNo|String|否|房间号| #### 注意 1. 商品需要提前在发票开具系统增加; 2. 订单内容内的商品id(`orderList[#].items[#].id`)为双方约定好的商品唯一编码,每个商户可以用这个商品唯一编码维护独立的商品信息(税率,税收分类编码,免税标识等等),这个需要双方产品单独约定; ### 请求示例 - 待开申请(自动开具) ```json { "applicationNo":"test131244", "storeId": 123, "applyType": 1, "autoDeal":true, "ticketHolder":"张三", "payee":"李四", "reviewer":"王五", "orderList":[ { "orderNo":"order1223124", "erpOrderNo":"erp1231231", "orderPrice":24.8, "items":[ { "identifier":"ZSF0000001", "quantity":2, "unitPrice":12.4, "totalPrice":24.8 } ] } ], "extension":{ "roomNo":"1-101" } } ``` ### 返回参数说明 |参数名|类型|说明| |:----- |:-----|----- | |code|int|状态码| |message |string |错误信息,code!=0时有值| |data|Object|结果,code==0时有值且可为null| |data.id |Long |门店id| |data.p |Integer |渠道编号| |data.an |String |申请单号| ### 返回示例 - 成功示例 ```json { "code":0, "data":"http://h5.yipiaoyun.cn/blank?id=102046&p=1&an=t02323112" } ``` - 失败示例 ```json { "code":-1, "message":"申请单号重复" } ``` ## 生成预约开票链接 - 用户在合作方订购/消费时可提前预约发票,预约的开票请求将展示给商户,在开具前,用户均可在合作方进行预约撤销 ### 请求URL - `/openapi/invoice/application/addSubscribeApplication2` ### 请求方式 - POST ### 请求参数说明 | 名称 | 类型 | 必填 | 说明 | | ------------ | ------- | ---- | ------------------------- | | applicationNo | String | 是 | 申请单号| | applyType | Integer | 是 | [2[预约开票]]| | storeId | Long | 否 | 票申的门店id(合作方为酒店时必填,这种情况下,合作方的storeNo是提前维护在票申数据库的,所以能建立两方门店的对应关系) | | storeNo | String | 否 | 合作方的门店编号(合作方为电商公司时必填)| | invoiceType| String|否 |s 专票 c 普票 ce 电票 | | invoiceDate| String |否|取票日期(预约开票用到),格式为 "2018-09-26 18:16:00"| | orderList|Array<订单详情>|是|订单列表| | orderList[#].orderNo|String|否|渠道订单号| | orderList[#].erpOrderNo|String|是|ERP订单号| | extension|Object|否|扩展信息| | extension.roomNo|String|否|房间号| ### 请求示例 - 预约申请 ```json { "applicationNo":"test13120001", "storeId": 102182, "applyType": 2, "orderList":[ { "orderNo":"order12230001", "erpOrderNo":"partner1230001" } ], "extension":{ "roomNo":"1-101" } } ``` ### 返回参数说明 |参数名|类型|说明| |:----- |:-----|----- | |code|int|状态码| |message |string |错误信息,code!=0时有值| |data|Object|结果,code==0时有值且可为null| |data.id |Long |门店id| |data.p |Integer |渠道编号| |data.an |String |申请单号| ### 返回示例 - 成功示例 ```json { "code":0, "data":"http://h5.yipiaoyun.cn/blank?id=102046&p=1&an=test1312098" } ``` - 失败示例 ```json { "code":-1, "message":"申请单号重复" } ``` ## 补充预约开票实际结账详情 - 提交预约申请后,根据预约申请的订单号提交订单信息。 ### 请求URL - `/openapi/invoice/application/submitOrder` ### 请求方式 - POST ### 请求参数说明 | 名称 | 类型 | 必填 | 说明 | | ------------ | ------- | ---- | ------------------------- | | erpOrderNo|String|是|ERP订单号|h | orderPrice|Double|是|订单金额| | items|Array<商品详情>|是|订单商品列表| | items[#].identifier |String|是|商品唯一识别编码。需提前在商户后台上维护,且保证在商户下唯一,后续无法变更。如,酒店行业约定以“ZSF0000001”作为住宿费这一商品的唯一识别码。(待开申请必填)| | items[#].quantity|Double|否|数量| | items[#].unitPrice|Double|否|单价(含税)| | items[#].totalPrice|Double|是|总价(含税)。注:若单价、数量、均不为空,则要求:总价=单价*数量(待开申请必填)| 注意: * 订单金额 = 商品总价之和 * 调用此接口,生成预约开票链接的erpOrderNo是必填的。 ### 请求示例 ```json { "erpOrderNo":"erp1231231", "orderPrice":24.8, "items":[ { "identifier":"ZSF0000001", "quantity":2, "unitPrice":12.4, "totalPrice":24.8 } ] } ``` ### 返回参数说明 |参数名|类型|说明| |:----- |:-----|----- | |code|int|状态码| |message |string |错误信息,code!=0时有值| |data|Boolean|客户是否提交抬头| ### 返回示例 - 成功示例 ```json { "code":0, "data":true } ``` - 失败示例 ```json { "code":-1, "message":"该订单已提交" } ```