浅析微信支付:商户平台开通现金红包、指定用户发放、红包记录查询

 本文是【浅析微信支付】系列文章的第十三篇,主要讲解在如何开通商户平台的红包功能和为用户发放红包,以及查询发送红包记录。


浅析微信支付系列已经更新十三篇了哟~,没有看过的朋友们可以看一下哦。

下面开始来干货,贴出源码吧,应用代码:

/**  * 发送现金红包  *  * @author yclimb  * @date 2018/9/18  */ private void sendRedPack() throws Exception {     WXPay wxPay = new WXPay(AsydWXPayConfigImpl.getInstance());     Map<String, String> resultMap = wxPay.sendRedPack(WXPayUtil.getPayNo(), "obX_c0YRpT47zKcvq-ZYpjU6GFuA", "1", "活动名称", "红包祝福语", "备注", "127.0.0.1");     System.out.println("wxPay.sendRedPack:" + resultMap); }

调用发送现金红包接口:

/**  * 作用:企业向指定微信用户的openid发放指定金额红包<br>  * 场景:商户可以通过本平台向微信支付用户发放现金红包。用户领取红包后,资金到达用户微信支付零钱账户,和零钱包的其他资金有一样的使用出口;若用户未领取,资金将会在24小时后退回商户的微信支付账户中。  * 接口文档地址:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3  *  * @param mch_billno       商户订单号  * @param openid           用户openid  * @param amount           企业付款金额  * @param act_name         活动名称  * @param wishing          红包祝福语  * @param remark           备注  * @param spbill_create_ip 该IP可传用户端或者服务端的IP  * @return API返回数据  * @throws Exception e  */ public Map<String, String> sendRedPack(String mch_billno, String openid, String amount, String act_name, String wishing, String remark, String spbill_create_ip) throws Exception {      /** 构造请求参数数据 **/     Map<String, String> data = new HashMap<>();      // 商户订单号     mch_billno 是   10000098201411111234567890  String(28) 商户订单号(每个订单号必须唯一。取值范围:0~9,a~z,A~Z)接口根据商户订单号支持重入,如出现超时可再调用。     data.put("mch_billno", mch_billno);     // 商户名称 send_name   是   天虹百货    String(32)  红包发送者名称     data.put("send_name", "悦店");     // 用户openid re_openid   是   oxTWIuGaIt6gTKsQRLau2M0yL16E    String(32) 接受红包的用户openid openid为用户在wxappid下的唯一标识(获取openid参见微信公众平台开发者文档:网页授权获取用户基本信息)     data.put("re_openid", openid);     // 付款金额 total_amount    是   1000    int 付款金额,单位分     data.put("total_amount", String.valueOf(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).intValue()));     // 红包发放总人数  total_num   是   1   int 红包发放总人数 total_num=1     data.put("total_num", "1");     // 红包祝福语    wishing 是   感谢您参加猜灯谜活动,祝您元宵节快乐! String(128) 红包祝福语     data.put("wishing", wishing);     // Ip地址 client_ip   是   192.168.0.1 String(15)  调用接口的机器Ip地址     data.put("client_ip", spbill_create_ip);     // 活动名称 act_name    是   猜灯谜抢红包活动    String(32)  活动名称     data.put("act_name", act_name);     // 备注   remark  是   猜越多得越多,快来抢! String(256) 备注信息     data.put("remark", remark);      /** 以下参数为非必填参数 **/     /*      * 场景id:scene_id    否   PRODUCT_8   String(32) 发放红包使用场景,红包金额大于200或者小于1元时必传      * PRODUCT_1:商品促销      * PRODUCT_2:抽奖      * PRODUCT_3:虚拟物品兑奖      * PRODUCT_4:企业内部福利      * PRODUCT_5:渠道分润      * PRODUCT_6:保险回馈      * PRODUCT_7:彩票派奖      * PRODUCT_8:税务刮奖      */     //data.put("scene_id", "PRODUCT_1");     /*      * 活动信息 risk_info   否   posttime%3d123123412%26clientversion%3d234134%26mobile%3d122344545%26deviceid%3dIOS String(128)      * posttime:用户操作的时间戳      * mobile:业务系统账号的手机号,国家代码-手机号。不需要+号      * deviceid :mac 地址或者设备唯一标识      * clientversion :用户操作的客户端版本 把值为非空的信息用key=value进行拼接,再进行urlencode urlencode(posttime=xx& mobile =xx&deviceid=xx)      */     // 资金授权商户号  consume_mch_id  否   1222000096  String(32) 资金授权商户号 服务商替特约商户发放时使用      /** 以下四个参数,在 this.redPackRequestData 方法中会自动赋值 **/     // 商户号  mch_id  是   10000098    String(32)  微信支付分配的商户号     // 随机字符串    nonce_str   是   5K8264ILTKCH16CQ2502SI8ZNMTM67VS    String(32)  随机字符串,不长于32位     // 签名   sign    是   C380BEC2BFD727A4B6845133519F3AD6    String(32)  详见签名生成算法     // 公众账号appid    wxappid 是   wx8888888888888888  String(32)  微信分配的公众账号ID(企业号corpid即为此appId)。在微信开放平台(open.weixin.qq.com)申请的移动应用appid无法使用该接口。      // 微信调用接口     Map<String, String> resultMap = this.sendRedPack(data);      WXPayUtil.getLogger().info("wxPay.sendRedPack:" + resultMap);      return resultMap; }

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信