|
@@ -5,20 +5,28 @@ import java.net.URLDecoder; |
|
|
import java.util.HashMap; |
|
|
import java.util.HashMap; |
|
|
import java.util.Map; |
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
import me.chanjar.weixin.mp.bean.card.*; |
|
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.slf4j.Logger; |
|
|
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
|
|
|
|
|
|
|
import com.google.gson.Gson; |
|
|
import com.google.gson.Gson; |
|
|
import com.google.gson.JsonElement; |
|
|
import com.google.gson.JsonElement; |
|
|
import com.google.gson.JsonObject; |
|
|
import com.google.gson.JsonObject; |
|
|
import com.google.gson.JsonParser; |
|
|
import com.google.gson.JsonParser; |
|
|
import com.google.gson.reflect.TypeToken; |
|
|
import com.google.gson.reflect.TypeToken; |
|
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import me.chanjar.weixin.common.error.WxErrorException; |
|
|
import me.chanjar.weixin.common.error.WxErrorException; |
|
|
import me.chanjar.weixin.common.util.json.WxGsonBuilder; |
|
|
import me.chanjar.weixin.common.util.json.WxGsonBuilder; |
|
|
import me.chanjar.weixin.mp.api.WxMpMemberCardService; |
|
|
import me.chanjar.weixin.mp.api.WxMpMemberCardService; |
|
|
import me.chanjar.weixin.mp.api.WxMpService; |
|
|
import me.chanjar.weixin.mp.api.WxMpService; |
|
|
|
|
|
import me.chanjar.weixin.mp.bean.card.AdvancedInfo; |
|
|
|
|
|
import me.chanjar.weixin.mp.bean.card.BaseInfo; |
|
|
|
|
|
import me.chanjar.weixin.mp.bean.card.CardUpdateResult; |
|
|
|
|
|
import me.chanjar.weixin.mp.bean.card.DateInfo; |
|
|
|
|
|
import me.chanjar.weixin.mp.bean.card.MemberCard; |
|
|
|
|
|
import me.chanjar.weixin.mp.bean.card.MemberCardActivateUserFormRequest; |
|
|
|
|
|
import me.chanjar.weixin.mp.bean.card.MemberCardActivateUserFormResult; |
|
|
|
|
|
import me.chanjar.weixin.mp.bean.card.MemberCardCreateRequest; |
|
|
|
|
|
import me.chanjar.weixin.mp.bean.card.MemberCardUpdateRequest; |
|
|
|
|
|
import me.chanjar.weixin.mp.bean.card.WxMpCardCreateResult; |
|
|
import me.chanjar.weixin.mp.bean.card.enums.BusinessServiceType; |
|
|
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.CardColor; |
|
|
import me.chanjar.weixin.mp.bean.card.enums.DateInfoType; |
|
|
import me.chanjar.weixin.mp.bean.card.enums.DateInfoType; |
|
@@ -37,10 +45,8 @@ import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; |
|
|
* @author YuJian(mgcnrx11 @ gmail.com) |
|
|
* @author YuJian(mgcnrx11 @ gmail.com) |
|
|
* @version 2017/7/8 |
|
|
* @version 2017/7/8 |
|
|
*/ |
|
|
*/ |
|
|
|
|
|
@Slf4j |
|
|
public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
|
|
|
|
|
|
private final Logger log = LoggerFactory.getLogger(WxMpMemberCardServiceImpl.class); |
|
|
|
|
|
|
|
|
|
|
|
private WxMpService wxMpService; |
|
|
private WxMpService wxMpService; |
|
|
|
|
|
|
|
|
private static final Gson GSON = WxMpGsonBuilder.create(); |
|
|
private static final Gson GSON = WxMpGsonBuilder.create(); |
|
@@ -49,50 +55,37 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
this.wxMpService = wxMpService; |
|
|
this.wxMpService = wxMpService; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 得到WxMpService |
|
|
|
|
|
*/ |
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public WxMpService getWxMpService() { |
|
|
public WxMpService getWxMpService() { |
|
|
return this.wxMpService; |
|
|
return this.wxMpService; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 会员卡创建接口 |
|
|
|
|
|
* |
|
|
|
|
|
* @param createJson 创建json |
|
|
|
|
|
* @return 调用返回的JSON字符串。 |
|
|
|
|
|
* @throws WxErrorException 接口调用失败抛出的异常 |
|
|
|
|
|
*/ |
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public WxMpCardCreateResult createMemberCard(String createJson) throws WxErrorException { |
|
|
public WxMpCardCreateResult createMemberCard(String createJson) throws WxErrorException { |
|
|
WxMpMemberCardCreateMessage createMessage = WxGsonBuilder.create().fromJson(createJson, WxMpMemberCardCreateMessage.class); |
|
|
|
|
|
|
|
|
WxMpMemberCardCreateMessage createMessage = WxGsonBuilder.create() |
|
|
|
|
|
.fromJson(createJson, WxMpMemberCardCreateMessage.class); |
|
|
return createMemberCard(createMessage); |
|
|
return createMemberCard(createMessage); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 会员卡创建接口 |
|
|
|
|
|
* |
|
|
|
|
|
* @param createMessageMessage 创建所需参数 |
|
|
|
|
|
* @return WxMpCardCreateResult。 |
|
|
|
|
|
* @throws WxErrorException 接口调用失败抛出的异常 |
|
|
|
|
|
*/ |
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public WxMpCardCreateResult createMemberCard(WxMpMemberCardCreateMessage createMessageMessage) throws WxErrorException { |
|
|
|
|
|
|
|
|
public WxMpCardCreateResult createMemberCard(WxMpMemberCardCreateMessage createMessageMessage) |
|
|
|
|
|
throws WxErrorException { |
|
|
//校验请求对象合法性 |
|
|
//校验请求对象合法性 |
|
|
WxMpCardCreateResult validResult = validCheck(createMessageMessage); |
|
|
WxMpCardCreateResult validResult = validCheck(createMessageMessage); |
|
|
if (!validResult.isSuccess()) |
|
|
|
|
|
|
|
|
if (!validResult.isSuccess()) { |
|
|
return validResult; |
|
|
return validResult; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
String response = this.wxMpService.post(MEMBER_CARD_CREAET, GSON.toJson(createMessageMessage)); |
|
|
String response = this.wxMpService.post(MEMBER_CARD_CREAET, GSON.toJson(createMessageMessage)); |
|
|
return WxMpCardCreateResult.fromJson(response); |
|
|
return WxMpCardCreateResult.fromJson(response); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private WxMpCardCreateResult validCheck(WxMpMemberCardCreateMessage createMessageMessage) throws WxErrorException { |
|
|
|
|
|
|
|
|
private WxMpCardCreateResult validCheck(WxMpMemberCardCreateMessage createMessageMessage) { |
|
|
if (createMessageMessage == null) { |
|
|
if (createMessageMessage == null) { |
|
|
return WxMpCardCreateResult.failure("对象不能为空"); |
|
|
return WxMpCardCreateResult.failure("对象不能为空"); |
|
|
} |
|
|
} |
|
|
MemberCardCreateRequest cardCreateRequest = createMessageMessage.getCardCreateRequest(); |
|
|
MemberCardCreateRequest cardCreateRequest = createMessageMessage.getCardCreateRequest(); |
|
|
if (createMessageMessage == null) { |
|
|
|
|
|
|
|
|
if (cardCreateRequest == null) { |
|
|
return WxMpCardCreateResult.failure("会员卡对象不能为空"); |
|
|
return WxMpCardCreateResult.failure("会员卡对象不能为空"); |
|
|
} |
|
|
} |
|
|
String cardType = cardCreateRequest.getCardType(); |
|
|
String cardType = cardCreateRequest.getCardType(); |
|
@@ -105,17 +98,11 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
return WxMpCardCreateResult.failure("会员卡特权说明不能为空:prerogative"); |
|
|
return WxMpCardCreateResult.failure("会员卡特权说明不能为空:prerogative"); |
|
|
} |
|
|
} |
|
|
//卡片激活规则 |
|
|
//卡片激活规则 |
|
|
if (!memberCard.isAutoActivate() && !memberCard.isWxActivate() && StringUtils.isEmpty(memberCard.getActivateUrl())) { |
|
|
|
|
|
|
|
|
if (!memberCard.isAutoActivate() && !memberCard.isWxActivate() |
|
|
|
|
|
&& StringUtils.isEmpty(memberCard.getActivateUrl())) { |
|
|
return WxMpCardCreateResult.failure("会员卡激活方式为接口激活,activate_url不能为空"); |
|
|
return WxMpCardCreateResult.failure("会员卡激活方式为接口激活,activate_url不能为空"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//积分支持 |
|
|
|
|
|
// if(memberCard.isSupplyBonus() && StringUtils.isEmpty(memberCard.getBonusUrl())){ |
|
|
|
|
|
// return WxMpCardCreateResult.failure("会员卡支持积分,bonus_url不能为空"); |
|
|
|
|
|
// } |
|
|
|
|
|
// if(memberCard.isSupplyBonus() && memberCard.getBonusRule() == null){ |
|
|
|
|
|
// return WxMpCardCreateResult.failure("会员卡支持积分,bonus_rule不能为空"); |
|
|
|
|
|
// } |
|
|
|
|
|
BaseInfo baseInfo = memberCard.getBaseInfo(); |
|
|
BaseInfo baseInfo = memberCard.getBaseInfo(); |
|
|
if (baseInfo == null) { |
|
|
if (baseInfo == null) { |
|
|
return WxMpCardCreateResult.failure("会员卡基本信息对象base_info不能为空"); |
|
|
return WxMpCardCreateResult.failure("会员卡基本信息对象base_info不能为空"); |
|
@@ -188,16 +175,24 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//固定时长 |
|
|
//固定时长 |
|
|
if (dateInfoType == DateInfoType.DATE_TYPE_FIX_TERM && (dateInfo.getFixedTerm() == null || dateInfo.getFixedBeginTerm() == null)) { |
|
|
|
|
|
return WxMpCardCreateResult.failure("会员卡基本信息的使用日期为:" + dateInfoType.getDescription() + ",fixedTerm和fixedBeginTerm不能为空"); |
|
|
|
|
|
|
|
|
if (dateInfoType == DateInfoType.DATE_TYPE_FIX_TERM |
|
|
|
|
|
&& (dateInfo.getFixedTerm() == null || dateInfo.getFixedBeginTerm() == null)) { |
|
|
|
|
|
return WxMpCardCreateResult.failure(String.format("会员卡基本信息的使用日期为:%s,fixedTerm和fixedBeginTerm不能为空", |
|
|
|
|
|
dateInfoType.getDescription())); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//固定期限 |
|
|
//固定期限 |
|
|
if (dateInfoType == DateInfoType.DATE_TYPE_FIX_TIME_RANGE && (dateInfo.getBeginTimestamp() == null || dateInfo.getEndTimestamp() == null)) { |
|
|
|
|
|
return WxMpCardCreateResult.failure("会员卡基本信息的使用日期为:" + dateInfoType.getDescription() + ",beginTimestamp 和 endTimestamp 不能为空"); |
|
|
|
|
|
|
|
|
if (dateInfoType == DateInfoType.DATE_TYPE_FIX_TIME_RANGE |
|
|
|
|
|
&& (dateInfo.getBeginTimestamp() == null || dateInfo.getEndTimestamp() == null)) { |
|
|
|
|
|
return WxMpCardCreateResult.failure(String.format("会员卡基本信息的使用日期为:%s,beginTimestamp 和 endTimestamp 不能为空", |
|
|
|
|
|
dateInfoType.getDescription())); |
|
|
} |
|
|
} |
|
|
if (dateInfoType == DateInfoType.DATE_TYPE_FIX_TIME_RANGE && (dateInfo.getBeginTimestamp() < System.currentTimeMillis() || dateInfo.getEndTimestamp() < System.currentTimeMillis() || dateInfo.getBeginTimestamp() > dateInfo.getEndTimestamp())) { |
|
|
|
|
|
return WxMpCardCreateResult.failure("会员卡基本信息的使用日期为:" + dateInfoType.getDescription() + ",beginTimestamp和endTimestamp的值不合法,请检查"); |
|
|
|
|
|
|
|
|
if (dateInfoType == DateInfoType.DATE_TYPE_FIX_TIME_RANGE |
|
|
|
|
|
&& (dateInfo.getBeginTimestamp() * 1000 < System.currentTimeMillis() |
|
|
|
|
|
|| dateInfo.getEndTimestamp() * 1000 < System.currentTimeMillis() |
|
|
|
|
|
|| dateInfo.getBeginTimestamp() > dateInfo.getEndTimestamp())) { |
|
|
|
|
|
return WxMpCardCreateResult.failure(String.format("会员卡基本信息的使用日期为:%s,beginTimestamp和endTimestamp的值不合法,请检查", |
|
|
|
|
|
dateInfoType.getDescription())); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (!baseInfo.isUseAllLocations() && StringUtils.isBlank(baseInfo.getLocationIdList())) { |
|
|
if (!baseInfo.isUseAllLocations() && StringUtils.isBlank(baseInfo.getLocationIdList())) { |
|
@@ -209,9 +204,8 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
if (advancedInfo != null) { |
|
|
if (advancedInfo != null) { |
|
|
if (advancedInfo.getBusinessServiceList() != null) { |
|
|
if (advancedInfo.getBusinessServiceList() != null) { |
|
|
for (String bs : advancedInfo.getBusinessServiceList()) { |
|
|
for (String bs : advancedInfo.getBusinessServiceList()) { |
|
|
BusinessServiceType businessServiceType = null; |
|
|
|
|
|
try { |
|
|
try { |
|
|
businessServiceType = BusinessServiceType.valueOf(bs); |
|
|
|
|
|
|
|
|
BusinessServiceType.valueOf(bs); |
|
|
} catch (IllegalArgumentException ex) { |
|
|
} catch (IllegalArgumentException ex) { |
|
|
return WxMpCardCreateResult.failure("会员卡高级信息的商户服务:" + bs + " 不合法"); |
|
|
return WxMpCardCreateResult.failure("会员卡高级信息的商户服务:" + bs + " 不合法"); |
|
|
} |
|
|
} |
|
@@ -222,26 +216,11 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
return WxMpCardCreateResult.success(); |
|
|
return WxMpCardCreateResult.success(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 会员卡激活接口 |
|
|
|
|
|
* |
|
|
|
|
|
* @param activatedMessage 激活所需参数 |
|
|
|
|
|
* @return WxMpCardCreateResult。 |
|
|
|
|
|
* @throws WxErrorException 接口调用失败抛出的异常 |
|
|
|
|
|
*/ |
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public String activateMemberCard(WxMpMemberCardActivatedMessage activatedMessage) throws WxErrorException { |
|
|
public String activateMemberCard(WxMpMemberCardActivatedMessage activatedMessage) throws WxErrorException { |
|
|
return this.wxMpService.post(MEMBER_CARD_ACTIVATE, GSON.toJson(activatedMessage)); |
|
|
return this.wxMpService.post(MEMBER_CARD_ACTIVATE, GSON.toJson(activatedMessage)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 拉取会员信息接口 |
|
|
|
|
|
* |
|
|
|
|
|
* @param cardId 会员卡的CardId,微信分配 |
|
|
|
|
|
* @param code 领取会员的会员卡Code |
|
|
|
|
|
* @return 会员信息的结果对象 |
|
|
|
|
|
* @throws WxErrorException 接口调用失败抛出的异常 |
|
|
|
|
|
*/ |
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public WxMpMemberCardUserInfoResult getUserInfo(String cardId, String code) throws WxErrorException { |
|
|
public WxMpMemberCardUserInfoResult getUserInfo(String cardId, String code) throws WxErrorException { |
|
|
JsonObject jsonObject = new JsonObject(); |
|
|
JsonObject jsonObject = new JsonObject(); |
|
@@ -256,17 +235,6 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
}.getType()); |
|
|
}.getType()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 当会员持卡消费后,支持开发者调用该接口更新会员信息。会员卡交易后的每次信息变更需通过该接口通知微信,便于后续消息通知及其他扩展功能。 |
|
|
|
|
|
* <p> |
|
|
|
|
|
* 1.开发者可以同时传入add_bonus和bonus解决由于同步失败带来的幂等性问题。同时传入add_bonus和bonus时 |
|
|
|
|
|
* add_bonus作为积分变动消息中的变量值,而bonus作为卡面上的总积分额度显示。余额变动同理。 |
|
|
|
|
|
* 2.开发者可以传入is_notify_bonus控制特殊的积分对账变动不发送消息,余额变动同理。 |
|
|
|
|
|
* |
|
|
|
|
|
* @param updateUserMessage 更新会员信息所需字段消息 |
|
|
|
|
|
* @return 调用返回的JSON字符串。 |
|
|
|
|
|
* @throws WxErrorException 接口调用失败抛出的异常 |
|
|
|
|
|
*/ |
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public WxMpMemberCardUpdateResult updateUserMemberCard(WxMpMemberCardUpdateMessage updateUserMessage) |
|
|
public WxMpMemberCardUpdateResult updateUserMemberCard(WxMpMemberCardUpdateMessage updateUserMessage) |
|
|
throws WxErrorException { |
|
|
throws WxErrorException { |
|
@@ -279,26 +247,13 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
}.getType()); |
|
|
}.getType()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 设置会员卡激活的字段(会员卡设置:wx_activate=true 时需要) |
|
|
|
|
|
* |
|
|
|
|
|
* @param userFormRequest |
|
|
|
|
|
* @return |
|
|
|
|
|
* @throws WxErrorException |
|
|
|
|
|
*/ |
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public MemberCardActivateUserFormResult setActivateUserForm(MemberCardActivateUserFormRequest userFormRequest) throws WxErrorException { |
|
|
public MemberCardActivateUserFormResult setActivateUserForm(MemberCardActivateUserFormRequest userFormRequest) throws WxErrorException { |
|
|
String responseContent = this.getWxMpService().post(MEMBER_CARD_ACTIVATEUSERFORM, GSON.toJson(userFormRequest)); |
|
|
String responseContent = this.getWxMpService().post(MEMBER_CARD_ACTIVATEUSERFORM, GSON.toJson(userFormRequest)); |
|
|
return MemberCardActivateUserFormResult.fromJson(responseContent); |
|
|
return MemberCardActivateUserFormResult.fromJson(responseContent); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 获取会员卡开卡插件参数(跳转型开卡组件需要参数) |
|
|
|
|
|
* |
|
|
|
|
|
* @param outStr |
|
|
|
|
|
* @return |
|
|
|
|
|
* @throws WxErrorException |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
@Override |
|
|
public ActivatePluginParam getActivatePluginParam(String cardId, String outStr) throws WxErrorException { |
|
|
public ActivatePluginParam getActivatePluginParam(String cardId, String outStr) throws WxErrorException { |
|
|
JsonObject params = new JsonObject(); |
|
|
JsonObject params = new JsonObject(); |
|
|
params.addProperty("card_id", cardId); |
|
|
params.addProperty("card_id", cardId); |
|
@@ -313,7 +268,7 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
ActivatePluginParam activatePluginParam = new ActivatePluginParam(); |
|
|
ActivatePluginParam activatePluginParam = new ActivatePluginParam(); |
|
|
activatePluginParam.setEncryptCardId(resultMap.get("encrypt_card_id")); |
|
|
activatePluginParam.setEncryptCardId(resultMap.get("encrypt_card_id")); |
|
|
activatePluginParam.setOuterStr(resultMap.get("outer_str")); |
|
|
activatePluginParam.setOuterStr(resultMap.get("outer_str")); |
|
|
activatePluginParam.setBiz(resultMap.get("biz")+"=="); |
|
|
|
|
|
|
|
|
activatePluginParam.setBiz(resultMap.get("biz") + "=="); |
|
|
return activatePluginParam; |
|
|
return activatePluginParam; |
|
|
} catch (UnsupportedEncodingException e) { |
|
|
} catch (UnsupportedEncodingException e) { |
|
|
e.printStackTrace(); |
|
|
e.printStackTrace(); |
|
@@ -322,13 +277,6 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
return null; |
|
|
return null; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 更新会员卡信息 |
|
|
|
|
|
* |
|
|
|
|
|
* @param memberCardUpdateRequest |
|
|
|
|
|
* @return |
|
|
|
|
|
* @throws WxErrorException |
|
|
|
|
|
*/ |
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public CardUpdateResult updateCardInfo(MemberCardUpdateRequest memberCardUpdateRequest) throws WxErrorException { |
|
|
public CardUpdateResult updateCardInfo(MemberCardUpdateRequest memberCardUpdateRequest) throws WxErrorException { |
|
|
String response = this.wxMpService.post(MEMBER_CARD_UPDATE, GSON.toJson(memberCardUpdateRequest)); |
|
|
String response = this.wxMpService.post(MEMBER_CARD_UPDATE, GSON.toJson(memberCardUpdateRequest)); |
|
@@ -336,15 +284,9 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
return result; |
|
|
return result; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 去掉url中的路径,留下请求参数部分 |
|
|
|
|
|
* |
|
|
|
|
|
* @param strURL url地址 |
|
|
|
|
|
* @return url请求参数部分 |
|
|
|
|
|
*/ |
|
|
|
|
|
private static String truncateUrlPage(String strURL) { |
|
|
private static String truncateUrlPage(String strURL) { |
|
|
String strAllParam = null; |
|
|
String strAllParam = null; |
|
|
String[] arrSplit = null; |
|
|
|
|
|
|
|
|
String[] arrSplit; |
|
|
arrSplit = strURL.split("[?]"); |
|
|
arrSplit = strURL.split("[?]"); |
|
|
if (strURL.length() > 1) { |
|
|
if (strURL.length() > 1) { |
|
|
if (arrSplit.length > 1) { |
|
|
if (arrSplit.length > 1) { |
|
@@ -357,25 +299,18 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
return strAllParam; |
|
|
return strAllParam; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 解析出url参数中的键值对 |
|
|
|
|
|
* 如 "index.jsp?Action=del&id=123",解析出Action:del,id:123存入map中 |
|
|
|
|
|
* |
|
|
|
|
|
* @param URL url地址 |
|
|
|
|
|
* @return url请求参数部分 |
|
|
|
|
|
*/ |
|
|
|
|
|
public static Map<String, String> parseRequestUrl(String URL) { |
|
|
|
|
|
Map<String, String> mapRequest = new HashMap<String, String>(); |
|
|
|
|
|
|
|
|
public static Map<String, String> parseRequestUrl(String url) { |
|
|
|
|
|
Map<String, String> mapRequest = new HashMap<>(16); |
|
|
|
|
|
|
|
|
String[] arrSplit = null; |
|
|
|
|
|
|
|
|
String[] arrSplit; |
|
|
|
|
|
|
|
|
String strUrlParam = truncateUrlPage(URL); |
|
|
|
|
|
|
|
|
String strUrlParam = truncateUrlPage(url); |
|
|
if (strUrlParam == null) { |
|
|
if (strUrlParam == null) { |
|
|
return mapRequest; |
|
|
return mapRequest; |
|
|
} |
|
|
} |
|
|
arrSplit = strUrlParam.split("[&]"); |
|
|
arrSplit = strUrlParam.split("[&]"); |
|
|
for (String strSplit : arrSplit) { |
|
|
for (String strSplit : arrSplit) { |
|
|
String[] arrSplitEqual = null; |
|
|
|
|
|
|
|
|
String[] arrSplitEqual; |
|
|
arrSplitEqual = strSplit.split("[=]"); |
|
|
arrSplitEqual = strSplit.split("[=]"); |
|
|
|
|
|
|
|
|
//解析出键值 |
|
|
//解析出键值 |
|
@@ -384,7 +319,7 @@ public class WxMpMemberCardServiceImpl implements WxMpMemberCardService { |
|
|
mapRequest.put(arrSplitEqual[0], arrSplitEqual[1]); |
|
|
mapRequest.put(arrSplitEqual[0], arrSplitEqual[1]); |
|
|
|
|
|
|
|
|
} else { |
|
|
} else { |
|
|
if (arrSplitEqual[0] != "") { |
|
|
|
|
|
|
|
|
if (!"".equals(arrSplitEqual[0])) { |
|
|
//只有参数没有值,不加入 |
|
|
//只有参数没有值,不加入 |
|
|
mapRequest.put(arrSplitEqual[0], ""); |
|
|
mapRequest.put(arrSplitEqual[0], ""); |
|
|
} |
|
|
} |
|
|