* 增加微信激活会员卡,设置用户资料字段接口实现。 * 增加创建卡券二维码的失效时间参数接口。 * 设置对象返回类型。 * 增加卡券相关事件及xml消息解析master
@@ -82,7 +82,7 @@ public class WxConsts { | |||
/** | |||
* 小程序卡片(要求小程序与公众号已关联) | |||
*/ | |||
public static final String MINIPROGRAMPAGE="miniprogrampage"; | |||
public static final String MINIPROGRAMPAGE = "miniprogrampage"; | |||
} | |||
/** | |||
@@ -181,6 +181,76 @@ public class WxConsts { | |||
* 微信小店 订单付款通知. | |||
*/ | |||
public static final String MERCHANT_ORDER = "merchant_order"; | |||
/** | |||
* 卡券事件:卡券通过审核 | |||
*/ | |||
public static final String CARD_PASS_CHECK = "card_pass_check"; | |||
/** | |||
* 卡券事件:卡券未通过审核 | |||
*/ | |||
public static final String CARD_NOT_PASS_CHECK = "card_not_pass_check"; | |||
/** | |||
* 卡券事件:用户领取卡券 | |||
*/ | |||
public static final String CARD_USER_GET_CARD = "user_get_card"; | |||
/** | |||
* 卡券事件:用户转赠卡券 | |||
*/ | |||
public static final String CARD_USER_GIFTING_CARD = "user_gifting_card"; | |||
/** | |||
* 卡券事件:用户核销卡券 | |||
*/ | |||
public static final String CARD_USER_CONSUME_CARD = "user_consume_card"; | |||
/** | |||
* 卡券事件:用户通过卡券的微信买单完成时推送 | |||
*/ | |||
public static final String CARD_USER_PAY_FROM_PAY_CELL = "user_pay_from_pay_cell"; | |||
/** | |||
* 卡券事件:用户提交会员卡开卡信息 | |||
*/ | |||
public static final String CARD_SUBMIT_MEMBERCARD_USER_INFO = "submit_membercard_user_info"; | |||
/** | |||
* 卡券事件:用户打开查看卡券 | |||
*/ | |||
public static final String CARD_USER_VIEW_CARD = "user_view_card"; | |||
/** | |||
* 卡券事件:用户删除卡券 | |||
*/ | |||
public static final String CARD_USER_DEL_CARD = "user_del_card"; | |||
/** | |||
* 卡券事件:用户在卡券里点击查看公众号进入会话时(需要用户已经关注公众号) | |||
*/ | |||
public static final String CARD_USER_ENTER_SESSION_FROM_CARD = "user_enter_session_from_card"; | |||
/** | |||
* 卡券事件:当用户的会员卡积分余额发生变动时 | |||
*/ | |||
public static final String CARD_UPDATE_MEMBER_CARD = "update_member_card"; | |||
/** | |||
* 卡券事件:当某个card_id的初始库存数大于200且当前库存小于等于100时,用户尝试领券会触发发送事件给商户,事件每隔12h发送一次 | |||
*/ | |||
public static final String CARD_SKU_REMIND = "card_sku_remind"; | |||
/** | |||
* 卡券事件:当商户朋友的券券点发生变动时 | |||
*/ | |||
public static final String CARD_PAY_ORDER = "card_pay_order"; | |||
} | |||
/** | |||
@@ -280,4 +350,5 @@ public class WxConsts { | |||
public static final String IMAGE = "image"; | |||
public static final String VIDEO = "video"; | |||
} | |||
} |
@@ -145,6 +145,15 @@ public interface WxMpCardService { | |||
*/ | |||
WxMpCardQrcodeCreateResult createQrcodeCard(String cardId, String outerStr) throws WxErrorException; | |||
/** | |||
* 创建卡券二维码 | |||
* @param cardId 卡券编号 | |||
* @param outerStr 二维码标识 | |||
* @param expiresIn 失效时间,单位秒,不填默认365天 | |||
* @return WxMpCardQrcodeCreateResult | |||
*/ | |||
WxMpCardQrcodeCreateResult createQrcodeCard(String cardId, String outerStr,int expiresIn) throws WxErrorException; | |||
/** | |||
* 创建卡券货架 | |||
* @param createRequest 货架创建参数 | |||
@@ -1,17 +1,28 @@ | |||
package me.chanjar.weixin.mp.api; | |||
import me.chanjar.weixin.common.error.WxErrorException; | |||
import me.chanjar.weixin.mp.bean.card.MemberCardActivateUserFormRequest; | |||
import me.chanjar.weixin.mp.bean.card.MemberCardActivateUserFormResult; | |||
import me.chanjar.weixin.mp.bean.card.WxMpCardCreateResult; | |||
import me.chanjar.weixin.mp.bean.card.WxMpCardQrcodeCreateResult; | |||
import me.chanjar.weixin.mp.bean.membercard.*; | |||
/** | |||
* 会员卡相关接口 | |||
* | |||
* @author YuJian(mgcnrx11@gmail.com) | |||
* @author YuJian(mgcnrx11 @ gmail.com) | |||
* @author yuanqixun | |||
* @version 2017/7/8 | |||
* @date 2018-08-30 | |||
*/ | |||
public interface WxMpMemberCardService { | |||
String MEMBER_CARD_CREAET = "https://api.weixin.qq.com/card/create"; | |||
String MEMBER_CARD_ACTIVATE = "https://api.weixin.qq.com/card/membercard/activate"; | |||
String MEMBER_CARD_USER_INFO_GET = "https://api.weixin.qq.com/card/membercard/userinfo/get"; | |||
String MEMBER_CARD_UPDATE_USER = "https://api.weixin.qq.com/card/membercard/updateuser"; | |||
/** | |||
* 会员卡激活之微信开卡接口(wx_activate=true情况调用) | |||
*/ | |||
String MEMBER_CARD_ACTIVATEUSERFORM = "https://api.weixin.qq.com/card/membercard/activateuserform/set"; | |||
/** | |||
* 得到WxMpService | |||
@@ -20,6 +31,7 @@ public interface WxMpMemberCardService { | |||
/** | |||
* 会员卡创建接口 | |||
* | |||
* @param createJson | |||
* @return | |||
* @throws WxErrorException | |||
@@ -28,6 +40,7 @@ public interface WxMpMemberCardService { | |||
/** | |||
* 会员卡创建接口 | |||
* | |||
* @param createMessageMessage | |||
* @return WxMpCardCreateResult | |||
* @throws WxErrorException | |||
@@ -47,7 +60,7 @@ public interface WxMpMemberCardService { | |||
* 拉取会员信息接口 | |||
* | |||
* @param cardId 会员卡的CardId,微信分配 | |||
* @param code 领取会员的会员卡Code | |||
* @param code 领取会员的会员卡Code | |||
* @return 会员信息的结果对象 | |||
* @throws WxErrorException 接口调用失败抛出的异常 | |||
*/ | |||
@@ -55,7 +68,7 @@ public interface WxMpMemberCardService { | |||
/** | |||
* 当会员持卡消费后,支持开发者调用该接口更新会员信息。会员卡交易后的每次信息变更需通过该接口通知微信,便于后续消息通知及其他扩展功能。 | |||
* | |||
* <p> | |||
* 1.开发者可以同时传入add_bonus和bonus解决由于同步失败带来的幂等性问题。同时传入add_bonus和bonus时 | |||
* add_bonus作为积分变动消息中的变量值,而bonus作为卡面上的总积分额度显示。余额变动同理。 | |||
* 2.开发者可以传入is_notify_bonus控制特殊的积分对账变动不发送消息,余额变动同理。 | |||
@@ -66,4 +79,13 @@ public interface WxMpMemberCardService { | |||
*/ | |||
WxMpMemberCardUpdateResult updateUserMemberCard(WxMpMemberCardUpdateMessage updateUserMessage) throws WxErrorException; | |||
/** | |||
* 设置会员卡激活的字段(会员卡设置:wx_activate=true 时需要) | |||
* | |||
* @param userFormRequest | |||
* @return | |||
* @throws WxErrorException | |||
*/ | |||
MemberCardActivateUserFormResult setActivateUserForm(MemberCardActivateUserFormRequest userFormRequest) throws WxErrorException; | |||
} |
@@ -256,14 +256,29 @@ public class WxMpCardServiceImpl implements WxMpCardService { | |||
/** | |||
* 创建卡券二维码 | |||
* | |||
* @param cardId | |||
* @param outerStr | |||
* @return | |||
*/ | |||
public WxMpCardQrcodeCreateResult createQrcodeCard(String cardId, String outerStr) throws WxErrorException { | |||
return createQrcodeCard(cardId, outerStr, 0); | |||
} | |||
/** | |||
* 创建卡券二维码 | |||
* @param cardId 卡券编号 | |||
* @param outerStr 二维码标识 | |||
* @param expiresIn 失效时间,单位秒,不填默认365天 | |||
* @return | |||
* @throws WxErrorException | |||
*/ | |||
public WxMpCardQrcodeCreateResult createQrcodeCard(String cardId, String outerStr, int expiresIn) throws WxErrorException { | |||
JsonObject jsonObject = new JsonObject(); | |||
jsonObject.addProperty("action_name", "QR_CARD"); | |||
jsonObject.addProperty("expire_seconds", 1800); | |||
if (expiresIn > 0) { | |||
jsonObject.addProperty("expire_seconds", expiresIn); | |||
} | |||
JsonObject actionInfoJson = new JsonObject(); | |||
JsonObject cardJson = new JsonObject(); | |||
cardJson.addProperty("card_id", cardId); | |||
@@ -276,13 +291,14 @@ public class WxMpCardServiceImpl implements WxMpCardService { | |||
/** | |||
* 创建卡券货架接口 | |||
* | |||
* @param request | |||
* @return | |||
* @throws WxErrorException | |||
*/ | |||
@Override | |||
public WxMpCardLandingPageCreateResult createLandingPage(WxMpCardLandingPageCreateRequest request) throws WxErrorException { | |||
String response = this.wxMpService.post(CARD_LANDING_PAGE_CREAET,GSON.toJson(request)); | |||
String response = this.wxMpService.post(CARD_LANDING_PAGE_CREAET, GSON.toJson(request)); | |||
return WxMpCardLandingPageCreateResult.fromJson(response); | |||
} | |||
} |
@@ -1,12 +1,18 @@ | |||
package me.chanjar.weixin.mp.api.impl; | |||
import com.google.gson.*; | |||
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.error.WxErrorException; | |||
import me.chanjar.weixin.common.util.json.WxGsonBuilder; | |||
import me.chanjar.weixin.mp.api.WxMpMemberCardService; | |||
import me.chanjar.weixin.mp.api.WxMpService; | |||
import me.chanjar.weixin.mp.bean.card.*; | |||
import me.chanjar.weixin.mp.bean.card.enums.BusinessServiceType; | |||
import me.chanjar.weixin.mp.bean.card.enums.CardColor; | |||
import me.chanjar.weixin.mp.bean.card.enums.DateInfoType; | |||
import me.chanjar.weixin.mp.bean.membercard.*; | |||
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | |||
import org.apache.commons.lang3.StringUtils; | |||
@@ -23,11 +29,6 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { | |||
private final Logger log = LoggerFactory.getLogger(WxMpMemberCardServiceImpl.class); | |||
private static final String MEMBER_CARD_CREAET = "https://api.weixin.qq.com/card/create"; | |||
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 static final String MEMBER_CARD_UPDATE_USER = "https://api.weixin.qq.com/card/membercard/updateuser"; | |||
private WxMpService wxMpService; | |||
private static final Gson GSON = new Gson(); | |||
@@ -265,4 +266,17 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { | |||
}.getType()); | |||
} | |||
/** | |||
* 设置会员卡激活的字段(会员卡设置:wx_activate=true 时需要) | |||
* | |||
* @param userFormRequest | |||
* @return | |||
* @throws WxErrorException | |||
*/ | |||
@Override | |||
public MemberCardActivateUserFormResult setActivateUserForm(MemberCardActivateUserFormRequest userFormRequest) throws WxErrorException { | |||
String responseContent = this.getWxMpService().post(MEMBER_CARD_ACTIVATEUSERFORM, GSON.toJson(userFormRequest)); | |||
return MemberCardActivateUserFormResult.fromJson(responseContent); | |||
} | |||
} |
@@ -2,6 +2,7 @@ package me.chanjar.weixin.mp.bean.card; | |||
import com.google.gson.annotations.SerializedName; | |||
import lombok.Data; | |||
import me.chanjar.weixin.mp.bean.card.enums.BusinessServiceType; | |||
import org.apache.commons.lang3.builder.ToStringBuilder; | |||
import org.apache.commons.lang3.builder.ToStringStyle; | |||
@@ -0,0 +1,70 @@ | |||
package me.chanjar.weixin.mp.bean.card; | |||
import com.google.gson.JsonObject; | |||
import com.google.gson.annotations.SerializedName; | |||
import lombok.Data; | |||
import org.apache.commons.lang3.StringUtils; | |||
import java.io.Serializable; | |||
/** | |||
* 会员卡激活,用户字段提交请求 | |||
* | |||
* @author yuanqixun | |||
* @date 2018-08-30 | |||
*/ | |||
@Data | |||
public class MemberCardActivateUserFormRequest implements Serializable { | |||
@SerializedName("card_id") | |||
private String cardId; | |||
@SerializedName("service_statement") | |||
private JsonObject serviceStatement; | |||
@SerializedName("bind_old_card") | |||
private JsonObject bindOldCard; | |||
/** | |||
* 必填项 | |||
*/ | |||
@SerializedName("required_form") | |||
private MemberCardUserForm requiredForm; | |||
/** | |||
* 可选项 | |||
*/ | |||
@SerializedName("optional_form") | |||
private MemberCardUserForm optionalForm; | |||
/** | |||
* 绑定老会员卡信息 | |||
* | |||
* @param name | |||
* @param url | |||
*/ | |||
public void setBindOldCard(String name, String url) { | |||
if (StringUtils.isAnyEmpty(name, url)) { | |||
return; | |||
} | |||
if (bindOldCard == null) | |||
bindOldCard = new JsonObject(); | |||
bindOldCard.addProperty("name", name); | |||
bindOldCard.addProperty("url", url); | |||
} | |||
/** | |||
* 设置服务声明,用于放置商户会员卡守则 | |||
* | |||
* @param name | |||
* @param url | |||
*/ | |||
public void setServiceStatement(String name, String url) { | |||
if (StringUtils.isAnyEmpty(name, url)) { | |||
return; | |||
} | |||
if (serviceStatement == null) | |||
serviceStatement = new JsonObject(); | |||
serviceStatement.addProperty("name", name); | |||
serviceStatement.addProperty("url", url); | |||
} | |||
} |
@@ -0,0 +1,29 @@ | |||
package me.chanjar.weixin.mp.bean.card; | |||
import lombok.Data; | |||
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | |||
import org.apache.commons.lang3.builder.ToStringBuilder; | |||
import org.apache.commons.lang3.builder.ToStringStyle; | |||
import java.io.Serializable; | |||
@Data | |||
public class MemberCardActivateUserFormResult implements Serializable { | |||
private Integer errcode; | |||
private String errmsg; | |||
public boolean isSuccess() { | |||
return 0 == errcode; | |||
} | |||
public static MemberCardActivateUserFormResult fromJson(String json) { | |||
return WxMpGsonBuilder.create().fromJson(json, MemberCardActivateUserFormResult.class); | |||
} | |||
@Override | |||
public String toString() { | |||
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); | |||
} | |||
} | |||
@@ -0,0 +1,92 @@ | |||
package me.chanjar.weixin.mp.bean.card; | |||
import com.google.gson.annotations.SerializedName; | |||
import lombok.Data; | |||
import me.chanjar.weixin.mp.bean.card.enums.CardWechatFieldType; | |||
import org.apache.commons.lang3.StringUtils; | |||
import org.apache.commons.lang3.builder.ToStringBuilder; | |||
import org.apache.commons.lang3.builder.ToStringStyle; | |||
import java.io.Serializable; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
/** | |||
* 用户表单对象 | |||
* | |||
* @author yuanqixun | |||
* @date 2018-08-30 | |||
*/ | |||
@Data | |||
public class MemberCardUserForm implements Serializable { | |||
/** | |||
* 当前结构(required_form或者optional_form )内的字段是否允许用户激活后再次修改, | |||
* 商户设置为true 时,需要接收相应事件通知处理修改事件 | |||
*/ | |||
@SerializedName("can_modify") | |||
private boolean canModify; | |||
/** | |||
* 富文本类型字段列表 | |||
*/ | |||
@SerializedName("rich_field_list") | |||
List<MemberCardUserFormRichField> richFieldList; | |||
/** | |||
* 文本选项类型列表 | |||
*/ | |||
@SerializedName("custom_field_list") | |||
private List<String> customFieldList; | |||
/** | |||
* 微信格式化的选项类型 | |||
*/ | |||
@SerializedName("common_field_id_list") | |||
private List<String> wechatFieldIdList; | |||
/** | |||
* 添加富文本类型字段 | |||
* | |||
* @param fieldType | |||
*/ | |||
public void addRichField(MemberCardUserFormRichField field) { | |||
if (field == null) | |||
return; | |||
if (richFieldList == null) | |||
richFieldList = new ArrayList<>(); | |||
richFieldList.add(field); | |||
} | |||
/** | |||
* 添加微信选项类型字段 | |||
* | |||
* @param fieldType | |||
*/ | |||
public void addWechatField(CardWechatFieldType fieldType) { | |||
if (fieldType == null) | |||
return; | |||
if (wechatFieldIdList == null) | |||
wechatFieldIdList = new ArrayList<>(); | |||
wechatFieldIdList.add(fieldType.name()); | |||
} | |||
/** | |||
* 添加文本类型字段 | |||
* | |||
* @param fieldType | |||
*/ | |||
public void addCustomField(String field) { | |||
if (StringUtils.isBlank(field)) | |||
return; | |||
if (customFieldList == null) | |||
customFieldList = new ArrayList<>(); | |||
customFieldList.add(field); | |||
} | |||
public String toString() { | |||
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); | |||
} | |||
} |
@@ -0,0 +1,42 @@ | |||
package me.chanjar.weixin.mp.bean.card; | |||
import com.google.gson.annotations.SerializedName; | |||
import lombok.Data; | |||
import me.chanjar.weixin.mp.bean.card.enums.CardRichFieldType; | |||
import org.apache.commons.lang3.builder.ToStringBuilder; | |||
import org.apache.commons.lang3.builder.ToStringStyle; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
/** | |||
* 富文本字段 | |||
* | |||
* @author yuanqixun | |||
* @date 2018-08-30 | |||
*/ | |||
@Data | |||
public class MemberCardUserFormRichField { | |||
/** | |||
* 富文本类型 | |||
*/ | |||
@SerializedName("type") | |||
private CardRichFieldType type; | |||
@SerializedName("name") | |||
private String name; | |||
@SerializedName("values") | |||
private List<String> valueList; | |||
public void add(String value) { | |||
if (valueList == null) | |||
valueList = new ArrayList<String>(); | |||
valueList.add(value); | |||
} | |||
public String toString() { | |||
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); | |||
} | |||
} |
@@ -1,4 +1,4 @@ | |||
package me.chanjar.weixin.mp.bean.card; | |||
package me.chanjar.weixin.mp.bean.card.enums; | |||
/** | |||
* 商户提供服务类型 |
@@ -1,4 +1,4 @@ | |||
package me.chanjar.weixin.mp.bean.card; | |||
package me.chanjar.weixin.mp.bean.card.enums; | |||
/** | |||
* 会员卡颜色 |
@@ -0,0 +1,23 @@ | |||
package me.chanjar.weixin.mp.bean.card.enums; | |||
/** | |||
* 微信卡券激活字段类型 | |||
* | |||
* @author yuanqixun | |||
* @date 2018-08-30 | |||
*/ | |||
public enum CardFieldType { | |||
COMMON_FIELD("微信选项"), | |||
CUSTOM_FIELD("自定义选项"), | |||
RICH_FIELD("自定义富文本类型"); | |||
private String description; | |||
CardFieldType(String description) { | |||
this.description = description; | |||
} | |||
public String getDescription() { | |||
return description; | |||
} | |||
} |
@@ -0,0 +1,23 @@ | |||
package me.chanjar.weixin.mp.bean.card.enums; | |||
/** | |||
* 会员卡富文本字段类型 | |||
* | |||
* @author yuanqixun | |||
* @date 2018-08-30 | |||
*/ | |||
public enum CardRichFieldType { | |||
FORM_FIELD_RADIO("自定义单选"), | |||
FORM_FIELD_SELECT("自定义选择项"), | |||
FORM_FIELD_CHECK_BOX("自定义多选"); | |||
private String description; | |||
CardRichFieldType(String description) { | |||
this.description = description; | |||
} | |||
public String getDescription() { | |||
return description; | |||
} | |||
} |
@@ -1,4 +1,4 @@ | |||
package me.chanjar.weixin.mp.bean.card; | |||
package me.chanjar.weixin.mp.bean.card.enums; | |||
public enum CardSceneType { | |||
SCENE_NEAR_BY("附近"), |
@@ -0,0 +1,31 @@ | |||
package me.chanjar.weixin.mp.bean.card.enums; | |||
/** | |||
* 微信卡券激活字段类型 | |||
* | |||
* @author yuanqixun | |||
* @date 2018-08-30 | |||
*/ | |||
public enum CardWechatFieldType { | |||
USER_FORM_INFO_FLAG_MOBILE("手机号"), | |||
USER_FORM_INFO_FLAG_SEX("性别"), | |||
USER_FORM_INFO_FLAG_NAME("姓名"), | |||
USER_FORM_INFO_FLAG_BIRTHDAY("生日"), | |||
USER_FORM_INFO_FLAG_IDCARD("身份证"), | |||
USER_FORM_INFO_FLAG_EMAIL("邮箱"), | |||
USER_FORM_INFO_FLAG_LOCATION("详细地址"), | |||
USER_FORM_INFO_FLAG_EDUCATION_BACKGRO("教育背景"), | |||
USER_FORM_INFO_FLAG_INDUSTRY("行业"), | |||
USER_FORM_INFO_FLAG_INCOME("收入"), | |||
USER_FORM_INFO_FLAG_HABIT("兴趣爱好"); | |||
private String description; | |||
CardWechatFieldType(String description) { | |||
this.description = description; | |||
} | |||
public String getDescription() { | |||
return description; | |||
} | |||
} |
@@ -1,4 +1,4 @@ | |||
package me.chanjar.weixin.mp.bean.card; | |||
package me.chanjar.weixin.mp.bean.card.enums; | |||
public enum DateInfoType { | |||
DATE_TYPE_PERMANENT("永久有效类型"), |
@@ -342,6 +342,82 @@ public class WxMpXmlMessage implements Serializable { | |||
@XStreamAlias("SendLocationInfo") | |||
private SendLocationInfo sendLocationInfo = new SendLocationInfo(); | |||
/** | |||
* 审核不通过原因 | |||
*/ | |||
@XStreamAlias("RefuseReason") | |||
private String refuseReason; | |||
/** | |||
* 是否为朋友推荐,0代表否,1代表是 | |||
*/ | |||
@XStreamAlias("IsRecommendByFriend") | |||
private String isRecommendByFriend; | |||
/** | |||
* 购买券点时,实际支付成功的时间 | |||
*/ | |||
@XStreamAlias("PayFinishTime") | |||
private String payFinishTime; | |||
/** | |||
* 购买券点时,支付二维码的生成时间 | |||
*/ | |||
@XStreamAlias("CreateOrderTime") | |||
private String createOrderTime; | |||
/** | |||
* 购买券点时,支付二维码的生成时间 | |||
*/ | |||
@XStreamAlias("Desc") | |||
private String desc; | |||
/** | |||
* 剩余免费券点数量 | |||
*/ | |||
@XStreamAlias("FreeCoinCount") | |||
private String freeCoinCount; | |||
/** | |||
* 剩余付费券点数量 | |||
*/ | |||
@XStreamAlias("PayCoinCount") | |||
private String payCoinCount; | |||
/** | |||
* 本次变动的免费券点数量 | |||
*/ | |||
@XStreamAlias("RefundFreeCoinCount") | |||
private String refundFreeCoinCount; | |||
/** | |||
* 本次变动的付费券点数量 | |||
*/ | |||
@XStreamAlias("RefundPayCoinCount") | |||
private String refundPayCoinCount; | |||
/** | |||
* <pre> | |||
* 所要拉取的订单类型 ORDER_TYPE_SYS_ADD 平台赠送券点 ORDER_TYPE_WXPAY 充值券点 ORDER_TYPE_REFUND 库存未使用回退券点 | |||
* ORDER_TYPE_REDUCE 券点兑换库存 ORDER_TYPE_SYS_REDUCE 平台扣减 | |||
* </pre> | |||
*/ | |||
@XStreamAlias("OrderType") | |||
private String orderType; | |||
/** | |||
* 系统备注,说明此次变动的缘由,如开通账户奖励、门店奖励、核销奖励以及充值、扣减。 | |||
*/ | |||
@XStreamAlias("Memo") | |||
private String memo; | |||
/** | |||
* 所开发票的详情 | |||
*/ | |||
@XStreamAlias("ReceiptInfo") | |||
private String receiptInfo; | |||
/////////////////////////////////////// | |||
// 门店审核事件推送 | |||
/////////////////////////////////////// | |||
@@ -5,6 +5,7 @@ import me.chanjar.weixin.mp.api.WxMpCardService; | |||
import me.chanjar.weixin.mp.api.WxMpService; | |||
import me.chanjar.weixin.mp.api.test.ApiTestModule; | |||
import me.chanjar.weixin.mp.bean.card.*; | |||
import me.chanjar.weixin.mp.bean.card.enums.CardSceneType; | |||
import me.chanjar.weixin.mp.bean.membercard.*; | |||
import org.testng.annotations.Guice; | |||
import org.testng.annotations.Test; | |||