微信公众号抢现金红包活动的核心代码分析(asp.net C#)
今年春节微信抢红包,我想各位都还记得。最近很多商家也在使用公众号给粉丝发红包,做营销活动、吸粉活动或者是反馈老用户等。
我们作为第3方开发者,就义不容辞的来给这些商家服务了。首先我们得会使用程序来写抢红包。
红包使用说明及规则,请仔细阅读
- (1)必须是认证过的服务号,开通了微信支付功能;在商家后台充足够多的钱来发红包。
- (2)发送频率规则
◆ 每分钟发送红包数量不得超过1800个;
◆ 北京时间0:00-8:00不触发红包赠送;(如果以上规则不满足您的需求,请发邮件至wxhongbao@tencent.com获取升级指引) - (3)红包规则
◆ 单个红包金额介于[1.00元,200.00元]之间;
◆ 同一个红包只能发送给一个用户;(如果以上规则不满足您的需求,请发邮件至wxhongbao@tencent.com获取升级指引) - (4)填写正确的AppId,Appsecret,以及微信支付的配置参数
- (5)分享接口请注意不要有诱导分享等违规行为,对于诱导分享行为将永久回收公众号接口权限,详细规则请查看:朋友圈管理常见问题 。
2核心代码分析
【1】普通红包:比如:用户关注后,公众号给粉丝派发红包。裂变红包是:用户领取红包后,还可以吧红包的链接分享到朋友圈,让朋友也能领取。
#region 红包/// <summary>/// 目前支持向指定微信用户的openid发放指定金额红包/// 注意total_amount、min_value、max_value值相同/// total_num=1固定/// 单个红包金额介于[1.00元,200.00元]之间/// </summary>/// <returns></returns>public ActionResult SendRedPack(){string mchbillno = DateTime.Now.ToString("HHmmss") + TenPayV3Util.BuildRandomStr(28);string nonceStr = TenPayV3Util.GetNoncestr();RequestHandler packageReqHandler = new RequestHandler(null);//设置package订单参数packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串packageReqHandler.SetParameter("wxappid", TenPayV3Info.AppId); //公众账号IDpackageReqHandler.SetParameter("mch_id", TenPayV3Info.MchId); //商户号packageReqHandler.SetParameter("mch_billno", mchbillno); //填入商家订单号packageReqHandler.SetParameter("nick_name", "提供方名称"); //提供方名称packageReqHandler.SetParameter("send_name", "红包发送者名称"); //红包发送者名称packageReqHandler.SetParameter("re_openid", "接受收红包的用户的openId"); //接受收红包的用户的openIdpackageReqHandler.SetParameter("total_amount", "100"); //付款金额,单位分packageReqHandler.SetParameter("min_value", "100"); //最小红包金额,单位分packageReqHandler.SetParameter("max_value", "100"); //最大红包金额,单位分packageReqHandler.SetParameter("total_num", "1"); //红包发放总人数packageReqHandler.SetParameter("wishing", "红包祝福语"); //红包祝福语packageReqHandler.SetParameter("client_ip", Request.UserHostAddress); //调用接口的机器Ip地址packageReqHandler.SetParameter("act_name", "活动名称"); //活动名称packageReqHandler.SetParameter("remark", "备注信息"); //备注信息string sign = packageReqHandler.CreateMd5Sign("key", TenPayV3Info.Key);packageReqHandler.SetParameter("sign", sign); //签名//发红包需要post的数据string data = packageReqHandler.ParseXML();//发红包接口地址string url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";//本地或者服务器的证书位置(证书在微信支付申请成功发来的通知邮件中)string cert = @"F:\apiclient_cert.p12";//私钥(在安装证书时设置)string password = "";ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);//调用证书X509Certificate2 cer = new X509Certificate2(cert, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);#region 发起post请求HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);webrequest.ClientCertificates.Add(cer);webrequest.Method = "post";byte[] postdatabyte = Encoding.UTF8.GetBytes(data);webrequest.ContentLength = postdatabyte.Length;Stream stream;stream = webrequest.GetRequestStream();stream.Write(postdatabyte, 0, postdatabyte.Length);stream.Close();HttpWebResponse httpWebResponse = (HttpWebResponse)webrequest.GetResponse();StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());string responseContent = streamReader.ReadToEnd();#endregionreturn Content(responseContent);}#endregion
View Code
【2】裂变红包
#region 裂变红包/// <summary>/// 目前支持向指定微信用户的openid发放指定金额红包/// 注意total_amount、min_value、max_value值相同/// total_num=1固定/// 单个红包金额介于[1.00元,200.00元]之间/// </summary>/// <returns></returns>public ActionResult SendGroupRedPack(){string mchbillno = DateTime.Now.ToString("HHmmss") + TenPayV3Util.BuildRandomStr(28);string nonceStr = TenPayV3Util.GetNoncestr();RequestHandler packageReqHandler = new RequestHandler(null);packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串packageReqHandler.SetParameter("wxappid", TenPayV3Info.AppId); //公众账号IDpackageReqHandler.SetParameter("mch_id", TenPayV3Info.MchId); //商户号packageReqHandler.SetParameter("mch_billno", mchbillno); //填入商家订单号packageReqHandler.SetParameter("send_name", "商户名称"); //红包发送者名称packageReqHandler.SetParameter("re_openid", "接受收红包的用户的openId"); //接受收红包的用户的openIdpackageReqHandler.SetParameter("total_amount", "300"); //付款金额,单位分packageReqHandler.SetParameter("total_num", "3"); //红包发放总人数 必须介于(包括)3到20之间packageReqHandler.SetParameter("wishing", "红包祝福语"); //红包祝福语packageReqHandler.SetParameter("amt_type", "ALL_RAND"); //红包金额设置方式ALL_RAND—全部随机,商户指定总金额和红包发放总人数,由微信支付随机计算出各红包金额//packageReqHandler.SetParameter("amt_list", "各红包具体金额"); //各红包具体金额,自定义金额时必须设置,单位分 示例值"200|100|100"packageReqHandler.SetParameter("act_name", "活动名称"); //活动名称packageReqHandler.SetParameter("remark", "备注信息"); //备注信息string sign = packageReqHandler.CreateMd5Sign("key", TenPayV3Info.Key);packageReqHandler.SetParameter("sign", sign); //签名//发红包需要post的数据string data = packageReqHandler.ParseXML();//发红包接口地址string url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack";//本地或者服务器的证书位置(证书在微信支付申请成功发来的通知邮件中)string cert = @"F:\apiclient_cert.p12";//私钥(在安装证书时设置)string password = "";ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);//调用证书X509Certificate2 cer = new X509Certificate2(cert, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);#region 发起post请求HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);webrequest.ClientCertificates.Add(cer);webrequest.Method = "post";byte[] postdatabyte = Encoding.UTF8.GetBytes(data);webrequest.ContentLength = postdatabyte.Length;Stream stream;stream = webrequest.GetRequestStream();stream.Write(postdatabyte, 0, postdatabyte.Length);stream.Close();HttpWebResponse httpWebResponse = (HttpWebResponse)webrequest.GetResponse();StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());string responseContent = streamReader.ReadToEnd();#endregionreturn Content(responseContent);}#endregion
View Code
【3】红包查询
#region 红包查询接口public ActionResult GetHBInfo(string mchbillno){string nonceStr = TenPayV3Util.GetNoncestr();RequestHandler packageReqHandler = new RequestHandler(null);packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串packageReqHandler.SetParameter("appid", TenPayV3Info.AppId); //公众账号IDpackageReqHandler.SetParameter("mch_id", TenPayV3Info.MchId); //商户号packageReqHandler.SetParameter("mch_billno", mchbillno); //填入商家订单号packageReqHandler.SetParameter("bill_type", "MCHT"); //红包发送者名称string sign = packageReqHandler.CreateMd5Sign("key", TenPayV3Info.Key);packageReqHandler.SetParameter("sign", sign); //签名//发红包需要post的数据string data = packageReqHandler.ParseXML();//发红包接口地址string url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo";//本地或者服务器的证书位置(证书在微信支付申请成功发来的通知邮件中)string cert = @"F:\apiclient_cert.p12";//私钥(在安装证书时设置)string password = "";ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);//调用证书X509Certificate2 cer = new X509Certificate2(cert, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);#region 发起post请求HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);webrequest.ClientCertificates.Add(cer);webrequest.Method = "post";byte[] postdatabyte = Encoding.UTF8.GetBytes(data);webrequest.ContentLength = postdatabyte.Length;Stream stream;stream = webrequest.GetRequestStream();stream.Write(postdatabyte, 0, postdatabyte.Length);stream.Close();HttpWebResponse httpWebResponse = (HttpWebResponse)webrequest.GetResponse();StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());string responseContent = streamReader.ReadToEnd();#endregionreturn Content(responseContent);}#endregion
View Code
红包活动常见的玩法有:关注送红包,签到红包(每日一次抢红包);打开网页送红包(当然网页得有其他的信息啦)。
微信公众号抢现金红包活动的核心代码分析(asp.net C#)相关推荐
- 微信公众号平台的现状及发展前景的分析(十八)
一.基本信息 标题:微信公众号平台的现状及发展前景的分析 时间:2018 出版源:传媒论坛 文件分类:文献笔记 二.研究背景 随着移动互联网科技的飞速发展和日趋成熟,新媒体越来越受到人们的关注.新媒 ...
- php实现微信公众号文章付费阅读功能的代码分享
关于php实现微信公众号文章付费阅读功能,就是一片公众号文章,点进去显示标题,作者,时间,公众号名称和部分内容,要想阅读所有内容,那就支付0.01元就可以阅读所有的内容,这就是付费阅读!!!当然金额可 ...
- 微信公众号抢票系统开发笔记
本次组队小作业的开发项目是微信公众号的抢票系统.我负责的是管理员的一些后台操作以及公众号内通过点击按钮.回复文字可以实现的一些票务功能的后端开发. 以下是我在开发过程中遇到的问题.解决方法. 前期准备 ...
- 微信开发(3):微信公众号发现金红包功能开发,利用第三方SDK实现(Java)
最近需求是 用户兑换微信红包,需要一些验证,加密,以及证书: 工欲善其事必先利其器 感谢前辈的微信SDK 已经维护三年了,还在维护中! 官方文档走一波 文档还是一如既往的 坑人啊,写的很简单,对简单明 ...
- 微信公众号代运营攻略 !粉丝分析、内容策略、营销策略、数据分析
文 | 企飞侠 全文一共1732字 微信公众号代运营是一项以帮助企业运营微信公众号为主要业务的服务. 公众号代运营不仅仅是简单的发文.策划,更是需要精细化的管理和策略.如何提高微信公众号的阅读量. ...
- 【Python爬虫】微信公众号历史文章和文章评论API分析
上一篇文章爬取微信公众号文章信息准备工作介绍了微信公众号历史文章和文章评论API的组成情况,历史文章API格式:https://mp.weixin.qq.com/mp/profile_ext?acti ...
- PHP阅读文章送积分规则代码,php实现微信公众号文章付费阅读功能的代码分享
关于php实现微信公众号文章付费阅读功能,就是一片公众号文章,点进去显示标题,作者,时间,公众号名称和部分内容,要想阅读所有内容,那就支付0.01元就可以阅读所有的内容,这就是付费阅读!!!当然金额可 ...
- asp微信地图导航代码,微信公众号获取当前位置并导航到目的地,asp写的源码
一个客户想在他的手机网页里面加上导航功能,让用户能直接导航他的店里,由于他的网站是用asp写的,所以只能是用asp给他写个微信导航地图功能了,闲话不说,直接钻微信公众号的坑吧,折腾一个多小时,搞明白了 ...
- 微信公众号服务器配置清空,微信公众号服务器配置(校验)(示例代码)
简介这篇文章主要介绍了微信公众号服务器配置(校验)(示例代码)以及相关的经验技巧,文章约685字,浏览量290,点赞数9,值得推荐! public function serve() { $echoSt ...
最新文章
- C语言经典例82-八进制转换为十进制
- gdb 查看 stl容器 zz
- Redis之rehash操作
- charles都踩过哪些坑_野路子14年 不如“缠论”1年 收益翻20倍
- gdb 命令_gdb实用的调试技巧:启动方式、堆栈信息、单步调试
- ECSHOP首页调用指定分类推荐商品/热卖商品/新品商品
- 【剑指Offer学习】【所有面试题汇总】
- Lockdir 文件夹加密 破解
- CDO解析eml文件为html,C# 读取eml文件 例子(解析eml文件)
- #10019. 「一本通 1.3 例 2」生日蛋糕
- 适用Macos的几款好用的人物照片编辑工具
- mysql数据库导出数据乱码问题_Mysql数据库导出来的是乱码如何解决
- C语言 neutralize函数,因子中性化
- 斌终于说出小米9缺货内幕,取消开售后,雷军对备货量充满自信
- UDP 实现多收多发,广播发送,组播发送 TCP 实现多收多发
- windows电脑无线投屏到小米电视
- 企业级LNMP环境搭建
- Win 8带给我们的惊喜和遗失的美好
- 转载:使用Windows Live Writer发布日志
- mfc之IDC,IDI,IDD等的含义