C#微信公众号开发
C#微信公众号开发
一》 准备
用自己的微信扫码登陆,然后就可以获取就有了appId 和 appsecret。
二》获取access_token
打开 微信公众平台接口调试工具
这个access_token是通过appID 和 appsecret来生成的,access_token 有效期为 两个小时(7200秒),一天可以获取2000次,只要是向微信服务器发送请求都需要带上这个access_token
/// <summary>
/// AccessToken帮助类
/// </summary>
public class AccessTokenHelp
{
//填写自己微信的秘钥
private static string appId = System.Configuration.ConfigurationManager.AppSettings["WeChatAppId"];
private static string appSecret = System.Configuration.ConfigurationManager.AppSettings["WeChatAppSecret"];
private static DateTime GetAccessToken_Time;
/// <summary>
/// 过期时间为7200秒
/// </summary>
private static int Expires_Period = 7200;
/// <summary>
///
/// </summary>
private static string mAccessToken;
/// <summary>
///
/// </summary>
public static string AccessToken
{
get
{
//如果为空,或者过期,需要重新获取
if (string.IsNullOrEmpty(mAccessToken) || HasExpired())
{
//获取
mAccessToken = GetAccessToken(appId, appSecret);
}
return mAccessToken;
}
}
/// <summary>
///
/// </summary>
/// <param name="appId"></param>
/// <param name="appSecret"></param>
/// <returns></returns>
private static string GetAccessToken(string appId, string appSecret)
{
string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appId, appSecret);
string result = HttpUtility.GetData(url);
XDocument doc = CommonHelp.ParseJsonToXML(result, "root");
XElement root = doc.Root;
if (root != null)
{
XElement access_token = root.Element("access_token");
if (access_token != null)
{
GetAccessToken_Time = DateTime.Now;
if (root.Element("expires_in") != null)
{
Expires_Period = int.Parse(root.Element("expires_in").Value);
}
return access_token.Value;
}
else
{
GetAccessToken_Time = DateTime.MinValue;
}
}
return null;
}
/// <summary>
/// 判断Access_token是否过期
/// </summary>
/// <returns>bool</returns>
private static bool HasExpired()
{
if (GetAccessToken_Time != null)
{
//过期时间,允许有一定的误差,一分钟。获取时间消耗
if (DateTime.Now > GetAccessToken_Time.AddSeconds(Expires_Period).AddSeconds(-60))
{
return true;
}
}
return false;
}
通过 string access_token = Common.AccessTokenHelp.AccessToken;
就可以获取accesstoken
三》创建菜单
通过测试接口来处理
{
"button": [
{
"name": "迷恋自留地",
"type": "view",
"url": "https://hunji.xyz" //点击菜单访问网址
},
{
"name": "防伪扫描",
"type": "scancode_push",
"key": "FangweiScan" //点击调用微信二维码扫描,是网址直接访问,是文本则显示文本内容
},
{
"name": "订单查询",
"type": "click",
"key": "OrderQuery" //点击出发click事件,向我们配置的API地址进行请求
}
]
}
扫码关注公众号就ok,更多的按钮参考:微信开发文档
请求成功后,取消微信号关注并退出微信,重新进入关注,应该就可以看到添加好的文档了。
想删除重新创建菜单,调用菜单删除就可以了。
四》开发接口、处理文本和事件
当用户使用微信发送消息或者单击菜单出发事件,就会向配置的API发送请求,API进行处理响应 : 消息回复参考文档
具体的代码实现请查阅下篇文章,在这里先埋个坑
五》发送模板消息
首先在后台添加测试的模板,获取到消息模板的id