浏览代码

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

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

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

* 设置对象返回类型。

* 增加卡券相关事件及xml消息解析
yuanqixun 6 年之前
父节点
当前提交
a8bac131fa
共有 19 个文件被更改,包括 537 次插入17 次删除
  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/BusinessServiceType.java
  12. 1 1
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/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/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/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

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

@@ -146,6 +146,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 货架创建参数
    * @return

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

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

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

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

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

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

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

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

@@ -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 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BusinessServiceType.java

@@ -1,4 +1,4 @@
-package me.chanjar.weixin.mp.bean.card;
+package me.chanjar.weixin.mp.bean.card.enums;
 
 /**
  * 商户提供服务类型

+ 1 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/CardColor.java

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

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

@@ -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 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/CardSceneType.java

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

@@ -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 - 1
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/DateInfoType.java

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

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

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