公司项目要接入微信支付,公众号管理。当拿到微信提供的示例,还是.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);
}
V3支付
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
今天的文章[开源]一个基于Flurl.Http的微信API库分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/30044.html