修正模板消息的返回值,返回msgId。

会员卡接口的调整。
This commit is contained in:
fengyapeng 2016-12-23 17:17:17 +08:00
parent ec89112ce6
commit 87a2e427de
6 changed files with 108 additions and 112 deletions

View File

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

View File

@ -1005,7 +1005,8 @@ public class WeixinProxy {
* 删除群发</a>
* @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);
}

View File

@ -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 <a href='https://mp.weixin.qq.com/wiki?action=doc&id=mp1451025283&t=0.8029895777585161#6.1'>接口激活</a>
*/
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 <a href='https://mp.weixin.qq.com/wiki?action=doc&id=mp1451025283&t=0.8029895777585161#6.2'>一键激活</a>
*/
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<MemberUserInfo>() {
});
}
/**
* 更新会员
* @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();
}
}

View File

@ -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 <a href='https://mp.weixin.qq.com/wiki/wiki?action=doc&id=mp1451025283&t=0.8029895777585161'>创建会员卡&会员卡管理</a>
*/
public class MemberCardApi extends CardApi {
public MemberCardApi(TokenManager tokenManager) {
super(tokenManager);
}
/**
* 激活方式说明
* 接口激活通常需要开发者开发用户填写资料的网页通常有两种激活流程
* 1. 用户必须在填写资料后才能领卡领卡后开发者调用激活接口为用户激活会员卡
* 2. 是用户可以先领取会员卡点击激活会员卡跳转至开发者设置的资料填写页面填写完成后开发者调用激活接口为用户激活会员卡
*
* @see <a href='https://mp.weixin.qq.com/wiki?action=doc&id=mp1451025283&t=0.8029895777585161#6.1'>接口激活</a>
*/
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 <a href='https://mp.weixin.qq.com/wiki?action=doc&id=mp1451025283&t=0.8029895777585161#6.2'>一键激活</a>
*/
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<MemberUserInfo>() {
});
}
/**
* 更新会员
* @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();
}
}

View File

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

View File

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