From 95e398de7ea3d57058801f5637dfe93a6fe94c9e Mon Sep 17 00:00:00 2001 From: yuanqixun Date: Tue, 4 Sep 2018 11:26:39 +0800 Subject: [PATCH] =?UTF-8?q?#745=20=E5=A2=9E=E5=8A=A0=E5=8D=A1=E5=88=B8?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=B9=B6=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E4=BC=9A=E5=91=98=E5=8D=A1=E6=98=AF=E5=90=A6=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98=E5=92=8C=E4=BC=9A?= =?UTF-8?q?=E5=91=98=E5=8D=A1=E4=BA=8C=E7=BB=B4=E7=A0=81=E7=9A=84=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 1、增加卡券失效接口;修复会员卡是否支持微信支付和会员卡二维码的属性问题; --- .../weixin/mp/api/WxMpCardService.java | 31 ++++++++++++++++--- .../mp/api/impl/WxMpCardServiceImpl.java | 28 +++++++++++++++-- .../weixin/mp/bean/card/AdvancedInfo.java | 6 ++++ .../chanjar/weixin/mp/bean/card/BaseInfo.java | 6 ++++ .../weixin/mp/bean/card/SwipeCard.java | 6 ---- .../mp/api/impl/WxMpCardServiceImplTest.java | 9 ++++++ 6 files changed, 73 insertions(+), 13 deletions(-) diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpCardService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpCardService.java index 4cb755f4..1ad01eea 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpCardService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpCardService.java @@ -10,7 +10,7 @@ import me.chanjar.weixin.mp.bean.result.WxMpCardResult; /** * 卡券相关接口 * - * @author YuJian(mgcnrx11@hotmail.com) on 01/11/2016 + * @author YuJian(mgcnrx11 @ hotmail.com) on 01/11/2016 * @author yuanqixun 2018-08-29 */ public interface WxMpCardService { @@ -23,6 +23,10 @@ public interface WxMpCardService { String CARD_TEST_WHITELIST = "https://api.weixin.qq.com/card/testwhitelist/set"; String CARD_QRCODE_CREAET = "https://api.weixin.qq.com/card/qrcode/create"; String CARD_LANDING_PAGE_CREAET = "https://api.weixin.qq.com/card/landingpage/create"; + /** + * 将用户的卡券设置为失效状态 + */ + String CARD_CODE_UNAVAILABLE = "https://api.weixin.qq.com/card/code/unavailable"; /** * 得到WxMpService @@ -132,6 +136,7 @@ public interface WxMpCardService { /** * 添加测试白名单 + * * @param openid 用户的openid * @return */ @@ -139,7 +144,8 @@ public interface WxMpCardService { /** * 创建卡券二维码 - * @param cardId 卡券编号 + * + * @param cardId 卡券编号 * @param outerStr 二维码标识 * @return WxMpCardQrcodeCreateResult */ @@ -147,18 +153,33 @@ public interface WxMpCardService { /** * 创建卡券二维码 - * @param cardId 卡券编号 - * @param outerStr 二维码标识 + * + * @param cardId 卡券编号 + * @param outerStr 二维码标识 * @param expiresIn 失效时间,单位秒,不填默认365天 * @return WxMpCardQrcodeCreateResult */ - WxMpCardQrcodeCreateResult createQrcodeCard(String cardId, String outerStr,int expiresIn) throws WxErrorException; + WxMpCardQrcodeCreateResult createQrcodeCard(String cardId, String outerStr, int expiresIn) throws WxErrorException; /** * 创建卡券货架 + * * @param createRequest 货架创建参数 * @return * @throws WxErrorException */ WxMpCardLandingPageCreateResult createLandingPage(WxMpCardLandingPageCreateRequest createRequest) throws WxErrorException; + + /** + * 将用户的卡券设置为失效状态 + * 详见:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025272&anchor=9 + * + * @param cardId 卡券编号 + * @param code 用户会员卡号 + * @param reason 设置为失效的原因 + * @return + * @throws WxErrorException + */ + String unavailableCardCode(String cardId, String code, String reason) throws WxErrorException; + } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImpl.java index 28a7d5cc..bc1a0724 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImpl.java @@ -15,6 +15,7 @@ import me.chanjar.weixin.mp.bean.card.WxMpCardLandingPageCreateResult; import me.chanjar.weixin.mp.bean.card.WxMpCardQrcodeCreateResult; import me.chanjar.weixin.mp.bean.result.WxMpCardResult; import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -267,8 +268,9 @@ public class WxMpCardServiceImpl implements WxMpCardService { /** * 创建卡券二维码 - * @param cardId 卡券编号 - * @param outerStr 二维码标识 + * + * @param cardId 卡券编号 + * @param outerStr 二维码标识 * @param expiresIn 失效时间,单位秒,不填默认365天 * @return * @throws WxErrorException @@ -301,4 +303,26 @@ public class WxMpCardServiceImpl implements WxMpCardService { String response = this.wxMpService.post(CARD_LANDING_PAGE_CREAET, GSON.toJson(request)); return WxMpCardLandingPageCreateResult.fromJson(response); } + + /** + * 将用户的卡券设置为失效状态 + * 详见:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025272&anchor=9 + * + * @param cardId 卡券编号 + * @param code 用户会员卡号 + * @param reason 设置为失效的原因 + * @return + * @throws WxErrorException + */ + @Override + public String unavailableCardCode(String cardId, String code, String reason) throws WxErrorException { + if (StringUtils.isAnyBlank(cardId, code, reason)) + throw new WxErrorException(WxError.builder().errorCode(41012).errorMsg("参数不完整").build()); + JsonObject jsonRequest = new JsonObject(); + jsonRequest.addProperty("card_id", cardId); + jsonRequest.addProperty("code", code); + jsonRequest.addProperty("reason", reason); + String response = this.wxMpService.post(CARD_CODE_UNAVAILABLE, GSON.toJson(jsonRequest)); + return response; + } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/AdvancedInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/AdvancedInfo.java index 0e01e50d..73fd0135 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/AdvancedInfo.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/AdvancedInfo.java @@ -56,6 +56,12 @@ public class AdvancedInfo implements Serializable { @SerializedName("time_limit") private TimeLimit timeLimit; + /** + * 是否可以分享朋友 + */ + @SerializedName("share_friends") + private Boolean shareFriends; + public void addBusinessService(BusinessServiceType businessServiceType) { if (businessServiceType != null) { if (businessServiceList == null) diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BaseInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BaseInfo.java index f32bb6a0..bdd0b359 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BaseInfo.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/BaseInfo.java @@ -34,6 +34,12 @@ public class BaseInfo implements Serializable { @SerializedName("pay_info") private PayInfo payInfo; + /** + * 是否设置该会员卡中部的按钮同时支持微信支付刷卡和会员卡二维码 + */ + @SerializedName("is_pay_and_qrcode") + private boolean isPayAndQrcode; + /** * 商户名字,字数上限为12个汉字 */ diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/SwipeCard.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/SwipeCard.java index f1519f86..fa176942 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/SwipeCard.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/card/SwipeCard.java @@ -21,12 +21,6 @@ public class SwipeCard implements Serializable { @SerializedName("is_swipe_card") private boolean isSwipeCard; - /** - * 是否设置该会员卡中部的按钮同时支持微信支付刷卡和会员卡二维码 - */ - @SerializedName("is_pay_and_qrcode") - private boolean isPayAndQrcode; - public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); } diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImplTest.java index 3036013a..06945d9a 100644 --- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImplTest.java +++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpCardServiceImplTest.java @@ -91,4 +91,13 @@ public class WxMpCardServiceImplTest { System.out.println(result); } + @Test + public void testUnavailableCardCode() throws Exception { + String cardId = "p2iQk1luzj50RHue6yeTPQpAx_Z4"; + String code = "134905347310"; + String reason = "换成新卡了"; + String result = this.wxService.getCardService().unavailableCardCode(cardId, code, reason); + assertNotNull(result); + System.out.println(result); + } }