上传电子小票

更新时间:2025.01.09
||

商户将支付成功回传的参数填入指定字段,可以给指定微信支付订单上传电子小票。 上传成功后,用户可以在账单详情页看到商户上传的电子小票。

接口说明

支持商户:【普通服务商】 【渠道商】

请求方式:【POST】/v3/marketing/shopping-receipt/shoppingreceipts

请求域名:【主域名】https://api.mch.weixin.qq.com 使用该域名将访问就近的接入点

     【备域名】https://api2.mch.weixin.qq.com 使用该域名将访问异地的接入点 ,指引点击查看

请求参数
折叠全部参数

Header HTTP头参数

Authorization  必填 string

请参考签名认证生成认证信息


Accept  必填 string

请设置为application/json


Content-Type  必填 string

请设置为multipart/form-data


Wechatpay-Serial  必填 string

【微信支付公钥ID】或【微信支付平台证书序列号】请求参数中的敏感字段,需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号平台证书加密敏感信息指引


Form 表单

meta  必填 object

【电子小票上传信息】 电子小票上传信息

属性

transaction_id  必填 string(32)

【微信支付订单号】微信支付订单的交易单号,上传的电子小票会关联到该订单。用户可以在该笔微信支付订单的账单详情页,看到上传的电子小票。


transaction_mchid  选填 string(32)

【商户号】微信支付订单的下单商户号。若该笔微信支付订单存在下单子商户号,则该字段可不填。订单中无下单子商户该字段必填。


transaction_sub_mchid  选填 string(32)

【子商户号】微信支付订单的下单子商户号。若该笔微信支付订单不存在下单子商户号,则该字段不填。订单中有下单商户号该字段必填。


out_trade_no  选填 string(32)

【商户订单号】微信支付订单的商户订单号。


openid  必填 string(128)

【电子小票归属的OpenID】微信支付订单中OpenID。如果微信支付订单中有sub_OpenID,填写sub_OpenID内容。


sha256  必填 string(256)

【电子小票图片文件摘要】图片文件的文件摘要,即对图片文件的二进制内容进行sha256计算得到的值。


merchant_contact_information  选填 object

【联系商家】用户与商家的联系渠道

属性

consultation_phone_number  选填 string(1024)

【商户售后咨询电话】商户售后咨询电话。该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号平台证书加密敏感信息指引


upload_time  选填 string(32)

【上传时间】上传时间,用于标识请求的先后顺序。遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss.SSS+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,SSS表示毫秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35.100+08:00表示,北京时间2015年5月20日13点29分35秒100毫秒。


file  必填 File

图片文件。将图片文件以二进制方式读取后,原样设置到该HTTP文件表单对象的value中。电子小票图片只支持PNG、JPG格式,需在HTTP表单参数content-type中,设置图片类型为image/pngimage/jpg。文件大小不能超过200KB。

请求示例

POST /v3/marketing/shopping-receipt/shoppingreceipts

1// sdk写file的content_type
2String filePath = "/your/home/test.png";
3URI uri = new URI("https://api.mch.weixin.qq.com/v3/marketing/shopping-receipt/shoppingreceipts");
4File file = new File(filePath);
5try (FileInputStream fileIs = new FileInputStream(file)) {
6    String transaction_id = "420000153220220···158964";
7    String transaction_mchid = "1900006#";
8    String transaction_sub_mchid = "";
9    String out_trade_no = "sdk123456789202205#809";
10    String openid = "oK7fFt8zzEZ909XH-LE2#";
11    String upload_time = "2022-05-07T15:39:35.000+08:00";
12    String meta = "";
13    String sha256 = DigestUtils.sha256Hex(fileIs);
14    if (transaction_sub_mchid == "") {
15        meta = String.format("{\"transaction_id\":\"%s\",\"transaction_mchid\":\"%s\",\"out_trade_no\":\"%s\",\"openid\":\"%s\",\"sha256\":\"%s\",\"upload_time\":\"%s\"}}", transaction_id, transaction_mchid, out_trade_no, openid, sha256, upload_time);
16    } else {
17        meta = String.format("{\"transaction_id\":\"%s\",\"transaction_mchid\":\"%s\",\"transaction_sub_mchid\":\"%s\",\"out_trade_no\":\"%s\",\"openid\":\"%s\",\"sha256\":\"%s\",\"upload_time\":\"%s\"}}", transaction_id, transaction_mchid, transaction_sub_mchid, out_trade_no, openid, sha256, upload_time);
18    }
19    try (InputStream is = new FileInputStream(file)) {
20        WechatPayUploadHttpPost request = new WechatPayUploadHttpPost.Builder(uri)
21                .withFile(file.getName(), meta, is)
22                .build();
23        try (CloseableHttpResponse response = httpClient.execute(request)) {
24            // do something useful with the response body
25            // and ensure it is fully consumed
26            String s = EntityUtils.toString(response.getEntity());
27            System.out.println("result: "+s);
28        }
29    }
30}

应答参数
折叠全部参数

200 OK

receipt  必填 object

【电子小票上传信息】

属性

receipt_id  必填 string(20)

【电子小票ID】电子小票ID


state  必填 string

【电子小票图片审核状态】电子小票图片审核状态。微信支付会对商户上传的电子小票图片内容进行安全审核。审核结束后会根据结果修改电子小票图片审核状态。处于审核不通过状态的电子小票,用户查看电子小票时将使用默认图代替,其他状态正常展示。

可选取值:

  • WAIT_REVIEW: 电子小票图片等待审核

  • NOT_PASS_REVIEW: 电子小票图片没有通过审核

  • PASS_REVIEW: 电子小票图片通过审核


transaction_id  必填 string(32)

【微信支付订单号】微信支付订单的交易单号,上传的电子小票会关联到该订单。用户可以在该笔微信支付订单的账单详情页,看到上传的电子小票。


transaction_mchid  选填 string(32)

【商户号】微信支付订单的商户号。


transaction_sub_mchid  选填 string(32)

【子商户号】微信支付订单的子商户号。


openid  必填 string(128)

【电子小票归属的OpenID】微信支付订单中OpenID。


brand_id  选填 int

【电子小票归属品牌ID】电子小票归属品牌的ID


sha256  必填 string(256)

【电子小票图片文件摘要】图片文件的文件摘要,即对图片文件的二进制内容进行sha256计算得到的值。


image_type  必填 string

【电子小票图片类型】标识电子小票图片类型。

可选取值:

  • PNG: 电子小票图片格式为PNG

  • JPG: 电子小票图片格式为JPG


create_time  必填 string(32)

【创建时间】电子小票创建的时间,遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日13点29分35秒。


modify_time  必填 string(32)

【修改时间】电子小票最后一次修改时间,遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日13点29分35秒。


merchant_contact_information  选填 object

【联系商家】用户与商家的联系渠道

属性

consultation_phone_number  选填 string(1024)

【商户售后咨询电话】商户售后咨询电话。该字段已做加密处理,具体解密方法详见如何使用API证书解密敏感字段


upload_time  选填 string(32)

【上传时间】上传时间,用于标识请求的先后顺序,该笔小票上传时填写则返回,没有不返回。遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss.SSS+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,SSS表示毫秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35.100+08:00表示,北京时间2015年5月20日13点29分35秒100毫秒。

应答示例

200 OK

1{
2  "receipt": {
3    "brand_id": 1142,
4    "create_time": "2015-05-20T13:29:35+08:00",
5    "image_type": "PNG",
6    "merchant_contact_information": {
7      "consultation_phone_number": "pVd1HJ6v/69bDnuC4EL5Kz4jBHLiCa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="
8    },
9    "modify_time": "2015-05-20T13:29:35+08:00",
10    "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
11    "receipt_id": "121630001",
12    "sha256": "2969f98ef4763da62670d3aee5d456b56a8f3447c0178da21445206aa400a464",
13    "state": "WAIT_REVIEW",
14    "transaction_id": "1217752501201407033233368018",
15    "transaction_mchid": "1230000109",
16    "transaction_sub_mchid": "1230000109",
17    "upload_time": "2021-05-20T13:29:35.120+08:00"
18  }
19}
20

 

错误码

公共错误码

状态码

错误码

描述

解决方案

400

PARAM_ERROR

参数错误

请根据错误提示正确传入参数

400

INVALID_REQUEST

HTTP 请求不符合微信支付 APIv3 接口规则

请参阅 接口规则

401

SIGN_ERROR

验证不通过

请参阅 签名常见问题

500

SYSTEM_ERROR

系统异常,请稍后重试

请稍后重试

业务错误码

状态码

错误码

描述

解决方案

500

SYSTEM_ERROR

系统错误

请使用相同参数稍后重新调用

400

PARAM_ERROR

参数错误

根据错误提示,传入正确参数

429

FREQUENCY_LIMITED

频率超限

调用速度不要超过限制

400

INVALID_REQUEST

无效请求

请根据接口返回的详细信息检查

 

 

元宝AI
反馈
目录
置顶