公司项目要接入微信支付,公众号管理。当拿到微信提供的示例,还是.NET Framework版。现在 .NET 7都发布了好不好。
然后在NuGet上就找到了这个微信API库。使用体验很棒。它就是SKIT.FlurlHttpClient.Wechat。
技术特性
基于 Flurl.Http,可与 IHttpClientFactory 集成。
支持 .NET Framework 4.6.1+、.NET Standard 2.0+、.NET Core 2.0+、.NET 5、.NET 6。
支持 Windows / Linux / macOS 多平台部署。
支持 System.Text.Json(默认)和 Newtonsoft.Json 两种序列化方式。
异步式编程。
强类型接口模型。
提供拦截器功能。
包含 SourceLink 符号文件,可在项目中无源代码调试。
完整、完善、完全的微信 API 封装。
特点
专注于 API 本身的封装,捎带提供了一些用于加解密、序列化的工具类,使用起来更加灵活,不限任何框架或项目类型;
接口模型遵循的是微软官方推荐的 C# 属性命名方式(帕斯卡命名法)
使用方法
Install-Package SKIT.FlurlHttpClient.Wechat.Api
初始化
using SKIT.FlurlHttpClient.Wechat;
using SKIT.FlurlHttpClient.Wechat.Api;
var options = new WechatApiClientOptions()
{
AppId = "微信 AppId",
AppSecret = "微信 AppSecret",
MidasAppKey = "米大师相关服务 AppKey,不用则不填",
ImmeDeliveryAppKey = "即时配送相关服务 AppKey,不用则不填",
ImmeDeliveryAppSecret = "即时配送相关服务 AppSecret,不用则不填"
};
var client = new WechatApiClient(options);
处理响应
using SKIT.FlurlHttpClient.Wechat.Api;
using SKIT.FlurlHttpClient.Wechat.Api.Models;
/* 以公众号获取用户信息接口为例 */
var request = new CgibinUserInfoRequest()
{
AccessToken = "微信 AccessToken",
OpenId = "微信 OpenId"
};
var response = await client.ExecuteCgibinUserInfoAsync(request);
if (response.IsSuccessful())
{
Console.WriteLine("昵称:" + response.Nickname);
Console.WriteLine("头像:" + response.HeadImageUrl);
}
else
{
Console.WriteLine("错误代码:" + response.ErrorCode);
Console.WriteLine("错误描述:" + response.ErrorMessage);
}
Install-Package SKIT.FlurlHttpClient.Wechat.TenpayV3
初始化
using SKIT.FlurlHttpClient.Wechat;
using SKIT.FlurlHttpClient.Wechat.TenpayV3;
using SKIT.FlurlHttpClient.Wechat.TenpayV3.Settings;
var manager = new InMemoryCertificateManager();
var options = new WechatTenpayClientOptions()
{
MerchantId = "微信商户号",
MerchantV3Secret = "微信商户 v3 API 密钥",
MerchantCertificateSerialNumber = "微信商户证书序列号",
MerchantCertificatePrivateKey = "-----BEGIN PRIVATE KEY-----微信商户证书私钥,即 `apiclient_key.pem` 文件内容-----END PRIVATE KEY-----",
PlatformCertificateManager = manager // 证书管理器的具体用法请参阅下文的高级技巧与加密、验签有关的章节
};
var client = new WechatTenpayClient(options);
处理响应
using SKIT.FlurlHttpClient.Wechat.TenpayV3;
using SKIT.FlurlHttpClient.Wechat.TenpayV3.Models;
/* 以 JSAPI 统一下单接口为例 */
var request = new CreatePayTransactionJsapiRequest()
{
OutTradeNumber = "商户订单号",
AppId = "微信 AppId",
Description = "订单描述",
ExpireTime = DateTimeOffset.Now.AddMinutes(15),
NotifyUrl = "https://example.com",
Amount = new Models.CreatePayTransactionJsapiRequest.Types.Amount()
{
Total = 1
},
Payer = new Models.CreatePayTransactionJsapiRequest.Types.Payer()
{
OpenId = "微信 OpenId"
}
};
var response = await client.ExecuteCreatePayTransactionJsapiAsync(request);
if (response.IsSuccessful())
{
Console.WriteLine("PrepayId:" + response.PrepayId);
}
else
{
Console.WriteLine("错误代码:" + response.ErrorCode);
Console.WriteLine("错误描述:" + response.ErrorMessage);
}
使用起来还是比较简单的。
项目地址:https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat
公众号:DotNet宝藏库
微信号:fenxiang3389