@@ -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.*; | ||||