From 3a2efdd343c4f22e44b8d8e2456c59f22db861c5 Mon Sep 17 00:00:00 2001 From: mgcnrx11 Date: Sat, 15 Jul 2017 16:22:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BC=9A=E5=91=98=E5=8D=A1?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=20(#280)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 新增会员卡相关接口 1. 激活会员卡接口 2. 拉取会员信息接口 --- .../weixin/mp/api/WxMpMemberCardService.java | 38 +++++ .../me/chanjar/weixin/mp/api/WxMpService.java | 7 + .../mp/api/impl/AbstractWxMpServiceImpl.java | 6 + .../api/impl/WxMpMemberCardServiceImpl.java | 78 ++++++++++ .../bean/membercard/MemberCardUserInfo.java | 27 ++++ .../weixin/mp/bean/membercard/NameValues.java | 36 +++++ .../WxMpMemberCardActivatedMessage.java | 144 ++++++++++++++++++ .../WxMpMemberCardUserInfoResult.java | 137 +++++++++++++++++ .../weixin/mp/util/json/WxMpGsonBuilder.java | 2 + ...MpMemberCardUserInfoResultGsonAdapter.java | 72 +++++++++ 10 files changed, 547 insertions(+) create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMemberCardService.java create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMemberCardServiceImpl.java create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/MemberCardUserInfo.java create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/NameValues.java create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardActivatedMessage.java create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardUserInfoResult.java create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMemberCardUserInfoResultGsonAdapter.java diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMemberCardService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMemberCardService.java new file mode 100644 index 000000000..89b9fd74e --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMemberCardService.java @@ -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; +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java index 0cff2c1cf..e4da721c8 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java @@ -434,6 +434,13 @@ public interface WxMpService { */ WxMpShakeService getShakeService(); + /** + * 返回会员卡相关接口方法的实现类对象,以方便调用其各个接口 + * + * @return WxMpMemberCardService + */ + WxMpMemberCardService getMemberCardService(); + /** * 初始化http请求对象 */ diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/AbstractWxMpServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/AbstractWxMpServiceImpl.java index ed93d4936..cc965026c 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/AbstractWxMpServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/AbstractWxMpServiceImpl.java @@ -42,6 +42,7 @@ public abstract class AbstractWxMpServiceImpl implements WxMpService, Requ private WxMpTemplateMsgService templateMsgService = new WxMpTemplateMsgServiceImpl(this); private WxMpDeviceService deviceService = new WxMpDeviceServiceImpl(this); private WxMpShakeService shakeService = new WxMpShakeServiceImpl(this); + private WxMpMemberCardService memberCardService = new WxMpMemberCardServiceImpl(this); private int retrySleepMillis = 1000; private int maxRetryTimes = 5; @@ -406,6 +407,11 @@ public abstract class AbstractWxMpServiceImpl implements WxMpService, Requ return this.shakeService; } + @Override + public WxMpMemberCardService getMemberCardService() { + return this.memberCardService; + } + @Override public RequestHttp getRequestHttp() { return this; diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMemberCardServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMemberCardServiceImpl.java new file mode 100644 index 000000000..24c70ebe9 --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMemberCardServiceImpl.java @@ -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() { + }.getType()); + } +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/MemberCardUserInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/MemberCardUserInfo.java new file mode 100644 index 000000000..336008b08 --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/MemberCardUserInfo.java @@ -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; + } +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/NameValues.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/NameValues.java new file mode 100644 index 000000000..ae30d7a9a --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/NameValues.java @@ -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; + } +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardActivatedMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardActivatedMessage.java new file mode 100644 index 000000000..8040224a0 --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardActivatedMessage.java @@ -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; + } +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardUserInfoResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardUserInfoResult.java new file mode 100644 index 000000000..b3691da6d --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/membercard/WxMpMemberCardUserInfoResult.java @@ -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 + + '}'; + } +} + diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpGsonBuilder.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpGsonBuilder.java index 286778ad4..8fca5a6a8 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpGsonBuilder.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpGsonBuilder.java @@ -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.WxDataCubeUserSummary; 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.result.*; import me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustry; @@ -49,6 +50,7 @@ public class WxMpGsonBuilder { INSTANCE.registerTypeAdapter(WxMediaImgUploadResult.class, new WxMediaImgUploadResultGsonAdapter()); INSTANCE.registerTypeAdapter(WxMpTemplateIndustry.class, new WxMpIndustryGsonAdapter()); INSTANCE.registerTypeAdapter(WxMpUserBlacklistGetResult.class, new WxUserBlacklistGetResultGsonAdapter()); + INSTANCE.registerTypeAdapter(WxMpMemberCardUserInfoResult.class, new WxMpMemberCardUserInfoResultGsonAdapter()); } public static Gson create() { diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMemberCardUserInfoResultGsonAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMemberCardUserInfoResultGsonAdapter.java new file mode 100644 index 000000000..021ea6022 --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpMemberCardUserInfoResultGsonAdapter.java @@ -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 { + + @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; + } +}