API列表
# 创建新的激活码
请求路径:
`/openapi/activeCode/pmsAdd`
请求方法:
`POST`
接口参数:
| 字段名 | 类型 | 必填 | 说明 |
| ------------ | ------------ | -----| ------------ |
| data | 数组 | 是 | 支持批量的参数(ActiveCodeCreateParam) |
| uniqueNo | String | 是 | 调用方唯一业务凭证号, 相同凭证号会保证幂等 |
ActiveCodeCreateParam:
| 字段名 | 类型 | 必填 | 说明 |
| ------------ | ------------ | -----| ------------ |
| tenantId | String | 是 | 租户ID |
| companyTaxNo | String | 是 | 公司税号 |
| strategy | int | 是 | 到期的策略 |
| invoiceType | String | 是 | 票种,多个逗号分割 |
票种:
| 值 | 类型 |
| ------------ | ------------ |
| c | 增值税普通发票 |
| s | 增值税专用发票 |
| ce | 增值税电子普通发票 |
| v | 机动车票 |
| bc | 区块链电票 |
| se | 增值税电子专用发票 |
strategy:
1. 指定时长, 按照首张票时间自动计算失效时间
2. 指定时长, 按注册时间自动计算失效时间
3. 指定失效日期
strategy为1/2:
| 字段名 | 类型 | 必填 | 说明 |
| ------------ | ------------ | -----| ------------ |
| period | int |是 | 有效期数值 |
| unit | String | 是 | 有效期单位: y(年)/m(月)/d(日) |
strategy为3:
| 字段名 | 类型 | 必填 | 说明 |
| ------------ | ------------ | -----| ------------ |
| expireDate | String | 是 | 格式:20000101 |
注:
1.如果只填companyTaxNo,则该激活码只能用于该税号的公司创建使用。
2.如果只填partnerStoreNo,则公司创建时填写该激活码,那么公司注册后会自动创建对应门店。
3.一次请求最多不能超过50个
4.请求的集合不保证事务, 每一个结果可以单独成功或失败
请求参数示例:
```json
{
"uniqueNo": "123456789",
"data": [{
"tenantId": "123456",
"invoiceType": "c,s,se",
"strategy": 3,
"expireDate": "20900101"
}]
}
```
响应结果:
| 字段名 | 类型 | 说明 |
| ------------ | ------------ | ------------ |
| code | Integer | 处理结果 |
| message | String | 结果描述 |
| data | 数组 | 激活码信息(ActiveCodeDTO) |
ActiveCodeDTO:
| 字段名 | 类型 | 说明 |
| ------------ | ------------ | ------------ |
| success | boolean | 是否创建成功 |
| tenantId | String | 租户ID |
| companyTaxNo | String | 公司税号 |
| activeCode | String | 激活码 |
| message | String | 创建失败消息 |
注:
1. 外层的结果表示调用是否成功:
可能的错误: 个数超限或者参数格式不对
2. 内存的结果表示业务是否成功
响应结果示例:
```json
失败:
{
"code": -1,
"message": "一次请求不能超过50个"
}
成功:
{
"code": 0,
"data": [{
"success": true,
"tenantId": "123",
"companyTaxNo": "abc",
"activeCode": "wefcspmfe"
}, {
"success": false,
"tenantId": "123",
"companyTaxNo": "abc",
"message": "******"
}]
}
```
# 更新公司有效期
延长公司的有效期
请求路径:
`/openapi/activeCode/updateExpireDate`
请求方式:
`POST`
接口参数:
| 参数 | 类型 | 是否必填 | 说明 |
| ------------ | ------------ | ------------ |------------ |
| companyTaxNo | String | 是 | 公司税号 |
| expireDate | String | 是 | 格式: 20000909 |
响应结果:
| 字段名 | 类型 | 说明 |
| ------------ | ------------ | ------------ |
| code | Integer | 处理结果 |
| message | String | 结果描述 |
响应结果示例:
```json
失败:
{
"code": -1,
"message": "税号不能为空。"
}
成功:
{
"code": 0
}
```
# 查询激活码使用状态
查询激活码的使用详情,包括:激活时间、激活状态、过期时间。
请求路径:
`/openapi/activeCode/get`
请求方式:
`POST`
接口参数:
| 参数 | 类型 | 是否必填 | 说明 |
| ------------ | ------------ | ------------ |------------ |
| activeCode | String | 是 | 激活码 |
请求示例:
`/openapi/activeCode/get?activeCode=Z4KS4H`
响应结果:
| 字段名 | 类型 | 说明 |
| ------------ | ------------ | ------------ |
| code | Integer | 处理结果 |
| message | String | 结果描述 |
| data | Object | 激活码信息(ActiveCodeDTO) |
ActiveCodeDTO:
| 字段名 | 类型 | 说明 |
| ------------ | ------------ | ------------ |
| activeCode | String | 激活码 |
| status | Integer | 激活状态【0:未使用;1:使用中;2:已失效 3.已生效 4.即将失效】 |
| activeTime | DateTime | 激活时间:2019-03-27 11:22:17 |
| endTime | DateTime | 结束时间:2019-03-27 11:22:17 |
| useTime | DateTime | 使用时间:2019-03-27 11:22:17 |
响应结果示例:
```json
失败:
{
"code": -1,
"message": "激活码不能为空。"
}
成功:
{
"code": 0,
"message": "success",
"data": {
"activeCode":"Z4KS4H",
"status":3,
"activeTime":"2019-03-27 11:22:17",
"endTime":"2099-12-31 23:59:59",
"useTime":"2099-12-31 23:59:59",
}
}
```
# 回调激活码使用状态
激活码状态更新后,发票管家会把相关激活码信息发送给PMS,PMS需要接收处理,并按文档规范返回应答。
注意:
1、同样的通知可能会多次发送。PMS必须能够正确处理重复的通知。
2、后台通知交互时,如果发票管家收到PMS的应答不符合规范或超时,发票管家会判定本次通知失败,重新发送通知,直到成功为止(在通知一直不成功的情况下,会发起多次通知,通知频率为1min一次,一共发送10次),但发票管家不保证通知最终一定能成功。
3、在激活码状态不明或者没有收到发票管家通知的情况下,建议PMS主动调用【查询激活码使用状态API】确认激活码状态。
通知url:
PMS提供给发票管家的回调url,必须为直接可访问的url,不能携带参数。
请求方式:
`POST`
POST请求会在HTTP Header中设置Content-Type:application/json。token 放到 Header 的 Authorization 中。
token的生成与校验可参考JWT工具
通知字段:
| 字段名 | 类型 | 说明 |
| ------------ | ------------ | ------------ |
| code | Integer | 处理结果 |
| message | String | 结果描述 |
| requestId | String | 同一个回调唯一 |
| data | Object | 激活码信息(ActiveCodeDTO) code=0时,data才有值 |
ActiveCodeDTO:
| 字段名 | 类型 | 说明 |
| ------------ | ------------ | ------------ |
| companyTaxNo | String | 公司税号 |
| activeCode | String | 激活码 |
| status | Integer | 激活状态【0:未使用;1:使用中;2:已失效 3.已生效 4.即将失效】 |
| activeTime | DateTime | 激活时间:2019-03-27 11:22:17 |
| endTime | DateTime | 结束时间:2019-03-27 11:22:17 |
| useTime | DateTime | 使用时间:2019-03-27 11:22:17 |
响应结果示例:
```json
成功:
{
"code": 0,
"message": "success",
"data": {
"companyTaxNo": "abc",
"activeCode":"Z4KS4H",
"status":3,
"activeTime":"2019-03-27 11:22:17",
"endTime":"2099-12-31 23:59:59",
"useTime":"2099-12-31 23:59:59",
}
}
```
返回字段:
| 字段名 |必填| 类型 | 说明 |
| ------------ | ------------ | ------------ | ------------ |
| code | 是 | Integer | 处理结果 code=0,表示PMS接收通知成功并校验成功;code=-1,表示失败 |
| message | 否 | String | 结果描述 比如签名校验失败 |