日韩精品亚洲精品中文字幕乱伦AV|曰韩区二区三区日韩中文字幕五码|ady99久久人人看人人摸人人|动漫一区二区黄99精品视频在线|AV片在线观看亚洲中文国产精品|伦乱在线VA欧美性爱一二区|亚洲无码mv91热色视频|激情六月综合欧美精品中文

當(dāng)前位置:首頁 > 軟件開放 > 正文內(nèi)容

微信網(wǎng)站開發(fā)源代碼(微信網(wǎng)站開發(fā)源代碼是什么)

軟件開放6個(gè)月前 (07-08)424

緣起

今年公司某個(gè)項(xiàng)目需要全面接入微信支付 V3 版 API。起初覺得,2014 年微信支付就已上線了 V3 版 API,這都 2021 年了,就算官方不給力,怎么著社區(qū)也該有幾個(gè)造好的 .NET 的輪子了吧?于是興沖沖地到 NuGet 上開始搜索“微信支付”四個(gè)大字,結(jié)果……

倒不是沒有現(xiàn)成的輪子,但基本都是只包含一些簡(jiǎn)單 API(如下單、查單、退款等等),與需求不符;偶爾有一些看似封裝全的,點(diǎn)進(jìn)去一看卻是基于 V2 版 API 的。

沒辦法,自己動(dòng)手,豐衣足食!

接入了微信支付后想著,既然微信支付都有了,為啥不把公眾號(hào)、小程序、企業(yè)微信之類的也接入了呢?

于是乎 SKIT.FlurlHttpClient.Wechat 這個(gè)項(xiàng)目就誕生了。

項(xiàng)目介紹

SKIT.FlurlHttpClient.Wechat 是一個(gè)基于 Flurl.Http 的微信 API HTTP 客戶端。

包含以下特性:

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

支持 Windows / Linux / macOS 多平臺(tái)部署。

支持 System.Text.Json(默認(rèn))和 Newtonsoft.Json 兩種序列化方式。

異步式編程。

強(qiáng)類型接口模型。

提供攔截器功能。

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

完整、完善、完全的微信 API 封裝,同時(shí)可靈活自行擴(kuò)展。

現(xiàn)有以下模塊:

公眾平臺(tái)(公眾號(hào)、小程序、小游戲、小商店) 開放平臺(tái)模塊: SKIT.FlurlHttpClient.Wechat.Api

商戶平臺(tái)(微信支付)模塊: SKIT.FlurlHttpClient.Wechat.TenpayV3

企業(yè)微信(企業(yè)號(hào))模塊: SKIT.FlurlHttpClient.Wechat.Work

廣告平臺(tái)(廣點(diǎn)通)模塊: SKIT.FlurlHttpClient.Wechat.Ads

以接入微信支付為例,其他模塊的開發(fā)流程與之十分類似。

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

初始化:

usingSKIT.FlurlHttpClient.Wechat;

usingSKIT.FlurlHttpClient.Wechat.TenpayV3;

usingSKIT.FlurlHttpClient.Wechat.TenpayV3.Settings;

/* 平臺(tái)證書管理器,具體用法請(qǐng)參見文檔 */

varcertManager = newInMemoryCertificateManager;

/* 僅列出必須配置項(xiàng)。也包含一些諸如超時(shí)時(shí)間、UserAgent 等的配置項(xiàng) */

varoptions = newWechatTenpayClientOptions

{

MerchantId = "微信商戶號(hào)",

MerchantV3Secret = "微信商戶 v3 API 密鑰",

MerchantCertSerialNumber = "微信商戶證書序列號(hào)",

MerchantCertPrivateKey = "-----BEGIN PRIVATE KEY-----微信商戶證書私鑰-----END PRIVATE KEY-----",

CertificateManager = certManager

};

varclient = newWechatTenpayClient(options);

usingSKIT.FlurlHttpClient.Wechat.TenpayV3;

usingSKIT.FlurlHttpClient.Wechat.TenpayV3.Models;

/* 以 JSAPI 統(tǒng)一下單接口為例 */

varrequest = newCreatePayTransactionJsapiRequest

{

微信網(wǎng)站開發(fā)源代碼(微信網(wǎng)站開發(fā)源代碼是什么)

OutTradeNumber = "商戶訂單號(hào)",

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 狀態(tài):"+ response.RawStatus);

Console.WriteLine( "錯(cuò)誤代碼:"+ response.ErrorCode);

Console.WriteLine( "錯(cuò)誤描述:"+ response.ErrorMessage);

}

展開全文

/* 一般情況下可以跳過驗(yàn)證響應(yīng)的簽名 */

boolvalid = client.VerifyResponseSignature(response);

/* 字典結(jié)構(gòu),包含客戶端 JS-SDK 調(diào)起支付所需的完整參數(shù) */

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

stringcallbackJson = "{ 微信商戶平臺(tái)發(fā)來的 JSON 格式的通知內(nèi)容 }";

stringcallbackTimestamp = "微信回調(diào)通知中的 Wechatpay-Timestamp 標(biāo)頭";

stringcallbackNonce = "微信回調(diào)通知中的 Wechatpay-Nonce 標(biāo)頭";

stringcallbackSignature = "微信回調(diào)通知中的 Wechatpay-Signature 標(biāo)頭";

stringcallbackSerialNumber = "微信回調(diào)通知中的 Wechatpay-Serial 標(biāo)頭";

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

if(valid)

{

/* 將 JSON 反序列化得到通知對(duì)象 */

/* 你也可以將 WechatTenpayEvent 類型直接綁定到 MVC 模型上,這樣就不再需要手動(dòng)反序列化 */

varcallbackModel = client.DeserializeEvent(callbackJson);

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

{

/* 根據(jù)事件類型,解密得到支付通知敏感數(shù)據(jù) */

varcallbackResource = client.DecryptEventResourceEvents.TransactionResource(callbackModel);

stringoutTradeNumber = callbackResource.OutTradeNumber;

stringtransactionId = callbackResource.TransactionId;

Console.WriteLine( "訂單 {0} 已完成支付,交易單號(hào)為 {1}", outTradeNumber, transactionId);

}

}

更多使用說明請(qǐng)閱讀項(xiàng)目倉庫中的開發(fā)文檔。

項(xiàng)目倉庫中還包含了一個(gè)示例項(xiàng)目,以供開發(fā)者快速掌握本庫的使用方法。

FAQ 1. Flurl.Http 是什么?

Flurl.Http 是一個(gè)輕量級(jí) HTTP 庫,是 .NET 中最受歡迎擴(kuò)展庫之一,在 NuGet 上的累計(jì)下載量超過 1700 萬、日均下載量超過 6 千、GitHub 2.6k Stars(數(shù)據(jù)統(tǒng)計(jì)截至 2021-06-01)。

與另一個(gè)流行的 HTTP 庫 RestSharp 相比, Flurl.Http 底層基于 System.Net.Http.HttpClient ,而 RestSharp 底層則基于 System.Net.HttpWebRequest ,前者在多核多線程環(huán)境下的性能基準(zhǔn)測(cè)試中表現(xiàn)要遠(yuǎn)優(yōu)于后者,同時(shí)也是微軟官方目前推薦的 HTTP 客戶端方案。

2. 本庫與盛派微信 SDK(Senparc.Weixin)有什么區(qū)別?

本庫 專注于 API 本身的封裝 ,捎帶提供了一些用于加解密、序列化的工具類, 使用更靈活 ;盛派微信 SDK 提供了大而全的功能,可與 MVC / WebAPI 深度集成。

本庫 遵循微軟官方推薦的 C# 屬性命名方式(大駝峰命名法) 對(duì)接口模型進(jìn)行定義;盛派微信 SDK 提供的是微信接口本身的命名方式(蛇形命名法和小駝峰命名法混雜)。

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

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

間接原因是為了支持跨平臺(tái)的 .NET Standard 2.0,只能兼容到 .NET Framework 4.6.1。

根本原因是微軟官方已于 2016 年 1 月 12 日終止了對(duì) .NET Framework 4.6.1 以下版本的技術(shù)支持。也就是說,微軟已經(jīng)不再為此提供安全更新,在大部分技術(shù)合規(guī)要求中這一點(diǎn)都是扣分項(xiàng),所以建議各位開發(fā)者目標(biāo)框架能升級(jí)就升級(jí)。

倉庫

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

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

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

掃描二維碼推送至手機(jī)訪問。

版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。

本文鏈接:http://www.atlasseeker.com/post/118052.html

“微信網(wǎng)站開發(fā)源代碼(微信網(wǎng)站開發(fā)源代碼是什么)” 的相關(guān)文章

交易貓?jiān)趺促u夢(mèng)幻西游手游(交易貓?jiān)趺促u夢(mèng)幻西游手游賬號(hào))

交易貓?jiān)趺促u夢(mèng)幻西游手游(交易貓?jiān)趺促u夢(mèng)幻西游手游賬號(hào))

本篇文章給大家談?wù)劷灰棕堅(jiān)趺促u夢(mèng)幻西游手游,以及交易貓?jiān)趺促u夢(mèng)幻西游手游賬號(hào)對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、網(wǎng)易夢(mèng)幻西游手游手機(jī)賬號(hào)應(yīng)該怎么出售?。吭诮灰棕埥灰滓?yàn)槭鞘謾C(jī)賬號(hào),交易失敗了 2、夢(mèng)幻西游手游在哪賣號(hào) 3、夢(mèng)幻西游手游死綁號(hào)哪里買...

php手游源碼平臺(tái)(php頁游源碼)

php手游源碼平臺(tái)(php頁游源碼)

今天給各位分享php手游源碼平臺(tái)的知識(shí),其中也會(huì)對(duì)php頁游源碼進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、php網(wǎng)上商城系統(tǒng)源碼求大神推薦一下不要太貴的 2、好的免費(fèi)PHP源碼下載 3、php網(wǎng)站源碼 asp網(wǎng)站源碼 哪個(gè)好 4、怎么才能安...

云攝影照片直播平臺(tái)(云攝影照片直播平臺(tái)下載)

云攝影照片直播平臺(tái)(云攝影照片直播平臺(tái)下載)

本篇文章給大家談?wù)勗茢z影照片直播平臺(tái),以及云攝影照片直播平臺(tái)下載對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、享像派云攝影App能連接Sony A7M3進(jìn)行照片直播嗎?用Wifi還是OTG數(shù)據(jù)線? 2、享像派云攝影照片直播,需要買硬件設(shè)備嗎? 3、用享像派云攝影...

蘋果手機(jī)設(shè)備信息條形碼怎么看(蘋果手機(jī)查詢條形碼)

蘋果手機(jī)設(shè)備信息條形碼怎么看(蘋果手機(jī)查詢條形碼)

今天給各位分享蘋果手機(jī)設(shè)備信息條形碼怎么看的知識(shí),其中也會(huì)對(duì)蘋果手機(jī)查詢條形碼進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、如何能查到蘋果已售出的所有收據(jù)條形碼 2、怎么查蘋果機(jī)的機(jī)身編碼? 3、蘋果設(shè)備編號(hào)怎么看 4、蘋果手機(jī)序列號(hào)怎么查詢...

通達(dá)信手機(jī)打板源碼(通達(dá)信 自動(dòng)打板下單)

通達(dá)信手機(jī)打板源碼(通達(dá)信 自動(dòng)打板下單)

今天給各位分享通達(dá)信手機(jī)打板源碼的知識(shí),其中也會(huì)對(duì)通達(dá)信 自動(dòng)打板下單進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、如何把指標(biāo)源碼導(dǎo)入手機(jī)通達(dá)信 2、通達(dá)信指標(biāo)源碼手機(jī)版如何覆蓋 3、通達(dá)信手機(jī)版原碼怎樣輸入 4、通達(dá)信手機(jī)版看盤軟件如何復(fù)制源...

大話西游源碼出售(大話西游3源碼)

大話西游源碼出售(大話西游3源碼)

今天給各位分享大話西游源碼出售的知識(shí),其中也會(huì)對(duì)大話西游3源碼進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、大話源碼怎么來的 2、大話西游2快速出售角色是什么意思啊 3、大話西游2 出售的問題 4、大話西游私服 5、大話西游出售商品怎么好賣...