C#开发微信门户及下(33)–微信现金红包的卷入及采取

By admin in 亚洲必赢app在哪下载 on 2018年10月10日

本身以上篇随笔《C#支出微信门户及应用(32)–微信支付接入和API封装使用》介绍为微信支付的API封装及以,其中介绍了怎样布置好开发环境,并针对性扫码支付的点滴种方法怎么样以C#开发被运用进行了介绍,本随笔继续介绍微信支付的相关内容,介绍其中的微信现红包与裂变红包的包裹和动。

当上篇随笔后,经过对合微信框架的周和重构,已经完成了针对微信支付、企业会、现金红包、代金券及各种卡劵进行了打包好,并拿中微信支付和摇一摇红包有等情节作民众号及店铺号通用的有的,这些付出有关的接口在公众号与店号里,都可展开调用的,在通过同多重之优化整治后,把这些内容逐条进行介绍,希望大家欣赏支持。

1、现金红包的定义与采取

1)使用状况

微信支付现金红包为微信支付经纪人开发,具体能力如下:

◆ 商户调用接口时,通过点名发送对象和发送金额之法门发给红包,这样的章程,允许商户灵活的运叫各种各样丰富的移动现象

◆ 领取到红包后,用户的成本直接进入微信零钱,避免繁复的领奖流程,带被用户微信支付原生的流利体验

 

2)微信红包发送规则

出殡频率规则

◆ 每分钟发送红包数不足超过1800单;

◆ 同一个商户号,每分钟最为多被与一个用户发送一个红包;

红包规则

◆ 单个红包金额在[1.00元,200.00元]之间;


同一个红包只能发送给一个用户;(如果上述规则不满足你的需要,请发邮件至wxhongbao@tencent.com获取升级引)

◆ 红包发给后72小时不吃取将拓展退款

 

3) 微信红包接口调用流程

◆ 后台API调用:待上联调过程时同付出进展详尽沟通;


告知服务器:告知服务器收到微信红包的用户openID,告知服务器该用户获得的金额;

◆ 从商务号扣款:服务器获取信息后自对应之商务号扣取对应的金额;


调用失败:因无合乎发送规则,商务号余额不足等原因促成调用失败,反馈及调用方;

◆ 发送成功:以微信红包公众账号发送对诺红包至对应用户;

亚洲必赢app在哪下载 1

2、 现金红包API接口的印证及C#的封装

用来企业为微信用户个人发现金红包,目前支持为指定微信用户之openid发放指定金额红包。

尽管如此好透过微信的经纪人后台进行现金红包的发放,但咱呢得以用微信提供的接口API进行现金红包的发送。

接口调用请求说明

请求Url https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack
是否需要证书 是(证书及使用说明详见商户证书
请求方式 POST

告参数

字段名 字段 必填 示例值 类型 说明
随机字符串 nonce_str 5K8264ILTKCH16CQ2502SI8ZNMTM67VS String(32) 随机字符串,不长于32位
签名 sign C380BEC2BFD727A4B6845133519F3AD6 String(32) 详见签名生成算法
商户订单号 mch_billno 10000098201411111234567890 String(28)

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

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

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

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

接受红包的用户

用户在wxappid下的openid

付款金额 total_amount 1000 int 付款金额,单位分
红包发放总人数 total_num 1 int

红包发放总人数

total_num=1

红包祝福语 wishing 感谢您参加猜灯谜活动,祝您元宵节快乐! String(128) 红包祝福语
Ip地址 client_ip 192.168.0.1 String(15) 调用接口的机器Ip地址
活动名称 act_name 猜灯谜抢红包活动 String(32) 活动名称
备注 remark 猜越多得越多,快来抢! String(256) 备注信息

多少示例:

<xml>
<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>

点是接口和输入参数的辨证,一般情形下,我们要依据这些来控制如何贯彻C#代码的卷入,首先我们来定义我们需要之接口及相近,如下所示。

亚洲必赢app在哪下载 2

由此分析者的接口说明,我们可以发现,其中接口有一些是定位的正常参数,也尽管是相似民众号还是公司号的身价信息,有局部是事情参数,因此我们拿它们各自分离出来,这样方便我们对接口的包裹和行使,那些健康的参数我们透过群众号位获取就可了,业务信息,我们可以定义一个实体类来进展数量的贮存交换即可。

亚洲必赢app在哪下载 3

对承诺高达图的定势的正常参数,在接口说明中如下所示。

亚洲必赢app在哪下载 4

因而,这些信我们于账号里装以及获得即可,我们好在保管后台对她进行安排,然后以代码逻辑中得到出来用即可。

亚洲必赢app在哪下载 5

亚洲必赢app在哪下载 6

依据地方的介绍,我们得定义红包接口代码如下所示。

    /// <summary>
    /// 微信红包(摇一摇红包)操作API
    /// </summary>
    public interface ILotteryApi
    {              
        /// <summary>
        /// 用于企业向微信用户个人发现金红包。需要商户证书
        /// 目前支持向指定微信用户的openid发放指定金额红包。
        /// </summary>
        /// <returns></returns>
        SendRedPackResult SendRedPack(SendRedPackJson json);

里面的 SendRedPackJson
是咱们别之事情参数,我们定义了一个近似来进展信息之承上启下,方便想接口传递信息。

    /// <summary>
    /// 现金红包和裂变红包的基础信息
    /// </summary>
    public class BaseRedPackJson
    {
        /// <summary>
        /// 接受红包的用户
        /// 用户openid    
        /// </summary>
        public string re_openid { get; set; }

        /// <summary>
        /// 付款金额,单位分
        /// </summary>
        public int total_amount { get; set; }

        /// <summary>
        /// 红包发放总人数
        /// </summary>
        public int total_num { get; set; }

        /// <summary>
        /// 红包祝福语
        /// </summary>
        public string wishing { get; set; }

        /// <summary>
        /// 活动名称
        /// </summary>
        public string act_name { get; set; }

        /// <summary>
        /// 备注信息
        /// </summary>
        public string remark { get; set; }
    }

    /// <summary>
    /// 发送红包的数据信息
    /// </summary>
    public class SendRedPackJson :BaseRedPackJson
    {
        /// <summary>
        /// 调用接口的机器Ip地址
        /// </summary>
        public string client_ip { get; set; }

        public SendRedPackJson()
        {
            this.total_num = 1;//红包发放总人数
        }
    }

冲上面参数的概念,我们于现红包的接口实现中,具体代码如下所示,里面的逻辑内容,主要就是传常规参数和事情参数两有些,然后调用接口的地点进行多少的提交(POST),获取返回结果并拓展解析即可。

        /// <summary>
        /// 用于企业向微信用户个人发现金红包。需要商户证书
        /// 目前支持向指定微信用户的openid发放指定金额红包。
        /// </summary>
        /// <returns></returns>
        public SendRedPackResult SendRedPack(SendRedPackJson json)
        {
            CheckAccount();//检查AccountInfo的对象属性值

            //加入常规的参数
            WxPayData data = new WxPayData();
            data.SetValue("wxappid", AccountInfo.UniteAppId);//公众账号appid
            data.SetValue("mch_id", AccountInfo.MchID);//商户号
            data.SetValue("nonce_str", data.GenerateNonceStr());//随机字符串
            data.SetValue("send_name", AccountInfo.Name);//    红包发送者名称

            //商户订单号(每个订单号必须唯一) 组成:mch_id+yyyymmdd+10位一天内不能重复的数字。
            //接口根据商户订单号支持重入,如出现超时可再调用。
            data.SetValue("mch_billno", data.GenerateOutTradeNo(AccountInfo.MchID));

            data.SetValue("re_openid", json.re_openid);
            data.SetValue("total_amount", json.total_amount);
            data.SetValue("total_num", json.total_num);
            data.SetValue("wishing", json.wishing);
            data.SetValue("client_ip", json.client_ip);
            data.SetValue("act_name", json.act_name);
            data.SetValue("remark", json.remark);

            data.SetValue("sign", data.MakeSign(AccountInfo.PayAPIKey));//最后生成签名

            var url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
            return Helper.GetPayResultWithCert<SendRedPackResult>(data, url, AccountInfo.CertPath, AccountInfo.CertPassword);
        }

个中发送红包操作是用证明的,因此用添加对应之关系,证书是自从微信的商人平台上开展下载的。

每当商贩后台的【API安全】项目上下充满证书供我们开环境下。

亚洲必赢app在哪下载 7

下载证书后,在Windows环境,我们一般要双击安装,输入所急需的商户号作为密码即可。

亚洲必赢app在哪下载 8

在代码里面,我们得以应用证书类进行添加

            HttpHelper helper = new HttpHelper();

            helper.ClientCertificates = new X509CertificateCollection();
            certPath = Path.Combine(System.Environment.CurrentDirectory, certPath);
            helper.ClientCertificates.Add(new X509Certificate2(certPath, certPassword));
            string response = helper.GetHtml(url, xml, true);

 

3、微信红包的使结果

 例如,我们以测试例子里调用代码如下所示。

                //现金红包
                SendRedPackJson packJson = new SendRedPackJson()
                {
                    act_name = "恭喜发财",
                    client_ip = NetworkUtil.GetIPAddress(),
                    remark = "企业红包",
                    wishing = "企业红包",
                    total_amount = 100,
                    total_num = 1,
                    re_openid = tosendOpenId //发送给用户的OpenID
                };
                var result = hbApi.SendRedPack(packJson);
                var message = string.Format("企业发送红包:{0} {1}", result.Success ? "成功" : "失败", result.Message);
                Console.WriteLine(message);
                Console.WriteLine(result.ToJson());

内部的hbApi是者接口的组织,如下代码所示。

 AccountInfo  accountInfo = new AccountInfo()
    {
       Name = this.SendName,
        AppID = this.AppId,
        AppSecret = this.AppSecret,
        MchID = this.MchID,
        PayAPIKey = this.PayAPIKey,
        CertPath = this.CertPath,
        CertPassword = this.CertPassword,
         PayNotifyUrl = this.PayNotifyUrl
     };
 ILotteryApi hbApi = new LotteryApi(accountInfo);

成功调用后,我们可于万众号的对话中来看红包的信结果,如下是合红包发送和拆迁的经过。

亚洲必赢app在哪下载 9     
 亚洲必赢app在哪下载 10   
 亚洲必赢app在哪下载 11

 

假使对是《C#付出微信门户及采取》系列感兴趣,可以关注自己之外文章,系列随笔如下所示:

C#开微信门户及利用(36)–微信卡劵管理的包装操作

C#支出微信门户及用(35)–微信支付的局会封装操作

C#开发微信门户及动(34)–微信裂变红包

C#开微信门户及采取(33)–微信现金红包的包及使用

C#支出微信门户及利用(32)–微信支付接入和API封装使用

C#出微信门户及用(31)–微信语义理解接口的兑现与处理

C#支付微信门户及动(30)–音之群发处理同预览功能

C#付出微信门户及使用(28)–微信“摇一摇·周边”功能的使用及接口的贯彻

C#开微信门户及运用(27)-公众号模板消息管理 

C#支出微信门户及用(26)-公众号微信资料管理

C#开发微信门户及下(25)-微信企业号的客户端管住效果

C#开微信门户及使用(24)-微信小店货架信息保管

C#支出微信门户及利用(23)-微信小店商品管理接口的包裹和测试

C#出微信门户及用(22)-微信小店的开以及运用

C#支付微信门户及动(21)-微信企业号的音讯及波的接受处理和解密 

C#开发微信门户及使用(20)-微信企业号的食谱管理

C#支付微信门户及运用(19)-微信企业号的音讯发送(文本、图片、文件、语音、视频、图文信息等)

C#开发微信门户及下(18)-微信企业号的通讯录管理出之成员管理

C#支付微信门户及应用(17)-微信企业号的通讯录管理出的部门管理

C#开发微信门户及运用(16)-微信企业号的布置与用

C#支付微信门户及动(15)-微信菜单增加扫一扫、发图片、发地理位置功能

C#开发微信门户及使用(14)-在微信菜单中使用重定向获得用户数据

C#开微信门户及运用(13)-使用地理位置扩展相关以

C#支出微信门户及以(12)-使用语音处理

C#开发微信门户及下(11)–微信菜单的又呈现方法介绍

C#支付微信门户及使用(10)–在管制网受同微信用户分组信息

C#付出微信门户及利用(9)-微信门户菜单管理与交至微信服务器

C#出微信门户及以(8)-微信门户应用管理网机能介绍

C#支付微信门户及下(7)-微信多客服功能和支出并

C#付出微信门户及使用(6)–微信门户菜单的田间管理操作

C#出微信门户及利用(5)–用户分组信息保管

C#支付微信门户及运用(4)–关注用户列表及详细信息管理

C#付出微信门户及以(3)–文本信息和图文信息之答应

C#出微信门户及采取(2)–微信音之处理和答

C#支付微信门户及应用(1)–开始动微信接口

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 亚洲必赢app官方下载 版权所有