提交会员卡相关接口。
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package com.foxinmy.weixin4j.mp.api;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@@ -15,6 +16,7 @@ import com.foxinmy.weixin4j.model.card.CardQR;
|
||||
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.CardType;
|
||||
import com.foxinmy.weixin4j.util.IOUtil;
|
||||
|
||||
/**
|
||||
@@ -28,7 +30,7 @@ import com.foxinmy.weixin4j.util.IOUtil;
|
||||
* href="https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025056&token=&lang=zh_CN">卡券说明</a>
|
||||
*/
|
||||
public class CardApi extends MpApi {
|
||||
private final TokenManager tokenManager;
|
||||
protected final TokenManager tokenManager;
|
||||
|
||||
public CardApi(TokenManager tokenManager) {
|
||||
this.tokenManager = tokenManager;
|
||||
@@ -155,4 +157,77 @@ public class CardApi extends MpApi {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 由于卡券有审核要求,为方便公众号调试,可以设置一些测试帐号,这些帐号可领取未通过审核的卡券,体验整个流程。
|
||||
* 1.同时支持“openid”、“username”两种字段设置白名单,总数上限为10个。
|
||||
* 2.设置测试白名单接口为全量设置,即测试名单发生变化时需调用该接口重新传入所有测试人员的ID.
|
||||
* 3.白名单用户领取该卡券时将无视卡券失效状态,请开发者注意。
|
||||
* @param openIds the open ids
|
||||
* @param userNames the user names
|
||||
* @author fengyapeng
|
||||
* @since 2016 -12-20 11:22:57
|
||||
* @see <a href='https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025062&token=&lang=zh_CN&anchor=6'>设置测试白名单</a>
|
||||
*/
|
||||
public void setTestWhiteList(List<String> openIds, List<String> userNames) throws WeixinException {
|
||||
JSONObject requestObj = new JSONObject();
|
||||
if (openIds != null && openIds.size() > 0) {
|
||||
requestObj.put("openid", openIds);
|
||||
}
|
||||
if (userNames != null && userNames.size() > 0) {
|
||||
requestObj.put("username", userNames);
|
||||
}
|
||||
String card_set_test_whitelist_uri = getRequestUri("card_set_test_whitelist_uri");
|
||||
Token token = tokenManager.getCache();
|
||||
WeixinResponse response = weixinExecutor.post(
|
||||
String.format(card_set_test_whitelist_uri, token.getAccessToken()),
|
||||
requestObj.toJSONString());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看获取卡券的审核状态
|
||||
* @see <a href='https://mp.weixin.qq.com/wiki?action=doc&id=mp1451025272&t=0.18670321276182844#3'> 查看卡券详情</a>
|
||||
*
|
||||
* @author fengyapeng
|
||||
* @since 2016 -12-20 11:48:23
|
||||
*/
|
||||
public void getCardStatus(String cardId) throws WeixinException {
|
||||
JSONObject requestObj = new JSONObject();
|
||||
requestObj.put("card_id",cardId);
|
||||
String card_get_uri = getRequestUri("card_get_uri");
|
||||
Token token = tokenManager.getCache();
|
||||
WeixinResponse response = weixinExecutor.post(String.format(card_get_uri, token.getAccessToken()),requestObj.toJSONString());
|
||||
JSONObject responseAsJson = response.getAsJson();
|
||||
JSONObject card = responseAsJson.getJSONObject("card");
|
||||
String cardType = card.getString("card_type");
|
||||
JSONObject baseInfo = card.getJSONObject(cardType.toLowerCase()).getJSONObject("base_info");
|
||||
baseInfo.get("status");
|
||||
}
|
||||
|
||||
/**
|
||||
* 支持更新所有卡券类型的部分通用字段及特殊卡券(会员卡、飞机票、电影票、会议门票)中特定字段的信息。
|
||||
*
|
||||
* @param cardId the card id
|
||||
* @param card the card
|
||||
* @return 是否提交审核,false为修改后不会重新提审,true为修改字段后重新提审,该卡券的状态变为审核中
|
||||
* @throws WeixinException the weixin exception
|
||||
* @author fengyapeng
|
||||
* @see
|
||||
* @since 2016 -12-21 15:29:10
|
||||
*/
|
||||
public Boolean updateCardCoupon(String cardId, CardCoupon card) throws WeixinException {
|
||||
JSONObject request = new JSONObject();
|
||||
request.put("card_id", cardId);
|
||||
CardType cardType = card.getCardType();
|
||||
request.put(cardType.name().toLowerCase(), card);
|
||||
String card_update_uri = getRequestUri("card_update_uri");
|
||||
Token token = tokenManager.getCache();
|
||||
WeixinResponse response = weixinExecutor.post(String.format(card_update_uri,token.getAccessToken()),JSON.toJSONString(request));
|
||||
JSONObject jsonObject= response.getAsJson();
|
||||
return jsonObject.getBoolean("send_check");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -190,11 +190,11 @@ tag_untagging_uri={api_cgi_url}/tags/members/batchuntagging?access_token=%s
|
||||
tag_userids_uri={api_cgi_url}/tags/getidlist?access_token=%s
|
||||
# \u83B7\u53D6\u6807\u7B7E\u4E0B\u7C89\u4E1D\u5217\u8868
|
||||
tag_user_uri={api_cgi_url}/user/tag/get?access_token=%s
|
||||
# \u83b7\u53d6\u9ed1\u540d\u5355\u5217\u8868
|
||||
# \u83B7\u53D6\u9ED1\u540D\u5355\u5217\u8868
|
||||
getblacklist_uri={api_cgi_url}/tags/members/getblacklist?access_token=%s
|
||||
# \u62c9\u9ed1\u7528\u6237
|
||||
# \u62C9\u9ED1\u7528\u6237
|
||||
batchblacklist_uri={api_cgi_url}/tags/members/batchblacklist?access_token=%s
|
||||
# \u53d6\u6d88\u62c9\u9ed1\u7528\u6237
|
||||
# \u53D6\u6D88\u62C9\u9ED1\u7528\u6237
|
||||
batchunblacklist_uri={api_cgi_url}/tags/members/batchunblacklist?access_token=%s
|
||||
|
||||
# \u521B\u5EFA\u5361\u5238
|
||||
@@ -205,6 +205,20 @@ card_paycell_uri={api_base_url}/card/paycell/set?access_token=%s
|
||||
card_selfconsumecell_uri={api_base_url}/card/selfconsumecell/set?access_token=%s
|
||||
# \u521B\u5EFA\u5361\u5238\u4E8C\u7EF4\u7801\u63A5\u53E3
|
||||
card_qr_ticket_uri={api_base_url}/card/qrcode/create?access_token=%s
|
||||
# \u4FEE\u6539\u5361\u5238
|
||||
card_update_uri={api_base_url}/card/update?access_token=%s
|
||||
#\u8BBE\u7F6E\u6D4B\u8BD5\u767D\u540D\u5355\u63A5\u53E3
|
||||
card_set_test_whitelist_uri={api_base_url}/card/testwhitelist/set?access_token=%s
|
||||
#\u67E5\u770B\u5361\u5238\u8BE6\u60C5\u63A5\u53E3
|
||||
card_get_uri={api_base_url}/card/get?access_token=%s
|
||||
#\u4F1A\u5458\u5361\u6FC0\u6D3B\u63A5\u53E3
|
||||
card_member_card_activate_uri={api_base_url}/card/membercard/activate?access_token=%s
|
||||
#\u8BBE\u7F6E\u4F1A\u5458\u5361\u5F00\u5361\u5B57\u6BB5
|
||||
card_member_card_activate_user_form_uri={api_base_url}/card/membercard/activateuserform/set?access_token=%s
|
||||
#\u4F1A\u5458\u5361\u7528\u6237\u4FE1\u606F
|
||||
card_member_card_user_info_uri={api_base_url}/card/membercard/userinfo/get?access_token=%s
|
||||
#\u66F4\u65B0\u4F1A\u5458\u4FE1\u606F
|
||||
card_member_card_update_user_uri={api_base_url}/card/membercard/updateuser?access_token=%s
|
||||
|
||||
# \u4F7F\u7528\u6388\u6743\u7801\u6362\u53D6\u516C\u4F17\u53F7\u7684\u63A5\u53E3\u8C03\u7528\u51ED\u636E\u548C\u6388\u6743\u4FE1\u606F
|
||||
component_exchange_authorizer_uri={api_cgi_url}/component/api_query_auth?component_access_token=%s
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.foxinmy.weixin4j.mp.test;
|
||||
|
||||
/**
|
||||
* 会员卡测试
|
||||
*
|
||||
* @auther: Feng Yapeng
|
||||
* @since: 2016/12/21 16:37
|
||||
*/
|
||||
public class MemberCardTest extends TokenTest {
|
||||
|
||||
|
||||
public void create(){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user