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

 在本种类小说的眼前,紧要就是介绍微信公众号的山头应用开发,近期把一切微信框架进行了扩张补充,扩充了新式的商号号的API封装和付出,后续首要介绍怎么样行使C#开展微信公司号的支付工作,本篇作为微信公司号的支出的启航篇,介绍微信企业号的安插和使用。

1、微信集团号的挂号和登陆

店家号是继公众号、订阅号的另外一种微信类型,它根本是面对公司的。公司号是微信为集团客户提供的移动应用入口。可以协助公司树立职工、上下游供应链与合营社
IT 系统间的连年。利用 集团号
,公司或第三方同盟伙伴能够帮助集团快捷、低本钱的落到实处高质料的移位轻应用,完结生育、管理、合营、运营的
移动化 。

民用认为公司号最大的优点是可以不限数量的音讯发送,也就是可以在店铺职工之间通行互换。相对于民众号和订阅号,发送音讯的严俊程度,微信公司号可谓给人眼睛一亮的觉得。然而微信集团号是急需中间建立好通讯录,关心者需要协作通讯录的微信号、邮箱、电话号码任一个经过才得以关注,也就是可以预防其余外来人士的自由关怀了,此外若是为了安全考虑,还是可以够安装二次评释,也就是一个核查进度。

同盟社号的求证和公众号一致,需求提供有关的集团资质文件,并且证实每年都要收取开销,否则恐怕有人口和效益的有些限制。觉得微信真是想着方法赚钱,近日已有些收费格局有,订阅号、公众号、公司号、开放平台,好像都有证实收费的了,而且微信小店也还亟需收2万的押金,一切都是钱啊。

好了,其他不多说,微信的登记地点是:https://qy.weixin.qq.com,一个邮箱不能同时注册微信公众号和微信企业号。

对此商家开展集团号并开始选拔须要四步

1) 集团到微信官网( http://qy.weixin.qq.com )申请开通;

2) 开通后,集团在店铺号管理后台导入成员,公布二维码;

3) 集团调用公司号 api 与公司自有系统接入开发;

4) 员工关怀,收到微信音信,在微信中与店家相互

登记好公司号,就足以由此微信扫一扫,扫描集团二维码实行登录了,扫描的时候,需求微信举行确认,才方可继续输入密码进行登录,操作界面如下所示(左侧是手机截图,左边是网页截图)。

图片 1 图片 2

报到后大家就可以寓目相应的统计机端的管理界面了。

图片 3

2、设置开发回调格局

若果开发过微信公众号,那么咱们就清楚,借使须要在微信服务器和网站服务器之间建立连接关系,完结信息的转向和拍卖,那么就应当设置一个回调格局,要求配置好相关的参数。然后在投机 网站服务器里面建立一个处理微信服务器信息的输入。

图片 4 

进入配置后,大家必要修改有关的URL、Token、EncodingAESKey等参数,首假诺URL,这么些就是和民众号的输入处理一样的,须求大家发布到网站服务器上的拍卖入口。

Token和AESKey能够依据提醒动态变化一个即可,AESKey好像非得是23位的,所以这一个一般是让它自己生成的,那几个重大用来加密解密使用的。

URL、Token、EncodingAESKey两个参数表达。

1)URL是集团应用接收公司号推送请求的拜访协议和地址,辅助http或https协议。

2)Token可由集团自由填写,用于转移签名。

3)EncodingAESKey用于新闻体的加密,是AES密钥的Base64编码。

验证URL、Token以及加密的详尽处理请参见后续 “接收新闻时的加解密处理”
的局地。

图片 5

我公司的店铺号配备后的界面如下所示。

图片 6

 那么些URL里面指向的页面效果,需求对数码举办分析并赶回给微信服务器,因而我们必要在服务器上先行安排好这么些处理效果入口。

除此之外上边的几个函数,还有一个CorpID的参数须要选择,大家可以在后台主界面-设置里面查看到。

图片 7

接下来我们为了方便网站后台使用,我们和本田号的布署一样,把它放到了Web.Config里面,如下所示。

图片 8

3、完成回调页面的法力开发

前方介绍了多少个布局项,需要在回调页面里面使用的,本小节继续介绍怎么着落成公司号音讯的回发,使之通过回调测试的操作。

由于回调测试的数据是经过Get格局发送的,由此大家的处理逻辑代码如下所示,和群众号的好像处理,只是完成部分不太雷同而已。

    /// <summary>
    /// 企业号回调信息接口。统一接收并处理信息的入口。
    /// </summary>
    public class corpapi : IHttpHandler
    {
        /// <summary>
        /// 处理企业号的信息
        /// </summary>
        /// <param name="context"></param>
        public void ProcessRequest(HttpContext context)
        {
            string postString = string.Empty;
            if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
            {
                using (Stream stream = HttpContext.Current.Request.InputStream)
                {
                    Byte[] postBytes = new Byte[stream.Length];
                    stream.Read(postBytes, 0, (Int32)stream.Length);
                    postString = Encoding.UTF8.GetString(postBytes);
                }

                if (!string.IsNullOrEmpty(postString))
                {
                    Execute(postString);
                }
            }
            else
            {
                Auth();
            }
        }

        /// <summary>
        /// 成为开发者的第一步,验证并相应服务器的数据
        /// </summary>
        private void Auth()
        {
            #region 获取关键参数
            string token = ConfigurationManager.AppSettings["CorpToken"];//从配置文件获取Token
            if (string.IsNullOrEmpty(token))
            {
                LogTextHelper.Error(string.Format("CorpToken 配置项没有配置!"));
            }
            string encodingAESKey = ConfigurationManager.AppSettings["EncodingAESKey"];//从配置文件获取EncodingAESKey
            if (string.IsNullOrEmpty(encodingAESKey))
            {
                LogTextHelper.Error(string.Format("EncodingAESKey 配置项没有配置!"));
            }
            string corpId = ConfigurationManager.AppSettings["CorpId"];//从配置文件获取corpId
            if (string.IsNullOrEmpty(corpId))
            {
                LogTextHelper.Error(string.Format("CorpId 配置项没有配置!"));
            } 
            #endregion

            string echoString = HttpContext.Current.Request.QueryString["echoStr"];
            string signature = HttpContext.Current.Request.QueryString["msg_signature"];//企业号的 msg_signature
            string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
            string nonce = HttpContext.Current.Request.QueryString["nonce"];

            string decryptEchoString = "";
            if (new CorpBasicApi().CheckSignature(token, signature, timestamp, nonce, corpId, encodingAESKey, echoString, ref decryptEchoString))
            {
                if (!string.IsNullOrEmpty(decryptEchoString))
                {
                    HttpContext.Current.Response.Write(decryptEchoString);
                    HttpContext.Current.Response.End();
                }
            }
        }

具体的处理代码如下所示,里面的一个加解密处理的类是微信集团号附录里面提供的,我动用了C#版本的SDK而已。

    /// <summary>
    /// 企业号基础操作API实现
    /// </summary>
    public class CorpBasicApi : ICorpBasicApi
    {
        /// <summary>
        /// 验证企业号签名
        /// </summary>
        /// <param name="token">企业号配置的Token</param>
        /// <param name="signature">签名内容</param>
        /// <param name="timestamp">时间戳</param>
        /// <param name="nonce">nonce参数</param>
        /// <param name="corpId">企业号ID标识</param>
        /// <param name="encodingAESKey">加密键</param>
        /// <param name="echostr">内容字符串</param>
        /// <param name="retEchostr">返回的字符串</param>
        /// <returns></returns>
        public bool CheckSignature(string token, string signature, string timestamp, string nonce, string corpId, string encodingAESKey, string echostr, ref string retEchostr)
        {
            WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(token, encodingAESKey, corpId);
            int result = wxcpt.VerifyURL(signature, timestamp, nonce, echostr, ref retEchostr);
            if (result != 0)
            {
                LogTextHelper.Error("ERR: VerifyURL fail, ret: " + result);
                return false;
            }

            return true;

            //ret==0表示验证成功,retEchostr参数表示明文,用户需要将retEchostr作为get请求的返回参数,返回给企业号。
            // HttpUtils.SetResponse(retEchostr);
        }

 

 

假设对这么些《C#支出微信门户及运用》连串感兴趣,可以关怀我的别样小说,连串小说如下所示:

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)–初叶选取微信接口

 

相关文章