这几天看了下之前写的有关微信支付的博客,看的人还是挺多的,看了下留言不知道是因为博客写的不够细还是什么情况,大多都找我要源码,我觉得吧程序员还是需要有这么一个思考的过程,因此没直接给源码,俗话说“授人以鱼不如授人以渔”。因此希望看文章的同时也花一点时间自己亲自敲一敲代码。好了废话不多说这次来分享微信现金红包接口的使用。

下面是微信开发文档对现金红包的介绍:

现金红包,是微信支付商户平台提供的营销工具之一,上线以来深受广大商户与用户的喜爱。商户可以通过本平台向微信支付用户发放现金红包。用户领取红包后,资金到达用户微信支付零钱账户,和零钱包的其他资金有一样的使用出口;若用户未领取,资金将会在24小时后退回商户的微信支付账户中。

产品意义

微信支付现金红包因资金的承载方式为现金,一直以来深受用户的青睐,近年来的春晚中,现金红包都扮演着重要的角色;在日常运营中也为商户的营销活动带来热烈的反响。总的来说,现金红包在包括但不仅限于以下场景中发挥着重要意义:

◆ 为企业拉取新用户、巩固老用户关系、提升用户活跃度

◆ 结合巧妙的创意点子,辅以红包点缀,打造火爆的活动,提升企业与品牌知名度

◆ 结合企业运营活动,以红包作为奖品,使你的抽奖、满送等营销活动更便利进行

◆ 同时,除了营销之外,现金红包在企业日常的运营中也扮演着重要角色。如:为员工返福利、为供应商返利、会员积分/虚拟等级兑现等等

综上所述微信现金红包是一种营销工具,可以通过关注公众号、注册等给用户发放增加用户粘性。这次着重从程序开发方面分享我的心得体会

一  使用微信现金红包功能需具备的条件

1 拥有微信商户平台且秘钥证书齐全

2 商户平太需要有足够的余额可供使用(不够可以从商户平台使用财付通充值)

3 有微信支付开发基础更佳

二 开发的重点和难点

1 微信签名算法

2 httpclient以及证书的使用

如果有微信h5支付或扫码支付的童鞋看这一部分的文档可以说是小菜一碟,理解起来不费吹灰之力,同时只要掌握httpclient的知识就万事俱备了

三  直接撸代码

public static void sendRedPack(String mch_billno,String openId,String send_name,String total_fee,String total_num,String wishing,String act_name,String remark,String ip) throws Exception{

String non=PayCommonUtil.CreateNoncestr();

SortedMap p = new TreeMap();

p.put("nonce_str", non);

p.put("mch_billno", mch_billno);

p.put("mch_id", ConfigUtil.MCH_ID);

p.put("wxappid", ConfigUtil.APPID);

p.put("re_openid", openId);

p.put("total_amount", total_fee);

p.put("total_num", "1");

p.put("client_ip", "127.0.0.1");

p.put("act_name",act_name);

p.put("send_name", send_name);

p.put("wishing", wishing);

p.put("remark",remark);

String sign = PayCommonUtil.createSign("UTF-8", p);

System.out.println(sign);

p.put("sign", sign);

String reuqestXml = PayCommonUtil.getRequestXml(p);

KeyStore keyStore = KeyStore.getInstance("PKCS12");

FileInputStream instream = new FileInputStream(new File(ConfigUtil.CERT_PATH));

try {

keyStore.load(instream, ConfigUtil.MCH_ID.toCharArray());

} finally {

instream.close();

}

SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore,

ConfigUtil.MCH_ID.toCharArray()).build();

SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(

sslcontext, new String[] { "TLSv1" }, null,

SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);

CloseableHttpClient httpclient = HttpClients.custom()

.setSSLSocketFactory(sslsf).build();

try {

HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack");// 退款接口

httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

System.out.println("executing request" + httpPost.getRequestLine());

//请求的xml需转码为iso8859-1编码,否则易出现签名错误或红包上的文字显示有误

StringEntity reqEntity = new StringEntity(new String(reuqestXml.getBytes(), "ISO8859-1"));

// 设置类型

httpPost.setEntity(reqEntity);

CloseableHttpResponse response = httpclient.execute(httpPost);

try {

HttpEntity entity = response.getEntity();

System.out.println("----------------------------------------");

System.out.println(response.getStatusLine());

if (entity != null) {

System.out.println("Response content length: "

+ entity.getContentLength());

BufferedReader bufferedReader = new BufferedReader(

new InputStreamReader(entity.getContent(), "UTF-8"));

String text;

while ((text = bufferedReader.readLine()) != null) {

System.out.println(text);

}

}

EntityUtils.consume(entity);

} finally {

response.close();

}

} finally {

httpclient.close();

}

}

需要注意的地方是下面这里:

//请求的xml需转码为iso8859-1编码,否则易出现签名错误或红包上的文字显示有误

StringEntity reqEntity = new StringEntity(new String(reuqestXml.getBytes(), "ISO8859-1"));

这个地方可以说把我弄得差点崩溃了各种试,各种调试还是抱着试一试的心态加上去就OK了,这个可能是因为httpclient和原生的HttpsConnection在数据传输上的不同吧。这里没做过多的研究。

调用这个方法就更简单了直接像下面这样

public static void main(String args[]){

try {

sendRedPack("12828839012016101420","接收者的openid","xxx","100","1","恭喜发财,年年有余","新年红包","新年红包还不快抢","127.0.0.1");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

红包发送后打印的信息如下:

TTP/1.1 200 OK

Response content length: 567

100

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

微信红包接口 java_java调用微信现金红包接口的心得与体会总结相关推荐

  1. 微信小程序快递java_java调用微信小程序统一下单接口

    java调用微信小程序统一下单接口 今天项目中对接微信支付这一块,记录一下 这是对接微信支付的开发文档地址 微信支付流程 流程分析: 我们可以看到,前端人员只用给我们一个code,我们通过code去获 ...

  2. 微信公众号网页调用微信扫一扫功能

    目录 前言: 准备条件: 用到的微信接口 代码: 效果: 总结: 前言: 最近其他项目组需要在微信公众号里面调用微信的扫一扫功能,于是就帮忙一起搞了搞,一开始以为挺简单,从网上搜一下教程弄一下就可以了 ...

  3. 微信红包雨怎么抢_微信红包雨怎么发出? 微信红包雨发送技巧有哪些?

    微信红包雨怎么发出? 微信红包雨发送技巧有哪些?小编最近学会了一项技能,那就是发微信红包雨,一包多发,有对微信红包雨怎么发出感兴趣的伙伴吗,接下来小编与您分享下微信红包雨怎么发出吧. 微信红包雨怎么发 ...

  4. java调用微信红包接口_java调用微信现金红包接口的心得与体会

    这几天看了下以前写的有关微信支付的博客,看的人仍是挺多的,看了下留言不知道是由于博客写的不够细仍是什么状况,大多都找我要源码,我以为吧程序员仍是须要有这么一个思考的过程,所以没直接给源码,俗话说&qu ...

  5. 微信红包随机数字_微信红包随机算法转载

    php固定红包 + 随机红包算法 1 需求 CleverCode最近接到一个需求,需要写一个固定红包 + 随机红包算法. 1 固定红包就是每个红包金额一样,有多少个就发多少个固定红包金额就行. 2 随 ...

  6. itchat 调用微信网页版 python 调用微信

    itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. 使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人. 当然,该api的使用远不止一个机器人,更多的功能等 ...

  7. HTML——微信浏览器H5页面调用微信扫一扫

    使用JS-SDK调用微信扫一扫,需要有公众号支持,通过公众号生成JS-SDK使用权限签名.本文直接调用已封装好的接口来获取随机数(noncestr).时间戳(timestamp).签名(signatu ...

  8. java对接微信分享_Java编程调用微信分享功能示例

    本文实例讲述了Java编程调用微信分享功能.分享给大家供大家参考,具体如下: 这篇文章介绍如何使用java开发微信分享功能,因为工作,已经开发完成,可使用. 如果想要自定义微信的分享功能,首先在自己的 ...

  9. java如何调用微信功能_Java编程调用微信分享功能示例

    本文实例讲述了java编程调用微信分享功能.分享给大家供大家参考,具体如下: 这篇文章介绍如何使用java开发微信分享功能,因为工作,已经开发完成,可使用. 如果想要自定义微信的分享功能,首先在自己的 ...

最新文章

  1. Django博客系统(首页文章数据展示)
  2. Nature综述——真菌的多样性:真菌的高通量测序及鉴定
  3. mysql \g和\G的作用
  4. 什么是声明式事务控制
  5. Daily scrum 10.15
  6. 自定义PopView
  7. 华为android o适配名单,Android 12首批适配名单公布:没有华为、荣耀
  8. CYP音乐emlog主题免费版 炫酷黑色主题
  9. Spring Boot基础学习笔记14:实现文件上传功能
  10. vue如何加载html字符串_vue如何给html字符串添加指令?
  11. 程序员提升工作效率和质量工具
  12. CAD建模软件:BricsCAD 22 for Mac
  13. 家到学校路线图怎么画_从家到学校的详细地图怎么画?
  14. LeetCode题解:寻找峰值
  15. 计算机专业拜年语,适合拜年发的朋友圈祝福语:过年拜年的说说
  16. android官网m魅族15,魅族15/Plus/Lite等机型现身Android官网:设计惊艳
  17. 生产环境实战spark (5)分布式集群 5台设备之间hosts文件配置 ssh免密码登录
  18. 华为路由模拟器3.0参考实验8----单臂路由无法ping通问题分析
  19. vue标签旋转_基于vue下input实现图片上传,压缩,拼接以及旋转的代码详解
  20. ITiM v2.0 功能框架

热门文章

  1. 阿里云日常监控服务到期提醒设置
  2. Roscosmos和Waves Enterprise推出区块链服务以保护知识产权
  3. 经常读读可以让自己明心静气
  4. IT学习网站推荐排行
  5. 超直白win7性能优化方案
  6. 去掉tppabs冗余代码和注释
  7. 辞职也需要辞得帅,辞得大家都开心,多为将来考虑,辞职不要急,本是好事要办好
  8. 手机变为无线猫:通过笔记本轻松无线上网
  9. talib 中文文档
  10. elasticsearch 基础介绍及使用 (high-level-client)