微信红包开发

以下是C#开发微信红包的源码

 public ActionResult CashRedPack()
        {

            //post请求
            string reqUrl = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";

            string nonce_str = WeChatMPToken.createNonceStr();//随机字符串
            string sign = ""; //
            string mch_billno = "";   //商户订单号
            string mch_id = "555555";  //商户号
            string wxappid = "yyyyyy"; //公众号appid
            string nick_name = "oo";  //提供方名称
            string send_name = "oo";  //商户名称
            string re_openid = "oAeN5js2Jlm7bK851l8sTLSfur64";  //用户openid
            int total_amount = 100;    //付款金额
            int min_value = 100;    //红包最小的金额
            int max_value = 100;   //红包最大的金额
            int total_num = 1;  //红包发放的人数
            string wishing = "送您的现金红包"; //红包祝福语
            string client_ip = "192.168.0.1";   //ip地址
            string act_name = "晒单返现";  //活动名称
            string remark = "晒单返现第二波";  // 活动备注
            string logo_imgurl = "https://mmbiz.qlogo.cn";// 商户logo的url   选填参数

            DateTime now = DateTime.Now;

            Random don = new Random();
            string str = string.Empty;

            for (int i = 0; i < 10; i++)
            {
                str += don.Next(0, 10);
            }

            mch_billno = mch_id + now.Year + now.Month + now.Day + str;
            //计算sign

            string stringSignTemp = string.Empty;

            stringSignTemp += "act_name=" + act_name;
            stringSignTemp += "&client_ip=" + client_ip;
            if (!string.IsNullOrEmpty(logo_imgurl))
            {
                stringSignTemp += "&logo_imgurl=" + logo_imgurl;

            }

            stringSignTemp += "&max_value=" + max_value;
            stringSignTemp += "&mch_billno=" + mch_billno;
            stringSignTemp += "&mch_id=" + mch_id;
            stringSignTemp += "&min_value=" + min_value;
            stringSignTemp += "&nick_name=" + nick_name;
            stringSignTemp += "&nonce_str=" + nonce_str;
            stringSignTemp += "&re_openid=" + re_openid;
            stringSignTemp += "&remark=" + remark;
            stringSignTemp += "&send_name=" + send_name;
            stringSignTemp += "&total_amount=" + total_amount;
            stringSignTemp += "&total_num=" + total_num;
            stringSignTemp += "&wishing=" + wishing;
            stringSignTemp += "&wxappid=" + wxappid;
            stringSignTemp += "&key=" + "199Mimo3848zhrmdgje33djgifekdo9";   //这个是你的api密钥

            //计算MD5值
            sign = MD5Security.GetMD5(stringSignTemp).ToUpper();

            string fuckyou = string.Empty;
            fuckyou = "<xml>";
            fuckyou += "<act_name><![CDATA[" + act_name + "]]></act_name>";
            fuckyou += "<client_ip><![CDATA[" + client_ip + "]]></client_ip>";
            fuckyou += "<logo_imgurl><![CDATA[" + logo_imgurl + "]]></logo_imgurl>";
            fuckyou += "<max_value><![CDATA[" + max_value + "]]></max_value>";
            fuckyou += "<mch_billno><![CDATA[" + mch_billno + "]]></mch_billno>";
            fuckyou += "<mch_id><![CDATA[" + mch_id + "]]></mch_id>";
            fuckyou += "<min_value><![CDATA[" + min_value + "]]></min_value>";
            fuckyou += "<nick_name><![CDATA[" + nick_name + "]]></nick_name>";
            fuckyou += "<nonce_str><![CDATA[" + nonce_str + "]]></nonce_str>";
            fuckyou += "<re_openid><![CDATA[" + re_openid + "]]></re_openid>";
            fuckyou += "<remark><![CDATA[" + remark + "]]></remark>";
            fuckyou += "<send_name><![CDATA[" + send_name + "]]></send_name>";
            fuckyou += "<total_amount><![CDATA[" + total_amount + "]]></total_amount>";
            fuckyou += "<total_num><![CDATA[" + total_num + "]]></total_num>";
            fuckyou += "<wishing><![CDATA[" + wishing + "]]></wishing>";
            fuckyou += "<wxappid><![CDATA[" + wxappid + "]]></wxappid>";
            fuckyou += "<sign><![CDATA[" + sign + "]]></sign>";
            fuckyou += "</xml>";
            //System.Xml.Linq.XDocument xml = System.Xml.Linq.XDocument.Parse(fuckyou);

            //Stream xmlStream = new MemoryStream();
            //xml.Save(xmlStream);
            //byte[] bytes = new byte[xmlStream.Length];
            //xmlStream.Read(bytes, 0, bytes.Length);
            //// 设置当前流的位置为流的开始
            //xmlStream.Seek(0, SeekOrigin.Begin);

            Encoding encoding = Encoding.UTF8;
            byte[] bytes = encoding.GetBytes(fuckyou);

            //发送post 请求  附带折证书

            try
            {
                //string url = "https://api.mch.weixin.qq.com/secapi/pay/refund";
                string cert = @"C:\cert\apiclient_cert.p12";
                string password = "10026591";

                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                X509Certificate cer = new X509Certificate(cert, password,X509KeyStorageFlags.MachineKeySet);
                HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(reqUrl);
                webrequest.ClientCertificates.Add(cer);

                webrequest.Method = "post";
                webrequest.ContentLength = bytes.Length;
                webrequest.GetRequestStream().Write(bytes, 0, bytes.Length);
                HttpWebResponse webreponse = (HttpWebResponse)webrequest.GetResponse();
                Stream stream = webreponse.GetResponseStream();
                string resp = string.Empty;
                using (StreamReader reader = new StreamReader(stream))
                {
                    resp = reader.ReadToEnd();
                }
            }
            catch (Exception exp)
            {

            }

            //解析xml
            return Json(new { isSuccess = 1 },JsonRequestBehavior.AllowGet);

        }

        private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            if (errors == SslPolicyErrors.None)
                return true;
            return false;
        }

  

这里面可能有几个需要注意的地方 当初我开发的时候也是遇到了
1.0
int total_amount = 100; //付款金额 这里的金额 是一分 而不是元
int min_value = 100; //红包最小的金额
int max_value = 100; //红包最大的金额
红包的最大值和最小值要是相同的

2.0
string cert = @"C:\cert\apiclient_cert.p12"; 证书所存放的地址不能是桌面 估计是没有权限 如果是桌面会提示找不到证书(即使安装过)

3.0
切记 安装证书的时候选择本地计算机 而不是当前用户 否则加载不了
使用代码创建证书的时候 要选择从本地计算机加载

时间: 2024-08-25 01:10:09

微信红包开发的相关文章

基于ping++聚合支付进行微信红包开发

1.微信方面的开发,一定要详细的阅读微信支付的开发文档. https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_1 2.如果是公司的项目肯定有准备好的微信商户平台和微信公众号平台的相关账号,如果是个人的测试项目,请提前按照文档进行准备,否则无法进行下去. 3.因为使用的是ping++第三方聚合支付,所以代码其实比较简单,可以参考ping++官方文档. 4.因为涉及现金操作,所以微信本身也有很多安全设置.按照

微信企业红包开发(php)

微信的开发真的有点麻烦,不是难,就是烦,细节多,东西多,关联多 这里记录下 微信企业红包开发的整个过程(弄完的话  微信支付 也差不多了,代码是 php的) 申请:这里只说简单的过程 先申请公众服务号 在服务号中申请'微信支付'(登录公众号平台首页左面有这个菜单),觉得微信在推广移动支付,所以还是很好申请的,关于申请中填写的网站最好做一个购买的演示链接,这样可能更容易下来. 证书 微信支付申请下来了,那么你有了一个 微信的 商户号和登录密码 (会发邮件给你) 还是从申请微信支付哪里 点到  微信

微信红包营销系统开发

微信扫码送红包系统,扫一扫领红包,微信扫码得红包,微信小程序开发联系江经理:134-2106-8261. 如今,年轻消费者逐渐成为消费核心群体而带来的消费群体断层,而很多的企业还在用传统的方式进行促销导致了企业的销售量非常的低.今天跟大家详细介绍下微信红包营销系统活动解决方案,让商家捉住传统促销的痛点,让销量暴增. 一.微信扫码红包营销系统产生. 1.所有线上线下的努力,都是为了实现消费者更简单.更高效的购物体验.企业为了更方便快捷的满足消费者的需求,都在尽可能以用户为主导,简化购物流程,转化潜

微信红包接口开发-yunmatui

摇钱盒是2016年最新微创业项目,可咨询QQ:1991810626:用户只需打开蓝牙,就可以开始使用微信摇红包了,即不需要任何复杂的操作,也不需要抢,每个微信号每天保证可以摇三个红包. 一.摇钱盒系统怎么通过发红包赚钱? 1.你可以带着你的摇钱盒到处炫耀随时随地发红包,每个微信号每天可以摇到三个现金红包. 2.如果你一年内摇了188天,但是所有的收益加起来没有达到188元,可以直接申请返款! 3.别人通过你的设备摇到的红包你还可以得到红包总额的30%返利. 4.系统会为你生成一个设备激活码,如果

微信红包系统asp源码开发的,也有叫微信一物一码红包系统

最近接了一个生产万能胶的客户红包开发的要求,他想实现在他所有产品包装上贴一个小标签,上面有二维码可以扫码关注他的公众号,下面是一个刮刮银,刮开后是上串数字码,别人关注他的公众号后就可 以在公众号下面的菜单点“领红包”,然后打开领红包页面,输入刚刮开的数字码,领取不定额的红包,此举就是为了吸引装修工推荐他的产品给业主用,让业主买了产品,装修工好领包,我在网上找了半天 源码也没找到,有的说这叫一物一码,找到的全是php开发的,我又不会用,改又改不好,想想还是自已用asp开发写一个吧,经过近10天的努

微信企业号开发之 企业号人员身份认证与开发

前言 这里完全可以链接一个登录页面,让用户输入用户名密码进行登录的...2333 但是,这样所就完全失去了微信企业号的意义,本来进入微信企业号的时候,就已经对人员身份进行认证了,你这里再让别人登录,不是显得多余么? 于是,需要考虑的是,如何获取微信企业号中用户的身份,以及将用户身份与自有系统进行关联. 一.建立企业应用并配置可信域名 在微信的管理界面里面,建立一个企业应用.建立的过程很简单,但是这里需要注意的是,建立完以后,一定要配置可信域名!!!!并且如果你不是使用的标准端口,一定也要把端口配

基于微信红包插件的原理实现android任何APP自动发送评论(已开源)

背景 地址:https://github.com/huijimuhe/postman 核心就是android的AccessibilityService,回复功能api需要23以上版本才行. 其实很像在做单元测试.你可以有n种方式实现发帖功能,这只是一个比较邪火的方式,亲测过一次,可行.这里我以网易新闻客户端举例. 模拟你在手机端的物理动作:选择新闻->回复->退回新闻列表->进入下一个新闻->回复->退回新闻列表刷新->进入->回复.... 做的不精细,只是探究到

日用品扫一扫微信红包活动

扫一扫微信红包活动 过去几年,支付宝在移动端一直被微信支付压着打,至少在线下支付上,腾讯已迎头赶上,在出行.零售.生活服务诸多领域的覆盖率不输支付宝钱包.总之,腾讯移动支付业务做起来了,而核心能力是社交. 就是由于腾讯这边放宽了,扫一扫微信红包活动越来越受大家欢迎,那么扫一扫微信红包活动.扫一扫微信红包活动系统开发.扫一艘微信红包活动可找小编:136-0243-3692. 一.扫一扫微信红包活动是怎么来操作的: 扫一扫微信红包活动直接跳转至红包活动领取页面,免微信授权登陆可以直观的展示企业品牌和

官方微信接口(全接口) - 微信摇一摇接口/微信多客服接口/微信支付接口/微信红包接口/微信卡券接口/微信小店接口/JSAPI

微信入口绑定,微信事件处理,微信API全部操作包含在这些文件中.微信支付.微信红包.微信卡券.微信小店. 微信开发探讨群 330393916 <?php /**  * Description of wechat  *  * @author Administrator  */ class WeChat extends WxApi{     public $token = "";     //put your code here     public function __const