上传出租车电子发票文件

更新时间:2023.08.22

服务商调用插卡接口前,需调用本接口上传出租车电子发票文件来获取文件ID。文件ID有效期为3天,有效期内未成功调用插卡接口需重新调用本接口上传发票文件。

# 接口说明

支持商户:
【普通服务商】
请求方式:
【POST】/v3/taxi-invoice/cards/upload-file
请求域名:
【主域名】
https://api.mch.weixin.qq.com
使用该域名将访问就近的接入点
【备域名】
https://api2.mch.weixin.qq.com
使用该域名将访问异地的接入点 ,指引点击查看

# 字段说明

# 请求参数

    Body 包体参数
  • file 必填 object
    出租车电子发票文件的二进制内容,只支持PDF格式,文件大小不能超过2M。需要在请求body中通过表单提交的方式上传此二进制内容。
  • meta 必填 object
    出租车电子发票文件元信息
    • 属性

# 请求步骤说明

# 1.获取请求的meta参数信息

文件元信息meta使用json表示,包含四个字段:company_mchiddigestdigest_algorithmregion_id,各字段的说明请参考请求参数meta部分。

# meta参数示例

1{
2 "company_mchid": "1900000109",
3 "digest": "addca90a6a290b9642dbaccffdf01e8c22aa348940b2e96754169ba08c19e5db",
4 "digest_algorithm": "DIGEST_ALGORITHM_SM3",
5 "region_id": 310100
6 }

# 2.生成请求签名

签名生成规则请参考:签名生成指南

# 2.1. 构造待签名串

参与签名计算的请求主体为meta参数的json

# 待签名串示例
1POST
2/v3/taxi-invoice/cards/upload-file
31566987169 //时间戳
412ced2db6f0193dda91ba86224ea1cd8 //随机数
5{"company_mchid":"1900000109","digest":"addca90a6a290b9642dbaccffdf01e8c22aa348940b2e96754169ba08c19e5db","digest_algorithm":"DIGEST_ALGORITHM_SM3","region_id":"310100"}

# 2.2. 计算签名值

根据待签名串计算出签名值signature

# 2.3. 设置HTTP头

Content-Type需设置为要上载的对象的MIME媒体类型:multipart/form-data;boundary=boundary,其中boundary为商户自定义的一个字符串

# HTTP 头示例
1Content-Type: multipart/form-data;boundary=boundary
2Authorization: WECHATPAY2-SHA256-RSA2048 mchid="1900000109",
3nonce_str="12ced2db6f0193dda91ba86224ea1cd8",timestamp="1566987169",
4serial_no="1FB89742D19F2BD30B69948D16DECA0FCB4481EB",
5signature="PB6M7+3JL7TSCl5zqD1sdWVypOIEQsD4dgOU+vPiVM6GMRo2qYSWKf8u46i9ZJFhyZTBdZ7SFR+BjDZh6
689hFgN8LZL+QWTvq3cse/FEUFYyOLN7L/2IZX4GA4cWInuJ2MpOhZRMpm+emrcn42gTMKAPNQ7dBLO7ux6MoSuQp69
7PW+p1ogmkER68exTVUXYqA5P3vITlWNr++RDy2+ExvB7qVISOKW0vBkxUxN9e7hwUbDwGln170ZXomoO1KpQSbw3f1u
8WUCx/IlWJhJIun7rUMtVT+kfijNUqcILtSfE4hWKKVaZn9j5CX8M7aKbbDOFy3SvbSJ3WQgRnRbgog5w=="

# 2.4. 设置HTTP body

将文件元信息meta参数和文件二进制数据放到请求HTTP的body中

# HTTP body示例
1// 以下为body的内容
2--boundary // boundary为商户自定义的一个字符串
3Content-Disposition: form-data; name="meta";
4Content-Type: application/json
5//此处必须有一个空行
6{"company_mchid":"1900000109","digest":"addca90a6a290b9642dbaccffdf01e8c22aa348940b2e96754169ba08c19e5db","digest_algorithm":"DIGEST_ALGORITHM_SM3","region_id":"310100"}
7--boundary
8Content-Disposition: form-data; name="file";
9Content-Type: pdf/plain
10//此处必须有一个空行
11file_data... //pdf文件二进制数据
12--boundary--

# 3.发送请求

按照以上步骤构造完请求后,参考右侧示例发送请求

说明: 请求包体每行结尾都需要包含\r\n(空行也需要)

# 4.应答字段

# 请求示例

1POST /v3/taxi-invoice/cards/upload-file HTTP/1.1
2Host: api.mch.weixin.qq.com
3Content-Type: multipart/form-data;boundary=boundary
4Authorization: WECHATPAY2-SHA256-RSA2048 mchid="1900000109",
5nonce_str="12ced2db6f0193dda91ba86224ea1cd8",timestamp="1566987169",
6serial_no="1FB89742D19F2BD30B69948D16DECA0FCB4481EB",
7signature="PB6M7+3JL7TSCl5zqD1sdWVypOIEQsD4dgOU+vPiVM6GMRo2qYSWKf8u46i9ZJFhyZTBdZ7SFR+BjDZh6
889hFgN8LZL+QWTvq3cse/FEUFYyOLN7L/2IZX4GA4cWInuJ2MpOhZRMpm+emrcn42gTMKAPNQ7dBLO7ux6MoSuQp69
9PW+p1ogmkER68exTVUXYqA5P3vITlWNr++RDy2+ExvB7qVISOKW0vBkxUxN9e7hwUbDwGln170ZXomoO1KpQSbw3f1u
10WUCx/IlWJhJIun7rUMtVT+kfijNUqcILtSfE4hWKKVaZn9j5CX8M7aKbbDOFy3SvbSJ3WQgRnRbgog5w=="
11
12//此处必须有一个空行
13--boundary
14Content-Disposition: form-data; name="meta";
15Content-Type: application/json
16//此处必须有一个空行
17{ "company_mchid": "1900000109","digest": "addca90a6a290b9642dbaccffdf01e8c22aa348940b2e96754169ba08c19e5db", "digest_algorithm": "DIGEST_ALGORITHM_SM3", "region_id": "310100" }
18--boundary
19Content-Disposition: form-data; name="file";
20Content-Type: pdf/plain
21//此处必须有一个空行
22file_data... //pdf文件二进制数据
23--boundary--

# 应答示例

1{
2 "fapiao_media_id": "ASNFZ4mrze/+3LqYdlQyEA=="
3}

# 错误码

# 公共错误码

状态码 错误码 描述 解决方案
400 PARAM_ERROR 参数错误 请根据错误提示正确传入参数
400 INVALID_REQUEST HTTP 请求不符合微信支付 APIv3 接口规则 请参阅 接口规则
401 SIGN_ERROR 验证不通过 请参阅 签名常见问题
500 SYSTEM_ERROR 系统异常,请稍后重试 请稍后重试

# 业务错误码

状态码 错误码 描述 解决方案
400 PARAM_ERROR 请检查参数格式是否符合要求 请使用正确的参数重新调用
403 NO_AUTH 出租车公司不属于服务商 请检查出租车经营主体商户号,确认是【新增出租车公司】接口返回的商户号
403 NO_AUTH 服务商无权限 请检查是否已经开通出租车电子发票产品相关功能权限
404 NOT_FOUND 未找到指定的出租车经营主体信息 请检查出租车经营主体商户号和行政区划代码,确认公司存在且没有下线