同步车辆入场通知
更新时间:2026.06.29对商户提供同步车辆入场通知接口
接口说明
支持商户:【普通服务商】 【平台商户】
请求方式:【POST】/v3/parking/reminders/entry
请求域名:【主域名】https://api.mch.weixin.qq.com 使用该域名将访问就近的接入点
【备域名】https://api2.mch.weixin.qq.com 使用该域名将访问异地的接入点 ,指引点击查看
请求参数
Header HTTP头参数
Authorization 必填 string
请参考签名认证生成认证信息
Accept 必填 string
请设置为application/json
Content-Type 必填 string
请设置为application/json
body 包体参数
out_serial_number 必填 string(64)
【商户停车单号】 商户系统自行生成,须在同一商户号下全局唯一。建议不超过32字符,超过64字符将被拦截。
parking_id 必填 string(64)
【微信停车场ID】 停车场进件审核通过且运营入驻完成后,由微信支付分配。可通过「查询停车场进件申请单」或「查询停车场信息」接口获取;入场/离场/支付等接口须与入场时保持一致。
plate_number 必填 string(16)
【车牌号】 国内车牌,省份简称+6~7位字母或数字(新能源绿牌8位)。
enter_timestamp 必填 integer
【车辆入场时间】 商户需要传入一个秒级的时间戳
plate_color 必填 string
【车牌颜色】 按照本文档提供的车牌颜色枚举值传入,各枚举值含义见字段枚举说明。
可选取值
PLATE_COLOR_UNKNOWN: 未知PLATE_COLOR_BLUE: 蓝色PLATE_COLOR_YELLOW: 黄色PLATE_COLOR_BLACK: 黑色PLATE_COLOR_WHITE: 白色PLATE_COLOR_GREEN: 绿色PLATE_COLOR_YELLOW_GREEN: 黄绿PLATE_COLOR_AGRICULTURAL_YELLOW: 农黄PLATE_COLOR_OTHER: 其他
car_type 必填 string
【车辆性质】 按照本文档提供的车辆性质枚举值传入,各枚举值含义见字段枚举说明。
可选取值
PLATE_TYPE_UNKNOWN: 无(缺省)PLATE_TYPE_TEMPORARY: 临停PLATE_TYPE_MONTHLY: 月卡PLATE_TYPE_FREE: 免费车辆PLATE_TYPE_PREPAID: 储值车PLATE_TYPE_OTHERS: 其他
vehicle_type 必填 string
【车辆类型】 按照本文档提供的车辆类型枚举值传入,各枚举值含义见字段枚举说明。
可选取值
VEHICLE_TYPE_UNKNOWN: 无(缺省)VEHICLE_TYPE_SMALL: 小车VEHICLE_TYPE_LARGE: 大车VEHICLE_TYPE_EXTRA_LARGE: 超大车VEHICLE_TYPE_ALL_TYPE: 全车型
entrance_number 选填 string(128)
【停车场入口编号】 停车场入口编号,由大小写字母和数字组成,如 A01。长度1~128字符。
entrance_name 选填 string(64)
【停车场入口名称】 停车场入口名称。长度1~64字符。
discount_template_id 选填 array[integer]
【优惠信息模板ID】 单次最多传3个模板ID
请求示例
POST
1curl -X POST \ 2 https://api.mch.weixin.qq.com/v3/parking/reminders/entry \ 3 -H "Authorization: WECHATPAY2-SHA256-RSA2048 mchid=\"1900000001\",..." \ 4 -H "Accept: application/json" \ 5 -H "Content-Type: application/json" \ 6 -d '{ 7 "out_serial_number" : "PARK20260423001", 8 "parking_id" : "21232735744117624001123604298240", 9 "plate_number" : "粤B12345", 10 "enter_timestamp" : 1719128975, 11 "plate_color" : "PLATE_COLOR_UNKNOWN", 12 "car_type" : "PLATE_TYPE_UNKNOWN", 13 "vehicle_type" : "VEHICLE_TYPE_UNKNOWN", 14 "entrance_number" : "A01", 15 "entrance_name" : "东门入口", 16 "discount_template_id" : [ 17 1 18 ] 19 }' 20
需配合微信支付工具库 WXPayUtility 使用,请参考Java
1package com.java.demo; 2 3import com.java.utils.WXPayUtility; // 引用微信支付工具库,参考:https://pay.weixin.qq.com/doc/v3/partner/4014985777 4 5import com.google.gson.annotations.SerializedName; 6import com.google.gson.annotations.Expose; 7import okhttp3.MediaType; 8import okhttp3.OkHttpClient; 9import okhttp3.Request; 10import okhttp3.RequestBody; 11import okhttp3.Response; 12 13import java.io.IOException; 14import java.io.UncheckedIOException; 15import java.security.PrivateKey; 16import java.security.PublicKey; 17import java.util.ArrayList; 18import java.util.HashMap; 19import java.util.List; 20import java.util.Map; 21 22/** 23 * 同步车辆入场通知 24 */ 25public class SyncParkingEntry { 26 private static String HOST = "https://api.mch.weixin.qq.com"; 27 private static String METHOD = "POST"; 28 private static String PATH = "/v3/parking/reminders/entry"; 29 30 public static void main(String[] args) { 31 // TODO: 请准备商户开发必要参数,参考:https://pay.weixin.qq.com/doc/v3/partner/4013080340 32 SyncParkingEntry client = new SyncParkingEntry( 33 "19xxxxxxxx", // 商户号,是由微信支付系统生成并分配给每个商户的唯一标识符,商户号获取方式参考 https://pay.weixin.qq.com/doc/v3/partner/4013080340 34 "1DDE55AD98Exxxxxxxxxx", // 商户API证书序列号,如何获取请参考 https://pay.weixin.qq.com/doc/v3/partner/4013058924 35 "/path/to/apiclient_key.pem", // 商户API证书私钥文件路径,本地文件路径 36 "PUB_KEY_ID_xxxxxxxxxxxxx", // 微信支付公钥ID,如何获取请参考 https://pay.weixin.qq.com/doc/v3/partner/4013038589 37 "/path/to/wxp_pub.pem" // 微信支付公钥文件路径,本地文件路径 38 ); 39 40 SyncParkingEntryRequest request = new SyncParkingEntryRequest(); 41 request.outSerialNumber = "PARK20260423001"; 42 request.parkingId = "21232735744117624001123604298240"; 43 request.plateNumber = "粤B12345"; 44 request.enterTimestamp = 1719128975L; 45 request.plateColor = PlateColor.PLATE_COLOR_UNKNOWN; 46 request.carType = PlateType.PLATE_TYPE_UNKNOWN; 47 request.vehicleType = VehicleType.VEHICLE_TYPE_UNKNOWN; 48 request.entranceNumber = "A01"; 49 request.entranceName = "东门入口"; 50 request.discountTemplateId = new ArrayList<>(); 51 { 52 request.discountTemplateId.add(1L); 53 }; 54 try { 55 SyncParkingEntryResponse response = client.run(request); 56 // TODO: 请求成功,继续业务逻辑 57 System.out.println(response); 58 } catch (WXPayUtility.ApiException e) { 59 // TODO: 请求失败,根据状态码执行不同的逻辑 60 e.printStackTrace(); 61 } 62 } 63 64 public SyncParkingEntryResponse run(SyncParkingEntryRequest request) { 65 String uri = PATH; 66 String reqBody = WXPayUtility.toJson(request); 67 68 Request.Builder reqBuilder = new Request.Builder().url(HOST + uri); 69 reqBuilder.addHeader("Accept", "application/json"); 70 reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId); 71 reqBuilder.addHeader("Authorization", WXPayUtility.buildAuthorization(mchid, certificateSerialNo,privateKey, METHOD, uri, reqBody)); 72 reqBuilder.addHeader("Content-Type", "application/json"); 73 RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), reqBody); 74 reqBuilder.method(METHOD, requestBody); 75 Request httpRequest = reqBuilder.build(); 76 77 // 发送HTTP请求 78 OkHttpClient client = new OkHttpClient.Builder().build(); 79 try (Response httpResponse = client.newCall(httpRequest).execute()) { 80 String respBody = WXPayUtility.extractBody(httpResponse); 81 if (httpResponse.code() >= 200 && httpResponse.code() < 300) { 82 // 2XX 成功,验证应答签名 83 WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey, 84 httpResponse.headers(), respBody); 85 86 // 从HTTP应答报文构建返回数据 87 return WXPayUtility.fromJson(respBody, SyncParkingEntryResponse.class); 88 } else { 89 throw new WXPayUtility.ApiException(httpResponse.code(), respBody, httpResponse.headers()); 90 } 91 } catch (IOException e) { 92 throw new UncheckedIOException("Sending request to " + uri + " failed.", e); 93 } 94 } 95 96 private final String mchid; 97 private final String certificateSerialNo; 98 private final PrivateKey privateKey; 99 private final String wechatPayPublicKeyId; 100 private final PublicKey wechatPayPublicKey; 101 102 public SyncParkingEntry(String mchid, String certificateSerialNo, String privateKeyFilePath, String wechatPayPublicKeyId, String wechatPayPublicKeyFilePath) { 103 this.mchid = mchid; 104 this.certificateSerialNo = certificateSerialNo; 105 this.privateKey = WXPayUtility.loadPrivateKeyFromPath(privateKeyFilePath); 106 this.wechatPayPublicKeyId = wechatPayPublicKeyId; 107 this.wechatPayPublicKey = WXPayUtility.loadPublicKeyFromPath(wechatPayPublicKeyFilePath); 108 } 109 110 public static class SyncParkingEntryRequest { 111 @SerializedName("out_serial_number") 112 public String outSerialNumber; 113 114 @SerializedName("parking_id") 115 public String parkingId; 116 117 @SerializedName("plate_number") 118 public String plateNumber; 119 120 @SerializedName("enter_timestamp") 121 public Long enterTimestamp; 122 123 @SerializedName("plate_color") 124 public PlateColor plateColor; 125 126 @SerializedName("car_type") 127 public PlateType carType; 128 129 @SerializedName("vehicle_type") 130 public VehicleType vehicleType; 131 132 @SerializedName("entrance_number") 133 public String entranceNumber; 134 135 @SerializedName("entrance_name") 136 public String entranceName; 137 138 @SerializedName("discount_template_id") 139 public List<Long> discountTemplateId; 140 } 141 142 public static class SyncParkingEntryResponse { 143 @SerializedName("code") 144 public String code; 145 146 @SerializedName("message") 147 public String message; 148 149 @SerializedName("serial_number") 150 public String serialNumber; 151 } 152 153 public enum PlateColor { 154 @SerializedName("PLATE_COLOR_UNKNOWN") 155 PLATE_COLOR_UNKNOWN, 156 @SerializedName("PLATE_COLOR_BLUE") 157 PLATE_COLOR_BLUE, 158 @SerializedName("PLATE_COLOR_YELLOW") 159 PLATE_COLOR_YELLOW, 160 @SerializedName("PLATE_COLOR_BLACK") 161 PLATE_COLOR_BLACK, 162 @SerializedName("PLATE_COLOR_WHITE") 163 PLATE_COLOR_WHITE, 164 @SerializedName("PLATE_COLOR_GREEN") 165 PLATE_COLOR_GREEN, 166 @SerializedName("PLATE_COLOR_YELLOW_GREEN") 167 PLATE_COLOR_YELLOW_GREEN, 168 @SerializedName("PLATE_COLOR_AGRICULTURAL_YELLOW") 169 PLATE_COLOR_AGRICULTURAL_YELLOW, 170 @SerializedName("PLATE_COLOR_OTHER") 171 PLATE_COLOR_OTHER 172 } 173 174 public enum PlateType { 175 @SerializedName("PLATE_TYPE_UNKNOWN") 176 PLATE_TYPE_UNKNOWN, 177 @SerializedName("PLATE_TYPE_TEMPORARY") 178 PLATE_TYPE_TEMPORARY, 179 @SerializedName("PLATE_TYPE_MONTHLY") 180 PLATE_TYPE_MONTHLY, 181 @SerializedName("PLATE_TYPE_FREE") 182 PLATE_TYPE_FREE, 183 @SerializedName("PLATE_TYPE_PREPAID") 184 PLATE_TYPE_PREPAID, 185 @SerializedName("PLATE_TYPE_OTHERS") 186 PLATE_TYPE_OTHERS 187 } 188 189 public enum VehicleType { 190 @SerializedName("VEHICLE_TYPE_UNKNOWN") 191 VEHICLE_TYPE_UNKNOWN, 192 @SerializedName("VEHICLE_TYPE_SMALL") 193 VEHICLE_TYPE_SMALL, 194 @SerializedName("VEHICLE_TYPE_LARGE") 195 VEHICLE_TYPE_LARGE, 196 @SerializedName("VEHICLE_TYPE_EXTRA_LARGE") 197 VEHICLE_TYPE_EXTRA_LARGE, 198 @SerializedName("VEHICLE_TYPE_ALL_TYPE") 199 VEHICLE_TYPE_ALL_TYPE 200 } 201 202} 203
需配合微信支付工具库 wxpay_utility 使用,请参考Go
1package main 2 3import ( 4 "bytes" 5 "demo/wxpay_utility" // 引用微信支付工具库,参考 https://pay.weixin.qq.com/doc/v3/partner/4015119446 6 "encoding/json" 7 "fmt" 8 "net/http" 9 "net/url" 10) 11 12func main() { 13 // TODO: 请准备商户开发必要参数,参考:https://pay.weixin.qq.com/doc/v3/partner/4013080340 14 config, err := wxpay_utility.CreateMchConfig( 15 "19xxxxxxxx", // 商户号,是由微信支付系统生成并分配给每个商户的唯一标识符,商户号获取方式参考 https://pay.weixin.qq.com/doc/v3/partner/4013080340 16 "1DDE55AD98Exxxxxxxxxx", // 商户API证书序列号,如何获取请参考 https://pay.weixin.qq.com/doc/v3/partner/4013058924 17 "/path/to/apiclient_key.pem", // 商户API证书私钥文件路径,本地文件路径 18 "PUB_KEY_ID_xxxxxxxxxxxxx", // 微信支付公钥ID,如何获取请参考 https://pay.weixin.qq.com/doc/v3/partner/4013038589 19 "/path/to/wxp_pub.pem", // 微信支付公钥文件路径,本地文件路径 20 ) 21 if err != nil { 22 fmt.Println(err) 23 return 24 } 25 26 request := &SyncParkingEntryRequest{ 27 OutSerialNumber: wxpay_utility.String("PARK20260423001"), 28 ParkingId: wxpay_utility.String("21232735744117624001123604298240"), 29 PlateNumber: wxpay_utility.String("粤B12345"), 30 EnterTimestamp: wxpay_utility.Int64(1719128975), 31 PlateColor: PLATECOLOR_PLATE_COLOR_UNKNOWN.Ptr(), 32 CarType: PLATETYPE_PLATE_TYPE_UNKNOWN.Ptr(), 33 VehicleType: VEHICLETYPE_VEHICLE_TYPE_UNKNOWN.Ptr(), 34 EntranceNumber: wxpay_utility.String("A01"), 35 EntranceName: wxpay_utility.String("东门入口"), 36 DiscountTemplateId: []int64{int64(1)}, 37 } 38 39 response, err := SyncParkingEntry(config, request) 40 if err != nil { 41 fmt.Printf("请求失败: %+v\n", err) 42 // TODO: 请求失败,根据状态码执行不同的处理 43 return 44 } 45 46 // TODO: 请求成功,继续业务逻辑 47 fmt.Printf("请求成功: %+v\n", response) 48} 49 50func SyncParkingEntry(config *wxpay_utility.MchConfig, request *SyncParkingEntryRequest) (response *SyncParkingEntryResponse, err error) { 51 const ( 52 host = "https://api.mch.weixin.qq.com" 53 method = "POST" 54 path = "/v3/parking/reminders/entry" 55 ) 56 57 reqUrl, err := url.Parse(fmt.Sprintf("%s%s", host, path)) 58 if err != nil { 59 return nil, err 60 } 61 reqBody, err := json.Marshal(request) 62 if err != nil { 63 return nil, err 64 } 65 httpRequest, err := http.NewRequest(method, reqUrl.String(), bytes.NewReader(reqBody)) 66 if err != nil { 67 return nil, err 68 } 69 httpRequest.Header.Set("Accept", "application/json") 70 httpRequest.Header.Set("Wechatpay-Serial", config.WechatPayPublicKeyId()) 71 httpRequest.Header.Set("Content-Type", "application/json") 72 authorization, err := wxpay_utility.BuildAuthorization(config.MchId(), config.CertificateSerialNo(), config.PrivateKey(), method, reqUrl.RequestURI(), reqBody) 73 if err != nil { 74 return nil, err 75 } 76 httpRequest.Header.Set("Authorization", authorization) 77 78 client := &http.Client{} 79 httpResponse, err := client.Do(httpRequest) 80 if err != nil { 81 return nil, err 82 } 83 respBody, err := wxpay_utility.ExtractResponseBody(httpResponse) 84 if err != nil { 85 return nil, err 86 } 87 if httpResponse.StatusCode >= 200 && httpResponse.StatusCode < 300 { 88 // 2XX 成功,验证应答签名 89 err = wxpay_utility.ValidateResponse( 90 config.WechatPayPublicKeyId(), 91 config.WechatPayPublicKey(), 92 &httpResponse.Header, 93 respBody, 94 ) 95 if err != nil { 96 return nil, err 97 } 98 response := &SyncParkingEntryResponse{} 99 if err := json.Unmarshal(respBody, response); err != nil { 100 return nil, err 101 } 102 103 return response, nil 104 } else { 105 return nil, wxpay_utility.NewApiException( 106 httpResponse.StatusCode, 107 httpResponse.Header, 108 respBody, 109 ) 110 } 111} 112 113type SyncParkingEntryRequest struct { 114 OutSerialNumber *string `json:"out_serial_number,omitempty"` 115 ParkingId *string `json:"parking_id,omitempty"` 116 PlateNumber *string `json:"plate_number,omitempty"` 117 EnterTimestamp *int64 `json:"enter_timestamp,omitempty"` 118 PlateColor *PlateColor `json:"plate_color,omitempty"` 119 CarType *PlateType `json:"car_type,omitempty"` 120 VehicleType *VehicleType `json:"vehicle_type,omitempty"` 121 EntranceNumber *string `json:"entrance_number,omitempty"` 122 EntranceName *string `json:"entrance_name,omitempty"` 123 DiscountTemplateId []int64 `json:"discount_template_id,omitempty"` 124} 125 126type SyncParkingEntryResponse struct { 127 Code *string `json:"code,omitempty"` 128 Message *string `json:"message,omitempty"` 129 SerialNumber *string `json:"serial_number,omitempty"` 130} 131 132type PlateColor string 133 134func (e PlateColor) Ptr() *PlateColor { 135 return &e 136} 137 138const ( 139 PLATECOLOR_PLATE_COLOR_UNKNOWN PlateColor = "PLATE_COLOR_UNKNOWN" 140 PLATECOLOR_PLATE_COLOR_BLUE PlateColor = "PLATE_COLOR_BLUE" 141 PLATECOLOR_PLATE_COLOR_YELLOW PlateColor = "PLATE_COLOR_YELLOW" 142 PLATECOLOR_PLATE_COLOR_BLACK PlateColor = "PLATE_COLOR_BLACK" 143 PLATECOLOR_PLATE_COLOR_WHITE PlateColor = "PLATE_COLOR_WHITE" 144 PLATECOLOR_PLATE_COLOR_GREEN PlateColor = "PLATE_COLOR_GREEN" 145 PLATECOLOR_PLATE_COLOR_YELLOW_GREEN PlateColor = "PLATE_COLOR_YELLOW_GREEN" 146 PLATECOLOR_PLATE_COLOR_AGRICULTURAL_YELLOW PlateColor = "PLATE_COLOR_AGRICULTURAL_YELLOW" 147 PLATECOLOR_PLATE_COLOR_OTHER PlateColor = "PLATE_COLOR_OTHER" 148) 149 150type PlateType string 151 152func (e PlateType) Ptr() *PlateType { 153 return &e 154} 155 156const ( 157 PLATETYPE_PLATE_TYPE_UNKNOWN PlateType = "PLATE_TYPE_UNKNOWN" 158 PLATETYPE_PLATE_TYPE_TEMPORARY PlateType = "PLATE_TYPE_TEMPORARY" 159 PLATETYPE_PLATE_TYPE_MONTHLY PlateType = "PLATE_TYPE_MONTHLY" 160 PLATETYPE_PLATE_TYPE_FREE PlateType = "PLATE_TYPE_FREE" 161 PLATETYPE_PLATE_TYPE_PREPAID PlateType = "PLATE_TYPE_PREPAID" 162 PLATETYPE_PLATE_TYPE_OTHERS PlateType = "PLATE_TYPE_OTHERS" 163) 164 165type VehicleType string 166 167func (e VehicleType) Ptr() *VehicleType { 168 return &e 169} 170 171const ( 172 VEHICLETYPE_VEHICLE_TYPE_UNKNOWN VehicleType = "VEHICLE_TYPE_UNKNOWN" 173 VEHICLETYPE_VEHICLE_TYPE_SMALL VehicleType = "VEHICLE_TYPE_SMALL" 174 VEHICLETYPE_VEHICLE_TYPE_LARGE VehicleType = "VEHICLE_TYPE_LARGE" 175 VEHICLETYPE_VEHICLE_TYPE_EXTRA_LARGE VehicleType = "VEHICLE_TYPE_EXTRA_LARGE" 176 VEHICLETYPE_VEHICLE_TYPE_ALL_TYPE VehicleType = "VEHICLE_TYPE_ALL_TYPE" 177) 178
应答参数
200 OK
code 选填 string(32)
【响应码】 仅接口调用失败时返回;调用成功时不返回此字段。失败时返回错误码字符串,具体见接口错误码列表。
message 选填 string(256)
【返回信息】 仅接口调用失败时返回;调用成功时不返回此字段。失败时返回错误原因描述。
serial_number 选填 string(64)
【微信停车单号】 接口调用成功时返回,为微信支付侧停车单唯一标识。
应答示例
200 OK
1{ 2 "code" : "PARAM_ERROR", 3 "message" : "参数错误", 4 "serial_number" : "WX202604230001" 5} 6
错误码
以下是本接口返回的错误码列表。详细错误码规则,请参考微信支付接口规则-错误码和错误提示
