微信api发送微信红包
一、准备工作
微信红包文档:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_3&index=2
1.开通现金红包权限
注意: 根据监管要求,新申请商户号使用现金红包需要满足两个条件:
◆ 商户号已入驻90日且截止今日回推30天商户号保持连续不间的交易;
◆ 保持正常健康交易:
在使用现金红包之前,请前往开通现金红包功能。操作路径:【登录微信支付商户平台——>产品中心——>现金红包——>开通】
注意⚠️:在开通时请如实选择你的使用场景,且在红包的发放过程中如实上报你的场景,如有作假,微信支付将有权根据《微信支付商户平台使用协议》对你的商户号做出处理。
2.下载API证书
商户调用微信红包接口时,微信支付服务器会进行证书验证,请现在商户平台下载证书
3.充值
在发放现金红包之前,请确保你的资金充足。如若不足,请充值。操作路径:【登录商户平台——>交易中心——>资金管理——>充值】
4.获取openid
目前支持向指定微信用户的openid发放指定金额红包。(获取openid参见微信公众平台开发者文档:网页授权获取用户基本信息)
5.相关参数设置
和红包相关的参数,你可以在页面上自主设置和更改。操作路径如下:【登录商户平台——>产品中心——>现金红包——>产品设置】
注:“产品设置”操作按钮仅当你开通现金红包功能之后才会出现。
说明:
◆ 调用IP地址:设置之后,仅有已设置的IP地址可以调用,其余的IP调用会报错,最多支持10个
◆ 单日发送金额上限:该商户一天允许发放的红包总金额上限;
◆ 单用户单日领取上限:限制同一openid同一日领取该商户的个数上限;
◆ 单用户单日领取金额上限:限制同一openid同一日领取该商户的红包金额上限
◆ 防刷等级:防刷是指微信风控针对微信小号、僵尸号、机器号等的拦截,你可以通过更改防刷等级控制防刷的强度(0级为关闭,1到3逐级递增安全等级);
◆ 同时,你也可以申请更改红包额度。若超过所选使用场景的默认额度,则需要经过审核,审核通过之后才会生效;
二、开始开发
WxpayConfig.java以及实体类Entity.java文件请查看博主【微信支付】springboot-java接入微信支付-JSAPI支付/查单/退款/发送红包(一)—JSAPI支付
发送红包接口 同样在QuickStart.java文件中继续编写
完整接口代码:
@PostMapping("/send_redPack")
public Map<String, String> send_redPack(@RequestBody OrderDao orderDao,@RequestParam Integer rebate_price) throws Exception {
Map<String, String> map = new HashMap<>();
String noncestr = WXPayUtil.generateNonceStr(); // 生成随机字符串
SortedMap<String, String> requestMap = new TreeMap();
requestMap.put("mch_billno", orderDao.getOrder_no()); // 商户订单号
requestMap.put("mch_id", wxPayConfig.getMchId());// 商户号
requestMap.put("wxappid", wxPayConfig.getAppid());// appid
requestMap.put("send_name", "*****");// 商户名称
requestMap.put("re_openid", orderDao.getOpenid()); // 发送红包给用户,用户的openid
requestMap.put("total_amount", rebate_price.toString()); // 发送金额,这里接口传入的是单位为分的整数,需转化为string类型存入
requestMap.put("total_num", "1"); //红包发送总人数
requestMap.