1. 程式人生 > >C#類庫推薦 拼多多.Net SDK,開源免費!

C#類庫推薦 拼多多.Net SDK,開源免費!

# 背景介紹 近兩年拼多多的發展非常迅速,即便口碑一般,也沒有網頁端,奈何我們已經全面小康,6億月收入1000以下,9億月收入2000以下,所以因為價格原因使用拼多多的使用者也越來越多了。同樣的,拼多多也開放了部分API介面,提供給開發者使用,開放平臺也是一如既往的拼多多,沒法跟淘寶、京東等相比,至今沒有測試環境,官方也只提供了Java版本的SDK,C#及.Net在國內的存量使用者還是有一些的,雖然整體上目前還是不樂觀,但我想有腦子的都知道,像C#這麼優秀的語言和日益精進的.Net Core,未來一定會有越來越多的人採用的,在此背景下,通過官方提供的API文件,我編寫了拼多多開放平臺.Net SDK。 # 專案介紹 [![Build status](https://dev.azure.com/msdev-zpty/pdd-open-net-sdk/_apis/build/status/pdd-open-net-sdk-CI)](https://dev.azure.com/msdev-zpty/pdd-open-net-sdk/_build/latest?definitionId=1) [![NuGet](https://img.shields.io/nuget/v/MSDev.PddOpenSdk.AspNetCore.svg?style=flat-square&label=nuget)](https://www.nuget.org/packages/MSDev.PddOpenSdk.AspNetCore/) [![NuGet](https://img.shields.io/nuget/dt/MSDev.PddOpenSdk.AspNetCore.svg)](https://www.nuget.org/packages/MSDev.PddOpenSdk.AspNetCore/) ## 地址 - [Github](https://github.com/niltor/open-pdd-net-sdk) - nuget - [MSDev.PddOpenSdk](https://www.nuget.org/packages/MSDev.PddOpenSdk/) v2.0,核心類庫,支援.Net4.5.2及NetStandard2.0。 - [MSDev.PddOpenSdk.AspNetCore](https://www.nuget.org/packages/MSDev.PddOpenSdk.AspNetCore/) v2.0,適用於 AspNetCore 專案。 ## 概要 支援基於 NETStandardv2.0 的專案,支援 .NetFramework 4.5.2+,C#8.0。 ASP.NET Core 專案請使用 Nuget 包 MSDev.PddOpenSdk.AspNetCore,可直接通過注入服務的方式使用。 其他型別使用 Nuget 包 MSDev.PddOpenSdk ## 原始碼專案說明 ### Console專案 該專案是通過官方介面獲取並自動生成所有請求模型類、返回模型類以及請求服務類,生成後部分類名會有重名,更改成不同的類名即可。 執行方法,開啟Console目錄,然後執行`dotnet run`命令即可。 執行成功後,可使用Visual Studio自帶的程式碼清理,對所有檔案進行程式碼格式化操作。 ### PddOpenSdk 核心類庫使用 支援 `.Net Framework4.5.2`及`Net Standard 2.0` ,安裝 Nuget 包 `MSDev.PddOpenSdk`。 使用示例: - 基本請求及錯誤資訊 ```csharp class Program { static async Task Main(string[] args) { // 設定ClientId與ClientSecret PddCommonApi.ClientId = "ID"; PddCommonApi.ClientSecret = "Secret"; // 先使用code換取token string code = ""; var authApi = new AuthApi(); await authApi.GetAccessTokenAsync(code); // 構造請求內容 var model = new GenDdkWeappQrcodeUrlRequestModel { PId = "123133", GoodsIdList = new System.Collections.Generic.List { 1122, 331323 } }; var api = new DdkApi(); var result = await api.GenDdkWeappQrcodeUrlAsync(model); // 獲取Pdd官方返回的錯誤資訊 var errorResponse = _pdd.DdkApi.ErrorResponse.Value; Console.WriteLine(errorResponse.Error_msg); } } ``` - 圖片上傳示例 ```csharp var filePath = Path.Combine("images", "logo.png"); byte[] bytes = System.IO.File.ReadAllBytes(filePath); // 構造圖片上傳內容 string base64 = "data:image/png;base64," + Convert.ToBase64String(bytes); var model = new UploadGoodsImageRequestModel { Image = base64 }; var result = await _pdd.GoodsApi.UploadGoodsImageAsync(model) ``` ### ASP.NET Core 專案使用 先安裝Nuget 包 `MSDev.PddOpenSdk.AspNetCore`。 更多 [示例程式碼](https://github.com/niltor/open-pdd-net-sdk/tree/dev/PddOpenSdk/Sample)。 - 在 Startup.cs 中注入服務 ```csharp services.AddPdd(options => { // 使用appsettings 配置你的ClientId等引數 options.ClientId = Configuration.GetSection("Pdd")["ClientId"]; options.CallbackUrl = Configuration.GetSection("Pdd")["RedirectUri"]; options.ClientSecret = Configuration.GetSection("Pdd")["ClientSecret"]; }); ``` - 然後在控制器使用注入服務 ```csharp readonly PddService _pdd; public YourController(PddService pdd) { _pdd = pdd; } ``` - 獲取 AccessToken ```csharp /// /// 測試獲取token ///
/// /// public async Task Callback(string code) { var token = await _pdd.AuthApi.GetAccessTokenAsync(code); // 自行維護Token過期時間 return Content(token.AccessToken); } ``` - 呼叫其他介面 **獲取 AccessToken 之後才能正常呼叫其他介面。** ```csharp public async Task Test() { // 構造請求模型 var requestModel = new SearchDdkGoodsRequestModel { SortType = 0, WithCoupon = false }; // 呼叫相應介面方法 var result = await _pdd.DdkApi.SearchDdkGoodsAsync(requestModel); return Content(JsonConvert.SerializeObject(result)); } ``` > 所有方法名與官方文件保持一致,並有中文註釋提醒,只是更改了命名規範,非常容易查詢使用。 # 問題反饋 歡迎通過以下方式反饋問題: - 提交 GitHub Issues - Email: [email protected](優先處理) - QQ 群:7