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

背景介紹

近兩年拼多多的發展非常迅速,即便口碑一般,也沒有網頁端,奈何我們已經全面小康,6億月收入1000以下,9億月收入2000以下,所以因為價格原因使用拼多多的用戶也越來越多了。同樣的,拼多多也開放了部分API介面,提供給開發者使用,開放平台也是一如既往的拼多多,沒法跟淘寶、京東等相比,至今沒有測試環境,官方也只提供了Java版本的SDK,C#及.Net在中國的存量用戶還是有一些的,雖然整體上目前還是不樂觀,但我想有腦子的都知道,像C#這麼優秀的語言和日益精進的.Net Core,未來一定會有越來越多的人採用的,在此背景下,通過官方提供的API文檔,我編寫了拼多多開放平台.Net SDK。

項目介紹

Build status NuGet NuGet

地址

概要

支援基於 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.2Net Standard 2.0 ,安裝 Nuget 包 MSDev.PddOpenSdk

使用示例:

  • 基本請求及錯誤資訊
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<long> { 1122, 331323 }
        };
        var api = new DdkApi();
        var result = await api.GenDdkWeappQrcodeUrlAsync(model);

        // 獲取Pdd官方返回的錯誤資訊
        var errorResponse = _pdd.DdkApi.ErrorResponse.Value;
        Console.WriteLine(errorResponse.Error_msg);

    }
}
  • 圖片上傳示例
    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

更多 示例程式碼

  • 在 Startup.cs 中注入服務
services.AddPdd(options =>
{
    // 使用appsettings 配置你的ClientId等參數
    options.ClientId = Configuration.GetSection("Pdd")["ClientId"];
    options.CallbackUrl = Configuration.GetSection("Pdd")["RedirectUri"];
    options.ClientSecret = Configuration.GetSection("Pdd")["ClientSecret"];
});
  • 然後在控制器使用注入服務
readonly PddService _pdd;
public YourController(PddService pdd)
{
    _pdd = pdd;
}
  • 獲取 AccessToken
/// <summary>
/// 測試獲取token
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public async Task<IActionResult> Callback(string code)
{
    var token = await _pdd.AuthApi.GetAccessTokenAsync(code);
    // 自行維護Token過期時間
    return Content(token.AccessToken);
}
  • 調用其他介面

    獲取 AccessToken 之後才能正常調用其他介面。

public async Task<ActionResult> Test()
{
    // 構造請求模型
    var requestModel = new SearchDdkGoodsRequestModel
    {
        SortType = 0,
        WithCoupon = false
    };
    // 調用相應介面方法
    var result = await _pdd.DdkApi.SearchDdkGoodsAsync(requestModel);
    return Content(JsonConvert.SerializeObject(result));
}

所有方法名與官方文檔保持一致,並有中文注釋提醒,只是更改了命名規範,非常容易查找使用。

問題回饋

歡迎通過以下方式回饋問題: