提交申请单

更新时间:2025.07.17

服务商使用该接口提交商家超级管理员变更申请,帮助商家修改超级管理员资料。

接口说明

支持商户:【平台商户】

请求方式:【POST】/v3/mchalterapply/mchcontactalterapplyment

请求域名:【主域名】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


 Wechatpay-Serial  必填 string

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


body  包体参数

 merchant_code  必填   string(32)

【商户号】 1、请填写本服务商负责进件的二级商户号。
2、微信支付分配的特约商户的唯一标识。


 out_request_no  必填   string(124)

【业务申请编号】 1、服务商自定义的唯一编号。
2、每个编号对应一个申请单。
3、若申请单被驳回,可填写相同的“业务申请编号”,即可覆盖修改原申请单信息 。
4、一个商户,同一时间只能存在一笔流程中的申请单,若申请单被驳回,请使用原单进行重试。


 contact_info  必填   object

【超级管理员信息】 请填写店铺最新的超级管理员信息。

属性

请求示例

Java
Go
curl

需配合微信支付工具库 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 CreateContactApplyment {
26  private static String HOST = "https://api.mch.weixin.qq.com";
27  private static String METHOD = "POST";
28  private static String PATH = "/v3/mchalterapply/mchcontactalterapplyment";
29
30  public static void main(String[] args) {
31    // TODO: 请准备商户开发必要参数,参考:https://pay.weixin.qq.com/doc/v3/partner/4013080340
32    CreateContactApplyment client = new CreateContactApplyment(
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    CreateMchContactApplymentRequest request = new CreateMchContactApplymentRequest();
41    request.merchantCode = "2492185251";
42    request.outRequestNo = "1900013511_10000";
43    request.contactInfo = new ContactInfo();
44    request.contactInfo.contactName = client.encrypt("contact_name");
45    request.contactInfo.contactIdDocType = IDDocType.IDENTIFICATION_TYPE_IDCARD;
46    request.contactInfo.contactIdCardNumber = client.encrypt("contact_id_card_number");
47    request.contactInfo.contactIdDocCopy = "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ";
48    request.contactInfo.contactIdDocCopyBack = "jTpGmxUX3FBWVQ5NJTZvvDujqhThn4ReFxikqJ5YW6zFQ";
49    request.contactInfo.contactIdDocPeriodBegin = "2019-06-06";
50    request.contactInfo.contactIdDocPeriodEnd = "2026-06-06";
51    request.contactInfo.mobilePhone = client.encrypt("mobile_phone");
52    try {
53      CreateMchContactApplymentResponse response = client.run(request);
54
55      // TODO: 请求成功,继续业务逻辑
56      System.out.println(response);
57    } catch (WXPayUtility.ApiException e) {
58      // TODO: 请求失败,根据状态码执行不同的逻辑
59      e.printStackTrace();
60    }
61  }
62
63  public CreateMchContactApplymentResponse run(CreateMchContactApplymentRequest request) {
64    String uri = PATH;
65    String reqBody = WXPayUtility.toJson(request);
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, reqBody));
71    reqBuilder.addHeader("Content-Type", "application/json");
72    RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), reqBody);
73    reqBuilder.method(METHOD, requestBody);
74    Request httpRequest = reqBuilder.build();
75
76    // 发送HTTP请求
77    OkHttpClient client = new OkHttpClient.Builder().build();
78    try (Response httpResponse = client.newCall(httpRequest).execute()) {
79      String respBody = WXPayUtility.extractBody(httpResponse);
80      if (httpResponse.code() >= 200 && httpResponse.code() < 300) {
81        // 2XX 成功,验证应答签名
82        WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
83            httpResponse.headers(), respBody);
84
85        // 从HTTP应答报文构建返回数据
86        return WXPayUtility.fromJson(respBody, CreateMchContactApplymentResponse.class);
87      } else {
88        throw new WXPayUtility.ApiException(httpResponse.code(), respBody, httpResponse.headers());
89      }
90    } catch (IOException e) {
91      throw new UncheckedIOException("Sending request to " + uri + " failed.", e);
92    }
93  }
94
95  private final String mchid;
96  private final String certificateSerialNo;
97  private final PrivateKey privateKey;
98  private final String wechatPayPublicKeyId;
99  private final PublicKey wechatPayPublicKey;
100
101  public CreateContactApplyment(String mchid, String certificateSerialNo, String privateKeyFilePath, String wechatPayPublicKeyId, String wechatPayPublicKeyFilePath) {
102    this.mchid = mchid;
103    this.certificateSerialNo = certificateSerialNo;
104    this.privateKey = WXPayUtility.loadPrivateKeyFromPath(privateKeyFilePath);
105    this.wechatPayPublicKeyId = wechatPayPublicKeyId;
106    this.wechatPayPublicKey = WXPayUtility.loadPublicKeyFromPath(wechatPayPublicKeyFilePath);
107  }
108
109  public String encrypt(String plainText) {
110    return WXPayUtility.encrypt(this.wechatPayPublicKey, plainText);
111  }
112
113  public enum IDDocType {
114    @SerializedName("IDENTIFICATION_TYPE_IDCARD")
115    IDENTIFICATION_TYPE_IDCARD,
116    @SerializedName("IDENTIFICATION_TYPE_OVERSEA_PASSPORT")
117    IDENTIFICATION_TYPE_OVERSEA_PASSPORT,
118    @SerializedName("IDENTIFICATION_TYPE_HONGKONG_PASSPORT")
119    IDENTIFICATION_TYPE_HONGKONG_PASSPORT,
120    @SerializedName("IDENTIFICATION_TYPE_MACAO_PASSPORT")
121    IDENTIFICATION_TYPE_MACAO_PASSPORT,
122    @SerializedName("IDENTIFICATION_TYPE_TAIWAN_PASSPORT")
123    IDENTIFICATION_TYPE_TAIWAN_PASSPORT,
124    @SerializedName("IDENTIFICATION_TYPE_FOREIGN_RESIDENT")
125    IDENTIFICATION_TYPE_FOREIGN_RESIDENT,
126    @SerializedName("IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT")
127    IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT,
128    @SerializedName("IDENTIFICATION_TYPE_TAIWAN_RESIDENT")
129    IDENTIFICATION_TYPE_TAIWAN_RESIDENT
130  }
131  
132  public static class ContactInfo {
133    @SerializedName("contact_name")
134    public String contactName;
135  
136    @SerializedName("contact_id_doc_type")
137    public IDDocType contactIdDocType;
138  
139    @SerializedName("contact_id_card_number")
140    public String contactIdCardNumber;
141  
142    @SerializedName("contact_id_doc_copy")
143    public String contactIdDocCopy;
144  
145    @SerializedName("contact_id_doc_copy_back")
146    public String contactIdDocCopyBack;
147  
148    @SerializedName("contact_id_doc_period_begin")
149    public String contactIdDocPeriodBegin;
150  
151    @SerializedName("contact_id_doc_period_end")
152    public String contactIdDocPeriodEnd;
153  
154    @SerializedName("mobile_phone")
155    public String mobilePhone;
156  }
157  
158  public static class CreateMchContactApplymentRequest {
159    @SerializedName("merchant_code")
160    public String merchantCode;
161  
162    @SerializedName("out_request_no")
163    public String outRequestNo;
164  
165    @SerializedName("contact_info")
166    public ContactInfo contactInfo;
167  }
168  
169  public static class CreateMchContactApplymentResponse {
170    @SerializedName("apply_id")
171    public String applyId;
172  }
173  
174}
175

应答参数

200 OK

 apply_id  选填   string(64)

【申请单号】 微信支付分配的申请单号

应答示例

200 OK

1{
2  "apply_id" : "20220617143306000013906025001"
3}
4

 

错误码

公共错误码

状态码

错误码

描述

解决方案

400

PARAM_ERROR

参数错误

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

400

INVALID_REQUEST

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

请参阅 接口规则

401

SIGN_ERROR

验证不通过

请参阅 签名常见问题

500

SYSTEM_ERROR

系统异常,请稍后重试

请稍后重试

 

 

更多技术问题
技术咨询
反馈
咨询
目录
置顶