Skip to content

Commit 779e36b

Browse files
committed
新增卡券相关接口6个
1. getCardApiTicket获得卡券的api_ticket 2. createCardApiSignature创建调用卡券api时的签名 3. decryptCardCode卡券code解码 4. queryCardCode卡券code查询 5. consumeCardCode卡券核销 6. markCardCode卡券mark接口
1 parent 980ad0b commit 779e36b

File tree

8 files changed

+602
-1
lines changed

8 files changed

+602
-1
lines changed
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
package me.chanjar.weixin.common.bean;
2+
3+
import java.io.Serializable;
4+
5+
/**
6+
* 卡券Api签名
7+
*
8+
* @author YuJian
9+
* @version 15/11/8
10+
*/
11+
public class WxCardApiSignature implements Serializable {
12+
13+
private String appId;
14+
15+
private String cardId;
16+
17+
private String cardType;
18+
19+
private String locationId;
20+
21+
private String code;
22+
23+
private String openId;
24+
25+
private Long timestamp;
26+
27+
private String nonceStr;
28+
29+
private String signature;
30+
31+
public String getAppId() {
32+
return appId;
33+
}
34+
35+
public void setAppId(String appId) {
36+
this.appId = appId;
37+
}
38+
39+
public String getCardId() {
40+
return cardId;
41+
}
42+
43+
public void setCardId(String cardId) {
44+
this.cardId = cardId;
45+
}
46+
47+
public String getCardType() {
48+
return cardType;
49+
}
50+
51+
public void setCardType(String cardType) {
52+
this.cardType = cardType;
53+
}
54+
55+
public String getLocationId() {
56+
return locationId;
57+
}
58+
59+
public void setLocationId(String locationId) {
60+
this.locationId = locationId;
61+
}
62+
63+
public String getCode() {
64+
return code;
65+
}
66+
67+
public void setCode(String code) {
68+
this.code = code;
69+
}
70+
71+
public String getOpenId() {
72+
return openId;
73+
}
74+
75+
public void setOpenId(String openId) {
76+
this.openId = openId;
77+
}
78+
79+
public Long getTimestamp() {
80+
return timestamp;
81+
}
82+
83+
public void setTimestamp(Long timestamp) {
84+
this.timestamp = timestamp;
85+
}
86+
87+
public String getNonceStr() {
88+
return nonceStr;
89+
}
90+
91+
public void setNonceStr(String nonceStr) {
92+
this.nonceStr = nonceStr;
93+
}
94+
95+
public String getSignature() {
96+
return signature;
97+
}
98+
99+
public void setSignature(String signature) {
100+
this.signature = signature;
101+
}
102+
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package me.chanjar.weixin.mp.api;
22

3+
import me.chanjar.weixin.common.bean.WxCardApiSignature;
34
import me.chanjar.weixin.common.bean.WxMenu;
45
import me.chanjar.weixin.common.bean.WxJsapiSignature;
56
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
@@ -770,12 +771,89 @@ public interface WxMpService {
770771
* @return
771772
*/
772773
public boolean checkJSSDKCallbackDataSignature(Map<String, String> kvm, String signature);
773-
774+
774775
/**
775776
* 发送微信红包给个人用户
776777
* @param parameters
777778
* @return
778779
* @throws WxErrorException
779780
*/
780781
public WxRedpackResult sendRedpack(Map<String, String> parameters) throws WxErrorException;
782+
783+
/**
784+
* 获得卡券api_ticket,不强制刷新卡券api_ticket
785+
* @see #getCardApiTicket(boolean)
786+
* @return 卡券api_ticket
787+
* @throws WxErrorException
788+
*/
789+
public String getCardApiTicket() throws WxErrorException;
790+
791+
/**
792+
* <pre>
793+
* 获得卡券api_ticket
794+
* 获得时会检查卡券apiToken是否过期,如果过期了,那么就刷新一下,否则就什么都不干
795+
*
796+
* 详情请见:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E9.99.84.E5.BD.954-.E5.8D.A1.E5.88.B8.E6.89.A9.E5.B1.95.E5.AD.97.E6.AE.B5.E5.8F.8A.E7.AD.BE.E5.90.8D.E7.94.9F.E6.88.90.E7.AE.97.E6.B3.95
797+
* </pre>
798+
* @param forceRefresh 强制刷新
799+
* @return 卡券api_ticket
800+
* @throws WxErrorException
801+
*/
802+
public String getCardApiTicket(boolean forceRefresh) throws WxErrorException;
803+
804+
/**
805+
* <pre>
806+
* 创建调用卡券api时所需要的签名
807+
*
808+
* 详情请见:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E9.99.84.E5.BD
809+
* .954-.E5.8D.A1.E5.88.B8.E6.89.A9.E5.B1.95.E5.AD.97.E6.AE.B5.E5.8F.8A.E7.AD.BE.E5.90.8D.E7.94
810+
* .9F.E6.88.90.E7.AE.97.E6.B3.95
811+
* </pre>
812+
*
813+
* @param optionalSignParam 参与签名的参数数组。
814+
* 可以为下列字段:app_id, card_id, card_type, code, openid, location_id
815+
* @return 卡券Api签名对象
816+
*/
817+
public WxCardApiSignature createCardApiSignature(String... optionalSignParam) throws
818+
WxErrorException;
819+
820+
/**
821+
* 卡券Code解码
822+
* @param encryptCode 加密Code,通过JSSDK的chooseCard接口获得
823+
* @return 解密后的Code
824+
* @throws WxErrorException
825+
*/
826+
public String decryptCardCode(String encryptCode) throws WxErrorException;
827+
828+
/**
829+
* 卡券Code查询
830+
* @param cardId 卡券ID代表一类卡券
831+
* @param code 单张卡券的唯一标准
832+
* @param checkConsume 是否校验code核销状态,填入true和false时的code异常状态返回数据不同
833+
* @return WxMpCardResult对象
834+
* @throws WxErrorException
835+
*/
836+
public WxMpCardResult queryCardCode(String cardId, String code, boolean checkConsume)
837+
throws WxErrorException;
838+
839+
/**
840+
* 卡券Code核销。核销失败会抛出异常
841+
* @param code 单张卡券的唯一标准
842+
* @return
843+
* @throws WxErrorException
844+
*/
845+
public void consumeCardCode(String code) throws WxErrorException;
846+
847+
/**
848+
* 卡券Mark接口。
849+
* 开发者在帮助消费者核销卡券之前,必须帮助先将此code(卡券串码)与一个openid绑定(即mark住),
850+
* 才能进一步调用核销接口,否则报错。
851+
* @param code 卡券的code码
852+
* @param cardId 卡券的ID
853+
* @param openId 用券用户的openid
854+
* @param isMark 是否要mark(占用)这个code,填写true或者false,表示占用或解除占用
855+
* @throws WxErrorException
856+
*/
857+
public void markCardCode(String code, String cardId, String openId, boolean isMark) throws
858+
WxErrorException;
781859
}

0 commit comments

Comments
 (0)