Explorar el Código

#739 增加微信激活会员卡时需要用的设置用户资料的接口

* 增加微信激活会员卡,设置用户资料字段接口实现。

* 增加创建卡券二维码的失效时间参数接口。

* 设置对象返回类型。

* 增加卡券相关事件及xml消息解析
master
yuanqixun hace 6 años
committed by Binary Wang
padre
commit
a8bac131fa
Se han modificado 19 ficheros con 537 adiciones y 17 borrados
  1. +72
    -1
      weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java
  2. +9
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpCardService.java
  3. +26
    -4
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMemberCardService.java
  4. +18
    -2
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImpl.java
  5. +20
    -6
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMemberCardServiceImpl.java
  6. +1
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/AdvancedInfo.java
  7. +70
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardActivateUserFormRequest.java
  8. +29
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardActivateUserFormResult.java
  9. +92
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardUserForm.java
  10. +42
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardUserFormRichField.java
  11. +1
    -1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/BusinessServiceType.java
  12. +1
    -1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/CardColor.java
  13. +23
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/CardFieldType.java
  14. +23
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/CardRichFieldType.java
  15. +1
    -1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/CardSceneType.java
  16. +31
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/CardWechatFieldType.java
  17. +1
    -1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/DateInfoType.java
  18. +76
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlMessage.java
  19. +1
    -0
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMemberCardServiceImplTest.java

+ 72
- 1
weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java Ver fichero

@@ -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";
}

}

+ 9
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpCardService.java Ver fichero

@@ -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 货架创建参数


+ 26
- 4
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMemberCardService.java Ver fichero

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

}

+ 18
- 2
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImpl.java Ver fichero

@@ -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);
}
}

+ 20
- 6
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMemberCardServiceImpl.java Ver fichero

@@ -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);
}

}

+ 1
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/AdvancedInfo.java Ver fichero

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



+ 70
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardActivateUserFormRequest.java Ver fichero

@@ -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);
}
}

+ 29
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardActivateUserFormResult.java Ver fichero

@@ -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);
}

}


+ 92
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardUserForm.java Ver fichero

@@ -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);
}

}

+ 42
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/MemberCardUserFormRichField.java Ver fichero

@@ -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);
}
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BusinessServiceType.java → weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/BusinessServiceType.java Ver fichero

@@ -1,4 +1,4 @@
package me.chanjar.weixin.mp.bean.card;
package me.chanjar.weixin.mp.bean.card.enums;

/**
* 商户提供服务类型

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/CardColor.java → weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/CardColor.java Ver fichero

@@ -1,4 +1,4 @@
package me.chanjar.weixin.mp.bean.card;
package me.chanjar.weixin.mp.bean.card.enums;

/**
* 会员卡颜色

+ 23
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/CardFieldType.java Ver fichero

@@ -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;
}
}

+ 23
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/CardRichFieldType.java Ver fichero

@@ -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;
}
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/CardSceneType.java → weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/CardSceneType.java Ver fichero

@@ -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("附近"),

+ 31
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/CardWechatFieldType.java Ver fichero

@@ -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;
}
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/DateInfoType.java → weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/enums/DateInfoType.java Ver fichero

@@ -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("永久有效类型"),

+ 76
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlMessage.java Ver fichero

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


///////////////////////////////////////
// 门店审核事件推送
///////////////////////////////////////


+ 1
- 0
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMemberCardServiceImplTest.java Ver fichero

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


Cargando…
Cancelar
Guardar