C#微信公众号开发
<h2 id="c微信公众号开发">C#微信公众号开发</h2><h3 id="一-准备">一》 准备</h3>
<ul>
<li>
<p>【开发文档】</p>
</li>
<li>
<p>【微信公众号测试接口】</p>
</li>
</ul>
<p>用自己的微信扫码登陆,然后就可以获取就有了appId 和 appsecret。<br>
<img src="https://img-blog.csdnimg.cn/5b54e5cdfdf346faa845c46b90952b5e.png" alt="" loading="lazy"></p>
<h3 id="二获取access_token">二》获取access_token</h3>
<p>打开 微信公众平台接口调试工具</p>
<p><img src="https://img-blog.csdnimg.cn/aa5468e8d76a4451982d2608524e9ccc.png" alt="" loading="lazy"><br>
这个access_token是通过appID 和 appsecret来生成的,access_token 有效期为 <strong>两个小时</strong>(7200秒),一天可以获取2000次,只要是向微信服务器发送请求都需要带上这个access_token</p>
<pre><code class="language-csharp">/// <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;
}
</code></pre>
<p>通过<code>string access_token = Common.AccessTokenHelp.AccessToken;</code> 就可以获取accesstoken</p>
<h3 id="三创建菜单">三》创建菜单</h3>
<p>通过测试接口来处理<br>
<img src="https://img-blog.csdnimg.cn/eed2dd91747f4a6e9957c23c2bb072fa.png" alt="" loading="lazy"><img src="https://img-blog.csdnimg.cn/f814b078e18a4aa1a32a657ba5775be8.png" alt="" loading="lazy"></p>
<pre><code class="language-csharp">{
"button": [
{
"name": "迷恋自留地",
"type": "view",
"url": "https://hunji.xyz"//点击菜单访问网址
},
{
"name": "防伪扫描",
"type": "scancode_push",
"key": "FangweiScan" //点击调用微信二维码扫描,是网址直接访问,是文本则显示文本内容
},
{
"name": "订单查询",
"type": "click",
"key": "OrderQuery" //点击出发click事件,向我们配置的API地址进行请求
}
]
}
</code></pre>
<p>扫码关注公众号就ok,更多的按钮参考:微信开发文档<br>
<img src="https://img-blog.csdnimg.cn/f9640d29f59845bc981d198a75c4ca21.png" alt="" loading="lazy"><br>
请求成功后,取消微信号关注并退出微信,重新进入关注,应该就可以看到添加好的文档了。</p>
<p>想删除重新创建菜单,调用菜单删除就可以了。</p>
<p><img src="https://img-blog.csdnimg.cn/92770aad11974886bf5302ce680e943f.png" alt="" loading="lazy"></p>
<h3 id="四开发接口处理文本和事件">四》开发接口、处理文本和事件</h3>
<p>当用户使用微信发送消息或者单击菜单出发事件,就会向配置的API发送请求,API进行处理响应 :消息回复参考文档</p>
<p>具体的代码实现请查阅下篇文章,在这里先埋个坑</p>
<h3 id="五发送模板消息">五》发送模板消息</h3>
<p>首先在后台添加测试的模板,获取到消息模板的id</p>
<p><img src="https://img-blog.csdnimg.cn/7f976098689a40aea8f63e356f6c1545.png" alt="" loading="lazy"><br>
<img src="https://img-blog.csdnimg.cn/8bcc0e3085784a9ead4dea96d28ac870.png" alt="" loading="lazy"><br>
<img src="https://img-blog.csdnimg.cn/d679b99e9b984b4290906ba49bf23a84.png" alt="" loading="lazy"></p>
<p><img src="https://img-blog.csdnimg.cn/20210517111144223.png" alt="我的公众号" loading="lazy"></p>
<p><img src="https://gitee.com/Pridejoy/Bing/raw/master/2021/09/30.jpg" alt="" loading="lazy"><br>
参考链接</p><br><br>
来源:https://www.cnblogs.com/netcore5/p/15369291.html
頁:
[1]