当前位置:首页 > 软件开放 > 正文内容

微信网站开发源代码(微信网站开发源代码是什么)

软件开放4个月前 (07-08)337

缘起

今年公司某个项目需要全面接入微信支付 V3 版 API。起初觉得,2014 年微信支付就已上线了 V3 版 API,这都 2021 年了,就算官方不给力,怎么着社区也该有几个造好的 .NET 的轮子了吧?于是兴冲冲地到 NuGet 上开始搜索“微信支付”四个大字,结果……

倒不是没有现成的轮子,但基本都是只包含一些简单 API(如下单、查单、退款等等),与需求不符;偶尔有一些看似封装全的,点进去一看却是基于 V2 版 API 的。

没办法,自己动手,丰衣足食!

接入了微信支付后想着,既然微信支付都有了,为啥不把公众号、小程序、企业微信之类的也接入了呢?

于是乎 SKIT.FlurlHttpClient.Wechat 这个项目就诞生了。

项目介绍

SKIT.FlurlHttpClient.Wechat 是一个基于 Flurl.Http 的微信 API HTTP 客户端。

包含以下特性:

支持 .NET Framework 4.6.1+、.NET Standard 2.0+、.NET Core 2.0+、.NET 5。

支持 Windows / Linux / macOS 多平台部署。

支持 System.Text.Json(默认)和 Newtonsoft.Json 两种序列化方式。

异步式编程。

强类型接口模型。

提供拦截器功能。

提供微信 API 所需的 MD5、SHA-1、SHA-256、AES、RSA 等算法工具类。

完整、完善、完全的微信 API 封装,同时可灵活自行扩展。

现有以下模块:

公众平台(公众号、小程序、小游戏、小商店) 开放平台模块: SKIT.FlurlHttpClient.Wechat.Api

商户平台(微信支付)模块: SKIT.FlurlHttpClient.Wechat.TenpayV3

企业微信(企业号)模块: SKIT.FlurlHttpClient.Wechat.Work

广告平台(广点通)模块: SKIT.FlurlHttpClient.Wechat.Ads

以接入微信支付为例,其他模块的开发流程与之十分类似。

安装: dotnet add package SKIT.FlurlHttpClient.Wechat.TenpayV3

初始化:

usingSKIT.FlurlHttpClient.Wechat;

usingSKIT.FlurlHttpClient.Wechat.TenpayV3;

usingSKIT.FlurlHttpClient.Wechat.TenpayV3.Settings;

/* 平台证书管理器,具体用法请参见文档 */

varcertManager = newInMemoryCertificateManager;

/* 仅列出必须配置项。也包含一些诸如超时时间、UserAgent 等的配置项 */

varoptions = newWechatTenpayClientOptions

{

MerchantId = "微信商户号",

MerchantV3Secret = "微信商户 v3 API 密钥",

MerchantCertSerialNumber = "微信商户证书序列号",

MerchantCertPrivateKey = "-----BEGIN PRIVATE KEY-----微信商户证书私钥-----END PRIVATE KEY-----",

CertificateManager = certManager

};

varclient = newWechatTenpayClient(options);

usingSKIT.FlurlHttpClient.Wechat.TenpayV3;

usingSKIT.FlurlHttpClient.Wechat.TenpayV3.Models;

/* 以 JSAPI 统一下单接口为例 */

varrequest = newCreatePayTransactionJsapiRequest

{

微信网站开发源代码(微信网站开发源代码是什么)

OutTradeNumber = "商户订单号",

AppId = "微信 AppId",

Deion = "订单描述",

ExpireTime = DateTimeOffset.Now.AddMinutes(15),

NotifyUrl = "https://example.com",

Amount = newCreatePayTransactionJsapiRequest.Types.Amount

{

Total = 100

},

Payer = newCreatePayTransactionJsapiRequest.Types.Payer

{

OpenId = "微信 OpenId"

}

};

varresponse = awaitclient.ExecuteCreatePayTransactionJsapiAsync(request);

if(response.IsSuccessful)

{

Console.WriteLine( "PrepayId:"+ response.PrepayId);

}

else

{

Console.WriteLine( "HTTP 状态:"+ response.RawStatus);

Console.WriteLine( "错误代码:"+ response.ErrorCode);

Console.WriteLine( "错误描述:"+ response.ErrorMessage);

}

展开全文

/* 一般情况下可以跳过验证响应的签名 */

boolvalid = client.VerifyResponseSignature(response);

/* 字典结构,包含客户端 JS-SDK 调起支付所需的完整参数 */

varparamMap = client.GenerateParametersForJsapiPayRequest(request.AppId, response.PrepayId);

stringcallbackJson = "{ 微信商户平台发来的 JSON 格式的通知内容 }";

stringcallbackTimestamp = "微信回调通知中的 Wechatpay-Timestamp 标头";

stringcallbackNonce = "微信回调通知中的 Wechatpay-Nonce 标头";

stringcallbackSignature = "微信回调通知中的 Wechatpay-Signature 标头";

stringcallbackSerialNumber = "微信回调通知中的 Wechatpay-Serial 标头";

boolvalid = client.VerifyEventSignature(callbackTimestamp, callbackNonce, callbackJson, callbackSignature, callbackSerialNumber);

if(valid)

{

/* 将 JSON 反序列化得到通知对象 */

/* 你也可以将 WechatTenpayEvent 类型直接绑定到 MVC 模型上,这样就不再需要手动反序列化 */

varcallbackModel = client.DeserializeEvent(callbackJson);

if( "TRANSACTION.SUCCESS".Equals(callbackModel.EventType))

{

/* 根据事件类型,解密得到支付通知敏感数据 */

varcallbackResource = client.DecryptEventResourceEvents.TransactionResource(callbackModel);

stringoutTradeNumber = callbackResource.OutTradeNumber;

stringtransactionId = callbackResource.TransactionId;

Console.WriteLine( "订单 {0} 已完成支付,交易单号为 {1}", outTradeNumber, transactionId);

}

}

更多使用说明请阅读项目仓库中的开发文档。

项目仓库中还包含了一个示例项目,以供开发者快速掌握本库的使用方法。

FAQ 1. Flurl.Http 是什么?

Flurl.Http 是一个轻量级 HTTP 库,是 .NET 中最受欢迎扩展库之一,在 NuGet 上的累计下载量超过 1700 万、日均下载量超过 6 千、GitHub 2.6k Stars(数据统计截至 2021-06-01)。

与另一个流行的 HTTP 库 RestSharp 相比, Flurl.Http 底层基于 System.Net.Http.HttpClient ,而 RestSharp 底层则基于 System.Net.HttpWebRequest ,前者在多核多线程环境下的性能基准测试中表现要远优于后者,同时也是微软官方目前推荐的 HTTP 客户端方案。

2. 本库与盛派微信 SDK(Senparc.Weixin)有什么区别?

本库 专注于 API 本身的封装 ,捎带提供了一些用于加解密、序列化的工具类, 使用更灵活 ;盛派微信 SDK 提供了大而全的功能,可与 MVC / WebAPI 深度集成。

本库 遵循微软官方推荐的 C# 属性命名方式(大驼峰命名法) 对接口模型进行定义;盛派微信 SDK 提供的是微信接口本身的命名方式(蛇形命名法和小驼峰命名法混杂)。

本库 封装了目前微信官方提供的所有 API ;盛派微信 SDK 只提供了常用的 API。

直接原因是本库的依赖库最低支持到 .NET Framework 4.6.1。

间接原因是为了支持跨平台的 .NET Standard 2.0,只能兼容到 .NET Framework 4.6.1。

根本原因是微软官方已于 2016 年 1 月 12 日终止了对 .NET Framework 4.6.1 以下版本的技术支持。也就是说,微软已经不再为此提供安全更新,在大部分技术合规要求中这一点都是扣分项,所以建议各位开发者目标框架能升级就升级。

仓库

GitHub:https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat

Gitee:https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat

以上仓库地址同步更新,均可接受 Issue 或 Pull Request。

扫描二维码推送至手机访问。

版权声明:本文由飞速云SEO网络优化推广发布,如需转载请注明出处。

本文链接:http://zspsrg.cn/post/118052.html

分享给朋友:

“微信网站开发源代码(微信网站开发源代码是什么)” 的相关文章

招聘表格模板免费下载(招聘表格模板免费下载安装)

招聘表格模板免费下载(招聘表格模板免费下载安装)

今天给各位分享招聘表格模板免费下载的知识,其中也会对招聘表格模板免费下载安装进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、如何制作个人简历表格 2、简历表怎么制作 3、如何写招聘启事? 4、个人简历在哪里制作 如何制作个人简历表格 1、简历有...

数码宝贝卡牌DTCG官网(数码宝贝卡牌dtcg官网下载)

数码宝贝卡牌DTCG官网(数码宝贝卡牌dtcg官网下载)

本篇文章给大家谈谈数码宝贝卡牌DTCG官网,以及数码宝贝卡牌dtcg官网下载对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、数码宝贝dtcg规则 开始回合抽几张 2、数码宝贝dtcg卡牌尺寸 3、数码宝贝DTCG在山西有负责人吗? 4、数码宝贝对战卡牌用不用补...

房顶装修效果图大全(室内装修房顶效果图大全)

房顶装修效果图大全(室内装修房顶效果图大全)

本篇文章给大家谈谈房顶装修效果图大全,以及室内装修房顶效果图大全对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、木结构房顶想要隔热,需要怎样装修? 2、装修效果图怎么做出来?装修风格有哪些 3、楼中楼怎么装修效果图 4、顶楼房顶是尖的,怎么装修? 5、房顶...

怎么查看自己申请过的邮箱(怎么查邮箱申请时间)

怎么查看自己申请过的邮箱(怎么查邮箱申请时间)

今天给各位分享怎么查看自己申请过的邮箱的知识,其中也会对怎么查邮箱申请时间进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、我注册了自己的邮箱.在哪去看我的邮箱? 2、我申请了邮箱,怎么能看到啊我想查看我的邮箱应该怎么查 3、如何知道自己的邮箱 注册过...

nginx自动安装和源码安装的区别(nginx源码安装 linux)

nginx自动安装和源码安装的区别(nginx源码安装 linux)

今天给各位分享nginx自动安装和源码安装的区别的知识,其中也会对nginx源码安装 linux进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、源码安装的nginx注册到系统服务 2、ubuntu服务器 自己安装的nginx 宝塔安装nginx 和通过宝...

最新扶风解析系统(扶风VIP解析系统)

最新扶风解析系统(扶风VIP解析系统)

本篇文章给大家谈谈最新扶风解析系统,以及扶风VIP解析系统对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、《[重生]话狐》txt下载在线阅读全文,求百度网盘云资源 2、苏轼《喜雨亭记》解析! 急!!!! 3、扶风是属于哪个城市近期疫情严重吗 4、难却这首歌表...