diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/card/CouponBaseInfo.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/card/CouponBaseInfo.java
index 14b479b9..69c73465 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/card/CouponBaseInfo.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/card/CouponBaseInfo.java
@@ -581,6 +581,23 @@ public class CouponBaseInfo implements Serializable {
return this;
}
+ /**
+ * 设置卡券在领取多少天后有效
+ *
+ * @param days
+ * 表示自领取后多少天内有效,不支持填写0。
+ * @param beginDays
+ * 表示自领取后多少天开始生效,领取后当天生效填写0。(单位为天)
+ * @return
+ */
+ public Builder activeAt(int days, int beginDays) {
+ this.date.clear();
+ this.date.put("type", CardActiveType.DATE_TYPE_FIX_TERM);
+ this.date.put("fixed_term", days);
+ this.date.put("fixed_begin_term", beginDays);
+ return this;
+ }
+
/**
* 设置是否自定义Code码
*
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
index 57357278..cd1cac07 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
@@ -1005,7 +1005,8 @@ public class WeixinProxy {
* 删除群发
* @see com.foxinmy.weixin4j.mp.api.MassApi
* @see {@link #massByGroupId(Tuple, int)}
- * @see {@link #massByOpenIds(Tuple, String...)
+ * @see {@link #massByOpenIds(Tuple, String...)
+
*
*/
public ApiResult deleteMassNews(String msgid) throws WeixinException {
@@ -1570,7 +1571,7 @@ public class WeixinProxy {
* @seee com.foxinmy.weixin4j.msg.event.TemplatesendjobfinishMessage
* @see com.foxinmy.weixin4j.mp.api.TmplApi
*/
- public ApiResult sendTmplMessage(TemplateMessage tplMessage)
+ public String sendTmplMessage(TemplateMessage tplMessage)
throws WeixinException {
return tmplApi.sendTmplMessage(tplMessage);
}
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/CardApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/CardApi.java
index 9d4f17fd..9424eeb4 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/CardApi.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/CardApi.java
@@ -13,9 +13,14 @@ import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.model.card.CardCoupon;
import com.foxinmy.weixin4j.model.card.CardCoupons;
import com.foxinmy.weixin4j.model.card.CardQR;
+import com.foxinmy.weixin4j.model.card.MemberInitInfo;
+import com.foxinmy.weixin4j.model.card.MemberUpdateInfo;
+import com.foxinmy.weixin4j.model.card.MemberUserForm;
+import com.foxinmy.weixin4j.model.card.MemberUserInfo;
import com.foxinmy.weixin4j.model.qr.QRParameter;
import com.foxinmy.weixin4j.model.qr.QRResult;
import com.foxinmy.weixin4j.token.TokenManager;
+import com.foxinmy.weixin4j.type.card.CardStatus;
import com.foxinmy.weixin4j.type.card.CardType;
import com.foxinmy.weixin4j.util.IOUtil;
@@ -191,7 +196,7 @@ public class CardApi extends MpApi {
* @author fengyapeng
* @since 2016 -12-20 11:48:23
*/
- public void getCardStatus(String cardId) throws WeixinException {
+ public CardStatus queryCardStatus(String cardId) throws WeixinException {
JSONObject requestObj = new JSONObject();
requestObj.put("card_id",cardId);
String card_get_uri = getRequestUri("card_get_uri");
@@ -201,7 +206,8 @@ public class CardApi extends MpApi {
JSONObject card = responseAsJson.getJSONObject("card");
String cardType = card.getString("card_type");
JSONObject baseInfo = card.getJSONObject(cardType.toLowerCase()).getJSONObject("base_info");
- baseInfo.get("status");
+ String status = baseInfo.getString("status");
+ return CardStatus.valueOf(status);
}
/**
@@ -230,4 +236,73 @@ public class CardApi extends MpApi {
+
+ /**
+ * 激活方式说明
+ * 接口激活通常需要开发者开发用户填写资料的网页。通常有两种激活流程:
+ * 1. 用户必须在填写资料后才能领卡,领卡后开发者调用激活接口为用户激活会员卡;
+ * 2. 是用户可以先领取会员卡,点击激活会员卡跳转至开发者设置的资料填写页面,填写完成后开发者调用激活接口为用户激活会员卡。
+ *
+ * @see 接口激活
+ */
+ public ApiResult activate(MemberInitInfo memberInitInfo) throws WeixinException {
+ String card_member_card_activate_uri = getRequestUri("card_member_card_activate_uri");
+ Token token = tokenManager.getCache();
+ WeixinResponse response = weixinExecutor
+ .post(String.format(card_member_card_activate_uri, token.getAccessToken()), JSON.toJSONString(memberInitInfo));
+ return response.getAsResult();
+ }
+
+ /**
+ * 设置开卡字段接口
+ * 开发者在创建时填入wx_activate字段后,
+ * 需要调用该接口设置用户激活时需要填写的选项,否则一键开卡设置不生效。
+ *
+ * @see 一键激活
+ */
+ public ApiResult setActivateUserForm(MemberUserForm memberUserForm) throws WeixinException {
+ String user_form_uri = getRequestUri("card_member_card_activate_user_form_uri");
+ Token token = tokenManager.getCache();
+ WeixinResponse response = weixinExecutor
+ .post(String.format(user_form_uri, token.getAccessToken()), JSON.toJSONString(memberUserForm));
+ return response.getAsResult();
+ }
+
+ /**
+ * 拉取会员信息接口。
+ *
+ * @param cardId the card id
+ * @param code the code
+ * @author fengyapeng
+ * @since 2016 -12-21 11:28:45
+ */
+ public MemberUserInfo getMemberUserInfo(String cardId, String code) throws WeixinException {
+ String user_info_uri = getRequestUri("card_member_card_user_info_uri");
+ Token token = tokenManager.getCache();
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("card_id", cardId);
+ jsonObject.put("code", code);
+ WeixinResponse response = weixinExecutor.post(String.format(user_info_uri, token.getAccessToken()), JSON.toJSONString(jsonObject));
+ return response.getAsObject(new TypeReference() {
+ });
+ }
+
+ /**
+ * 更新会员
+ * @param updateInfo
+ * @return
+ * @throws WeixinException
+ */
+ public JSONObject updateUserInfo(MemberUpdateInfo updateInfo) throws WeixinException {
+ String card_member_card_update_user_uri = getRequestUri("card_member_card_update_user_uri");
+ Token token = tokenManager.getCache();
+ WeixinResponse response = weixinExecutor
+ .post(String.format(card_member_card_update_user_uri, token.getAccessToken()), JSON.toJSONString(updateInfo));
+ return response.getAsJson();
+ }
+
+
+
+
+
}
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MemberCardApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MemberCardApi.java
deleted file mode 100644
index c3b2e925..00000000
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MemberCardApi.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package com.foxinmy.weixin4j.mp.api;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.TypeReference;
-import com.foxinmy.weixin4j.exception.WeixinException;
-import com.foxinmy.weixin4j.http.weixin.ApiResult;
-import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
-import com.foxinmy.weixin4j.model.Token;
-import com.foxinmy.weixin4j.model.card.MemberInitInfo;
-import com.foxinmy.weixin4j.model.card.MemberUpdateInfo;
-import com.foxinmy.weixin4j.model.card.MemberUserForm;
-import com.foxinmy.weixin4j.model.card.MemberUserInfo;
-import com.foxinmy.weixin4j.token.TokenManager;
-
-/**
- * 会员卡的api
- *
- * @auther: Feng Yapeng
- * @since: 2016/12/20 14:43
- * @see 创建会员卡&会员卡管理
- */
-public class MemberCardApi extends CardApi {
-
-
- public MemberCardApi(TokenManager tokenManager) {
- super(tokenManager);
- }
-
- /**
- * 激活方式说明
- * 接口激活通常需要开发者开发用户填写资料的网页。通常有两种激活流程:
- * 1. 用户必须在填写资料后才能领卡,领卡后开发者调用激活接口为用户激活会员卡;
- * 2. 是用户可以先领取会员卡,点击激活会员卡跳转至开发者设置的资料填写页面,填写完成后开发者调用激活接口为用户激活会员卡。
- *
- * @see 接口激活
- */
- public ApiResult activate(MemberInitInfo memberInitInfo) throws WeixinException {
- String card_member_card_activate_uri = getRequestUri("card_member_card_activate_uri");
- Token token = tokenManager.getCache();
- WeixinResponse response = weixinExecutor
- .post(String.format(card_member_card_activate_uri, token.getAccessToken()), JSON.toJSONString(memberInitInfo));
- return response.getAsResult();
- }
-
- /**
- * 设置开卡字段接口
- * 开发者在创建时填入wx_activate字段后,
- * 需要调用该接口设置用户激活时需要填写的选项,否则一键开卡设置不生效。
- *
- * @see 一键激活
- */
- public ApiResult setActivateUserForm(MemberUserForm memberUserForm) throws WeixinException {
- String user_form_uri = getRequestUri("card_member_card_activate_user_form_uri");
- Token token = tokenManager.getCache();
- WeixinResponse response = weixinExecutor
- .post(String.format(user_form_uri, token.getAccessToken()), JSON.toJSONString(memberUserForm));
- return response.getAsResult();
- }
-
- /**
- * 拉取会员信息接口。
- *
- * @param cardId the card id
- * @param code the code
- * @author fengyapeng
- * @since 2016 -12-21 11:28:45
- */
- public MemberUserInfo getMemberUserInfo(String cardId, String code) throws WeixinException {
- String user_info_uri = getRequestUri("card_member_card_user_info_uri");
- Token token = tokenManager.getCache();
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("card_id", cardId);
- jsonObject.put("code", code);
- WeixinResponse response = weixinExecutor.post(String.format(user_info_uri, token.getAccessToken()), JSON.toJSONString(jsonObject));
- return response.getAsObject(new TypeReference() {
- });
- }
-
- /**
- * 更新会员
- * @param updateInfo
- * @return
- * @throws WeixinException
- */
- public JSONObject updateUserInfo(MemberUpdateInfo updateInfo) throws WeixinException {
- String card_member_card_update_user_uri = getRequestUri("card_member_card_update_user_uri");
- Token token = tokenManager.getCache();
- WeixinResponse response = weixinExecutor
- .post(String.format(card_member_card_update_user_uri, token.getAccessToken()), JSON.toJSONString(updateInfo));
- return response.getAsJson();
- }
-
-
-}
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/TmplApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/TmplApi.java
index 726176df..f027efd8 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/TmplApi.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/TmplApi.java
@@ -157,7 +157,7 @@ public class TmplApi extends MpApi {
* @see com.foxinmy.weixin4j.mp.message.TemplateMessage
* @see com.foxinmy.weixin4j.msg.event.TemplatesendjobfinishMessage
*/
- public ApiResult sendTmplMessage(TemplateMessage tplMessage)
+ public String sendTmplMessage(TemplateMessage tplMessage)
throws WeixinException {
Token token = tokenManager.getCache();
String template_send_uri = getRequestUri("template_send_uri");
@@ -174,6 +174,6 @@ public class TmplApi extends MpApi {
}
}));
- return response.getAsResult();
+ return response.getAsJson().getString("msgid");
}
}
diff --git a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MemberCardTest.java b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MemberCardTest.java
index 89452588..0b4bb3d4 100644
--- a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MemberCardTest.java
+++ b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MemberCardTest.java
@@ -2,7 +2,6 @@ package com.foxinmy.weixin4j.mp.test;
import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.weixin.ApiResult;
-import com.foxinmy.weixin4j.model.card.CardCoupon;
import com.foxinmy.weixin4j.model.card.CardCoupons;
import com.foxinmy.weixin4j.model.card.CardQR;
import com.foxinmy.weixin4j.model.card.CouponBaseInfo;
@@ -13,7 +12,6 @@ import com.foxinmy.weixin4j.model.card.MemberUserForm;
import com.foxinmy.weixin4j.model.card.MemberUserInfo;
import com.foxinmy.weixin4j.model.qr.QRResult;
import com.foxinmy.weixin4j.mp.api.CardApi;
-import com.foxinmy.weixin4j.mp.api.MemberCardApi;
import com.foxinmy.weixin4j.type.card.ActivateCommonField;
import com.foxinmy.weixin4j.type.card.ActivateFormFieldType;
import com.foxinmy.weixin4j.type.card.CardCodeType;
@@ -31,14 +29,14 @@ import org.junit.Test;
*/
public class MemberCardTest extends TokenTest {
- private CardApi cardApi;
- private MemberCardApi memberCardApi;
+
+ private CardApi cardApi;
@Before
public void init() {
+
cardApi = new CardApi(tokenManager);
- memberCardApi = new MemberCardApi(tokenManager);
}
/**
@@ -64,7 +62,7 @@ public class MemberCardTest extends TokenTest {
"https://mmbiz.qlogo.cn/mmbiz/2FyQ9TURqmdibM6nYBiagZT49lSlY9Aicw4P3vsoa7dEZIYfNkiaMyzNVYT9jmYhjBbeC8jnkibwbibB5tghC5XcgysQ/0?wx_fmt=jpeg");
MemberCard memberCard = CardCoupons.createMemberCard(builder, memberCardBuilder);
- String cardId = memberCardApi.createCardCoupon(memberCard);
+ String cardId = cardApi.createCardCoupon(memberCard);
System.out.println(cardId);
}
@@ -72,7 +70,7 @@ public class MemberCardTest extends TokenTest {
@Test
public void createCardQR() throws WeixinException {
CardQR.Builder builder = new CardQR.Builder("pn-YDwk59Ft0JSFdGqObxUccUQHw");
- QRResult qrResult = memberCardApi.createCardQR(36000, builder.build());
+ QRResult qrResult = cardApi.createCardQR(36000, builder.build());
String showUrl = qrResult.getShowUrl();
System.out.println(showUrl);
}
@@ -95,13 +93,13 @@ public class MemberCardTest extends TokenTest {
.addRichField(ActivateFormFieldType.FORM_FIELD_CHECK_BOX, "checkBoxOPt", "value1", "value2", "value3");
memberUserForm.setOptionalForm(optionalFormBuilder);
memberUserForm.setServiceStatement("会员守则","https://www.baidu.com");
- ApiResult apiResult = memberCardApi.setActivateUserForm(memberUserForm);
+ ApiResult apiResult = cardApi.setActivateUserForm(memberUserForm);
}
@Test
public void getMemberUserInfo() throws WeixinException {
- MemberUserInfo memberUserInfo = memberCardApi.getMemberUserInfo("pn-YDwk59Ft0JSFdGqObxUccUQHw", "270869833860");
+ MemberUserInfo memberUserInfo = cardApi.getMemberUserInfo("pn-YDwk59Ft0JSFdGqObxUccUQHw", "270869833860");
System.out.println(memberUserInfo);
}
@@ -115,7 +113,7 @@ public class MemberCardTest extends TokenTest {
memberInitInfo.setInitBalance(2);
memberInitInfo.setInitBonus(2);
memberInitInfo.setInitBonusRecord("初始化积分");
- ApiResult activate = memberCardApi.activate(memberInitInfo);
+ ApiResult activate = cardApi.activate(memberInitInfo);
System.out.println(activate);
}
@@ -128,7 +126,7 @@ public class MemberCardTest extends TokenTest {
memberUpdateInfo.setRecordBalance("充值");
memberUpdateInfo.setNOtify(true,true);
memberUpdateInfo.setCustomFieldValue1("至尊铂金",true);
- memberCardApi.updateUserInfo(memberUpdateInfo);
+ cardApi.updateUserInfo(memberUpdateInfo);
}
}