调用微信现金红包接口发放红包

1.通过code获取到用户的openid.

地址: "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxid&secret=secret&code="
            + code + "&grant_type=authorization_code";

公众号需获取网页授权获取用户基本信息权限。

引导用户到指定的授权页面

例如:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=redirect_uri&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

参考文章:http://www.cnblogs.com/ansiboy/p/3755158.html

2.通过openid及用户相关信息向用户发放红包。

地址:"https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"

需要发放商户号用户openid等相关信息,需要注意的是签名信息与随机字符串

代码如下:

1. public static String createSendRedPackOrderSign(WeixinRedPacket redPack){
            StringBuffer sign = new StringBuffer();
            sign.append("act_name=").append(redPack.getAct_name());
            sign.append("&client_ip=").append(redPack.getClient_ip());
            sign.append("&mch_billno=").append(redPack.getMch_billno());
            sign.append("&mch_id=").append(redPack.getMch_id());
            sign.append("&nonce_str=").append(redPack.getNonce_str());
            sign.append("&re_openid=").append(redPack.getRe_openid());
            sign.append("&remark=").append(redPack.getRemark());
            sign.append("&send_name=").append(redPack.getSend_name());
            sign.append("&total_amount=").append(redPack.getTotal_amount());
            sign.append("&total_num=").append(redPack.getTotal_num());
            sign.append("&wishing=").append(redPack.getWishing());
            sign.append("&wxappid=").append(redPack.getWxappid());
            sign.append("&key=").append("abcdefg123456789abcdefg123456789");
            return DigestUtils.md5Hex(getContentBytes(sign.toString(), "utf-8")).toUpperCase();
        }
      private static String create_nonce_str() {
            return UUID.randomUUID().toString();
        }

2.需要注意上传证书及将所有信息发放给微信,这里还需要使用微信给出的开发包,在微信上下载即可。

KeyStore keyStore  = KeyStore.getInstance("PKCS12");
           FileInputStream instream = new FileInputStream(new File("D:\\certs\\apiclient_cert.p12"));
           try {
               keyStore.load(instream, "123".toCharArray());//商户号
           } finally {
               instream.close();
           }

           // Trust own CA and all self-signed certs
           SSLContext sslcontext = SSLContexts.custom()
                   .loadKeyMaterial(keyStore, "123".toCharArray())
                   .build();
           // Allow TLSv1 protocol only
           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");
               StringEntity s = new StringEntity(requestJson,"UTF-8");
               s.setContentEncoding("UTF-8");
               s.setContentType("text/xml");//发送json数据需要设置contentType
               httppost.setEntity(s);
               CloseableHttpResponse resp = httpclient.execute(httppost);
               try {
                   HttpEntity entity = resp.getEntity();

                   if (entity != null) {
                       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(entity.getContent(),"utf-8"));
                       String text;
                       String xmlString = "";
                       while ((text = bufferedReader.readLine()) != null) {
                           xmlString += text;
                       }

                       //return_code与result_code都为success代表发放红包成功
                       maps = XmlParseUtil.parse(xmlString);
                   }
                   EntityUtils.consume(entity);
               } finally {
                   resp.close();
               }
           } finally {
               httpclient.close();
           }

微信官方文档地址:https://pay.weixin.qq.com/helper/cashredopenapi_V2.pdf

时间: 2024-10-24 22:57:05

调用微信现金红包接口发放红包的相关文章

微信现金红包接口实现红包发放

微信现金红包接口实现红包发放: 一:流程:[ 流程:微信用户访问红包活动页面-->后端判断是否是微信访问的 [否:提示用微信打开连接,是:提示用户是否授权允许,获取其的用户信息[openID等信息]]--> 进入红包活动页面--->用户点击领取红包[判断是否领取过红包]是:[提示已领取过红包]否 -->后端程序调用接口发放红包 -->微信用户在微信中收到红包 -->打开红包 -->红包金额会添加到钱包零钱里 -->完成红包发放. ] 二:要实现微信现金红包接

asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间

如何在asp.net mvc 项目里, 调用微信jssdk接口,现实功能: 分享到微信朋友(圈)| 分享到qq空间 1 创建一个Action,准备一些数据,初始化数据(签名): /// <summary> /// 分享的内容 /// 必须写在html的head里面才可以生效 /// </summary> /// <param name="fxUrl"></param> /// <returns></returns>

调用微信支付接口总结

毕业设计项目里面用到了微信支付的功能,在视频教程里面学习了一下,这里做个总结来记录.教材的模板里面用到的是anglusJS来做前端开发,我这边简化了,用的ajax进行异步的调用,然后业务也直接写在了控制层(不过不应该这么写的..),应该是个简洁明了的模板,主要是让自己理解整个流程. 1 关于在调用微信支付接口之前的一些准备工作,申请公众号,认证,拿到密钥等等操作就不概述了, 微信的在线支付文档中都有描述,这里贴出地址 :https://pay.weixin.qq.com/wiki/doc/api

.net Core 调用微信Jsapi接口,H5解析二维码

项目里需要用到扫描二维码,自己实现,不会. 找到了两种解决方案: 通过reqrcode.js,这是一个前端解析二维码内容的js库.如果二维码比较清晰,用这种效果也不错 调用微信扫一扫功能,这种效果很好.但是调试接口超级麻烦. 具体实现:前端代码(vue)(前端用到 vux) <template> <div class="main"> <group title="打印机参数" label-width="5.5em"&g

微信公众号可通过现金红包接口发放微信支付现金红包(附开发教程)

农历新年将至,支付宝红包打了一仗,微信在朋友圈屏蔽了它的分享,但单防守还不行,进攻才是最好的防守.昨日,微信支付现金红包接口正式开放,只需开通微信支付,即可接入现金红包.微信公众号也可以发放现金红包了! 通过现金红包接口,公众号开发者可以策划相关运营活动,向用户发放微信支付现金红包,更好的达到品牌推广及回馈用户的效果. 1.商户调用接口时,通过指定发送对象以及发送金额的方式发放红包,这样的方式,允许商户灵活的应用于各种各样丰富的活动场景 2.领取到红包后,用户的资金直接进入微信零钱,避免繁复的领

微信现金红包接口本地测试成功,服务器上失败后的解决办法

本地测试成功后,基本上确定代码还是可用的. 那么本地跟服务器就剩下配置上的区别了. 现金红包接口api 是需要带证书的.所以呢,iis配置有所不同. asp.net 4.0 + iis 8.0  配置环境 1 打开iis   点击 应用程序池 2 点击最右侧的  右上角   设置应用程序池默认设置 3 设置 里面的参数,把 加载用户配置文件 项  改为  true 重启下 iis  再试试  服务器上的接口是否变得正常了呢.

net版本 微信现金红包接口调用的时候,老是出现签名错误

创建签名  所使用到的几个方法 string url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"; //随机字符串 string nonce_str = CreateRandomCode(32); //商户号 string mch_id = "111111111111"; //商户订单号 string mch_billno = mch_id + DateTime.Now.ToStri

调用微信退款接口或发红包接口时出现System.Security.Cryptography.CryptographicException: 出现了内部错误 解决办法

我总结了一下出现证书无法加载的原因有以下三个 1.证书密码不正确,微信证书密码就是商户号 解决办法:请检查证书密码是不是和商户号一致 2.IIS设置错误,未加载用户配置文件 解决办法:找到网站使用的应用程序池-->右击-->高级设置-->打开如下图-->在加载用户配置文件选择true 3.如果以上两个方案都不能解决问题,就有可能是加载证书时没有给定证书存储标识 解决方法:在加载证书方法时使用以下方法,请注意第三个参数 X509Certificate2 cer = new X509C

调用微信退款接口时出现System.Security.Cryptography.CryptographicException: 出现了内部错误 解决办法

我总结了一下出现证书无法加载的原因有以下三个 1.证书密码不正确,微信证书密码就是商户号 解决办法:请检查证书密码是不是和商户号一致 2.IIS设置错误,未加载用户配置文件 解决办法:找到网站使用的应用程序池-->右击-->高级设置-->打开如下图-->在加载用户配置文件选择true 3.如果以上两个方案都不能解决问题,就有可能是加载证书时没有给定证书存储标识 解决方法:在加载证书方法时使用以下方法,请注意第三个参数 X509Certificate2 cer = new X509C