| @@ -3,7 +3,7 @@ package me.chanjar.weixin.mp.api; | |||||
| import me.chanjar.weixin.common.bean.WxCardApiSignature; | import me.chanjar.weixin.common.bean.WxCardApiSignature; | ||||
| import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||
| import me.chanjar.weixin.mp.bean.card.*; | import me.chanjar.weixin.mp.bean.card.*; | ||||
| import me.chanjar.weixin.mp.bean.result.WxMpCardResult; | |||||
| import me.chanjar.weixin.mp.bean.card.WxMpCardResult; | |||||
| /** | /** | ||||
| * 卡券相关接口 | * 卡券相关接口 | ||||
| @@ -80,8 +80,8 @@ public interface WxMpCardService { | |||||
| String decryptCardCode(String encryptCode) throws WxErrorException; | String decryptCardCode(String encryptCode) throws WxErrorException; | ||||
| /** | /** | ||||
| * 卡券Code查询 | |||||
| * | |||||
| * 卡券Code查询. | |||||
| * 文档地址: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025272&anchor=1 | |||||
| * @param cardId 卡券ID代表一类卡券 | * @param cardId 卡券ID代表一类卡券 | ||||
| * @param code 单张卡券的唯一标准 | * @param code 单张卡券的唯一标准 | ||||
| * @param checkConsume 是否校验code核销状态,填入true和false时的code异常状态返回数据不同 | * @param checkConsume 是否校验code核销状态,填入true和false时的code异常状态返回数据不同 | ||||
| @@ -3,7 +3,6 @@ package me.chanjar.weixin.mp.api.impl; | |||||
| import java.util.Arrays; | import java.util.Arrays; | ||||
| import java.util.concurrent.locks.Lock; | import java.util.concurrent.locks.Lock; | ||||
| import me.chanjar.weixin.mp.bean.card.*; | |||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| @@ -23,7 +22,12 @@ import me.chanjar.weixin.common.util.crypto.SHA1; | |||||
| import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor; | import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor; | ||||
| import me.chanjar.weixin.mp.api.WxMpCardService; | import me.chanjar.weixin.mp.api.WxMpCardService; | ||||
| import me.chanjar.weixin.mp.api.WxMpService; | import me.chanjar.weixin.mp.api.WxMpService; | ||||
| import me.chanjar.weixin.mp.bean.result.WxMpCardResult; | |||||
| import me.chanjar.weixin.mp.bean.card.WxMpCardCreateMessage; | |||||
| import me.chanjar.weixin.mp.bean.card.WxMpCardCreateResult; | |||||
| import me.chanjar.weixin.mp.bean.card.WxMpCardLandingPageCreateRequest; | |||||
| import me.chanjar.weixin.mp.bean.card.WxMpCardLandingPageCreateResult; | |||||
| import me.chanjar.weixin.mp.bean.card.WxMpCardQrcodeCreateResult; | |||||
| import me.chanjar.weixin.mp.bean.card.WxMpCardResult; | |||||
| import me.chanjar.weixin.mp.enums.TicketType; | import me.chanjar.weixin.mp.enums.TicketType; | ||||
| import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | ||||
| @@ -148,14 +152,6 @@ public class WxMpCardServiceImpl implements WxMpCardService { | |||||
| return jsonPrimitive.getAsString(); | return jsonPrimitive.getAsString(); | ||||
| } | } | ||||
| /** | |||||
| * 卡券Code查询. | |||||
| * | |||||
| * @param cardId 卡券ID代表一类卡券 | |||||
| * @param code 单张卡券的唯一标准 | |||||
| * @param checkConsume 是否校验code核销状态,填入true和false时的code异常状态返回数据不同 | |||||
| * @return WxMpCardResult对象 | |||||
| */ | |||||
| @Override | @Override | ||||
| public WxMpCardResult queryCardCode(String cardId, String code, boolean checkConsume) throws WxErrorException { | public WxMpCardResult queryCardCode(String cardId, String code, boolean checkConsume) throws WxErrorException { | ||||
| JsonObject param = new JsonObject(); | JsonObject param = new JsonObject(); | ||||
| @@ -1,17 +1,19 @@ | |||||
| package me.chanjar.weixin.mp.bean.card; | package me.chanjar.weixin.mp.bean.card; | ||||
| import java.io.Serializable; | |||||
| import com.google.gson.annotations.SerializedName; | import com.google.gson.annotations.SerializedName; | ||||
| import lombok.Data; | import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | |||||
| import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | ||||
| import java.io.Serializable; | |||||
| /** | /** | ||||
| * . | * . | ||||
| * @author leeis | * @author leeis | ||||
| * @Date 2018/12/29 | * @Date 2018/12/29 | ||||
| */ | */ | ||||
| @Data | @Data | ||||
| @EqualsAndHashCode(callSuper = false) | |||||
| public final class GrouponCard extends Card implements Serializable { | public final class GrouponCard extends Card implements Serializable { | ||||
| private static final long serialVersionUID = 3221312561666697005L; | private static final long serialVersionUID = 3221312561666697005L; | ||||
| @@ -1,4 +1,4 @@ | |||||
| package me.chanjar.weixin.mp.bean; | |||||
| package me.chanjar.weixin.mp.bean.card; | |||||
| import java.io.Serializable; | import java.io.Serializable; | ||||
| @@ -24,7 +24,11 @@ public class WxMpCard implements Serializable { | |||||
| private String userCardStatus; | private String userCardStatus; | ||||
| private Boolean canConsume; | |||||
| private String membershipNumber; | |||||
| private String code; | |||||
| private Integer bonus; | |||||
| @Override | @Override | ||||
| public String toString() { | public String toString() { | ||||
| @@ -1,9 +1,8 @@ | |||||
| package me.chanjar.weixin.mp.bean.result; | |||||
| package me.chanjar.weixin.mp.bean.card; | |||||
| import java.io.Serializable; | import java.io.Serializable; | ||||
| import lombok.Data; | import lombok.Data; | ||||
| import me.chanjar.weixin.mp.bean.WxMpCard; | |||||
| import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | ||||
| /** | /** | ||||
| @@ -28,6 +27,12 @@ public class WxMpCardResult implements Serializable { | |||||
| private Boolean canConsume; | private Boolean canConsume; | ||||
| private String outStr; | |||||
| private String backgroundPicUrl; | |||||
| private String unionid; | |||||
| @Override | @Override | ||||
| public String toString() { | public String toString() { | ||||
| return WxMpGsonBuilder.create().toJson(this); | return WxMpGsonBuilder.create().toJson(this); | ||||
| @@ -1,11 +1,15 @@ | |||||
| package me.chanjar.weixin.mp.util.json; | 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.WxMpCard; | |||||
| import java.lang.reflect.Type; | import java.lang.reflect.Type; | ||||
| import com.google.gson.JsonDeserializationContext; | |||||
| import com.google.gson.JsonDeserializer; | |||||
| import com.google.gson.JsonElement; | |||||
| import com.google.gson.JsonObject; | |||||
| import com.google.gson.JsonParseException; | |||||
| import me.chanjar.weixin.common.util.json.GsonHelper; | |||||
| import me.chanjar.weixin.mp.bean.card.WxMpCard; | |||||
| /** | /** | ||||
| * Created by YuJian on 15/11/11. | * Created by YuJian on 15/11/11. | ||||
| * | * | ||||
| @@ -18,11 +22,16 @@ public class WxMpCardGsonAdapter implements JsonDeserializer<WxMpCard> { | |||||
| public WxMpCard deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext | public WxMpCard deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext | ||||
| jsonDeserializationContext) throws JsonParseException { | jsonDeserializationContext) throws JsonParseException { | ||||
| WxMpCard card = new WxMpCard(); | WxMpCard card = new WxMpCard(); | ||||
| JsonObject jsonObject = jsonElement.getAsJsonObject(); | JsonObject jsonObject = jsonElement.getAsJsonObject(); | ||||
| card.setCardId(GsonHelper.getString(jsonObject, "card_id")); | card.setCardId(GsonHelper.getString(jsonObject, "card_id")); | ||||
| card.setBeginTime(GsonHelper.getLong(jsonObject, "begin_time")); | card.setBeginTime(GsonHelper.getLong(jsonObject, "begin_time")); | ||||
| card.setEndTime(GsonHelper.getLong(jsonObject, "end_time")); | card.setEndTime(GsonHelper.getLong(jsonObject, "end_time")); | ||||
| card.setUserCardStatus(GsonHelper.getString(jsonObject, "user_card_status")); | |||||
| card.setMembershipNumber(GsonHelper.getString(jsonObject, "membership_number")); | |||||
| card.setCode(GsonHelper.getString(jsonObject, "code")); | |||||
| card.setBonus(GsonHelper.getInteger(jsonObject, "bonus")); | |||||
| return card; | return card; | ||||
| } | } | ||||
| @@ -1,12 +1,16 @@ | |||||
| package me.chanjar.weixin.mp.util.json; | package me.chanjar.weixin.mp.util.json; | ||||
| import com.google.gson.*; | |||||
| import java.lang.reflect.Type; | |||||
| import com.google.gson.JsonDeserializationContext; | |||||
| import com.google.gson.JsonDeserializer; | |||||
| import com.google.gson.JsonElement; | |||||
| import com.google.gson.JsonObject; | |||||
| import com.google.gson.JsonParseException; | |||||
| import com.google.gson.reflect.TypeToken; | import com.google.gson.reflect.TypeToken; | ||||
| import me.chanjar.weixin.common.util.json.GsonHelper; | import me.chanjar.weixin.common.util.json.GsonHelper; | ||||
| import me.chanjar.weixin.mp.bean.WxMpCard; | |||||
| import me.chanjar.weixin.mp.bean.result.WxMpCardResult; | |||||
| import java.lang.reflect.Type; | |||||
| import me.chanjar.weixin.mp.bean.card.WxMpCard; | |||||
| import me.chanjar.weixin.mp.bean.card.WxMpCardResult; | |||||
| /** | /** | ||||
| * Created by YuJian on 15/11/11. | * Created by YuJian on 15/11/11. | ||||
| @@ -18,6 +22,7 @@ public class WxMpCardResultGsonAdapter implements JsonDeserializer<WxMpCardResul | |||||
| @Override | @Override | ||||
| public WxMpCardResult deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { | public WxMpCardResult deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { | ||||
| WxMpCardResult cardResult = new WxMpCardResult(); | WxMpCardResult cardResult = new WxMpCardResult(); | ||||
| JsonObject jsonObject = jsonElement.getAsJsonObject(); | JsonObject jsonObject = jsonElement.getAsJsonObject(); | ||||
| cardResult.setOpenId(GsonHelper.getString(jsonObject, "openid")); | cardResult.setOpenId(GsonHelper.getString(jsonObject, "openid")); | ||||
| @@ -25,6 +30,9 @@ public class WxMpCardResultGsonAdapter implements JsonDeserializer<WxMpCardResul | |||||
| cardResult.setErrorMsg(GsonHelper.getString(jsonObject, "errmsg")); | cardResult.setErrorMsg(GsonHelper.getString(jsonObject, "errmsg")); | ||||
| cardResult.setCanConsume(GsonHelper.getBoolean(jsonObject, "can_consume")); | cardResult.setCanConsume(GsonHelper.getBoolean(jsonObject, "can_consume")); | ||||
| cardResult.setUserCardStatus(GsonHelper.getString(jsonObject, "user_card_status")); | cardResult.setUserCardStatus(GsonHelper.getString(jsonObject, "user_card_status")); | ||||
| cardResult.setOutStr(GsonHelper.getString(jsonObject, "outer_str")); | |||||
| cardResult.setBackgroundPicUrl(GsonHelper.getString(jsonObject, "background_pic_url")); | |||||
| cardResult.setUnionid(GsonHelper.getString(jsonObject, "unionid")); | |||||
| WxMpCard card = WxMpGsonBuilder.create().fromJson(jsonObject.get("card"), | WxMpCard card = WxMpGsonBuilder.create().fromJson(jsonObject.get("card"), | ||||
| new TypeToken<WxMpCard>() { | new TypeToken<WxMpCard>() { | ||||
| @@ -3,6 +3,8 @@ package me.chanjar.weixin.mp.util.json; | |||||
| import com.google.gson.Gson; | import com.google.gson.Gson; | ||||
| import com.google.gson.GsonBuilder; | import com.google.gson.GsonBuilder; | ||||
| import me.chanjar.weixin.mp.bean.*; | import me.chanjar.weixin.mp.bean.*; | ||||
| import me.chanjar.weixin.mp.bean.card.WxMpCard; | |||||
| import me.chanjar.weixin.mp.bean.card.WxMpCardResult; | |||||
| 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; | ||||
| @@ -1,13 +1,27 @@ | |||||
| package me.chanjar.weixin.mp.api.impl; | package me.chanjar.weixin.mp.api.impl; | ||||
| import org.testng.annotations.*; | |||||
| import com.google.inject.Inject; | import com.google.inject.Inject; | ||||
| import me.chanjar.weixin.common.bean.WxCardApiSignature; | import me.chanjar.weixin.common.bean.WxCardApiSignature; | ||||
| import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||
| import me.chanjar.weixin.mp.api.WxMpService; | import me.chanjar.weixin.mp.api.WxMpService; | ||||
| import me.chanjar.weixin.mp.api.test.ApiTestModule; | import me.chanjar.weixin.mp.api.test.ApiTestModule; | ||||
| import me.chanjar.weixin.mp.bean.card.*; | |||||
| import me.chanjar.weixin.mp.bean.result.WxMpCardResult; | |||||
| import org.testng.annotations.*; | |||||
| import me.chanjar.weixin.mp.bean.card.BaseInfo; | |||||
| import me.chanjar.weixin.mp.bean.card.CashCard; | |||||
| import me.chanjar.weixin.mp.bean.card.CashCardCreateRequest; | |||||
| import me.chanjar.weixin.mp.bean.card.DateInfo; | |||||
| import me.chanjar.weixin.mp.bean.card.DiscountCard; | |||||
| import me.chanjar.weixin.mp.bean.card.DiscountCardCreateRequest; | |||||
| import me.chanjar.weixin.mp.bean.card.GeneralCard; | |||||
| import me.chanjar.weixin.mp.bean.card.GeneralCardCreateRequest; | |||||
| import me.chanjar.weixin.mp.bean.card.GiftCard; | |||||
| import me.chanjar.weixin.mp.bean.card.GiftCardCreateRequest; | |||||
| import me.chanjar.weixin.mp.bean.card.GrouponCard; | |||||
| import me.chanjar.weixin.mp.bean.card.GrouponCardCreateRequest; | |||||
| import me.chanjar.weixin.mp.bean.card.Sku; | |||||
| import me.chanjar.weixin.mp.bean.card.WxMpCardCreateMessage; | |||||
| import me.chanjar.weixin.mp.bean.card.WxMpCardResult; | |||||
| import static org.testng.AssertJUnit.*; | import static org.testng.AssertJUnit.*; | ||||