自助机顾客提交
## 生成待开申请链接
- 用户已完成订购/消费,通过合作方页面提交补开发票的请求,需填写抬头信息、邮寄地址和其他备注,而合作方需要传入开票明细内容(订单内容)
### 请求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":"该订单已提交"
}
```