Skip to content

Commit 9d06a69

Browse files
committed
增加查询红包记录的接口 for #73
1 parent 5bb6a24 commit 9d06a69

File tree

8 files changed

+539
-19
lines changed

8 files changed

+539
-19
lines changed

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,29 @@ public interface WxMpPayService {
121121
* <pre>
122122
* 文档详见:
123123
* 发送普通红包 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3
124+
* 接口地址:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack
124125
* 发送裂变红包 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_5&index=4
126+
* 接口地址:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack
125127
* </pre>
126128
*
127129
* @param request 请求对象
128130
* @param keyFile 证书文件对象
129131
*/
130132
WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request, File keyFile) throws WxErrorException;
131133

134+
/**
135+
* <pre>
136+
* 查询红包记录
137+
* 用于商户对已发放的红包进行查询红包的具体信息,可支持普通红包和裂变包。
138+
* 请求Url https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo
139+
* 是否需要证书 是(证书及使用说明详见商户证书)
140+
* 请求方式 POST
141+
* </pre>
142+
* @param mchBillNo 商户发放红包的商户订单号,比如10000098201411111234567890
143+
* @param keyFile 证书文件对象
144+
*/
145+
WxPayRedpackQueryResult queryRedpack(String mchBillNo, File keyFile) throws WxErrorException;
146+
132147
/**
133148
* <pre>
134149
* 企业付款业务是基于微信支付商户平台的资金管理能力,为了协助商户方便地实现企业向个人付款,针对部分有开发能力的商户,提供通过API完成企业付款的功能。

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImpl.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,32 @@ public WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request, File
183183
return result;
184184
}
185185

186+
@Override
187+
public WxPayRedpackQueryResult queryRedpack(String mchBillNo, File keyFile) throws WxErrorException {
188+
XStream xstream = XStreamInitializer.getInstance();
189+
xstream.processAnnotations(WxPayRedpackQueryRequest.class);
190+
xstream.processAnnotations(WxPayRedpackQueryResult.class);
191+
192+
WxPayRedpackQueryRequest request = new WxPayRedpackQueryRequest();
193+
request.setMchBillNo(mchBillNo);
194+
request.setBillType("MCHT");
195+
196+
request.setAppid(this.wxMpService.getWxMpConfigStorage().getAppId());
197+
String mchId = this.wxMpService.getWxMpConfigStorage().getPartnerId();
198+
request.setMchId(mchId);
199+
request.setNonceStr(System.currentTimeMillis() + "");
200+
201+
String sign = this.createSign(BeanUtils.xmlBean2Map(request),
202+
this.wxMpService.getWxMpConfigStorage().getPartnerKey());
203+
request.setSign(sign);
204+
205+
String url = PAY_BASE_URL + "/mmpaymkttransfers/gethbinfo";
206+
String responseContent = this.executeRequestWithKeyFile(url, keyFile, xstream.toXML(request), mchId);
207+
WxPayRedpackQueryResult result = (WxPayRedpackQueryResult) xstream.fromXML(responseContent);
208+
this.checkResult(result);
209+
return result;
210+
}
211+
186212
/**
187213
* 微信公众号支付签名算法(详见:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3)
188214
*
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package me.chanjar.weixin.mp.bean.pay.request;
2+
3+
import com.thoughtworks.xstream.annotations.XStreamAlias;
4+
5+
/**
6+
* <pre>
7+
* 注释中各行对应含义:
8+
* 字段名
9+
* 字段
10+
* 必填
11+
* 示例值
12+
* 类型
13+
* 说明
14+
* Created by Binary Wang on 2016-11-28.
15+
* @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a>
16+
* </pre>
17+
*/
18+
@XStreamAlias("xml")
19+
public class WxPayRedpackQueryRequest extends WxPayBaseRequest {
20+
/**
21+
* 商户订单号
22+
* mch_billno
23+
* 是
24+
* 10000098201411111234567890
25+
* String(28)
26+
* 商户发放红包的商户订单号
27+
*/
28+
@XStreamAlias("mch_billno")
29+
private String mchBillNo;
30+
31+
/**
32+
* 订单类型
33+
* bill_type
34+
* 是
35+
* MCHT
36+
* String(32)
37+
* MCHT:通过商户订单号获取红包信息。
38+
*/
39+
@XStreamAlias("bill_type")
40+
private String billType;
41+
42+
public String getBillType() {
43+
return billType;
44+
}
45+
46+
public void setBillType(String billType) {
47+
this.billType = billType;
48+
}
49+
50+
public String getMchBillNo() {
51+
return mchBillNo;
52+
}
53+
54+
public void setMchBillNo(String mchBillNo) {
55+
this.mchBillNo = mchBillNo;
56+
}
57+
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPaySendRedpackRequest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class WxPaySendRedpackRequest {
1414
* 商户订单号(每个订单号必须唯一) 组成:mch_id+yyyymmdd+10位一天内不能重复的数字。 接口根据商户订单号支持重入,如出现超时可再调用。
1515
*/
1616
@XStreamAlias("mch_billno")
17-
private String mchBillno;
17+
private String mchBillNo;
1818

1919
/**
2020
* send_name
@@ -157,12 +157,12 @@ public class WxPaySendRedpackRequest {
157157
@XStreamAlias("consume_mch_id")
158158
private String consumeMchId;
159159

160-
public String getMchBillno() {
161-
return this.mchBillno;
160+
public String getMchBillNo() {
161+
return mchBillNo;
162162
}
163163

164-
public void setMchBillno(String mchBillno) {
165-
this.mchBillno = mchBillno;
164+
public void setMchBillNo(String mchBillNo) {
165+
this.mchBillNo = mchBillNo;
166166
}
167167

168168
public String getSendName() {

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayOrderQueryResult.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package me.chanjar.weixin.mp.bean.pay.result;
22

3-
import java.util.List;
4-
53
import com.google.common.collect.Lists;
64
import com.thoughtworks.xstream.annotations.XStreamAlias;
75

6+
import java.util.List;
7+
88
/**
99
* <pre>
1010
* 查询订单 返回结果对象

0 commit comments

Comments
 (0)