根据OPENID导入用户会员卡

更新时间:2025.06.22

对于经营会员生意的商家来说,存量会员的注册渠道广泛,包括但不限于线下渠道、微信渠道、App及其他线上渠道。因而,在微信生态下经营会员时常遇到两类问题:
(1)存量会员的身份难统一识别;
(2)在应用「开卡有礼」活动能力时,容易对存量(但未同步身份至微信侧的)老会员重复补贴。

因而,针对大部分存量会员在微信内的商家,商家可通过用户在微信公众号/小程序内的OpenID,将存量会员通过接口导入至微信侧后台。

注意:1、“导入”仅为后台操作,微信会员卡系统会在后台将用户的会员卡静默激活,但不会在用户卡包中自动出现该会员卡,建议商家侧后续在其他路径引导用户主动添加会员卡到卡包;2、用户OpenID对应的AppID,需要和会员卡所属的品牌号绑定。

接口说明

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

请求方式:【POST】/v3/brand/partner/card-member/user-cards/import-by-openid

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

 brand_id  必填   string(32)

【品牌ID】 商家进驻微信支付品牌商家后获得的品牌ID(灰度期间联系微信支付运营获取),用于标记该会员卡的归属方


 card_id  必填   string(32)

【会员卡模版ID】 商家创建微信会员卡模板成功后系统返回的会员卡模板ID


 openid  必填   string(128)

【用户标识】 用户在品牌商家会员卡模板AppID下的唯一标识


 user_card_code  必填   string(32)

【会员卡code】 会员在一个会员卡模版下的唯一标识,用户领取会员卡后获得的code


 phone_number  选填   string(512)

【加密的手机号】 注册会员的手机号码。该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号平台证书加密敏感信息指引


 card_color  选填   string(7)

【卡背景颜色】 用于卡片正面设计的RGB颜色编码,仅支持十六进制


 card_picture_url  选填   string(256)

【卡图片】 商家自定义会员卡背景图。仅支持通过图片上传API接口获取的图片URL地址。支持JPG/JPEG/PNG格式,建议尺寸716px*320px,且图片小于1M。查看以下链接后传入:图片要求示例图片上传API指引


 level  选填   string(10)

【等级】 用户会员等级,展示字段,商家可以自定义填写内容。


 user_information  选填   object

【用户开卡时填写的个人信息】 用户开卡时填写的个人信息

属性

 valid_date_information  选填   object

【会员卡有效期】 会员卡有效期。传入的有效期类型,必须和会员卡模版保持一致。

属性

 pickup_time  选填   string(32)

【领取时间】 用户领取会员卡的时间。仅在会员卡有效期类型是FIX_TERM时需要填写,领取时间必须早于当前时间,且不允许导入已过期的会员卡。需遵循 RFC3339 标准格式:yyyy-MM-DDTHH:mm:ss+TIMEZONE。yyyy-MM-DD 表示年月日;T 字符用于分隔日期和时间部分;HH:mm:ss 表示具体的时分秒;TIMEZONE 表示时区(例如,+08:00 对应东八区时间,即北京时间)。示例:2015-05-20T13:29:35+08:00 表示北京时间2015年5月20日13点29分35秒。

请求示例

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 * 根据OpenID导入用户会员卡
24 */
25public class ImportUserCardByOpenId {
26  private static String HOST = "https://api.mch.weixin.qq.com";
27  private static String METHOD = "POST";
28  private static String PATH = "/v3/brand/partner/card-member/user-cards/import-by-openid";
29
30  public static void main(String[] args) {
31    // TODO: 请准备商户开发必要参数,参考:https://pay.weixin.qq.com/doc/v3/partner/4013080340
32    ImportUserCardByOpenId client = new ImportUserCardByOpenId(
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    ImportUserCardByOpenIdRequest request = new ImportUserCardByOpenIdRequest();
41    request.brandId = "1004";
42    request.cardId = "pbLatjvWOibDc5-TBnbUk1pD12o0";
43    request.openid = "obLatjnx9gnqzS4myYGmLZ7LgLBA";
44    request.userCardCode = "478515832665";
45    request.phoneNumber = client.encrypt("phone_number");
46    request.cardColor = "#FFFF00";
47    request.cardPictureUrl = "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0";
48    request.level = "钻石会员";
49    request.userInformation = new UserInfo();
50    request.userInformation.commonFieldList = new ArrayList<>();
51    {
52      UserInfoCommonField commonFieldListItem = new UserInfoCommonField();
53      commonFieldListItem.name = CommonFieldFlag.USER_FORM_FLAG_BIRTHDAY;
54      commonFieldListItem.value = client.encrypt("value");
55      request.userInformation.commonFieldList.add(commonFieldListItem);
56    };
57    request.userInformation.customFieldList = new ArrayList<>();
58    {
59      UserInfoCustomField customFieldListItem = new UserInfoCustomField();
60      customFieldListItem.name = "喜欢的运动";
61      customFieldListItem.userChosenValues = new ArrayList<>();
62      {
63        customFieldListItem.userChosenValues.add("vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==");
64      };
65      request.userInformation.customFieldList.add(customFieldListItem);
66    };
67    request.validDateInformation = new DateInfo();
68    request.validDateInformation.type = DateType.PERMANENT;
69    request.validDateInformation.availableBeginTime = "2020-05-20T13:29:35.120+08:00";
70    request.validDateInformation.availableEndTime = "2020-05-20T13:29:35.120+08:00";
71    request.validDateInformation.availableDayAfterReceive = 30L;
72    request.pickupTime = "2020-05-20T13:29:35.120+08:00";
73    try {
74      UserCard response = client.run(request);
75
76      // TODO: 请求成功,继续业务逻辑
77      System.out.println(response);
78    } catch (WXPayUtility.ApiException e) {
79      // TODO: 请求失败,根据状态码执行不同的逻辑
80      e.printStackTrace();
81    }
82  }
83
84  public UserCard run(ImportUserCardByOpenIdRequest request) {
85    String uri = PATH;
86    String reqBody = WXPayUtility.toJson(request);
87
88    Request.Builder reqBuilder = new Request.Builder().url(HOST + uri);
89    reqBuilder.addHeader("Accept", "application/json");
90    reqBuilder.addHeader("Wechatpay-Serial", wechatPayPublicKeyId);
91    reqBuilder.addHeader("Authorization", WXPayUtility.buildAuthorization(mchid, certificateSerialNo,privateKey, METHOD, uri, reqBody));
92    reqBuilder.addHeader("Content-Type", "application/json");
93    RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), reqBody);
94    reqBuilder.method(METHOD, requestBody);
95    Request httpRequest = reqBuilder.build();
96
97    // 发送HTTP请求
98    OkHttpClient client = new OkHttpClient.Builder().build();
99    try (Response httpResponse = client.newCall(httpRequest).execute()) {
100      String respBody = WXPayUtility.extractBody(httpResponse);
101      if (httpResponse.code() >= 200 && httpResponse.code() < 300) {
102        // 2XX 成功,验证应答签名
103        WXPayUtility.validateResponse(this.wechatPayPublicKeyId, this.wechatPayPublicKey,
104            httpResponse.headers(), respBody);
105
106        // 从HTTP应答报文构建返回数据
107        return WXPayUtility.fromJson(respBody, UserCard.class);
108      } else {
109        throw new WXPayUtility.ApiException(httpResponse.code(), respBody, httpResponse.headers());
110      }
111    } catch (IOException e) {
112      throw new UncheckedIOException("Sending request to " + uri + " failed.", e);
113    }
114  }
115
116  private final String mchid;
117  private final String certificateSerialNo;
118  private final PrivateKey privateKey;
119  private final String wechatPayPublicKeyId;
120  private final PublicKey wechatPayPublicKey;
121
122  public ImportUserCardByOpenId(String mchid, String certificateSerialNo, String privateKeyFilePath, String wechatPayPublicKeyId, String wechatPayPublicKeyFilePath) {
123    this.mchid = mchid;
124    this.certificateSerialNo = certificateSerialNo;
125    this.privateKey = WXPayUtility.loadPrivateKeyFromPath(privateKeyFilePath);
126    this.wechatPayPublicKeyId = wechatPayPublicKeyId;
127    this.wechatPayPublicKey = WXPayUtility.loadPublicKeyFromPath(wechatPayPublicKeyFilePath);
128  }
129
130  public String encrypt(String plainText) {
131    return WXPayUtility.encrypt(this.wechatPayPublicKey, plainText);
132  }
133
134  public static class ImportUserCardByOpenIdRequest {
135    @SerializedName("brand_id")
136    public String brandId;
137  
138    @SerializedName("card_id")
139    public String cardId;
140  
141    @SerializedName("openid")
142    public String openid;
143  
144    @SerializedName("user_card_code")
145    public String userCardCode;
146  
147    @SerializedName("phone_number")
148    public String phoneNumber;
149  
150    @SerializedName("card_color")
151    public String cardColor;
152  
153    @SerializedName("card_picture_url")
154    public String cardPictureUrl;
155  
156    @SerializedName("level")
157    public String level;
158  
159    @SerializedName("user_information")
160    public UserInfo userInformation;
161  
162    @SerializedName("valid_date_information")
163    public DateInfo validDateInformation;
164  
165    @SerializedName("pickup_time")
166    public String pickupTime;
167  }
168  
169  public static class UserCard {
170    @SerializedName("user_card_code")
171    public String userCardCode;
172  
173    @SerializedName("card_id")
174    public String cardId;
175  
176    @SerializedName("openid")
177    public String openid;
178  
179    @SerializedName("card_color")
180    public String cardColor;
181  
182    @SerializedName("card_picture_url")
183    public String cardPictureUrl;
184  
185    @SerializedName("brand_id")
186    public String brandId;
187  
188    @SerializedName("card_type")
189    public CardType cardType;
190  
191    @SerializedName("phone_number")
192    public String phoneNumber;
193  
194    @SerializedName("level")
195    public String level;
196  
197    @SerializedName("valid_date_information")
198    public DateInfo validDateInformation;
199  
200    @SerializedName("pickup_time")
201    public String pickupTime;
202  
203    @SerializedName("user_information")
204    public UserInfo userInformation;
205  
206    @SerializedName("attach")
207    public String attach;
208  
209    @SerializedName("user_card_state")
210    public UserCardState userCardState;
211  
212    @SerializedName("invalid_reason")
213    public String invalidReason;
214  
215    @SerializedName("invalid_time")
216    public String invalidTime;
217  
218    @SerializedName("create_time")
219    public String createTime;
220  
221    @SerializedName("modify_time")
222    public String modifyTime;
223  }
224  
225  public static class UserInfo {
226    @SerializedName("common_field_list")
227    public List<UserInfoCommonField> commonFieldList;
228  
229    @SerializedName("custom_field_list")
230    public List<UserInfoCustomField> customFieldList;
231  }
232  
233  public static class DateInfo {
234    @SerializedName("type")
235    public DateType type;
236  
237    @SerializedName("available_begin_time")
238    public String availableBeginTime;
239  
240    @SerializedName("available_end_time")
241    public String availableEndTime;
242  
243    @SerializedName("available_day_after_receive")
244    public Long availableDayAfterReceive;
245  }
246  
247  public enum CardType {
248    @SerializedName("PURCHASE")
249    PURCHASE,
250    @SerializedName("NORMAL")
251    NORMAL,
252    @SerializedName("BALANCE")
253    BALANCE
254  }
255  
256  public enum UserCardState {
257    @SerializedName("UNACTIVATED")
258    UNACTIVATED,
259    @SerializedName("EFFECTIVE")
260    EFFECTIVE,
261    @SerializedName("EXPIRED")
262    EXPIRED,
263    @SerializedName("INVALID")
264    INVALID
265  }
266  
267  public static class UserInfoCommonField {
268    @SerializedName("name")
269    public CommonFieldFlag name;
270  
271    @SerializedName("value")
272    public String value;
273  }
274  
275  public static class UserInfoCustomField {
276    @SerializedName("name")
277    public String name;
278  
279    @SerializedName("user_chosen_values")
280    public List<String> userChosenValues;
281  }
282  
283  public enum DateType {
284    @SerializedName("FIX_TIME_RANGE")
285    FIX_TIME_RANGE,
286    @SerializedName("FIX_TERM")
287    FIX_TERM,
288    @SerializedName("PERMANENT")
289    PERMANENT
290  }
291  
292  public enum CommonFieldFlag {
293    @SerializedName("USER_FORM_FLAG_SEX")
294    USER_FORM_FLAG_SEX,
295    @SerializedName("USER_FORM_FLAG_NAME")
296    USER_FORM_FLAG_NAME,
297    @SerializedName("USER_FORM_FLAG_BIRTHDAY")
298    USER_FORM_FLAG_BIRTHDAY,
299    @SerializedName("USER_FORM_FLAG_ADDRESS")
300    USER_FORM_FLAG_ADDRESS,
301    @SerializedName("USER_FORM_FLAG_EMAIL")
302    USER_FORM_FLAG_EMAIL,
303    @SerializedName("USER_FORM_FLAG_CITY")
304    USER_FORM_FLAG_CITY
305  }
306  
307}
308

应答参数

200 OK

 user_card_code  必填   string(32)

【会员卡code】 会员在一个会员卡模版下的唯一标志,用户领取会员卡后获得的code


 card_id  必填   string(32)

【会员卡模板 ID】 商家创建微信会员卡模板成功后系统返回的会员卡模板ID


 openid  必填   string(128)

【用户标识】 用户在品牌商家会员卡模板AppID下的唯一标识


 card_color  选填   string(7)

【卡背景颜色】 用于卡片正面设计的RGB颜色编码,仅支持十六进制


 card_picture_url  选填   string(256)

【卡图片】 商家自定义会员卡背景图。仅支持通过图片上传API接口获取的图片URL地址。支持JPG/JPEG/PNG格式,建议尺寸716px*320px,且图片小于1M。查看以下链接后传入:图片要求示例图片上传API指引


 brand_id  必填   string(32)

【品牌ID】 商家进驻微信支付品牌商家后获得的品牌ID(灰度期间联系微信支付运营获取),用于标记该会员卡的归属方


 card_type  必填   string

【会员卡类型】 支持付费、普通、储值 3 种类型。

可选取值

  • PURCHASE:  付费

  • NORMAL:  普通

  • BALANCE:  储值​


 phone_number  选填   string(512)

【加密的手机号】 注册会员的手机号码,仅在用户授权手机号、商家通过 API 传入的情况下有值。解密请参考如何使用API证书解密敏感字段


 level  选填   string(10)

【等级】 用户会员等级,展示字段,商家可以自定义填写内容。


 valid_date_information  必填   object

【会员卡有效期】 会员卡有效期

属性

 pickup_time  必填   string(32)

【领取时间】 用户领取会员卡的时间,需遵循 RFC3339 标准格式:yyyy-MM-DDTHH:mm:ss+TIMEZONE。yyyy-MM-DD 表示年月日;T 字符用于分隔日期和时间部分;HH:mm:ss 表示具体的时分秒;TIMEZONE 表示时区(例如,+08:00 对应东八区时间,即北京时间)。示例:2015-05-20T13:29:35+08:00 表示北京时间2015年5月20日13点29分35秒。


 user_information  选填   object

【用户开卡时填写的个人信息】 用户开卡时填写的个人信息

属性

 attach  选填   string(256)

【商家数据包】 商家在创建用户会员卡时可传入自定义数据包,该数据对用户不可见,用于存储商家自定义信息,其总长度限制在256字符以内。查询用户会员卡详情时会将此字段返回给商家。


 user_card_state  必填   string

【用户会员卡状态】 用户当前的卡状态

可选取值

  • UNACTIVATED:  用户已领卡,但还未激活

  • EFFECTIVE:  用户的会员卡可正常使用

  • EXPIRED:  用户的会员卡已过期

  • INVALID:  用户的会员卡已失效


 invalid_reason  选填   string(32)

【作废原因】 会员卡作废时传入的原因


 invalid_time  选填   string(32)

【作废时间】 会员卡作废操作的时间,需遵循 RFC3339 标准格式:yyyy-MM-DDTHH:mm:ss+TIMEZONE。yyyy-MM-DD 表示年月日;T 字符用于分隔日期和时间部分;HH:mm:ss 表示具体的时分秒;TIMEZONE 表示时区(例如,+08:00 对应东八区时间,即北京时间)。示例:2015-05-20T13:29:35+08:00 表示北京时间2015年5月20日13点29分35秒。


 create_time  必填   string(32)

【创建时间】 创建会员卡的时间,需遵循 RFC3339 标准格式:yyyy-MM-DDTHH:mm:ss+TIMEZONE。yyyy-MM-DD 表示年月日;T 字符用于分隔日期和时间部分;HH:mm:ss 表示具体的时分秒;TIMEZONE 表示时区(例如,+08:00 对应东八区时间,即北京时间)。示例: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 字符用于分隔日期和时间部分;HH:mm:ss 表示具体的时分秒;TIMEZONE 表示时区(例如,+08:00 对应东八区时间,即北京时间)。示例:2015-05-20T13:29:35+08:00 表示北京时间2015年5月20日13点29分35秒。

应答示例

200 OK

1{
2  "user_card_code" : "478515832665",
3  "card_id" : "pbLatjvWOibDc5-TBnbUk1pD12o0",
4  "openid" : "obLatjnx9gnqzS4myYGmLZ7LgLBA",
5  "card_color" : "#FFFF00",
6  "card_picture_url" : "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0",
7  "brand_id" : "1001622624",
8  "card_type" : "NORMAL",
9  "phone_number" : "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==",
10  "level" : "钻石会员",
11  "valid_date_information" : {
12    "type" : "PERMANENT",
13    "available_begin_time" : "2020-05-20T13:29:35.120+08:00",
14    "available_end_time" : "2020-05-20T13:29:35.120+08:00",
15    "available_day_after_receive" : 30
16  },
17  "pickup_time" : "2020-05-20T13:29:35.120+08:00",
18  "user_information" : {
19    "common_field_list" : [
20      {
21        "name" : "USER_FORM_FLAG_BIRTHDAY",
22        "value" : "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
23      }
24    ],
25    "custom_field_list" : [
26      {
27        "name" : "喜欢的运动",
28        "user_chosen_values" : [
29          "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
30        ]
31      }
32    ]
33  },
34  "attach" : "自定义数据说明",
35  "user_card_state" : "EFFECTIVE",
36  "invalid_reason" : "传入的自定义作废原因",
37  "invalid_time" : "2020-05-20T13:29:35.120+08:00",
38  "create_time" : "2020-05-20T13:29:35.120+08:00",
39  "modify_time" : "2020-05-20T13:29:35.120+08:00"
40}
41

 

错误码

公共错误码

状态码

错误码

描述

解决方案

400

PARAM_ERROR

参数错误

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

400

INVALID_REQUEST

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

请参阅 接口规则

401

SIGN_ERROR

验证不通过

请参阅 签名常见问题

500

SYSTEM_ERROR

系统异常,请稍后重试

请稍后重试

业务错误码

状态码

错误码

描述

解决方案

400

INVALID_REQUEST

会员卡模版ID不属于该品牌

请确认品牌ID和会员卡模版ID是否正确

400

INVALID_REQUEST

该OpenID已被导入过

请更换OpenID重试

400

PARAM_ERROR

OpenID有误

请使用正确的OpenID重新调用

400

INVALID_REQUEST

该手机号或会员卡code已存在

请调用修改用户会员卡信息接口

 

反馈
咨询
目录
置顶