上传电子小票

更新时间:2024.11.28

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

接口说明

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

请求方式:【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说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号平台证书加密敏感信息指引


Form 表单

meta  必填 object

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

属性

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

【电子小票上传信息】

属性

应答示例

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

无效请求

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

 

 

反馈
咨询
目录
置顶