当前位置: 首页 > news >正文

微信开发第一步—接入指南

一、开发前的准备

1.要有一个公网的地址空间(Azure,阿里云....)
2.自己定义一个Token(自己定义一个字符串就行,后面写代码时候也会用到)
 
 
3.信息在客户端,微信服务器,网站之间的处理过程
 
 

二、验证服务器地址的有效性

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:

参数描述
signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp时间戳
nonce随机数
echostr随机字符串


开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

 

三、进行编码(我这里采用的是ASP.NET MVC的架构)

1.创建一个MVC的空工程

2.创建一个微信使用的Controller

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 using System.Web.Security;
 7 namespace MvcWeiXin.Controllers
 8 {
 9     public class WeChatController : Controller
10     {
11         public const string TOKEN = "*********";
12         //
13         // GET: /WeChat/
14         [HttpGet]
15         public string Index(string signature, string timestamp, string nonce, string echoStr)
16         {
17             if (checkSignature(signature, timestamp, nonce))
18             {
19                 return echoStr;
20             }
21             return string.Empty;
22         }
23         /// <summary>
24         /// 加密/校验流程如下:
25         ///1. 将token、timestamp、nonce三个参数进行字典序排序
26         ///2. 将三个参数字符串拼接成一个字符串进行sha1加密
27         ///3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
28         /// </summary>
29         /// <param name="signature"></param>
30         /// <param name="timestamp"></param>
31         /// <param name="nonce"></param>
32         /// <returns></returns>
33         private bool checkSignature(string signature, string timestamp, string nonce)
34         {
35             string[] checkArray = { TOKEN, timestamp, nonce };
36             //进行字典排序
37             Array.Sort(checkArray);
38             //将数组内的项进行串联
39             string resultTempStr = string.Join("", checkArray);
40             //将字符串进行SHA1加密
41             string resultStr = FormsAuthentication.HashPasswordForStoringInConfigFile(resultTempStr, "SHA1");
42             if (resultStr.ToLower() == signature)
43             {
44                 return true;
45             }
46             return false;
47         }
48     }
49 }

 

四、将项目发布到虚拟主机里面

 1.关于网络主机的选择

这里我使用了万网的免费虚拟主机,简单申请请看下面的图片,具体申请的步骤就不赘述了。

 

 

 
 

2.发布项目

这里我采用了先在本地生成文件的方式,然后再上传。

发布成功后,桌面就会出现生成后的文件,然后采用FTP的方式上传到网络空间就行了

这里我遇到了一个问题,就是我在上传到万网的时候,出现了以下的信息:

是什么原因导致的我还不清楚,解决办法如下,在你的工程中运行"程序包管理控制台",执行 Update-Package Microsoft.AspNet.WebApi -reinstall

 

然后重新发布一下,然后上传到虚拟主机

 

3.测试一下是否成功

如果下图点击“提交”成功的话,证明整个过程就已经通了

 

转载于:https://www.cnblogs.com/dcz2015/p/4659951.html

相关文章:

  • Java性能优化——操作系统性能监控
  • WebApp上滑加载数据...
  • J2SE核心开发实战(一)——认识J2SE
  • ajax提交form表单资料详细汇总
  • 项目管理学习笔记之二.工作分解
  • 奇异值分解(We Recommend a Singular Value Decomposition)
  • how to loading .desktop files
  • shell练习-远程监控
  • Entity Framework 之三层架构
  • java发送http的get、post请求
  • 在自己的网站添加关注新浪关注按钮
  • go语言的排序和搜索
  • iOS Sprite Kit教程之场景的设置
  • Https通讯原理
  • 通过javamelody监控web应用的性能指标
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • javascript 总结(常用工具类的封装)
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • php面试题 汇集2
  • Sass Day-01
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 关于Java中分层中遇到的一些问题
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 小程序button引导用户授权
  • 正则表达式小结
  • k8s使用glusterfs实现动态持久化存储
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • #DBA杂记1
  • #在 README.md 中生成项目目录结构
  • (C)一些题4
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (剑指Offer)面试题34:丑数
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (轉貼) UML中文FAQ (OO) (UML)
  • 、写入Shellcode到注册表上线
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • @property python知乎_Python3基础之:property
  • @Transactional类内部访问失效原因详解
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [ActionScript][AS3]小小笔记