使用C#开发微信小程序后台,核心是基于ASP.NET Core框架搭建Web服务,对接微信官方提供的开放接口,实现小程序端的业务支撑能力。整个开发过程需要遵循微信的接口规范,同时结合C#的特性保证服务的稳定性和安全性。

开发前准备
首先需要完成基础环境配置和资质准备:
- 安装.NET 6及以上版本的SDK,推荐使用ASP.NET Core作为Web框架
- 注册微信小程序账号,获取小程序的AppID和AppSecret,这两个参数是调用微信接口的核心凭证
- 准备服务器资源,需要备案域名和SSL证书,微信接口要求所有请求必须通过HTTPS协议访问
- 安装开发工具,推荐使用Visual Studio 2022或者VS Code作为开发IDE
基础项目搭建
使用ASP.NET Core创建Web API项目,作为小程序后台的基础框架:
// 创建ASP.NET Core Web API项目后的Program.cs基础配置
var builder = WebApplication.CreateBuilder(args);
// 添加控制器服务
builder.Services.AddControllers();
// 配置跨域,允许小程序端域名访问
builder.Services.AddCors(options =>
{
options.AddPolicy("MiniProgramPolicy",
policy => policy.WithOrigins("https://你的小程序域名")
.AllowAnyHeader()
.AllowAnyMethod());
});
var app = builder.Build();
// 启用跨域
app.UseCors("MiniProgramPolicy");
// 启用HTTPS重定向
app.UseHttpsRedirection();
// 映射控制器路由
app.MapControllers();
app.Run();
核心功能开发
微信登录鉴权接口
小程序端通过wx.login获取临时code后,会传递到后台换取用户唯一标识OpenID,这是用户身份识别的核心逻辑:
using Microsoft.AspNetCore.Mvc;
using System.Net.Http.Json;
[ApiController]
[Route("api/[controller]")]
public class AuthController : ControllerBase
{
private readonly IHttpClientFactory _httpClientFactory;
private readonly IConfiguration _configuration;
public AuthController(IHttpClientFactory httpClientFactory, IConfiguration configuration)
{
_httpClientFactory = httpClientFactory;
_configuration = configuration;
}
[HttpPost("login")]
public async Task<IActionResult> WechatLogin([FromBody] LoginRequest request)
{
if (string.IsNullOrEmpty(request.Code))
{
return BadRequest(new { code = 400, msg = "缺少登录凭证code" });
}
// 获取配置中的AppID和AppSecret
string appId = _configuration["Wechat:AppId"];
string appSecret = _configuration["Wechat:AppSecret"];
// 拼接微信登录接口地址
string url = $"https://api.weixin.qq.com/sns/jscode2session?appid={appId}&secret={appSecret}&js_code={request.Code}&grant_type=authorization_code";
var client = _httpClientFactory.CreateClient();
var response = await client.GetFromJsonAsync<WechatLoginResponse>(url);
if (response == null || !string.IsNullOrEmpty(response.ErrCode))
{
return BadRequest(new { code = 400, msg = $"微信登录失败:{response?.ErrMsg}" });
}
// 这里可以将OpenID和SessionKey存储到数据库,生成自定义登录态返回给小程序
string customToken = GenerateCustomToken(response.OpenId);
return Ok(new { code = 200, data = new { token = customToken, openId = response.OpenId } });
}
private string GenerateCustomToken(string openId)
{
// 自定义生成登录态的逻辑,可使用JWT或者自定义加密字符串
return Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(openId + DateTime.Now.Ticks));
}
}
// 请求参数模型
public class LoginRequest
{
public string Code { get; set; }
}
// 微信返回结果模型
public class WechatLoginResponse
{
public string OpenId { get; set; }
public string SessionKey { get; set; }
public string UnionId { get; set; }
public string ErrCode { get; set; }
public string ErrMsg { get; set; }
}
消息推送处理
小程序如果需要接收微信的服务通知、用户消息等,需要配置消息推送接口,后台需要验证签名并处理推送内容:
[HttpGet("message")]
public IActionResult VerifyMessage([FromQuery] string signature, [FromQuery] string timestamp, [FromQuery] string nonce, [FromQuery] string echostr)
{
// 验证微信消息推送的签名,配置的消息推送Token存储在配置中
string token = _configuration["Wechat:MessageToken"];
List<string> tempList = new List<string> { token, timestamp, nonce };
tempList.Sort();
string tempStr = string.Join("", tempList);
string sha1Str = Convert.ToHexString(System.Security.Cryptography.SHA1.HashData(System.Text.Encoding.UTF8.GetBytes(tempStr))).ToLower();
if (sha1Str == signature)
{
return Content(echostr);
}
return BadRequest();
}
[HttpPost("message")]
public async Task<IActionResult> ReceiveMessage()
{
using var reader = new StreamReader(Request.Body);
string xmlContent = await reader.ReadToEndAsync();
// 解析微信推送的XML格式消息,处理业务逻辑
// 解析逻辑可根据微信官方文档的XML结构实现
return Ok();
}
开发注意事项
- 所有和微信交互的接口必须使用HTTPS协议,否则请求会被微信服务器拒绝
- AppSecret属于敏感信息,不要硬编码在代码中,建议存储在环境变量或者配置中心的加密配置项里
- 微信接口的调用频率有限制,高并发场景下需要做好接口缓存和限流,避免触发微信的频率限制
- 用户相关的敏感数据比如SessionKey不要直接传输给小程序前端,所有涉及用户身份的操作都应该在后台完成校验
- 接口返回的数据格式要统一,方便小程序端统一处理响应结果,建议约定固定的code、msg、data结构
部署与调试
开发完成后,将项目发布到服务器,配置Nginx或者IIS作为反向代理,同时需要在微信小程序后台配置服务器域名,将后台接口的域名添加到合法域名列表中,否则小程序端无法发起请求。调试阶段可以使用微信开发者工具的详情面板查看请求详情,结合后台的日志快速定位接口问题。
C#微信小程序后台ASP.NET_Core微信支付接口开发修改时间:2026-06-11 21:57:39