日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

轻量级开源小程序SDK发车啦

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 轻量级开源小程序SDK发车啦 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Magicodes.WxMiniProgram.Sdk

輕量級微信小程序SDK,支持.NET Framework以及.NET Core。目前已提供Abp模塊的封裝,支持開箱即用。

地址:https://github.com/xin-lai/Magicodes.WxMiniProgram.Sdk

Nuget

新的包


主要功能

輕量級微信小程序SDK,以便于簡單方便的實現小程序服務端API的調用。具體見單元測試。

RoadMap

  • 完善接口

    • 登錄

    • 用戶信息

    • 接口調用憑證

    • 數據分析

    • 客服消息

    • 模板消息

    • 統一服務消息

    • 動態消息

    • 插件管理

    • 附近的小程序

    • 小程序碼

    • 內容安全

    • 廣告

    • 圖像處理

    • OCR

    • 運維中心

    • 搜索

    • 生物認證

    • 訂閱消息

  • AccessToken自動傳參,無需顯式指定

  • 方法參數改成類參數,并且支持通過特性校驗

更新歷史

0.0.5


  • 重構AccessToken管理

  • 添加對分布式架構支持(使用分布式緩存)

  • 重構Http請求模塊,移除HttpClient

  • 添加獲取二維碼接口(Create、Get、GetUnlimited),詳見單元測試

開始使用

如果使用Abp相關模塊,則使用起來比較簡單,具體您可以參考相關單元測試的編寫。主要有以下步驟:

  • 引用對應的Abp的Nuget包

  • 如果僅需某個支付,僅需引用該支付的包。下面以通聯支付為例,我們需要在工程中引用此包:

  • 在對應工程的Abp的模塊(AbpModule)中,添加

    對“WxMiniProgramSdkModule”的依賴,如:添加模塊依賴

  • [DependsOn(typeof(WxMiniProgramSdkModule))]
  • 直接使用

  • 通過構造函數或者屬性注入相關服務,即可直接使用。

    如何配置?

    對于ABP集成,則可以通過以下方式獲取配置:

    • 配置文件,如:

    "App_MiniProgram": { "MiniProgramAppId": "wx25fa5d55ef27e086", "MiniProgramAppSecret": "ab02ac4499c9764108a78e19476d7101"}

    以上為個人小程序號配置,僅用于測試,請勿亂搞!

    • 配置管理器

    需存儲JSON對象,對應的key為“App_MiniProgram”。

    對于非ABP集成,則需要自己實例化或注入配置類對象,可以參考單元測試的編寫。

    非ABP集成

    請參考Abp相關模塊的封裝或者相關的單元測試代碼,目前“Test”工程對應非ABP集成方式的使用,“Abp.Test”工程對應集成ABP之后的使用。

    分布式緩存配置

    為了支持分布式架構,已引入IDistributedCache來支持分布式緩存,在開發測試或單主機服務中,需使用以下代碼進行注入:

    services.AddDistributedMemoryCache();

    如需使用Redis,請參考下面代碼:

    services.AddDistributedRedisCache(options => {options.Configuration = "localhost";options.InstanceName = "SampleInstance"; });

    如何添加API?(PR)

    由于作者精力有限,非常歡迎各位參與共建。主體步驟如下所示:

    1.添加目錄

    在工程【Magicodes.WxMiniProgram.Sdk】下的【Services】目錄下添加對應業務模塊目錄,比如二維碼為“QRCode”。

    2.添加對應接口的AppService

    例如添加QRCodeAppService,繼承自ServiceBase

    3.基于ServiceBase提供的封裝來編寫接口邏輯

    例如以下代碼,獲取永久二維碼:

    /// <summary> /// 獲取小程序碼,適用于需要的碼數量較少的業務場景。通過該接口生成的小程序碼,永久有效,有數量限制 /// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.get.html /// </summary> /// <param name="path">掃碼進入的小程序頁面路徑,最大長度 128 字節,不能為空;對于小游戲,可以只傳入 query 部分,來實現傳參效果,如:傳入 "?foo=bar",即可在 wx.getLaunchOptionsSync 接口中的 query 參數獲取到 {foo:"bar"}。</param> /// <param name="autoColor">自動配置線條顏色,如果顏色依然是黑色,則說明不建議配置主色調</param> /// <param name="lineColor">auto_color 為 false 時生效,使用 rgb 設置顏色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十進制表示</param> /// <param name="isHyaline">是否需要透明底色,為 true 時,生成透明底色的小程序碼</param> /// <param name="width">二維碼的寬度,單位 px。最小 280px,最大 1280px</param> /// <returns></returns> public async Task<byte[]> Get(string path, bool autoColor = false, object lineColor = null, bool isHyaline = false, int width = 430){ if (string.IsNullOrWhiteSpace(path)) throw new ArgumentException("參數不能為空!", nameof(path)); return await DownloadData("wxa/getwxacode?access_token={ACCESS_TOKEN}", RestSharp.Method.POST, new{path,width,auto_color = autoColor,line_color = lineColor ?? new { r = 0, g = 0, b = 0 },is_hyaline = isHyaline});}

    如上述代碼所示,注意事項如下:

  • 通過DownloadData函數下載二維碼

  • 如需使用access_token,請在Url添加access_token={ACCESS_TOKEN}【后續將進一步優化】

  • 如需返回JSON對象,示例如下所示:

    public class SnsAppService : ServiceBase { private const string ApiName = "sns"; private readonly IMiniProgramConfig _config;public SnsAppService(IMiniProgramConfig config){_config = config;}/// <summary> /// 根據登錄憑證獲取Sns信息(openid、session_key、unionid) /// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html /// </summary> /// <param name="code">登錄時獲取的 code</param> public async Task<GetSnsInfoByCodeOutput> JscodeToSession(string code){ if (string.IsNullOrWhiteSpace(code)) throw new ArgumentException("參數不能為空!", nameof(code)); //獲取api請求url var url = $"{ApiName}/jscode2session?appid={_config.MiniProgramAppId}&secret={_config.MiniProgramAppSecret}&js_code={code}&grant_type=authorization_code";return await HttpGet<GetSnsInfoByCodeOutput>(url);} }

    注意事項如下:

    • 添加GetSnsInfoByCodeOutput,需繼承自ServiceOutputBase

    • 使用HttpGet或HttpPost方法來完成請求

    • Output類中的屬性請遵守C#命名規范,可以使用“JsonProperty”特性進行配置

      /// <summary> /// 憑證有效時間,單位:秒 /// </summary>[JsonProperty("expires_in")] public int Expires { get; set; }/// <summary> /// access_token /// </summary>[JsonProperty("access_token")] public string AccessToken { get; set; }

    4.編寫相關單元測試,并確保通過

    單元測試請參考工程【Test】和【Abp.Test】,可以通過ServiceOutputBase的IsSuccess方法來判斷是否成功:

    public class TokenTest : AbpTestBase { public TokenTest(ITestOutputHelper testOutputHelper){_testOutputHelper = testOutputHelper;_tokenAppService = Resolve<TokenAppService>();}private readonly ITestOutputHelper _testOutputHelper; private readonly TokenAppService _tokenAppService;[Fact] public async Task Get_Test(){ var result = await _tokenAppService.GetAsync();_testOutputHelper.WriteLine(JsonConvert.SerializeObject(result));result.IsSuccess().ShouldBe(true);result.AccessToken.ShouldNotBeNullOrWhiteSpace();} }

    官方訂閱號

    關注“麥扣聊技術”訂閱號免費獲取:

    • 最新文章、教程、文檔

    • 視頻教程

    • 基礎版免費授權

    • 模板

    • 解決方案

    • 編程心得和理念

    相關QQ群

    編程交流群<85318032>

    產品交流群<897857351>

    官方博客/文檔站

    • http://www.cnblogs.com/codelove/

    • https://docs.xin-lai.com/

    其他開源庫地址

    • https://gitee.com/magicodes/Magicodes.Admin.Core

    • https://github.com/xin-lai

    轉載是一種動力 分享是一種美德

    總結

    以上是生活随笔為你收集整理的轻量级开源小程序SDK发车啦的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。