C#類庫推薦 拼多多.Net SDK,開源免費!
阿新 • • 發佈:2020-09-15
# 背景介紹
近兩年拼多多的發展非常迅速,即便口碑一般,也沒有網頁端,奈何我們已經全面小康,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