微信支付教程系列之现金红包

 目录
(一)微信公众号开发之VS远程调试
(二)微信公众号开发之基础梳理
(三)微信公众号开发之自动消息回复和自定义菜单
(四)微信公众号开发之网页授权获取用户基本信息
(五)微信公众号开发之网页中及时获取当前用户Openid及注意事项
(六)微信公众号开发之扫码支付
(七)微信公众号开发之公众号支付
(八)微信公众号开发之现金红包
(九)微信公众号开发之回复图文消息(被动)
微信支付教程系列之现金红包
        最近最弄这个微信支付的功能,然后扫码、公众号支付,这些都做了,闲着无聊,就看了看微信支付的其他功能,发现还有一个叫“现金红包”的玩意,想着自己平时也喜欢发红包玩玩,但是就没试过写程序来实现,所以,心中就萌发了这个,搞一搞微信红包的功能,想尝试一下。
 
         首先,先去查看的,当然是官方的API了,但是看了之后,心中跟以前初次接触微信支付那样,心中万头草泥马在奔腾。我们想哈,一个这么大的公司,我相信你们不缺技术人员吧,为什么你们就不能每个功能模块,按照语言大类,分别写一个demo出来呢?你特么,就简简单单的写几个接口给“我们”看。其中,为啥,“我们”要加双引号呢?因为,我觉得啊,腾讯这边,写的这个文档,只给那些有4、5年工作经验以上的,老手,对代码和程序非常熟悉的人看的。因为,刚出来工作,或者才工作一两年的,看这些接口,真特么的是一头雾水的。不知道我写的这些,腾讯公司的人会不会看得到,看到了,会不会找我去面谈呢?毕竟,我也是准备过深圳发展的人,O(∩_∩)O哈哈~
 
         后来,不费话了,我贴一下官方的API来给看看,地址:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_5
 
 

红包发放说明

用于企业向微信用户个人发现金红包

目前支持向指定微信用户的openid发放指定金额红包。(获取openid参见微信公众平台开发者文档:网页授权获取用户基本信息

如需操作请登录https://pay.weixin.qq.com/

 

这第一段话:第一、就是告诉你们,现在红包,只能通过openid来发,不能通过我们的微信号(微信号是你的唯一id,在自己微信上可以看得到,openid也是唯一,但是在自己的微信上看不到,只能通过接口来获取自己的openid,至于怎么后去,上面有链接,可以通过网页授权来获取)来发红包。第二呢,就是告诉你,你要知道怎么后去openid。这个怎么获取openid,我这里就不介绍了,这个属于微信支付最基础的了,如果你获取不到openid,那么基本上所有功能你都做不了。如果不知道怎么弄的,还是看看官方的文档,或者百度找找。我记得,好像我也有写过相关的教程,但是我不记得有没有发在博客园了。好了,先不扯这个。

 

 

        接下来,看完了段话,我们来看真正的API,如下:

 

 

接口调用请求说明

请求Urlhttps://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack
是否需要证书是(证书及使用说明详见商户证书
请求方式POST
这一段呢,就是告诉你,小盆友们,我这个是http请求的,所以,要用到HttpWebRequest  这玩意,如果你不懂,哼哼,我也不会给demo你的,自己度娘去(是不是想骂他,那你骂吧,别骂我就行,因为接下来,我告诉你怎么整)。接下来呢,这次这好家伙,需要用到证书了,这个怎么用啊,证书怎么添加啊,还是一头雾水是吧?那您继续骂,骂够了,咱继续往下走。接下来,请求方式,是POST,这个,应该懂的人比较多,应该没啥问题,心里终于好受一些了。好,这一段到这。我们继续往下走。。。
 

请求参数

字段名字段必填示例值类型说明
随机字符串nonce_str5K8264ILTKCH16CQ2502SI8ZNMTM67VSString(32)随机字符串,不长于32位
签名signC380BEC2BFD727A4B6845133519F3AD6String(32)详见签名生成算法
商户订单号mch_billno10000098201411111234567890String(28)

商户订单号(每个订单号必须唯一)

组成:mch_id+yyyymmdd+10位一天内不能重复的数字。

接口根据商户订单号支持重入,如出现超时可再调用。

商户号mch_id10000098String(32)微信支付分配的商户号
公众账号appidwxappidwx8888888888888888String(32)微信分配的公众账号ID(企业号corpid即为此appId)。接口传入的所有appid应该为公众号的appid(在mp.weixin.qq.com申请的),不能为APP的appid(在open.weixin.qq.com申请的)。
商户名称send_name天虹百货String(32)红包发送者名称
用户openidre_openidoxTWIuGaIt6gTKsQRLau2M0yL16EString(32)

接受红包的用户

用户在wxappid下的openid

付款金额total_amount1000int付款金额,单位分
红包发放总人数total_num1int

红包发放总人数

total_num=1

红包祝福语wishing感谢您参加猜灯谜活动,祝您元宵节快乐!String(128)红包祝福语
Ip地址client_ip192.168.0.1String(15)调用接口的机器Ip地址
活动名称act_name猜灯谜抢红包活动String(32)活动名称
备注remark猜越多得越多,快来抢!String(256)备注信息
这里面呢,就是请求的参数了,每个都有相应的解释,所以,我就不多讲了。然后呢,这些个参数就是让你传参的,但是我们弄好之后呢,到底是传一个对象呢,还是字符串呢?一般用过请求的同伴都知道是字符串的格式,字符串也有好几种,分json和xml,这次微信支付里面用到的就是xml了,我们看他的demo,如下:

数据示例:

<xml>

<sign><![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]></sign>

<mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno>

<mch_id><![CDATA[888]]></mch_id>

<wxappid><![CDATA[wxcbda96de0b165486]]></wxappid>

<send_name><![CDATA[send_name]]></send_name>

<re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid>

<total_amount><![CDATA[200]]></total_amount>

<total_num><![CDATA[1]]></total_num>

<wishing><![CDATA[恭喜发财]]></wishing>

<client_ip><![CDATA[127.0.0.1]]></client_ip>

<act_name><![CDATA[新年红包]]></act_name>

<remark><![CDATA[新年红包]]></remark>

<nonce_str><![CDATA[50780e0cca98c8c8e814883e5caa672e]]></nonce_str>

</xml>

通过上面,我们就很详细的知道,我们要的是xml了,非常幸运的是,微信支付的demo里面,有这个转xml的代码,所以,下面我的代码里面,就直接用他的了。接下来,我们就开始实战了。
首先,我们就新建一个窗体(虽然我用窗体,但是用在web上,也是一样通用的)来,如下:
然后双击“测试微信红包”,自动生成代码如吓:
       
复制代码
 /// <summary>
        /// 发送微信红包
        /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSendRedPack_Click(object sender, EventArgs e) { string strData = GetJsApiParameters(); string strUrl = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";//这个就是发送红包的API接口了 string strResult = WxRedPackPost(strUrl, strData); } 
复制代码

 

 
上面的strData的来源,别紧张,我会把代码贴出来的,如下(记住,我每个都有注释,自己认真看):
 
复制代码
         /// <summary>
        /// 构造参数
        /// </summary> /// <returns></returns> public string GetJsApiParameters() { int iMin = 1000; int iMax = 9999; Random rd = new Random();//构造随机数 string strMch_billno = WxPayConfig.MCHID + DateTime.Now.ToString("yyyyMMddHHmmss") + rd.Next(iMin, iMax).ToString(); WxPayData jsApiParam = new WxPayData(); jsApiParam.SetValue("act_name", "活动名称:功能测试");//活动名称 jsApiParam.SetValue("client_ip", "192.168.1.216");//这里填写的是我本机的内网ip,实际应用不知道需不需要改。 jsApiParam.SetValue("mch_billno", strMch_billno);//商户订单号,商户订单号(每个订单号必须唯一)组成:mch_id+yyyymmdd+10位一天内不能重复的数字。 接口根据商户订单号支持重入,如出现超时可再调用。 jsApiParam.SetValue("mch_id", WxPayConfig.MCHID);//商户号,微信支付分配的商户号 jsApiParam.SetValue("nonce_str", WxPayApi.GenerateNonceStr());//随机字符串,不长于32位 jsApiParam.SetValue("remark", "备注信息,梁明晓");//备注信息 jsApiParam.SetValue("re_openid", "oZk_xsvzIqH2Xz_RPycJEYuTHAXx");//接收者的openid jsApiParam.SetValue("send_name", "雅达电子");//商户名称,红包发送者名称 jsApiParam.SetValue("total_amount", 100);//红包金额,单位分 jsApiParam.SetValue("total_num", 1);//红包发放总人数 jsApiParam.SetValue("wishing", "感谢您参加猜灯谜活动,祝您元宵节快乐!");//红包祝福语 jsApiParam.SetValue("wxappid", WxPayConfig.APPID);//公众账号appid,微信分配的公众账号ID(企业号corpid即为此appId)。接口传入的所有appid应该为公众号的appid(在mp.weixin.qq.com申请的),不能为APP的appid(在open.weixin.qq.com申请的)。 jsApiParam.SetValue("sign", jsApiParam.MakeSign());//签名,切记,这个签名参数必须放在最后,因为他生成的签名,跟前面的参数有关系 string parameters = jsApiParam.ToXml(); return parameters; }
复制代码

 

上述这些:WxPayData,WxPayConfig,WxPayApi是在微信支付的demo中直接拿过来用的,你们也直接拿过来用就行,官方demo下载地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1
缺少的代码就剩下:WxRedPackPost这个了,也会给你,统统都给你,O(∩_∩)O哈哈~( 记住哈,改写的,我都写了注释,自己认真看)
       
复制代码
     /// <summary>
        /// 提交请求
        /// </summary> /// <param name="posturl"></param> /// <param name="postData"></param> /// <returns></returns> public string WxRedPackPost(string posturl, string postData) { Stream outstream = null; Stream instream = null; StreamReader sr = null; HttpWebResponse response = null; HttpWebRequest request = null; Encoding encoding = Encoding.UTF8; byte[] data = encoding.GetBytes(postData); // 准备请求... try { //CerPath证书路径,这里是本机的路径,实际应用中,按照实际情况来填写 string certPath = @"F:\Jeffrey9061\SVN\Project\CompanyProject\西安培华微信用户实时更新客户端\西安培华微信用户实时更新客户端\" + WxPayConfig.SSLCERT_PATH; //证书密码 string password = WxPayConfig.SSLCERT_PASSWORD; X509Certificate2 cert = new System.Security.Cryptography.X509Certificates.X509Certificate2(certPath, password, X509KeyStorageFlags.MachineKeySet); // 设置参数 request = WebRequest.Create(posturl) as HttpWebRequest; CookieContainer cookieContainer = new CookieContainer(); request.CookieContainer = cookieContainer;//不可少(个人理解为,返回的时候需要验证) request.AllowAutoRedirect = true; request.Method = "POST"; request.ContentType = "text/xml"; request.ContentLength = data.Length; request.ClientCertificates.Add(cert);//添加证书请求 outstream = request.GetRequestStream(); outstream.Write(data, 0, data.Length); outstream.Close(); //发送请求并获取相应回应数据 response = request.GetResponse() as HttpWebResponse; //直到request.GetResponse()程序才开始向目标网页发送Post请求 instream = response.GetResponseStream(); sr = new StreamReader(instream, encoding); //返回结果网页(html)代码 string content = sr.ReadToEnd(); string err = string.Empty; return content; } catch (Exception ex) { string err = ex.Message; return string.Empty; } } 
复制代码

 

 
 好,到此大功告成,下面是红包发送的截图:
 
原文地址:https://www.cnblogs.com/nangong/p/1a2add4356c7bcbab5990c89cbe37d38.html

转载于:https://www.cnblogs.com/zhangxiaoyong/p/9268983.html

标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则和常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模型及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类型、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化和改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
在金融行业中,对信用风险的判断是核心环节之一,其结果对机构的信贷政策和风险控制策略有直接影响。本文将围绕如何借助机器学习方法,尤其是Sklearn工具包,建立用于判断信用状况的预测系统。文中将涵盖逻辑回归、支持向量机等常见方法,并通过实际操作流程进行说明。 一、机器学习基本概念 机器学习属于人工智能的子领域,其基本理念是通过数据自动学习规律,而非依赖人工设定规则。在信贷分析中,该技术可用于挖掘历史数据中的潜在规律,进而对未来的信用表现进行预测。 二、Sklearn工具包概述 Sklearn(Scikit-learn)是Python语言中广泛使用的机器学习模块,提供多种数据处理和建模功能。它简化了数据清洗、特征提取、模型构建、验证与优化等流程,是数据科学项目中的常用工具。 三、逻辑回归模型 逻辑回归是一种常用于分类任务的线性模型,特别适用于二类问题。在信用评估中,该模型可用于判断借款人是否可能违约。其通过逻辑函数将输出映射为0到1之间的概率值,从而表示违约的可能性。 四、支持向量机模型 支持向量机是一种用于监督学习的算法,适用于数据维度高、样本量小的情况。在信用分析中,该方法能够通过寻找最佳分割面,区分违约与非违约客户。通过选用不同核函数,可应对复杂的非线性关系,提升预测精度。 五、数据预处理步骤 在建模前,需对原始数据进行清理与转换,包括处理缺失值、识别异常点、标准化数值、筛选有效特征等。对于信用评分,常见的输入变量包括收入水平、负债比例、信用历史记录、职业稳定性等。预处理有助于减少噪声干扰,增强模型的适应性。 六、模型构建与验证 借助Sklearn,可以将数据集划分为训练集和测试集,并通过交叉验证调整参数以提升模型性能。常用评估指标包括准确率、召回率、F1值以及AUC-ROC曲线。在处理不平衡数据时,更应关注模型的召回率与特异性。 七、集成学习方法 为提升模型预测能力,可采用集成策略,如结合多个模型的预测结果。这有助于降低单一模型的偏差与方差,增强整体预测的稳定性与准确性。 综上,基于机器学习的信用评估系统可通过Sklearn中的多种算法,结合合理的数据处理与模型优化,实现对借款人信用状况的精准判断。在实际应用中,需持续调整模型以适应市场变化,保障预测结果的长期有效性。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值