100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 微信公众号开发之现金红包

微信公众号开发之现金红包

时间:2021-09-10 15:11:50

相关推荐

微信公众号开发之现金红包

独角兽企业重金招聘Python工程师标准>>>

一、发送现金红包

1、发送普通红包接口

private static String sendRedPackUrl = "https://api.mch./mmpaymkttransfers/sendredpack";/*** 发送红包* @param params 请求参数* @param certPath 证书文件目录* @param partner 证书密码* @return {String}*/public static String sendRedPack(Map<String, String> params, String certPath, String partner) {return HttpUtils.postSSL(sendRedPackUrl, PaymentKit.toXml(params), certPath, partner);}

2、发送裂变红包接口

private static String sendGroupRedPackUrl = "https://api.mch./mmpaymkttransfers/sendgroupredpack";/*** 发送裂变红包* @param params 请求参数* @param certPath 证书文件目录* @param partner 证书密码* @return {String}*/public static String sendGroupRedPack(Map<String, String> params, String certPath, String partner) {return HttpUtils.postSSL(sendGroupRedPackUrl, PaymentKit.toXml(params), certPath, partner);}

具体实现封装

①普通红包

/*** 发送普通红包* @param request 获取IP* @param total_amount 付款现金(单位分)* @param total_num 红包发放总人数* @param wishing 红包祝福语* @param act_name 活动名称* @param remark 备注* @param reOpenid 用户openid* @param partner 商户号* @param wxappid 公众账号appid* @param sendName 商户名称* @param paternerKey 商户签名key* @param certPath 证书路径* @return*/public static boolean sendredpack(HttpServletRequest request,String total_amount,String total_num,String wishing,String act_name,String remark,String reOpenid,String partner,String wxappid,String sendName,String paternerKey,String certPath) {// 商户订单号String mchBillno = System.currentTimeMillis() + "";String ip = IpKit.getRealIp(request);Map<String, String> params = new HashMap<String, String>();// 随机字符串params.put("nonce_str", System.currentTimeMillis() / 1000 + "");// 商户订单号params.put("mch_billno", mchBillno);// 商户号params.put("mch_id", partner);// 公众账号IDparams.put("wxappid", wxappid);// 商户名称params.put("send_name", sendName);// 用户OPENIDparams.put("re_openid", reOpenid);// 付款现金(单位分)params.put("total_amount", total_amount);// 红包发放总人数params.put("total_num", total_num);// 红包祝福语params.put("wishing", wishing);// 终端IPparams.put("client_ip", ip);// 活动名称params.put("act_name", act_name );// 备注params.put("remark", remark);//创建签名String sign = PaymentKit.createSign(params, paternerKey);params.put("sign", sign);String xmlResult = RedPackApi.sendRedPack(params, certPath, partner);Map<String, String> result = PaymentKit.xmlToMap(xmlResult);log.warn(JsonKit.toJson(result));//此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断String return_code = result.get("return_code");//业务结果String result_code = result.get("result_code");if (StrKit.isBlank(return_code) || !"SUCCESS".equals(return_code)) {return false;}if (StrKit.notBlank(result_code) && "SUCCESS".equals(result_code)) {return true;}return false;}

②裂变红包

/*** 发送裂变红包* @param partner* @param wxappid* @param sendName* @param reOpenid* @param total_amount* @param total_num* @param wishing* @param act_name* @param remark* @param paternerKey* @param certPath* @return*/public static boolean sendGroupRedPack(String partner, String wxappid, String sendName, String reOpenid, String total_amount, String total_num, String wishing, String act_name, String remark, String paternerKey, String certPath){// 商户订单号String mchBillno = System.currentTimeMillis() + "";Map<String, String> params = new HashMap<String, String>();// 随机字符串params.put("nonce_str", System.currentTimeMillis() / 1000 + "");// 商户订单号params.put("mch_billno", mchBillno);// 商户号params.put("mch_id", partner);// 公众账号IDparams.put("wxappid", wxappid);// 商户名称params.put("send_name", sendName);// 用户OPENIDparams.put("re_openid", reOpenid);// 付款现金(单位分)params.put("total_amount", total_amount);// 红包发放总人数params.put("total_num", total_num);//红包金额设置方式params.put("amt_type", "ALL_RAND");// 红包祝福语params.put("wishing", wishing);// 活动名称params.put("act_name", act_name );// 备注params.put("remark", remark);//创建签名String sign = PaymentKit.createSign(params, paternerKey);params.put("sign", sign);String xmlResult = RedPackApi.sendGroupRedPack(params, certPath, partner);Map<String, String> result = PaymentKit.xmlToMap(xmlResult);log.warn(JsonKit.toJson(result));//此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断String return_code = result.get("return_code");//业务结果String result_code = result.get("result_code");if (StrKit.isBlank(return_code) || !"SUCCESS".equals(return_code)) {return false;}if (StrKit.notBlank(result_code) && "SUCCESS".equals(result_code)) {return true;}return false;}

发送红包Demo

/*** 微信红包demo*/public class RedPackApiController extends Controller {private static String sendName = "Javen205";//微信证书路径private static String certPath = "/Users/Javen/Downloads/cert/apiclient_cert.p12";//商户相关资料String wxappid = PropKit.get("appId");// 微信支付分配的商户号String partner = PropKit.get("mch_id");//API密钥String paternerKey = PropKit.get("paternerKey");/*** 发送普通红包*/public void sendredpack() {boolean isSend = ReadPackUtils.sendredpack(getRequest(), "100", "1", "感谢您参加猜灯谜活动,祝您元宵节快乐!","猜灯谜抢红包活动", "猜越多得越多,快来抢!", "o_pncsidC-pRRfCP4zj98h6slREw",partner, wxappid, sendName, paternerKey, certPath);renderJson(isSend);}/*** 发送裂变红包*/public void sendGroupRedPack() {boolean isSend = ReadPackUtils.sendGroupRedPack(partner, wxappid, "天虹百货", "o_pncsidC-pRRfCP4zj98h6slREw", "100", "10", "感谢您参加猜灯谜活动,祝您元宵节快乐!", "猜灯谜抢红包活动","猜越多得越多,快来抢", paternerKey, certPath);renderJson(isSend);}public void query() {String query = ReadPackUtils.query("1000009811111234567890", partner, wxappid, paternerKey, certPath);renderJson(query);}}

查询红包记录

1.接口封装

private static String getHBInfo = "https://api.mch./mmpaymkttransfers/gethbinfo ";/*** 根据商户订单号查询信息* @param params 请求参数* @param certPath 证书文件目录* @param partner 证书密码* @return {String}*/public static String getHbInfo(Map<String, String> params, String certPath, String partner) {return HttpUtils.postSSL(getHBInfo, PaymentKit.toXml(params), certPath, partner);}

2.具体实现封装

/*** 根据商户订单号查询红包* @param mch_billno 商户订单号* @param partner 商户号* @param wxappid 公众账号ID* @param paternerKey 商户签名Key* @param certPath 证书路径* @return*/public static String query(String mch_billno,String partner,String wxappid,String paternerKey,String certPath) {Map<String, String> params = new HashMap<String, String>();// 随机字符串params.put("nonce_str", System.currentTimeMillis() / 1000 + "");// 商户订单号params.put("mch_billno", mch_billno);// 商户号params.put("mch_id", partner);// 公众账号IDparams.put("appid", wxappid);params.put("bill_type", "MCHT");//创建签名String sign = PaymentKit.createSign(params, paternerKey);params.put("sign", sign);String xmlResult = RedPackApi.getHbInfo(params, certPath, partner);Map<String, String> result = PaymentKit.xmlToMap(xmlResult);System.out.println(result);return JsonKit.toJson(result);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。