相信微信红包大家已经非常熟悉了,今天带领大家使用代码实现微信红包功能。
1.1 发送流程
在实现发送红包之前,我们有必要了解一下发送流程。
微信红包接口调用流程:
① 后台API调用:待进入联调过程时与开发进行详细沟通;
② 告知服务器:告知服务器接收微信红包的用户openID,告知服务器该用户获得的金额;
③ 从商务号扣款:服务器获取信息后从对应的商务号扣取对应的金额;
④ 调用失败:因不符合发送规则,商务号余额不足等原因造成调用失败,反馈至调用方;
⑥ 发送成功:以微信红包公众账号发送对应红包至对应用户;
如下图所示:
1.2 接口调用请求
请求url: https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack。
是否需要证书: 是(证书及使用说明详见商户证书)。
请求方式: POST
1.3 网络封装RedPackConn方法
1 |
|
这里使用到了httpcliet,封装了发送红包的请求层,注释已经很清楚,这里不在一一解释。仅仅这样是不够的,我们进行了进一步的封装。
1.4 发送工具类
1 | package org.wechat.redpack.utils; |
到这里,现金红包,裂变红包,获取红包信息,已经封装好,只需要调用SendRedPackUtils中的方法即可。
1.5 调用示例
这里是调用发送红包的示例方法:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20@Test
public void testHttpClientSendRedBack(){
RedpackRequest request = new RedpackRequest();
request.setAct_name(""); //名称
request.setClient_ip(""); //客户端ip
request.setMch_billno(""); //交易号
request.setMch_id(""); //商户号
request.setNonce_str(""); //随机字符串
request.setRe_openid(“”); //接收用户openid
request.setRemark(""); //备注
request.setSend_name(""); //用户名称
request.setTotal_amount(); //发送金额 分为单位
request.setTotal_num(); //红包数量
request.setWishing(""); //红包名称
request.setWxappid(""); //appid
SendRedPackUtils utils = new SendRedPackUtils();
WechatResult result = utils.sendRed(request,"apikey",“证书路径","商户id");
String jsonData = ConvertJsonUtils.toJsonString(result);
System.out.println(jsonData);
}
1.6 依赖库
由于在该项目中涉及到的接口比较多,有微信支付,微信现金红包,裂变红包,微信公众号相关接口,微信授权等,所以涉及到的jar比较多,我会一一为大家讲解。
commons-logging-1.1.3.jar
dom4j-1.6.1.jar
fastjson-1.1.15.jar
httpclient-4.3.4.jar
httpcore-4.3.2.jar
log4j.jar
xpp3-1.1.4c.jar
xstream-1.4.7.jar
百度网盘下载地址:
http://pan.baidu.com/s/1eSymCds