mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-31 10:38:42 +08:00 
			
		
		
		
	| @ -0,0 +1,38 @@ | |||||||
|  | package me.chanjar.weixin.mp.api; | ||||||
|  |  | ||||||
|  | import me.chanjar.weixin.common.exception.WxErrorException; | ||||||
|  | import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardActivatedMessage; | ||||||
|  | import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 会员卡相关接口 | ||||||
|  |  * | ||||||
|  |  * @author YuJian(mgcnrx11@gmail.com) | ||||||
|  |  * @version 2017/7/8 | ||||||
|  |  */ | ||||||
|  | public interface WxMpMemberCardService { | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 得到WxMpService | ||||||
|  |    */ | ||||||
|  |   WxMpService getWxMpService(); | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 会员卡激活接口 | ||||||
|  |    * | ||||||
|  |    * @param activatedMessage 激活所需参数 | ||||||
|  |    * @return 调用返回的JSON字符串。 | ||||||
|  |    * @throws WxErrorException 接口调用失败抛出的异常 | ||||||
|  |    */ | ||||||
|  |   String activateMemberCard(WxMpMemberCardActivatedMessage activatedMessage) throws WxErrorException; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 拉取会员信息接口 | ||||||
|  |    * | ||||||
|  |    * @param cardId 会员卡的CardId,微信分配 | ||||||
|  |    * @param code 领取会员的会员卡Code | ||||||
|  |    * @return 会员信息的结果对象 | ||||||
|  |    * @throws WxErrorException 接口调用失败抛出的异常 | ||||||
|  |    */ | ||||||
|  |   WxMpMemberCardUserInfoResult getUserInfo(String cardId, String code) throws WxErrorException; | ||||||
|  | } | ||||||
| @ -434,6 +434,13 @@ public interface WxMpService { | |||||||
|    */ |    */ | ||||||
|   WxMpShakeService getShakeService(); |   WxMpShakeService getShakeService(); | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 返回会员卡相关接口方法的实现类对象,以方便调用其各个接口 | ||||||
|  |    * | ||||||
|  |    * @return WxMpMemberCardService | ||||||
|  |    */ | ||||||
|  |   WxMpMemberCardService getMemberCardService(); | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * 初始化http请求对象 |    * 初始化http请求对象 | ||||||
|    */ |    */ | ||||||
|  | |||||||
| @ -42,6 +42,7 @@ public abstract class AbstractWxMpServiceImpl<H, P> implements WxMpService, Requ | |||||||
|   private WxMpTemplateMsgService templateMsgService = new WxMpTemplateMsgServiceImpl(this); |   private WxMpTemplateMsgService templateMsgService = new WxMpTemplateMsgServiceImpl(this); | ||||||
|   private WxMpDeviceService deviceService = new WxMpDeviceServiceImpl(this); |   private WxMpDeviceService deviceService = new WxMpDeviceServiceImpl(this); | ||||||
|   private WxMpShakeService shakeService = new WxMpShakeServiceImpl(this); |   private WxMpShakeService shakeService = new WxMpShakeServiceImpl(this); | ||||||
|  |   private WxMpMemberCardService memberCardService = new WxMpMemberCardServiceImpl(this); | ||||||
|  |  | ||||||
|   private int retrySleepMillis = 1000; |   private int retrySleepMillis = 1000; | ||||||
|   private int maxRetryTimes = 5; |   private int maxRetryTimes = 5; | ||||||
| @ -406,6 +407,11 @@ public abstract class AbstractWxMpServiceImpl<H, P> implements WxMpService, Requ | |||||||
|     return this.shakeService; |     return this.shakeService; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public WxMpMemberCardService getMemberCardService() { | ||||||
|  |     return this.memberCardService; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public RequestHttp getRequestHttp() { |   public RequestHttp getRequestHttp() { | ||||||
|     return this; |     return this; | ||||||
|  | |||||||
| @ -0,0 +1,78 @@ | |||||||
|  | package me.chanjar.weixin.mp.api.impl; | ||||||
|  |  | ||||||
|  | import com.google.gson.Gson; | ||||||
|  | import com.google.gson.JsonElement; | ||||||
|  | import com.google.gson.JsonObject; | ||||||
|  | import com.google.gson.JsonParser; | ||||||
|  | import com.google.gson.reflect.TypeToken; | ||||||
|  | import me.chanjar.weixin.common.exception.WxErrorException; | ||||||
|  | import me.chanjar.weixin.mp.api.WxMpMemberCardService; | ||||||
|  | import me.chanjar.weixin.mp.api.WxMpService; | ||||||
|  | import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardActivatedMessage; | ||||||
|  | import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult; | ||||||
|  | import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | ||||||
|  | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 会员卡相关接口的实现类 | ||||||
|  |  * | ||||||
|  |  * @author YuJian(mgcnrx11@gmail.com) | ||||||
|  |  * @version 2017/7/8 | ||||||
|  |  */ | ||||||
|  | public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { | ||||||
|  |  | ||||||
|  |   private final Logger log = LoggerFactory.getLogger(WxMpMemberCardServiceImpl.class); | ||||||
|  |  | ||||||
|  |   private static final String MEMBER_CARD_ACTIVATE = "https://api.weixin.qq.com/card/membercard/activate"; | ||||||
|  |   private static final String MEMBER_CARD_USER_INFO_GET = "https://api.weixin.qq.com/card/membercard/userinfo/get"; | ||||||
|  |  | ||||||
|  |   private WxMpService wxMpService; | ||||||
|  |  | ||||||
|  |   private static final Gson GSON = new Gson(); | ||||||
|  |  | ||||||
|  |   WxMpMemberCardServiceImpl(WxMpService wxMpService) { | ||||||
|  |     this.wxMpService = wxMpService; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 得到WxMpService | ||||||
|  |    */ | ||||||
|  |   @Override | ||||||
|  |   public WxMpService getWxMpService() { | ||||||
|  |     return this.wxMpService; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 会员卡激活接口 | ||||||
|  |    * | ||||||
|  |    * @param activatedMessage 激活所需参数 | ||||||
|  |    * @return 调用返回的JSON字符串。 | ||||||
|  |    * @throws WxErrorException 接口调用失败抛出的异常 | ||||||
|  |    */ | ||||||
|  |   @Override | ||||||
|  |   public String activateMemberCard(WxMpMemberCardActivatedMessage activatedMessage) throws WxErrorException { | ||||||
|  |     return this.wxMpService.post(MEMBER_CARD_ACTIVATE, GSON.toJson(activatedMessage)); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 拉取会员信息接口 | ||||||
|  |    * | ||||||
|  |    * @param cardId 会员卡的CardId,微信分配 | ||||||
|  |    * @param code   领取会员的会员卡Code | ||||||
|  |    * @return 会员信息的结果对象 | ||||||
|  |    * @throws WxErrorException 接口调用失败抛出的异常 | ||||||
|  |    */ | ||||||
|  |   @Override | ||||||
|  |   public WxMpMemberCardUserInfoResult getUserInfo(String cardId, String code) throws WxErrorException { | ||||||
|  |     JsonObject jsonObject = new JsonObject(); | ||||||
|  |     jsonObject.addProperty("card_id", cardId); | ||||||
|  |     jsonObject.addProperty("code",code); | ||||||
|  |  | ||||||
|  |     String responseContent = this.getWxMpService().post(MEMBER_CARD_USER_INFO_GET, jsonObject.toString()); | ||||||
|  |     JsonElement tmpJsonElement = new JsonParser().parse(responseContent); | ||||||
|  |     return WxMpGsonBuilder.INSTANCE.create().fromJson(tmpJsonElement, | ||||||
|  |       new TypeToken<WxMpMemberCardUserInfoResult>() { | ||||||
|  |       }.getType()); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,27 @@ | |||||||
|  | package me.chanjar.weixin.mp.bean.membercard; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Created by YuJian on 2017/7/11. | ||||||
|  |  */ | ||||||
|  | public class MemberCardUserInfo { | ||||||
|  |  | ||||||
|  |   private NameValues[] commonFieldList; | ||||||
|  |  | ||||||
|  |   private NameValues[] customFieldList; | ||||||
|  |  | ||||||
|  |   public NameValues[] getCommonFieldList() { | ||||||
|  |     return commonFieldList; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setCommonFieldList(NameValues[] commonFieldList) { | ||||||
|  |     this.commonFieldList = commonFieldList; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public NameValues[] getCustomFieldList() { | ||||||
|  |     return customFieldList; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setCustomFieldList(NameValues[] customFieldList) { | ||||||
|  |     this.customFieldList = customFieldList; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,36 @@ | |||||||
|  | package me.chanjar.weixin.mp.bean.membercard; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Created by YuJian on 2017/7/11. | ||||||
|  |  */ | ||||||
|  | public class NameValues { | ||||||
|  |   private String name; | ||||||
|  |  | ||||||
|  |   private String value; | ||||||
|  |  | ||||||
|  |   private String[] valueList; | ||||||
|  |  | ||||||
|  |   public String getName() { | ||||||
|  |     return name; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setName(String name) { | ||||||
|  |     this.name = name; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getValue() { | ||||||
|  |     return value; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setValue(String value) { | ||||||
|  |     this.value = value; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String[] getValueList() { | ||||||
|  |     return valueList; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setValueList(String[] valueList) { | ||||||
|  |     this.valueList = valueList; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,144 @@ | |||||||
|  | package me.chanjar.weixin.mp.bean.membercard; | ||||||
|  |  | ||||||
|  | import com.google.gson.annotations.SerializedName; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 会员卡激活接口的参数 | ||||||
|  |  * | ||||||
|  |  * @author YuJian(mgcnrx11@hotmail.com) | ||||||
|  |  * @version 2017/7/8 | ||||||
|  |  */ | ||||||
|  | public class WxMpMemberCardActivatedMessage { | ||||||
|  |  | ||||||
|  |   // 会员卡编号,由开发者填入,作为序列号显示在用户的卡包里。可与Code码保持等值。 | ||||||
|  |   @SerializedName("membership_number") | ||||||
|  |   private String membershipNumber; | ||||||
|  |   // 领取会员卡用户获得的code | ||||||
|  |   private String code; | ||||||
|  |   // 卡券ID,自定义code卡券必填 | ||||||
|  |   @SerializedName("card_id") | ||||||
|  |   private String cardId; | ||||||
|  |   // 商家自定义会员卡背景图,须先调用上传图片接口将背景图上传至CDN,否则报错。卡面设计请遵循微信会员卡自定义背景设计规范 | ||||||
|  |   @SerializedName("background_pic_url") | ||||||
|  |   private String backgroundPicUrl; | ||||||
|  |   // 激活后的有效起始时间。若不填写默认以创建时的 data_info 为准。Unix时间戳格式。 | ||||||
|  |   @SerializedName("activate_begin_time") | ||||||
|  |   private Integer activateBeginTime; | ||||||
|  |   // 激活后的有效截至时间。若不填写默认以创建时的 data_info 为准。Unix时间戳格式。 | ||||||
|  |   @SerializedName("activate_end_time") | ||||||
|  |   private Integer activateEndTime; | ||||||
|  |   // 初始积分,不填为0。 | ||||||
|  |   @SerializedName("init_bonus") | ||||||
|  |   private Integer initBonus; | ||||||
|  |   // 积分同步说明。 | ||||||
|  |   @SerializedName("init_bonus_record") | ||||||
|  |   private String initBonusRecord; | ||||||
|  |   // 初始余额,不填为0。 | ||||||
|  |   @SerializedName("init_balance") | ||||||
|  |   private Integer initBalance; | ||||||
|  |   // 创建时字段custom_field1定义类型的初始值,限制为4个汉字,12字节。 | ||||||
|  |   @SerializedName("init_custom_field_value1") | ||||||
|  |   private String initCustomFieldValue1; | ||||||
|  |   // 创建时字段custom_field2定义类型的初始值,限制为4个汉字,12字节。 | ||||||
|  |   @SerializedName("init_custom_field_value2") | ||||||
|  |   private String initCustomFieldValue2; | ||||||
|  |   // 创建时字段custom_field3定义类型的初始值,限制为4个汉字,12字节。 | ||||||
|  |   @SerializedName("init_custom_field_value3") | ||||||
|  |   private String initCustomFieldValue3; | ||||||
|  |  | ||||||
|  |   public String getMembershipNumber() { | ||||||
|  |     return membershipNumber; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setMembershipNumber(String membershipNumber) { | ||||||
|  |     this.membershipNumber = membershipNumber; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getCode() { | ||||||
|  |     return code; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setCode(String code) { | ||||||
|  |     this.code = code; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getCardId() { | ||||||
|  |     return cardId; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setCardId(String cardId) { | ||||||
|  |     this.cardId = cardId; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getBackgroundPicUrl() { | ||||||
|  |     return backgroundPicUrl; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setBackgroundPicUrl(String backgroundPicUrl) { | ||||||
|  |     this.backgroundPicUrl = backgroundPicUrl; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public Integer getActivateBeginTime() { | ||||||
|  |     return activateBeginTime; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setActivateBeginTime(Integer activateBeginTime) { | ||||||
|  |     this.activateBeginTime = activateBeginTime; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public Integer getActivateEndTime() { | ||||||
|  |     return activateEndTime; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setActivateEndTime(Integer activateEndTime) { | ||||||
|  |     this.activateEndTime = activateEndTime; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public Integer getInitBonus() { | ||||||
|  |     return initBonus; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setInitBonus(Integer initBonus) { | ||||||
|  |     this.initBonus = initBonus; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getInitBonusRecord() { | ||||||
|  |     return initBonusRecord; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setInitBonusRecord(String initBonusRecord) { | ||||||
|  |     this.initBonusRecord = initBonusRecord; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public Integer getInitBalance() { | ||||||
|  |     return initBalance; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setInitBalance(Integer initBalance) { | ||||||
|  |     this.initBalance = initBalance; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getInitCustomFieldValue1() { | ||||||
|  |     return initCustomFieldValue1; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setInitCustomFieldValue1(String initCustomFieldValue1) { | ||||||
|  |     this.initCustomFieldValue1 = initCustomFieldValue1; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getInitCustomFieldValue2() { | ||||||
|  |     return initCustomFieldValue2; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setInitCustomFieldValue2(String initCustomFieldValue2) { | ||||||
|  |     this.initCustomFieldValue2 = initCustomFieldValue2; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getInitCustomFieldValue3() { | ||||||
|  |     return initCustomFieldValue3; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setInitCustomFieldValue3(String initCustomFieldValue3) { | ||||||
|  |     this.initCustomFieldValue3 = initCustomFieldValue3; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,137 @@ | |||||||
|  | package me.chanjar.weixin.mp.bean.membercard; | ||||||
|  |  | ||||||
|  | import java.io.Serializable; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 拉取会员信息返回的结果 | ||||||
|  |  * | ||||||
|  |  * 字段格式参考https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025283  6.2.1小节的步骤5 | ||||||
|  |  * | ||||||
|  |  * @author YuJian | ||||||
|  |  * @version 2017/7/9 | ||||||
|  |  */ | ||||||
|  | public class WxMpMemberCardUserInfoResult implements Serializable { | ||||||
|  |  | ||||||
|  |   private static final long serialVersionUID = 9084777967442098311L; | ||||||
|  |  | ||||||
|  |   private String errorCode; | ||||||
|  |  | ||||||
|  |   private String errorMsg; | ||||||
|  |  | ||||||
|  |   private String openId; | ||||||
|  |  | ||||||
|  |   private String nickname; | ||||||
|  |  | ||||||
|  |   private String membershipNumber; | ||||||
|  |  | ||||||
|  |   private Integer bonus; | ||||||
|  |  | ||||||
|  |   private String sex; | ||||||
|  |  | ||||||
|  |   private MemberCardUserInfo userInfo; | ||||||
|  |  | ||||||
|  |   private String userCardStatus; | ||||||
|  |  | ||||||
|  |   private Boolean hasActive; | ||||||
|  |  | ||||||
|  |   public static long getSerialVersionUID() { | ||||||
|  |     return serialVersionUID; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getErrorCode() { | ||||||
|  |     return errorCode; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setErrorCode(String errorCode) { | ||||||
|  |     this.errorCode = errorCode; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getErrorMsg() { | ||||||
|  |     return errorMsg; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setErrorMsg(String errorMsg) { | ||||||
|  |     this.errorMsg = errorMsg; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getOpenId() { | ||||||
|  |     return openId; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setOpenId(String openId) { | ||||||
|  |     this.openId = openId; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getNickname() { | ||||||
|  |     return nickname; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setNickname(String nickname) { | ||||||
|  |     this.nickname = nickname; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getMembershipNumber() { | ||||||
|  |     return membershipNumber; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setMembershipNumber(String membershipNumber) { | ||||||
|  |     this.membershipNumber = membershipNumber; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public Integer getBonus() { | ||||||
|  |     return bonus; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setBonus(Integer bonus) { | ||||||
|  |     this.bonus = bonus; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getSex() { | ||||||
|  |     return sex; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setSex(String sex) { | ||||||
|  |     this.sex = sex; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public MemberCardUserInfo getUserInfo() { | ||||||
|  |     return userInfo; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setUserInfo(MemberCardUserInfo userInfo) { | ||||||
|  |     this.userInfo = userInfo; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getUserCardStatus() { | ||||||
|  |     return userCardStatus; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setUserCardStatus(String userCardStatus) { | ||||||
|  |     this.userCardStatus = userCardStatus; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public Boolean getHasActive() { | ||||||
|  |     return hasActive; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setHasActive(Boolean hasActive) { | ||||||
|  |     this.hasActive = hasActive; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public String toString() { | ||||||
|  |     return "WxMpMemberCardUserInfoResult{" + | ||||||
|  |       "errorCode='" + errorCode + '\'' + | ||||||
|  |       ", errorMsg='" + errorMsg + '\'' + | ||||||
|  |       ", openId='" + openId + '\'' + | ||||||
|  |       ", nickname='" + nickname + '\'' + | ||||||
|  |       ", membershipNumber='" + membershipNumber + '\'' + | ||||||
|  |       ", bonus=" + bonus + | ||||||
|  |       ", sex='" + sex + '\'' + | ||||||
|  |       ", userInfo=" + userInfo + | ||||||
|  |       ", userCardStatus='" + userCardStatus + '\'' + | ||||||
|  |       ", hasActive=" + hasActive + | ||||||
|  |       '}'; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
| @ -6,6 +6,7 @@ import me.chanjar.weixin.mp.bean.*; | |||||||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserCumulate; | import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserCumulate; | ||||||
| import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserSummary; | import me.chanjar.weixin.mp.bean.datacube.WxDataCubeUserSummary; | ||||||
| import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage; | import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage; | ||||||
|  | import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult; | ||||||
| import me.chanjar.weixin.mp.bean.material.*; | import me.chanjar.weixin.mp.bean.material.*; | ||||||
| import me.chanjar.weixin.mp.bean.result.*; | import me.chanjar.weixin.mp.bean.result.*; | ||||||
| import me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustry; | import me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustry; | ||||||
| @ -49,6 +50,7 @@ public class WxMpGsonBuilder { | |||||||
|     INSTANCE.registerTypeAdapter(WxMediaImgUploadResult.class, new WxMediaImgUploadResultGsonAdapter()); |     INSTANCE.registerTypeAdapter(WxMediaImgUploadResult.class, new WxMediaImgUploadResultGsonAdapter()); | ||||||
|     INSTANCE.registerTypeAdapter(WxMpTemplateIndustry.class, new WxMpIndustryGsonAdapter()); |     INSTANCE.registerTypeAdapter(WxMpTemplateIndustry.class, new WxMpIndustryGsonAdapter()); | ||||||
|     INSTANCE.registerTypeAdapter(WxMpUserBlacklistGetResult.class, new WxUserBlacklistGetResultGsonAdapter()); |     INSTANCE.registerTypeAdapter(WxMpUserBlacklistGetResult.class, new WxUserBlacklistGetResultGsonAdapter()); | ||||||
|  |     INSTANCE.registerTypeAdapter(WxMpMemberCardUserInfoResult.class, new WxMpMemberCardUserInfoResultGsonAdapter()); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   public static Gson create() { |   public static Gson create() { | ||||||
|  | |||||||
| @ -0,0 +1,72 @@ | |||||||
|  | package me.chanjar.weixin.mp.util.json; | ||||||
|  |  | ||||||
|  | import com.google.gson.*; | ||||||
|  | import me.chanjar.weixin.common.util.json.GsonHelper; | ||||||
|  | import me.chanjar.weixin.mp.bean.membercard.MemberCardUserInfo; | ||||||
|  | import me.chanjar.weixin.mp.bean.membercard.NameValues; | ||||||
|  | import me.chanjar.weixin.mp.bean.membercard.WxMpMemberCardUserInfoResult; | ||||||
|  |  | ||||||
|  | import java.lang.reflect.Type; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Created by YuJian on 2017/7/11. | ||||||
|  |  * | ||||||
|  |  * @author YuJian | ||||||
|  |  * @version 2017/7/11 | ||||||
|  |  */ | ||||||
|  | public class WxMpMemberCardUserInfoResultGsonAdapter implements JsonDeserializer<WxMpMemberCardUserInfoResult> { | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public WxMpMemberCardUserInfoResult deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { | ||||||
|  |     WxMpMemberCardUserInfoResult result = new WxMpMemberCardUserInfoResult(); | ||||||
|  |  | ||||||
|  |     JsonObject jsonObject = jsonElement.getAsJsonObject(); | ||||||
|  |  | ||||||
|  |     result.setOpenId(GsonHelper.getString(jsonObject, "openid")); | ||||||
|  |     result.setErrorCode(GsonHelper.getString(jsonObject, "errcode")); | ||||||
|  |     result.setErrorMsg(GsonHelper.getString(jsonObject, "errmsg")); | ||||||
|  |     result.setNickname(GsonHelper.getString(jsonObject, "nickname")); | ||||||
|  |     result.setMembershipNumber(GsonHelper.getString(jsonObject, "membership_number")); | ||||||
|  |     result.setBonus(GsonHelper.getInteger(jsonObject, "bonus")); | ||||||
|  |     result.setSex(GsonHelper.getString(jsonObject, "sex")); | ||||||
|  |     result.setUserCardStatus(GsonHelper.getString(jsonObject, "user_card_status")); | ||||||
|  |     result.setHasActive(GsonHelper.getBoolean(jsonObject, "has_active")); | ||||||
|  |  | ||||||
|  |     JsonObject userInfoJsonObject = jsonObject.getAsJsonObject("user_info"); | ||||||
|  |     MemberCardUserInfo cardUserInfo = new MemberCardUserInfo(); | ||||||
|  |  | ||||||
|  |     JsonArray commonFieldListObj = userInfoJsonObject.getAsJsonArray("common_field_list"); | ||||||
|  |     NameValues[] commonFieldListValues = new NameValues[commonFieldListObj.size()]; | ||||||
|  |     for (int i = 0; i < commonFieldListObj.size(); i++) { | ||||||
|  |       JsonObject commonField = commonFieldListObj.get(i).getAsJsonObject(); | ||||||
|  |       NameValues commonNameValues = new NameValues(); | ||||||
|  |       commonNameValues.setName(GsonHelper.getString(commonField, "name")); | ||||||
|  |       commonNameValues.setValue(GsonHelper.getString(commonField, "value")); | ||||||
|  |       commonFieldListValues[i] = commonNameValues; | ||||||
|  |     } | ||||||
|  |     cardUserInfo.setCommonFieldList(commonFieldListValues); | ||||||
|  |  | ||||||
|  |     JsonArray customFieldListObj = userInfoJsonObject.getAsJsonArray("custom_field_list"); | ||||||
|  |     NameValues[] customFieldListValues = new NameValues[customFieldListObj.size()]; | ||||||
|  |     for (int i = 0; i < customFieldListObj.size(); i++) { | ||||||
|  |       JsonObject customField = customFieldListObj.get(i).getAsJsonObject(); | ||||||
|  |       NameValues customNameValues = new NameValues(); | ||||||
|  |       customNameValues.setName(GsonHelper.getString(customField, "name")); | ||||||
|  |       customNameValues.setValue(GsonHelper.getString(customField, "value")); | ||||||
|  |  | ||||||
|  |       JsonArray valueListArray = customField.getAsJsonArray("value_list"); | ||||||
|  |       String[] valueList = new String[valueListArray.size()]; | ||||||
|  |       for (int j = 0; j < valueListArray.size(); j++) { | ||||||
|  |         JsonObject valueListObj = valueListArray.getAsJsonObject(); | ||||||
|  |         valueList[i] = valueListObj.getAsString(); | ||||||
|  |       } | ||||||
|  |       customNameValues.setValueList(valueList); | ||||||
|  |       customFieldListValues[i] = customNameValues; | ||||||
|  |     } | ||||||
|  |     cardUserInfo.setCustomFieldList(customFieldListValues); | ||||||
|  |  | ||||||
|  |     result.setUserInfo(cardUserInfo); | ||||||
|  |  | ||||||
|  |     return result; | ||||||
|  |   } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user
	 mgcnrx11
					mgcnrx11