分页查询子商户名下的商户管理记录
更新时间:2025.05.21通过该接口可用于分页查询子商户名下的商户管理记录
接口说明
支持商户:【普通服务商】
请求方式:【GET】/v3/mch-manage/mch-manage-records/sub-mchid/{sub_mchid}
请求域名:【主域名】https://api.mch.weixin.qq.com 使用该域名将访问就近的接入点
【备域名】https://api2.mch.weixin.qq.com 使用该域名将访问异地的接入点 ,指引点击查看
请求参数
Header HTTP头参数
Authorization 必填 string
请参考签名认证生成认证信息
Accept 必填 string
请设置为application/json
path 路径参数
sub_mchid 必填 string(32)
【子商户号】 由服务商为子商户进件后获取,具体请参考服务商模式开发必要参数说明。
query 查询参数
limit 必填 integer
【最大资源条数】 该次请求可返回的最大资源条数,不超过10
offset 选填 integer
【请求资源起始位置】 该次请求资源的起始位置
manage_record_type 必填 string
【商户管理记录类型】 要查询的商户管理记录类型
可选取值
FUNCTIONAL_LIMIT_RECORD
: 功能限制记录,表示商户已被处置,需整改或提交资料INVESTIGATE_RECORD
: 功能限制记录,表示商户未被处置,但需提交资料
manage_record_state 选填 string
【商户管理记录状态】 要查询的商户管理记录状态,为空时表示不筛选状态
可选取值
PENDING
: 待处理,需要商户按要求处理SUBMITTED
: 已提交要求的材料EXPIRED
: 超时未处理,已过期UNDER_REVIEW
: 资料已提交,审核中RECOVERED
: 管控已解脱REJECTED
: 审核驳回
请求示例
GET
1curl -X GET \ 2 https://api.mch.weixin.qq.com/v3/mch-manage/mch-manage-records/sub-mchid/123000110?limit=5&offset=10&manage_record_type=FUNCTIONAL_LIMIT_RECORD&manage_record_state=PENDING \ 3 -H "Authorization: WECHATPAY2-SHA256-RSA2048 mchid=\"1900000001\",..." \ 4 -H "Accept: application/json" 5
需配合微信支付工具库 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 ListMchManageRecord { 26 private static String HOST = "https://api.mch.weixin.qq.com"; 27 private static String METHOD = "GET"; 28 private static String PATH = "/v3/mch-manage/mch-manage-records/sub-mchid/{sub_mchid}"; 29 30 public static void main(String[] args) { 31 // TODO: 请准备商户开发必要参数,参考:https://pay.weixin.qq.com/doc/v3/partner/4013080340 32 ListMchManageRecord client = new ListMchManageRecord( 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 , 37 "PUB_KEY_ID_xxxxxxxxxxxxx", // 微信支付公钥ID,如何获取请参考 https://pay.weixin.qq.com/doc/v3/partner/4013038589 38 "/path/to/wxp_pub.pem" // 微信支付公钥文件路径,本地文件路径 39 ); 40 41 ListMchManageRecordRequest request = new ListMchManageRecordRequest(); 42 request.subMchid = "123000110"; 43 request.limit = 5L; 44 request.offset = 10L; 45 request.manageRecordType = EnumTypeMchManageRecordType.FUNCTIONAL_LIMIT_RECORD; 46 request.manageRecordState = EnumTypeMchManageRecordState.PENDING; 47 try { 48 ListMchManageRecordsResponse response = client.run(request); 49 // TODO: 请求成功,继续业务逻辑 50 System.out.println(response); 51 } catch (WXPayUtility.ApiException e) { 52 // TODO: 请求失败,根据状态码执行不同的逻辑 53 e.printStackTrace(); 54 } 55 } 56 57 public ListMchManageRecordsResponse run(ListMchManageRecordRequest request) { 58 String uri = PATH; 59 uri = uri.replace("{sub_mchid}", WXPayUtility.urlEncode(request.subMchid)); 60 Map<String, Object> args = new HashMap<>(); 61 args.put("limit", request.limit); 62 args.put("offset", request.offset); 63 args.put("manage_record_type", request.manageRecordType); 64 args.put("manage_record_state", request.manageRecordState); 65 uri = uri + "?" + WXPayUtility.urlEncode(args); 66 67 Request.Builder reqBuilder = new Request.Builder().url(HOST + uri); 68 reqBuilder.addHeader("Accept", "application/json"); 69 reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId); 70 reqBuilder.addHeader("Authorization", WXPayUtility.buildAuthorization(mchid, certificateSerialNo, privateKey, METHOD, uri, null)); 71 reqBuilder.method(METHOD, null); 72 Request httpRequest = reqBuilder.build(); 73 74 // 发送HTTP请求 75 OkHttpClient client = new OkHttpClient.Builder().build(); 76 try (Response httpResponse = client.newCall(httpRequest).execute()) { 77 String respBody = WXPayUtility.extractBody(httpResponse); 78 if (httpResponse.code() >= 200 && httpResponse.code() < 300) { 79 // 2XX 成功,验证应答签名 80 WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey, 81 httpResponse.headers(), respBody); 82 83 // 从HTTP应答报文构建返回数据 84 return WXPayUtility.fromJson(respBody, ListMchManageRecordsResponse.class); 85 } else { 86 throw new WXPayUtility.ApiException(httpResponse.code(), respBody, httpResponse.headers()); 87 } 88 } catch (IOException e) { 89 throw new UncheckedIOException("Sending request to " + uri + " failed.", e); 90 } 91 } 92 93 private final String mchid; 94 private final String certificateSerialNo; 95 private final PrivateKey privateKey; 96 private final String wechatPayPublicKeyId; 97 private final PublicKey wechatPayPublicKey; 98 99 public ListMchManageRecord(String mchid, String certificateSerialNo, String privateKeyFilePath, String wechatPayPublicKeyId, String wechatPayPublicKeyFilePath) { 100 this.mchid = mchid; 101 this.certificateSerialNo = certificateSerialNo; 102 this.privateKey = WXPayUtility.loadPrivateKeyFromPath(privateKeyFilePath); 103 this.wechatPayPublicKeyId = wechatPayPublicKeyId; 104 this.wechatPayPublicKey = WXPayUtility.loadPublicKeyFromPath(wechatPayPublicKeyFilePath); 105 } 106 107 public static class ListMchManageRecordRequest { 108 @SerializedName("sub_mchid") 109 @Expose(serialize = false) 110 public String subMchid; 111 112 @SerializedName("limit") 113 @Expose(serialize = false) 114 public Long limit; 115 116 @SerializedName("offset") 117 @Expose(serialize = false) 118 public Long offset; 119 120 @SerializedName("manage_record_type") 121 @Expose(serialize = false) 122 public EnumTypeMchManageRecordType manageRecordType; 123 124 @SerializedName("manage_record_state") 125 @Expose(serialize = false) 126 public EnumTypeMchManageRecordState manageRecordState; 127 } 128 129 public static class ListMchManageRecordsResponse { 130 @SerializedName("data") 131 public List<MchManageRecordsEntity> data; 132 133 @SerializedName("offset") 134 public Long offset; 135 136 @SerializedName("limit") 137 public Long limit; 138 139 @SerializedName("total_count") 140 public Long totalCount; 141 } 142 143 public enum EnumTypeMchManageRecordType { 144 @SerializedName("FUNCTIONAL_LIMIT_RECORD") 145 FUNCTIONAL_LIMIT_RECORD, 146 @SerializedName("INVESTIGATE_RECORD") 147 INVESTIGATE_RECORD 148 } 149 150 public enum EnumTypeMchManageRecordState { 151 @SerializedName("PENDING") 152 PENDING, 153 @SerializedName("SUBMITTED") 154 SUBMITTED, 155 @SerializedName("EXPIRED") 156 EXPIRED, 157 @SerializedName("UNDER_REVIEW") 158 UNDER_REVIEW, 159 @SerializedName("RECOVERED") 160 RECOVERED, 161 @SerializedName("REJECTED") 162 REJECTED 163 } 164 165 public static class MchManageRecordsEntity { 166 @SerializedName("sub_mchid") 167 public String subMchid; 168 169 @SerializedName("manage_record_id") 170 public String manageRecordId; 171 172 @SerializedName("manage_record_type") 173 public EnumTypeMchManageRecordType manageRecordType; 174 175 @SerializedName("manage_time") 176 public String manageTime; 177 178 @SerializedName("manage_reason") 179 public String manageReason; 180 181 @SerializedName("limit_ability") 182 public String limitAbility; 183 184 @SerializedName("recover_way") 185 public EnumTypeManageRecoverWay recoverWay; 186 187 @SerializedName("allow_submit") 188 public Boolean allowSubmit; 189 190 @SerializedName("forbid_submit_reason") 191 public String forbidSubmitReason; 192 193 @SerializedName("submit_start_time") 194 public String submitStartTime; 195 196 @SerializedName("submit_end_time") 197 public String submitEndTime; 198 199 @SerializedName("requested_item_info") 200 public String requestedItemInfo; 201 202 @SerializedName("manage_record_state") 203 public EnumTypeMchManageRecordState manageRecordState; 204 205 @SerializedName("recover_time") 206 public String recoverTime; 207 208 @SerializedName("recover_reason") 209 public EnumTypeRecoverReason recoverReason; 210 211 @SerializedName("reject_reason") 212 public String rejectReason; 213 214 @SerializedName("approve_time") 215 public String approveTime; 216 } 217 218 public enum EnumTypeManageRecoverWay { 219 @SerializedName("SUBMIT_INFORMATION") 220 SUBMIT_INFORMATION, 221 @SerializedName("VERIFY_INACTIVE_MERCHANT_IDENTITY") 222 VERIFY_INACTIVE_MERCHANT_IDENTITY, 223 @SerializedName("MODIFY_ORGANIZATION_INFORMATION") 224 MODIFY_ORGANIZATION_INFORMATION, 225 @SerializedName("OTHER") 226 OTHER 227 } 228 229 public enum EnumTypeRecoverReason { 230 @SerializedName("MERCHANT_SUBMIT_RECOVER") 231 MERCHANT_SUBMIT_RECOVER, 232 @SerializedName("MERCHANT_OPERATE_RECOVER") 233 MERCHANT_OPERATE_RECOVER, 234 @SerializedName("PLATFORM_AUTO_RECOVER") 235 PLATFORM_AUTO_RECOVER 236 } 237 238} 239
需配合微信支付工具库 wxpay_utility 使用,请参考 Go
1package main 2 3import ( 4 "demo/wxpay_utility" // 引用微信支付工具库,参考 https://pay.weixin.qq.com/doc/v3/partner/4015119446 5 "encoding/json" 6 "fmt" 7 "net/http" 8 "net/url" 9 "strings" 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 := &ListMchManageRecordRequest{ 27 SubMchid: wxpay_utility.String("123000110"), 28 Limit: wxpay_utility.Int64(5), 29 Offset: wxpay_utility.Int64(10), 30 ManageRecordType: ENUMTYPEMCHMANAGERECORDTYPE_FUNCTIONAL_LIMIT_RECORD.Ptr(), 31 ManageRecordState: ENUMTYPEMCHMANAGERECORDSTATE_PENDING.Ptr(), 32 } 33 34 response, err := ListMchManageRecord(config, request) 35 if err != nil { 36 fmt.Printf("请求失败: %+v\n", err) 37 // TODO: 请求失败,根据状态码执行不同的处理 38 return 39 } 40 41 // TODO: 请求成功,继续业务逻辑 42 fmt.Printf("请求成功: %+v\n", response) 43} 44 45func ListMchManageRecord(config *wxpay_utility.MchConfig, request *ListMchManageRecordRequest) (response *ListMchManageRecordsResponse, err error) { 46 const ( 47 host = "https://api.mch.weixin.qq.com" 48 method = "GET" 49 path = "/v3/mch-manage/mch-manage-records/sub-mchid/{sub_mchid}" 50 ) 51 52 reqUrl, err := url.Parse(fmt.Sprintf("%s%s", host, path)) 53 if err != nil { 54 return nil, err 55 } 56 reqUrl.Path = strings.Replace(reqUrl.Path, "{sub_mchid}", url.PathEscape(*request.SubMchid), -1) 57 query := reqUrl.Query() 58 query.Add("limit", fmt.Sprintf("%v", *request.Limit)) 59 query.Add("offset", fmt.Sprintf("%v", *request.Offset)) 60 query.Add("manage_record_type", fmt.Sprintf("%v", *request.ManageRecordType)) 61 query.Add("manage_record_state", fmt.Sprintf("%v", *request.ManageRecordState)) 62 reqUrl.RawQuery = query.Encode() 63 httpRequest, err := http.NewRequest(method, reqUrl.String(), nil) 64 if err != nil { 65 return nil, err 66 } 67 httpRequest.Header.Set("Accept", "application/json") 68 httpRequest.Header.Set("Wechatpay-Serial", config.WechatPayPublicKeyId()) 69 authorization, err := wxpay_utility.BuildAuthorization(config.MchId(), config.CertificateSerialNo(), config.PrivateKey(), method, reqUrl.RequestURI(), nil) 70 if err != nil { 71 return nil, err 72 } 73 httpRequest.Header.Set("Authorization", authorization) 74 75 client := &http.Client{} 76 httpResponse, err := client.Do(httpRequest) 77 if err != nil { 78 return nil, err 79 } 80 respBody, err := wxpay_utility.ExtractResponseBody(httpResponse) 81 if err != nil { 82 return nil, err 83 } 84 if httpResponse.StatusCode >= 200 && httpResponse.StatusCode < 300 { 85 // 2XX 成功,验证应答签名 86 err = wxpay_utility.ValidateResponse( 87 config.WechatPayPublicKeyId(), 88 config.WechatPayPublicKey(), 89 &httpResponse.Header, 90 respBody, 91 ) 92 if err != nil { 93 return nil, err 94 } 95 response := &ListMchManageRecordsResponse{} 96 if err := json.Unmarshal(respBody, response); err != nil { 97 return nil, err 98 } 99 100 return response, nil 101 } else { 102 return nil, wxpay_utility.NewApiException( 103 httpResponse.StatusCode, 104 httpResponse.Header, 105 respBody, 106 ) 107 } 108} 109 110type ListMchManageRecordRequest struct { 111 SubMchid *string `json:"sub_mchid,omitempty"` 112 Limit *int64 `json:"limit,omitempty"` 113 Offset *int64 `json:"offset,omitempty"` 114 ManageRecordType *EnumTypeMchManageRecordType `json:"manage_record_type,omitempty"` 115 ManageRecordState *EnumTypeMchManageRecordState `json:"manage_record_state,omitempty"` 116} 117 118func (o *ListMchManageRecordRequest) MarshalJSON() ([]byte, error) { 119 type Alias ListMchManageRecordRequest 120 a := &struct { 121 SubMchid *string `json:"sub_mchid,omitempty"` 122 Limit *int64 `json:"limit,omitempty"` 123 Offset *int64 `json:"offset,omitempty"` 124 ManageRecordType *EnumTypeMchManageRecordType `json:"manage_record_type,omitempty"` 125 ManageRecordState *EnumTypeMchManageRecordState `json:"manage_record_state,omitempty"` 126 *Alias 127 }{ 128 // 序列化时移除非 Body 字段 129 SubMchid: nil, 130 Limit: nil, 131 Offset: nil, 132 ManageRecordType: nil, 133 ManageRecordState: nil, 134 Alias: (*Alias)(o), 135 } 136 return json.Marshal(a) 137} 138 139type ListMchManageRecordsResponse struct { 140 Data []MchManageRecordsEntity `json:"data,omitempty"` 141 Offset *int64 `json:"offset,omitempty"` 142 Limit *int64 `json:"limit,omitempty"` 143 TotalCount *int64 `json:"total_count,omitempty"` 144} 145 146type EnumTypeMchManageRecordType string 147 148func (e EnumTypeMchManageRecordType) Ptr() *EnumTypeMchManageRecordType { 149 return &e 150} 151 152const ( 153 ENUMTYPEMCHMANAGERECORDTYPE_FUNCTIONAL_LIMIT_RECORD EnumTypeMchManageRecordType = "FUNCTIONAL_LIMIT_RECORD" 154 ENUMTYPEMCHMANAGERECORDTYPE_INVESTIGATE_RECORD EnumTypeMchManageRecordType = "INVESTIGATE_RECORD" 155) 156 157type EnumTypeMchManageRecordState string 158 159func (e EnumTypeMchManageRecordState) Ptr() *EnumTypeMchManageRecordState { 160 return &e 161} 162 163const ( 164 ENUMTYPEMCHMANAGERECORDSTATE_PENDING EnumTypeMchManageRecordState = "PENDING" 165 ENUMTYPEMCHMANAGERECORDSTATE_SUBMITTED EnumTypeMchManageRecordState = "SUBMITTED" 166 ENUMTYPEMCHMANAGERECORDSTATE_EXPIRED EnumTypeMchManageRecordState = "EXPIRED" 167 ENUMTYPEMCHMANAGERECORDSTATE_UNDER_REVIEW EnumTypeMchManageRecordState = "UNDER_REVIEW" 168 ENUMTYPEMCHMANAGERECORDSTATE_RECOVERED EnumTypeMchManageRecordState = "RECOVERED" 169 ENUMTYPEMCHMANAGERECORDSTATE_REJECTED EnumTypeMchManageRecordState = "REJECTED" 170) 171 172type MchManageRecordsEntity struct { 173 SubMchid *string `json:"sub_mchid,omitempty"` 174 ManageRecordId *string `json:"manage_record_id,omitempty"` 175 ManageRecordType *EnumTypeMchManageRecordType `json:"manage_record_type,omitempty"` 176 ManageTime *string `json:"manage_time,omitempty"` 177 ManageReason *string `json:"manage_reason,omitempty"` 178 LimitAbility *string `json:"limit_ability,omitempty"` 179 RecoverWay *EnumTypeManageRecoverWay `json:"recover_way,omitempty"` 180 AllowSubmit *bool `json:"allow_submit,omitempty"` 181 ForbidSubmitReason *string `json:"forbid_submit_reason,omitempty"` 182 SubmitStartTime *string `json:"submit_start_time,omitempty"` 183 SubmitEndTime *string `json:"submit_end_time,omitempty"` 184 RequestedItemInfo *string `json:"requested_item_info,omitempty"` 185 ManageRecordState *EnumTypeMchManageRecordState `json:"manage_record_state,omitempty"` 186 RecoverTime *string `json:"recover_time,omitempty"` 187 RecoverReason *EnumTypeRecoverReason `json:"recover_reason,omitempty"` 188 RejectReason *string `json:"reject_reason,omitempty"` 189 ApproveTime *string `json:"approve_time,omitempty"` 190} 191 192type EnumTypeManageRecoverWay string 193 194func (e EnumTypeManageRecoverWay) Ptr() *EnumTypeManageRecoverWay { 195 return &e 196} 197 198const ( 199 ENUMTYPEMANAGERECOVERWAY_SUBMIT_INFORMATION EnumTypeManageRecoverWay = "SUBMIT_INFORMATION" 200 ENUMTYPEMANAGERECOVERWAY_VERIFY_INACTIVE_MERCHANT_IDENTITY EnumTypeManageRecoverWay = "VERIFY_INACTIVE_MERCHANT_IDENTITY" 201 ENUMTYPEMANAGERECOVERWAY_MODIFY_ORGANIZATION_INFORMATION EnumTypeManageRecoverWay = "MODIFY_ORGANIZATION_INFORMATION" 202 ENUMTYPEMANAGERECOVERWAY_OTHER EnumTypeManageRecoverWay = "OTHER" 203) 204 205type EnumTypeRecoverReason string 206 207func (e EnumTypeRecoverReason) Ptr() *EnumTypeRecoverReason { 208 return &e 209} 210 211const ( 212 ENUMTYPERECOVERREASON_MERCHANT_SUBMIT_RECOVER EnumTypeRecoverReason = "MERCHANT_SUBMIT_RECOVER" 213 ENUMTYPERECOVERREASON_MERCHANT_OPERATE_RECOVER EnumTypeRecoverReason = "MERCHANT_OPERATE_RECOVER" 214 ENUMTYPERECOVERREASON_PLATFORM_AUTO_RECOVER EnumTypeRecoverReason = "PLATFORM_AUTO_RECOVER" 215) 216
应答参数
200 OK
data 选填 array[object]
【商户管理记录详情】 查询成功时返回,商户管理记录的详情,详见内部字段
属性 | |
sub_mchid 选填 string(32) 【子商户号】 查询成功时会返回,子商户的商户号 manage_record_id 选填 string(64) 【商户管理记录ID】 查询成功时会返回,商户管理记录的主键,唯一定义此资源的标识 manage_record_type 选填 string 【商户管理记录类型】 查询成功时会返回,商户管理记录的类型 可选取值
manage_time 选填 string(64) 【管控时间】 查询成功时会返回,遵循rfc3339标准格式:yyyy-MM-DDThh:mm:ss+TIMEZONE manage_reason 选填 string(1024) 【管控原因】 查询成功时会返回,描述商户被发起管控或者要求提交资料的原因 limit_ability 选填 string(1024) 【限制功能】 查询成功时会返回,描述商户被限制了哪些功能 recover_way 选填 string 【解除管控方式】 查询成功时会返回,解除管控的方式 可选取值
allow_submit 选填 boolean 【是否允许提交资料】 查询成功时会返回,本条商户管理记录是否允许子商户提交资料 forbid_submit_reason 选填 string(1024) 【禁止提交资料原因】 查询成功时会返回,不允许商户提交资料的原因 submit_start_time 选填 string(64) 【可提交资料开始时间】 查询成功时会返回,当不限制提交开始时间时,返回“不限制”,否则返回遵循rfc3339标准格式:yyyy-MM-DDThh:mm:ss+TIMEZONE submit_end_time 选填 string(64) 【可提交资料结束时间】 查询成功时会返回,当不限制提交结束时间时,返回“不限制”,否则返回遵循rfc3339标准格式:yyyy-MM-DDThh:mm:ss+TIMEZONE requested_item_info 选填 string(4000000) 【要求提交的资料】 查询成功时会返回,要求商户提交的资料及其规则,JSON序列化后的字符串,详见资料格式说明文档。 manage_record_state 选填 string 【商户管理记录状态】 查询成功时会返回,商户管理记录的状态 可选取值
recover_time 选填 string(64) 【解除管控时间】 已解除管控的记录会返回,遵循rfc3339标准格式:yyyy-MM-DDThh:mm:ss+TIMEZONE recover_reason 选填 string 【解除管控原因】 查询成功时会返回,商户管理记录解除管控的原因 可选取值
reject_reason 选填 string(1024) 【申诉驳回原因】 查询成功时会返回,申诉审核驳回的原因 approve_time 选填 string(64) 【审核时间】 已完成申诉审核审核的记录会返回,遵循rfc3339标准格式:yyyy-MM-DDThh:mm:ss+TIMEZONE |
offset 选填 integer
【请求资源起始位置】 该次请求资源的起始位置,查询结果不为空时返回
limit 选填 integer
【最大资源条数】 该次请求可返回的最大资源条数,查询结果不为空时返回
total_count 选填 integer
【资源总条数】 可选返回,资源总条数,当offset=0或者当前查询结果为空时返回总条数
应答示例
200 OK
1{ 2 "data" : [ 3 { 4 "sub_mchid" : "123000110", 5 "manage_record_id" : "M1210999900435123451697535102441", 6 "manage_record_type" : "FUNCTIONAL_LIMIT_RECORD", 7 "manage_time" : "2018-06-08T10:34:56+08:00", 8 "manage_reason" : "涉嫌信用卡套现", 9 "limit_ability" : "关闭支付权限,关闭体现权限", 10 "recover_way" : "SUBMIT_INFORMATION", 11 "allow_submit" : true, 12 "forbid_submit_reason" : "应平台管理要求,此单据不支持申诉", 13 "submit_start_time" : "2018-06-08T10:34:56+08:00", 14 "submit_end_time" : "2018-06-08T10:34:56+08:00", 15 "requested_item_info" : "{ \t\"record_fields\": [{ \t\t\t\"item_id\": \"100004\", \t\t\t\"field_name\": \"legal_person_card_id\", \t\t\t\"name\": \"企业法人身份证号\", \t\t\t\"type\": 1, \t\t\t\"tips\": \"\", \t\t\t\"placeholder\": \"请输入企业法人身份证号\", \t\t\t\"tooltip\": \"需要填写完整身份证号\", \t\t\t\"required\": 1, \t\t\t\"string_check_rule\": { \t\t\t\t\"min_string_length\": 1, \t\t\t\t\"max_string_length\": 50, \t\t\t\t\"validator\": \"idcard\" \t\t\t}, \t\t\t\"need_encrypt\": true \t\t}, \t\t{ \t\t\t\"item_id\": \"100005\", \t\t\t\"field_name\": \"legal_person_cert_type\", \t\t\t\"name\": \"企业法人证件类型\", \t\t\t\"type\": 4, \t\t\t\"tips\": \"\", \t\t\t\"placeholder\": \"请选择证件类型\", \t\t\t\"tooltip\": \"\", \t\t\t\"required\": 0, \t\t\t\"enum_check_rule\": { \t\t\t\t\"min_list_length\": 1, \t\t\t\t\"max_list_length\": 1, \t\t\t\t\"enum_values\": [\"大陆居民身份证\", \"港澳台通行证\"] \t\t\t}, \t\t\t\"need_encrypt\": false \t\t}, \t\t{ \t\t\t\"item_id\": \"100006\", \t\t\t\"field_name\": \"inland_cert_card_image\", \t\t\t\"name\": \"大陆居民身份证照片\", \t\t\t\"type\": 2, \t\t\t\"tips\": \"请上传图片\", \t\t\t\"placeholder\": \"\", \t\t\t\"tooltip\": \"需要正面和反面两张照片\", \t\t\t\"required\": 1, \t\t\t\"need_encrypt\": false, \t\t\t\"file_check_rule\": { \t\t\t\t\"min_list_length\": 2, \t\t\t\t\"max_list_length\": 2, \t\t\t\t\"enum_file_exts\": [\"png\", \"jpg\", \"jpeg\"], \t\t\t\t\"max_file_size\": 5 \t\t\t}, \t\t\t\"relations\": [{ \t\t\t\t\"source_key\": 100005, \t\t\t\t\"source_value\": \"大陆居民身份证\" \t\t\t}] \t\t} \t] }", 16 "manage_record_state" : "PENDING", 17 "recover_time" : "2018-06-08T10:34:56+08:00", 18 "recover_reason" : "MERCHANT_SUBMIT_RECOVER", 19 "reject_reason" : "身份证信息遮挡,请上传清晰的身份证图片", 20 "approve_time" : "2018-06-08T10:34:56+08:00" 21 } 22 ], 23 "offset" : 10, 24 "limit" : 5, 25 "total_count" : 1234 26} 27
错误码
公共错误码
状态码 | 错误码 | 描述 | 解决方案 |
---|---|---|---|
400 | PARAM_ERROR | 参数错误 | 请根据错误提示正确传入参数 |
400 | INVALID_REQUEST | HTTP 请求不符合微信支付 APIv3 接口规则 | 请参阅 接口规则 |
401 | SIGN_ERROR | 验证不通过 | 请参阅 签名常见问题 |
500 | SYSTEM_ERROR | 系统异常,请稍后重试 | 请稍后重试 |
业务错误码
状态码 | 错误码 | 描述 | 解决方案 |
---|---|---|---|
400 | INVALID_REQUEST | 此接口仅对部分合作伙伴开放,当前商户号未开放 | 等待微信支付向当前商户号开放此能力 |