# 托运方开票申请
接口名称:/trade/applicationInvoice
1、一次申请超过商家设定的最大开票金额直接拦截报错
2、电子发票+需要清单需要限制运单数不能超过100条
3、数电发票必须带清单,运单数不能超过500条
请求参数:
| 序号 | 层级 | 英文名称 | 中文名称 | 类型 | 长度 | 是否必填 | 说明 | 
|---|---|---|---|---|---|---|---|
| 1 | 1 | transportBillNumberList | 运单号列表 | List<String> | 是 | ||
| 2 | 1 | invoiceAmount | 申请开票总金额 | Long | 20 | 是 | 单位为“分” | 
| 3 | 1 | buyerName | 购票方名称 | String | 64 | 是 | 购票方名称 | 
| 4 | 1 | buyerCreditCode | 购票方纳税人统一社会信用代码 | String | 64 | 是 | |
| 5 | 1 | invoicePhone | 联系电话(开票用) | String | 64 | 是 | |
| 6 | 1 | invoiceAddress | 发票抬头地址(完整地址) | String | 512 | 是 | |
| 7 | 1 | bankDeposit | 开户银行 | String | 64 | 是 | |
| 8 | 1 | bankCardNumber | 银行卡号 | String | 64 | 是 | |
| 9 | 1 | needInvoiceType | 要求发票类型 | Integer | 2 | 是 | 1-仅支持纸质发票 2-仅支持电子发票 3-支持数电发票,需根据平台配置 | 
| 10 | 1 | receiverName | 收件人 | String | 64 | 是 | |
| 11 | 1 | receiverPhone | 联系电话 | String | 20 | 否 | 发票类型为纸质必填 | 
| 12 | 1 | receiverProvince | 省 行政区划码 | String | 10 | 否 | 发票类型为纸质必填 | 
| 13 | 1 | receiverCity | 市 行政区划码 | String | 10 | 否 | 发票类型为纸质必填 | 
| 14 | 1 | receiverDistrict | 区县 行政区划码 | String | 10 | 否 | 发票类型为纸质必填 | 
| 15 | 1 | receiverProvinceName | 省名称 | String | 64 | 否 | 发票类型为纸质必填 | 
| 16 | 1 | receiverCityName | 市名称 | String | 64 | 否 | 发票类型为纸质必填 | 
| 17 | 1 | receiverDistrictName | 区名称 | String | 64 | 否 | 发票类型为纸质必填 | 
| 18 | 1 | receiverLocation | 详细地址 | String | 64 | 否 | 发票类型为纸质必填 | 
| 19 | 1 | 电子邮箱 | String | 64 | 否 | 发票类型为电子必填 | |
| 20 | 1 | inventory | 是否需要清单 | Integer | 2 | 是 | 是否需要清单: 0-不需要 1-需要 | 
| 21 | 1 | invoiceUnits | 开票单位 | String | 10 | 是 | 可支持:吨、千克、立方、件、车、趟、批(一定要选择不需要清单)、不填单位(填批默认是不需要清单) | 
| 22 | 1 | invoiceQuantity | 开票数量 | String | 10 | 是 | 需根据单位级联: 吨或者千克: 装货重量、卸货重量、装卸货重量最小值、装卸货重量最大值 立方: 装货体积、卸货体积、装卸货体积最小值、装卸货体积最大值 件: 装货件数、卸货件数、装卸货件数最小值、装卸货件数最大值 车+需要清单: 清单中每车数量为1 车+不需要清单: 按总车数汇总 趟+需要清单: 清单中每趟数量为1 趟+不需要清单: 按总趟数汇总 批: 数量填1 不填单位: 不填数量 | 
| 23 | 1 | model | 规格型号 | String | 64 | 否 | 非必选。如需选择,仅支持从车牌号、货物名称选择一个 | 
| 24 | 1 | invoiceRemark | 发票备注要求 | String | 200 | 否 | 发票备注要求在GBK编码下字节长度最长为200(中文占两个字节,英文、数字、特殊字符占一个字节) | 
| 25 | 1 | remark | 其他备注 | String | 256 | 否 | 
返回结果:
| 序号 | 英文名称 | 中文名称 | 类型 | 说明 | 
|---|---|---|---|---|
| 1 | invoiceProofNumber | 开票凭证号 | String | |
| 2 | invoiceAmount | 申请开票总金额 | Long | 单位:分 | 
| 3 | serviceCost | 服务费 | Long | 单位:分 | 
| 4 | shipperTransportCost | 托运方运费 | Long | 单位:分 | 
| 5 | transportBillCount | 运单数 | Long | 
mock 数据示例
{
        "code": "00000",
        "data": {
             "invoiceProofNumber":"202208010210015714",
             "invoiceAmount":11100,
             "serviceCost":1000,
             "shipperTransportCost":10000,
             "transportBillCount":1
        },
        "message": "请求成功"
 }
# 撤销开票申请
接口名称: /trade/cancelApplicationInvoice
请求参数:
| 序号 | 层级 | 英文名称 | 中文名称 | 类型 | 长度 | 是否必填 | 说明 | 
|---|---|---|---|---|---|---|---|
| 1 | 1 | invoiceProofNumber | 开票凭证号 | String | 是 | 
返回结果
成功or失败
mock数据示例:
{
  "code": "00000",
  "data": true,
  "message": "请求成功"
}
# 查询开票状态
接口名称:/trade/getShipperInvoiceProof
请求参数:
| 序号 | 层级 | 英文名称 | 中文名称 | 类型 | 长度 | 是否必填 | 说明 | 
|---|---|---|---|---|---|---|---|
| 1 | 1 | invoiceProofNumber | 开票凭证号 | String | 是 | 
返回结果:
| 序号 | 层级 | 英文名称 | 中文名称 | 类型 | 说明 | 
|---|---|---|---|---|---|
| 1 | 1 | invoiceProofNumber | 开票凭证号 | String | |
| 2 | 1 | auditStatus | 开票单审核状态 | Integer | 审核状态: 1-已拒绝 2-审核中 3-已通过 | 
| 3 | 1 | rejectMsg | 审核拒绝原因 | String | |
| 4 | 1 | transportBillNumberList | 运单号列表 | List<String> | |
| 5 | 1 | invoiceAmount | 申请开票总金额 | Long | 单位:分 | 
| 6 | 1 | demandInfo | 发票清单 | ||
| 7 | 2 | buyerName | 购票方名称 | String | |
| 8 | 2 | buyerCreditCode | 购票方纳税人社会统一信用代码 | String | |
| 9 | 2 | invoicePhone | 联系电话(开票用) | String | |
| 10 | 2 | invoiceAddress | 发票抬头地址(完整地址) | String | |
| 11 | 2 | bankDeposit | 开户银行 | String | |
| 12 | 2 | bankCardNumber | 银行卡号 | String | |
| 13 | 2 | needInvoiceType | 发票类型 | Integer | 1-纸质发票 2-电子发票 3-数电发票 | 
| 14 | 2 | receiverName | 收件人姓名 | String | |
| 15 | 2 | receiverPhone | 联系人电话 | String | 纸质发票,该字段存在值 | 
| 16 | 2 | receiverProvince | 省行政区划码 | String | 纸质发票,该字段存在值 | 
| 17 | 2 | receiverCity | 市行政区划码 | String | 纸质发票,该字段存在值 | 
| 18 | 2 | receiverDistrict | 区行政区划码 | String | 纸质发票,该字段存在值 | 
| 19 | 2 | receiverProvinceName | 省份名称 | String | 纸质发票,该字段存在值 | 
| 20 | 2 | receiverCityName | 市名称 | String | 纸质发票,该字段存在值 | 
| 21 | 2 | receiverDistrictName | 区名称 | String | 纸质发票,该字段存在值 | 
| 22 | 2 | receiverLocation | 详细地址 | String | 纸质发票,该字段存在值 | 
| 23 | 2 | 电子邮箱 | String | 电子发票,该字段存在值 | |
| 24 | 2 | inventory | 是否需要清单 | Integer | 0-不需要 1-需要 | 
| 25 | 2 | invoiceUnits | 开票单位 | String | 吨、千克、立方、件、车、趟、批或不填单位 | 
| 26 | 2 | invoiceQuantity | 开票数量 | String | |
| 27 | 2 | model | 规格型号 | String | |
| 28 | 2 | invoiceRemark | 发票备注要求 | String | |
| 29 | 2 | remark | 其他备注 | String | 
mock 数据示例
{
  "code": "00000",
  "data": {
    "invoiceProofNumber": "",
    "auditStatus": 3,
    "rejectMsg": null,
    "transportBillNumberList": [""],
    "invoiceAmount": 100000,
    "demandInfo": {
        "buyerName": "",
        "buyerCreditCode": "",
        "invoicePhone": "",
        "invoiceAddress": "",
        "bankDeposit": "",
        "bankCardNumber": "",
        "needInvoiceType": 2,
        "receiverName": null,
        "receiverPhone": null,
        "receiverProvince": null,
        "receiverCity": null,
        "receiverDistrict": null,
        "receiverProvinceName": null,
        "receiverCityName": null,
        "receiverDistrictName": null,
        "receiverLocation": null,
        "email": "zhangsan@168.com",
        "inventory": 1,
        "invoiceUnits": "吨",
        "invoiceQuantity": "装卸货重量最小值",
        "model": "车牌号",
        "invoiceRemark": "",
        "remark": null
        }
    },
  "message": "请求成功"
}
# 托运方发票信息查询
接口名称:/trade/getShipperInvoiceInfo
请求参数:
| 序号 | 层级 | 英文名称 | 中文名称 | 类型 | 长度 | 是否必填 | 说明 | 
|---|---|---|---|---|---|---|---|
| 1 | 1 | invoiceProofNumber | 开票凭证号 | String | 是 | 
返回结果:
| 序号 | 层级 | 英文名称 | 中文名称 | 类型 | 说明 | 
|---|---|---|---|---|---|
| 1 | 1 | invoiceProofNumber | 开票凭证号 | String | |
| 2 | 1 | invoiceTime | 开票时间 | String | "yyyy-MM-dd HH:mm:ss" | 
| 3 | 1 | invoiceNumber | 发票号码 | String | |
| 4 | 1 | invoiceUrls | 发票URL地址 | String | 若有多个,则用英文逗号隔开 | 
| 5 | 1 | transportBillNumberList | 运单号列表 | List<String> | 
mock 数据示例
{
  "code": "00000",
  "data":{
    "invoiceProofNumber": "",
    "invoiceNumber": "",
    "invoiceUrls": "",
    "transportBillNumberList": ["",""]
  },
  "message": "请求成功"
}
# 开票审核回调通知接口
1.请求头会携带sign参数,用于鉴权
serviceName : invoiceAuditNotify
接口名称:由接入方提供回调地址
请求参数
| 序号 | 层级 | 英文****名称 | 中文名称 | 类型 | 长度 | 是否必填 | 说明 | 
|---|---|---|---|---|---|---|---|
| 1 | 1 | serviceName | 服务名 | String | 是 | ||
| 2 | 1 | apiId | 接入appId | String | 是 | ||
| 3 | 1 | invoiceProofNumber | 开票凭证号 | String | 是 | ||
| 4 | 1 | auditStatus | 审核状态 | Integer | 20 | 是 | 审核状态: 1-已拒绝 2-审核中 3-已通过 | 
| 5 | 1 | rejectMsg | 拒绝原因 | String | 64 | 是 | 长度64 | 
mock 数据示例
{
    "apiId":"9fa5c1643b454f7ab2e026082d610e6b",  
    "invoiceProofNumber":"20400",
    "auditStatus":3,
    "rejectMsg":"",
    "serviceName":"invoiceAuditNotify"
}
返回参数
| 序号 | 英文名称 | 中文名称 | 类型 | 说明 | 
|---|---|---|---|---|
| 1 | code | 结果码 | String | 1-成功 2-失败 | 
| 3 | message | 结果文本 | String | 结果文本 | 
mock 数据示例
{
        "code": "1",
        "message": "请求成功"
 }
# 开票成功回调通知接口
1.请求头会携带sign参数,用于鉴权
serviceName : invoiceSuccessNotify
接口名称:由接入方提供回调地址
请求参数
| 序号 | 层级 | 英文****名称 | 中文名称 | 类型 | 长度 | 是否必填 | 说明 | 
|---|---|---|---|---|---|---|---|
| 1 | 1 | serviceName | 服务名 | String | 是 | ||
| 2 | 1 | apiId | 接入appId | String | 是 | ||
| 3 | 1 | invoiceProofNumber | 开票凭证号 | String | 是 | ||
| 4 | 1 | invoiceTime | 开票时间 | String | 64 | 是 | "yyyy-MM-dd HH:mm:ss" | 
| 5 | 1 | invoiceStatus | 开票状态 | Integer | 20 | 是 | 开票状态: 70-开票成功 | 
| 6 | 1 | invoiceUrls | 发票url | String | 64 | 是 | 多张发票以逗号分隔 | 
mock 数据示例
{
    "apiId":"9fa5c1643b454f7ab2e026082d610e6b",
    "invoiceProofNumber":"20400",
    "invoiceStatus":70,
    "invoiceUrls":"",
    "serviceName":"invoiceSuccessNotify"
}
返回参数
| 序号 | 英文名称 | 中文名称 | 类型 | 说明 | 
|---|---|---|---|---|
| 1 | code | 结果码 | String | 1-成功 2-失败 | 
| 3 | message | 结果文本 | String | 结果文本 | 
mock 数据示例
{
        "code": "1",
        "message": "请求成功"
 }
