查询用户在品牌下所有会员卡
更新时间:2025.06.22查询用户在当前品牌下领取的会员卡列表
接口说明
支持商户:【普通服务商】
请求方式:【GET】/v3/brand/partner/card-member/user-cards
请求域名:【主域名】https://api.mch.weixin.qq.com 使用该域名将访问就近的接入点
【备域名】https://api2.mch.weixin.qq.com 使用该域名将访问异地的接入点 ,指引点击查看
请求参数
Header HTTP头参数
Authorization 必填 string
请参考签名认证生成认证信息
Accept 必填 string
请设置为application/json
query 查询参数
brand_id 必填 string(32)
【品牌ID】 商家进驻微信支付品牌商家后获得的品牌ID(灰度期间联系微信支付运营获取),用于标记该会员卡的归属方
openid 必填 string(128)
【用户标识】 用户在品牌商家会员卡模板AppID下的唯一标识
user_card_state 选填 string
【用户会员卡状态】 用户当前的卡状态
可选取值
UNACTIVATED
: 用户已领卡,但还未激活EFFECTIVE
: 用户的会员卡可正常使用EXPIRED
: 用户的会员卡已过期INVALID
: 用户的会员卡已失效
offset 必填 integer
【分页开始位置】 该次请求的分页开始位置,从0开始计数,例如offset=10,表示从第11条记录开始返回。
limit 必填 integer
【分页大小】 分页大小
请求示例
需配合微信支付工具库 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 ListUserCard { 26 private static String HOST = "https://api.mch.weixin.qq.com"; 27 private static String METHOD = "GET"; 28 private static String PATH = "/v3/brand/partner/card-member/user-cards"; 29 30 public static void main(String[] args) { 31 // TODO: 请准备商户开发必要参数,参考:https://pay.weixin.qq.com/doc/v3/partner/4013080340 32 ListUserCard client = new ListUserCard( 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 ListUserCardRequest request = new ListUserCardRequest(); 41 request.brandId = "1004"; 42 request.openid = "obLatjnx9gnqzS4myYGmLZ7LgLBA"; 43 request.userCardState = UserCardState.EFFECTIVE; 44 request.offset = 0L; 45 request.limit = 20L; 46 try { 47 ListUserCardResponse response = client.run(request); 48 49 // TODO: 请求成功,继续业务逻辑 50 System.out.println(response); 51 } catch (WXPayUtility.ApiException e) { 52 // TODO: 请求失败,根据状态码执行不同的逻辑 53 e.printStackTrace(); 54 } 55 } 56 57 public ListUserCardResponse run(ListUserCardRequest request) { 58 String uri = PATH; 59 Map<String, Object> args = new HashMap<>(); 60 args.put("brand_id", request.brandId); 61 args.put("openid", request.openid); 62 args.put("user_card_state", request.userCardState); 63 args.put("offset", request.offset); 64 args.put("limit", request.limit); 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, ListUserCardResponse.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 ListUserCard(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 ListUserCardRequest { 108 @SerializedName("brand_id") 109 @Expose(serialize = false) 110 public String brandId; 111 112 @SerializedName("openid") 113 @Expose(serialize = false) 114 public String openid; 115 116 @SerializedName("offset") 117 @Expose(serialize = false) 118 public Long offset; 119 120 @SerializedName("limit") 121 @Expose(serialize = false) 122 public Long limit; 123 124 @SerializedName("user_card_state") 125 @Expose(serialize = false) 126 public UserCardState userCardState; 127 } 128 129 public static class ListUserCardResponse { 130 @SerializedName("data") 131 public List<UserCard> data; 132 133 @SerializedName("total_count") 134 public Long totalCount; 135 136 @SerializedName("offset") 137 public Long offset; 138 139 @SerializedName("limit") 140 public Long limit; 141 } 142 143 public enum UserCardState { 144 @SerializedName("UNACTIVATED") 145 UNACTIVATED, 146 @SerializedName("EFFECTIVE") 147 EFFECTIVE, 148 @SerializedName("EXPIRED") 149 EXPIRED, 150 @SerializedName("INVALID") 151 INVALID 152 } 153 154 public static class UserCard { 155 @SerializedName("user_card_code") 156 public String userCardCode; 157 158 @SerializedName("card_id") 159 public String cardId; 160 161 @SerializedName("openid") 162 public String openid; 163 164 @SerializedName("card_color") 165 public String cardColor; 166 167 @SerializedName("card_picture_url") 168 public String cardPictureUrl; 169 170 @SerializedName("brand_id") 171 public String brandId; 172 173 @SerializedName("card_type") 174 public CardType cardType; 175 176 @SerializedName("phone_number") 177 public String phoneNumber; 178 179 @SerializedName("level") 180 public String level; 181 182 @SerializedName("valid_date_information") 183 public DateInfo validDateInformation; 184 185 @SerializedName("pickup_time") 186 public String pickupTime; 187 188 @SerializedName("user_information") 189 public UserInfo userInformation; 190 191 @SerializedName("attach") 192 public String attach; 193 194 @SerializedName("user_card_state") 195 public UserCardState userCardState; 196 197 @SerializedName("invalid_reason") 198 public String invalidReason; 199 200 @SerializedName("invalid_time") 201 public String invalidTime; 202 203 @SerializedName("create_time") 204 public String createTime; 205 206 @SerializedName("modify_time") 207 public String modifyTime; 208 } 209 210 public enum CardType { 211 @SerializedName("PURCHASE") 212 PURCHASE, 213 @SerializedName("NORMAL") 214 NORMAL, 215 @SerializedName("BALANCE") 216 BALANCE 217 } 218 219 public static class DateInfo { 220 @SerializedName("type") 221 public DateType type; 222 223 @SerializedName("available_begin_time") 224 public String availableBeginTime; 225 226 @SerializedName("available_end_time") 227 public String availableEndTime; 228 229 @SerializedName("available_day_after_receive") 230 public Long availableDayAfterReceive; 231 } 232 233 public static class UserInfo { 234 @SerializedName("common_field_list") 235 public List<UserInfoCommonField> commonFieldList; 236 237 @SerializedName("custom_field_list") 238 public List<UserInfoCustomField> customFieldList; 239 } 240 241 public enum DateType { 242 @SerializedName("FIX_TIME_RANGE") 243 FIX_TIME_RANGE, 244 @SerializedName("FIX_TERM") 245 FIX_TERM, 246 @SerializedName("PERMANENT") 247 PERMANENT 248 } 249 250 public static class UserInfoCommonField { 251 @SerializedName("name") 252 public CommonFieldFlag name; 253 254 @SerializedName("value") 255 public String value; 256 } 257 258 public static class UserInfoCustomField { 259 @SerializedName("name") 260 public String name; 261 262 @SerializedName("user_chosen_values") 263 public List<String> userChosenValues; 264 } 265 266 public enum CommonFieldFlag { 267 @SerializedName("USER_FORM_FLAG_SEX") 268 USER_FORM_FLAG_SEX, 269 @SerializedName("USER_FORM_FLAG_NAME") 270 USER_FORM_FLAG_NAME, 271 @SerializedName("USER_FORM_FLAG_BIRTHDAY") 272 USER_FORM_FLAG_BIRTHDAY, 273 @SerializedName("USER_FORM_FLAG_ADDRESS") 274 USER_FORM_FLAG_ADDRESS, 275 @SerializedName("USER_FORM_FLAG_EMAIL") 276 USER_FORM_FLAG_EMAIL, 277 @SerializedName("USER_FORM_FLAG_CITY") 278 USER_FORM_FLAG_CITY 279 } 280 281} 282
需配合微信支付工具库 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) 10 11func main() { 12 // TODO: 请准备商户开发必要参数,参考:https://pay.weixin.qq.com/doc/v3/partner/4013080340 13 config, err := wxpay_utility.CreateMchConfig( 14 "19xxxxxxxx", // 商户号,是由微信支付系统生成并分配给每个商户的唯一标识符,商户号获取方式参考 https://pay.weixin.qq.com/doc/v3/partner/4013080340 15 "1DDE55AD98Exxxxxxxxxx", // 商户API证书序列号,如何获取请参考 https://pay.weixin.qq.com/doc/v3/partner/4013058924 16 "/path/to/apiclient_key.pem", // 商户API证书私钥文件路径,本地文件路径 17 "PUB_KEY_ID_xxxxxxxxxxxxx", // 微信支付公钥ID,如何获取请参考 https://pay.weixin.qq.com/doc/v3/partner/4013038589 18 "/path/to/wxp_pub.pem", // 微信支付公钥文件路径,本地文件路径 19 ) 20 if err != nil { 21 fmt.Println(err) 22 return 23 } 24 25 request := &ListUserCardRequest{ 26 BrandId: wxpay_utility.String("1004"), 27 Openid: wxpay_utility.String("obLatjnx9gnqzS4myYGmLZ7LgLBA"), 28 UserCardState: USERCARDSTATE_EFFECTIVE.Ptr(), 29 Offset: wxpay_utility.Int64(0), 30 Limit: wxpay_utility.Int64(20), 31 } 32 33 response, err := ListUserCard(config, request) 34 if err != nil { 35 fmt.Printf("请求失败: %+v\n", err) 36 // TODO: 请求失败,根据状态码执行不同的处理 37 return 38 } 39 40 // TODO: 请求成功,继续业务逻辑 41 fmt.Printf("请求成功: %+v\n", response) 42} 43 44func ListUserCard(config *wxpay_utility.MchConfig, request *ListUserCardRequest) (response *ListUserCardResponse, err error) { 45 const ( 46 host = "https://api.mch.weixin.qq.com" 47 method = "GET" 48 path = "/v3/brand/partner/card-member/user-cards" 49 ) 50 51 reqUrl, err := url.Parse(fmt.Sprintf("%s%s", host, path)) 52 if err != nil { 53 return nil, err 54 } 55 query := reqUrl.Query() 56 query.Add("brand_id", *request.BrandId) 57 query.Add("openid", *request.Openid) 58 query.Add("user_card_state", fmt.Sprintf("%v", *request.UserCardState)) 59 query.Add("offset", fmt.Sprintf("%v", *request.Offset)) 60 query.Add("limit", fmt.Sprintf("%v", *request.Limit)) 61 reqUrl.RawQuery = query.Encode() 62 httpRequest, err := http.NewRequest(method, reqUrl.String(), nil) 63 if err != nil { 64 return nil, err 65 } 66 httpRequest.Header.Set("Accept", "application/json") 67 httpRequest.Header.Set("Wechatpay-Serial", config.WechatPayPublicKeyId()) 68 authorization, err := wxpay_utility.BuildAuthorization(config.MchId(), config.CertificateSerialNo(), config.PrivateKey(), method, reqUrl.RequestURI(), nil) 69 if err != nil { 70 return nil, err 71 } 72 httpRequest.Header.Set("Authorization", authorization) 73 74 client := &http.Client{} 75 httpResponse, err := client.Do(httpRequest) 76 if err != nil { 77 return nil, err 78 } 79 80 respBody, err := wxpay_utility.ExtractResponseBody(httpResponse) 81 if err != nil { 82 return nil, err 83 } 84 85 if httpResponse.StatusCode >= 200 && httpResponse.StatusCode < 300 { 86 // 2XX 成功,验证应答签名 87 err = wxpay_utility.ValidateResponse( 88 config.WechatPayPublicKeyId(), 89 config.WechatPayPublicKey(), 90 &httpResponse.Header, 91 respBody, 92 ) 93 if err != nil { 94 return nil, err 95 } 96 97 if err := json.Unmarshal(respBody, response); err != nil { 98 return nil, err 99 } 100 101 return response, nil 102 } else { 103 return nil, wxpay_utility.NewApiException( 104 httpResponse.StatusCode, 105 httpResponse.Header, 106 respBody, 107 ) 108 } 109} 110 111type ListUserCardRequest struct { 112 BrandId *string `json:"brand_id,omitempty"` 113 Openid *string `json:"openid,omitempty"` 114 Offset *int64 `json:"offset,omitempty"` 115 Limit *int64 `json:"limit,omitempty"` 116 UserCardState *UserCardState `json:"user_card_state,omitempty"` 117} 118 119func (o *ListUserCardRequest) MarshalJSON() ([]byte, error) { 120 type Alias ListUserCardRequest 121 a := &struct { 122 BrandId *string `json:"brand_id,omitempty"` 123 Openid *string `json:"openid,omitempty"` 124 Offset *int64 `json:"offset,omitempty"` 125 Limit *int64 `json:"limit,omitempty"` 126 UserCardState *UserCardState `json:"user_card_state,omitempty"` 127 *Alias 128 }{ 129 // 序列化时移除非 Body 字段 130 BrandId: nil, 131 Openid: nil, 132 Offset: nil, 133 Limit: nil, 134 UserCardState: nil, 135 Alias: (*Alias)(o), 136 } 137 return json.Marshal(a) 138} 139 140type ListUserCardResponse struct { 141 Data []UserCard `json:"data,omitempty"` 142 TotalCount *int64 `json:"total_count,omitempty"` 143 Offset *int64 `json:"offset,omitempty"` 144 Limit *int64 `json:"limit,omitempty"` 145} 146 147type UserCardState string 148 149func (e UserCardState) Ptr() *UserCardState { 150 return &e 151} 152 153const ( 154 USERCARDSTATE_UNACTIVATED UserCardState = "UNACTIVATED" 155 USERCARDSTATE_EFFECTIVE UserCardState = "EFFECTIVE" 156 USERCARDSTATE_EXPIRED UserCardState = "EXPIRED" 157 USERCARDSTATE_INVALID UserCardState = "INVALID" 158) 159 160type UserCard struct { 161 UserCardCode *string `json:"user_card_code,omitempty"` 162 CardId *string `json:"card_id,omitempty"` 163 Openid *string `json:"openid,omitempty"` 164 CardColor *string `json:"card_color,omitempty"` 165 CardPictureUrl *string `json:"card_picture_url,omitempty"` 166 BrandId *string `json:"brand_id,omitempty"` 167 CardType *CardType `json:"card_type,omitempty"` 168 PhoneNumber *string `json:"phone_number,omitempty"` 169 Level *string `json:"level,omitempty"` 170 ValidDateInformation *DateInfo `json:"valid_date_information,omitempty"` 171 PickupTime *string `json:"pickup_time,omitempty"` 172 UserInformation *UserInfo `json:"user_information,omitempty"` 173 Attach *string `json:"attach,omitempty"` 174 UserCardState *UserCardState `json:"user_card_state,omitempty"` 175 InvalidReason *string `json:"invalid_reason,omitempty"` 176 InvalidTime *string `json:"invalid_time,omitempty"` 177 CreateTime *string `json:"create_time,omitempty"` 178 ModifyTime *string `json:"modify_time,omitempty"` 179} 180 181type CardType string 182 183func (e CardType) Ptr() *CardType { 184 return &e 185} 186 187const ( 188 CARDTYPE_PURCHASE CardType = "PURCHASE" 189 CARDTYPE_NORMAL CardType = "NORMAL" 190 CARDTYPE_BALANCE CardType = "BALANCE" 191) 192 193type DateInfo struct { 194 Type *DateType `json:"type,omitempty"` 195 AvailableBeginTime *string `json:"available_begin_time,omitempty"` 196 AvailableEndTime *string `json:"available_end_time,omitempty"` 197 AvailableDayAfterReceive *int64 `json:"available_day_after_receive,omitempty"` 198} 199 200type UserInfo struct { 201 CommonFieldList []UserInfoCommonField `json:"common_field_list,omitempty"` 202 CustomFieldList []UserInfoCustomField `json:"custom_field_list,omitempty"` 203} 204 205type DateType string 206 207func (e DateType) Ptr() *DateType { 208 return &e 209} 210 211const ( 212 DATETYPE_FIX_TIME_RANGE DateType = "FIX_TIME_RANGE" 213 DATETYPE_FIX_TERM DateType = "FIX_TERM" 214 DATETYPE_PERMANENT DateType = "PERMANENT" 215) 216 217type UserInfoCommonField struct { 218 Name *CommonFieldFlag `json:"name,omitempty"` 219 Value *string `json:"value,omitempty"` 220} 221 222type UserInfoCustomField struct { 223 Name *string `json:"name,omitempty"` 224 UserChosenValues []string `json:"user_chosen_values,omitempty"` 225} 226 227type CommonFieldFlag string 228 229func (e CommonFieldFlag) Ptr() *CommonFieldFlag { 230 return &e 231} 232 233const ( 234 COMMONFIELDFLAG_USER_FORM_FLAG_SEX CommonFieldFlag = "USER_FORM_FLAG_SEX" 235 COMMONFIELDFLAG_USER_FORM_FLAG_NAME CommonFieldFlag = "USER_FORM_FLAG_NAME" 236 COMMONFIELDFLAG_USER_FORM_FLAG_BIRTHDAY CommonFieldFlag = "USER_FORM_FLAG_BIRTHDAY" 237 COMMONFIELDFLAG_USER_FORM_FLAG_ADDRESS CommonFieldFlag = "USER_FORM_FLAG_ADDRESS" 238 COMMONFIELDFLAG_USER_FORM_FLAG_EMAIL CommonFieldFlag = "USER_FORM_FLAG_EMAIL" 239 COMMONFIELDFLAG_USER_FORM_FLAG_CITY CommonFieldFlag = "USER_FORM_FLAG_CITY" 240) 241
GET
1curl -X GET \ 2 https://api.mch.weixin.qq.com/v3/brand/partner/card-member/user-cards?brand_id=1004&openid=obLatjnx9gnqzS4myYGmLZ7LgLBA&user_card_state=EFFECTIVE&offset=0&limit=20 \ 3 -H "Authorization: WECHATPAY2-SHA256-RSA2048 mchid=\"1900000001\",..." \ 4 -H "Accept: application/json" 5
应答参数
200 OK
data 选填 array[object]
【会员卡列表】 符合条件的会员卡列表
属性 | |||||||||||||||||
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 种类型。 可选取值
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 【用户会员卡状态】 用户当前的卡状态 可选取值
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秒。 |
total_count 必填 integer
【总数量】 总数量
offset 必填 integer
【分页开始位置】 该次请求的分页开始位置,从0开始计数,例如offset=10,表示从第11条记录开始返回。
limit 必填 integer
【分页大小】 分页大小
应答示例
200 OK
1{ 2 "data" : [ 3 { 4 "user_card_code" : "478515832665", 5 "card_id" : "pbLatjvWOibDc5-TBnbUk1pD12o0", 6 "openid" : "obLatjnx9gnqzS4myYGmLZ7LgLBA", 7 "card_color" : "#FFFF00", 8 "card_picture_url" : "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0", 9 "brand_id" : "1001622624", 10 "card_type" : "NORMAL", 11 "phone_number" : "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==", 12 "level" : "钻石会员", 13 "valid_date_information" : { 14 "type" : "PERMANENT", 15 "available_begin_time" : "2020-05-20T13:29:35.120+08:00", 16 "available_end_time" : "2020-05-20T13:29:35.120+08:00", 17 "available_day_after_receive" : 30 18 }, 19 "pickup_time" : "2020-05-20T13:29:35.120+08:00", 20 "user_information" : { 21 "common_field_list" : [ 22 { 23 "name" : "USER_FORM_FLAG_BIRTHDAY", 24 "value" : "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" 25 } 26 ], 27 "custom_field_list" : [ 28 { 29 "name" : "喜欢的运动", 30 "user_chosen_values" : [ 31 "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" 32 ] 33 } 34 ] 35 }, 36 "attach" : "自定义数据说明", 37 "user_card_state" : "EFFECTIVE", 38 "invalid_reason" : "传入的自定义作废原因", 39 "invalid_time" : "2020-05-20T13:29:35.120+08:00", 40 "create_time" : "2020-05-20T13:29:35.120+08:00", 41 "modify_time" : "2020-05-20T13:29:35.120+08:00" 42 } 43 ], 44 "total_count" : 20, 45 "offset" : 0, 46 "limit" : 20 47} 48
错误码
公共错误码
状态码 | 错误码 | 描述 | 解决方案 |
---|---|---|---|
400 | PARAM_ERROR | 参数错误 | 请根据错误提示正确传入参数 |
400 | INVALID_REQUEST | HTTP 请求不符合微信支付 APIv3 接口规则 | 请参阅 接口规则 |
401 | SIGN_ERROR | 验证不通过 | 请参阅 签名常见问题 |
500 | SYSTEM_ERROR | 系统异常,请稍后重试 | 请稍后重试 |
业务错误码
状态码 | 错误码 | 描述 | 解决方案 |
---|---|---|---|
400 | PARAM_ERROR | OpenID有误 | 请使用正确的OpenID重新调用 |