夜燕 發表於 2020-9-15 08:46:00

C#类库推荐 拼多多.Net SDK,开源免费!

<h1 id="背景介绍">背景介绍</h1>
<p>近两年拼多多的发展非常迅速,即便口碑一般,也没有网页端,奈何我们已经全面小康,6亿月收入1000以下,9亿月收入2000以下,所以因为价格原因使用拼多多的用户也越来越多了。同样的,拼多多也开放了部分API接口,提供给开发者使用,开放平台也是一如既往的拼多多,没法跟淘宝、京东等相比,至今没有测试环境,官方也只提供了Java版本的SDK,C#及.Net在国内的存量用户还是有一些的,虽然整体上目前还是不乐观,但我想有脑子的都知道,像C#这么优秀的语言和日益精进的.Net Core,未来一定会有越来越多的人采用的,在此背景下,通过官方提供的API文档,我编写了拼多多开放平台.Net SDK。</p>
<h1 id="项目介绍">项目介绍</h1>
<p><img src="https://dev.azure.com/msdev-zpty/pdd-open-net-sdk/_apis/build/status/pdd-open-net-sdk-CI" alt="Build status" loading="lazy"> <img src="https://img.shields.io/nuget/v/MSDev.PddOpenSdk.AspNetCore.svg?style=flat-square&amp;label=nuget" alt="NuGet" loading="lazy"> <img src="https://img.shields.io/nuget/dt/MSDev.PddOpenSdk.AspNetCore.svg" alt="NuGet" loading="lazy"></p>
<h2 id="地址">地址</h2>
<ul>
<li>Github</li>
<li>nuget
<ul>
<li>MSDev.PddOpenSdk v2.0,核心类库,支持.Net4.5.2及NetStandard2.0。</li>
<li>MSDev.PddOpenSdk.AspNetCore v2.0,适用于 AspNetCore 项目。</li>
</ul>
</li>
</ul>
<h2 id="概要">概要</h2>
<p>支持基于 NETStandardv2.0 的项目,支持 .NetFramework 4.5.2+,C#8.0。<br>
ASP.NET Core 项目请使用 Nuget 包 MSDev.PddOpenSdk.AspNetCore,可直接通过注入服务的方式使用。<br>
其他类型使用 Nuget 包 MSDev.PddOpenSdk</p>
<h2 id="源码项目说明">源码项目说明</h2>
<h3 id="console项目">Console项目</h3>
<p>该项目是通过官方接口获取并自动生成所有请求模型类、返回模型类以及请求服务类,生成后部分类名会有重名,更改成不同的类名即可。</p>
<p>执行方法,打开Console目录,然后执行<code>dotnet run</code>命令即可。</p>
<p>执行成功后,可使用Visual Studio自带的代码清理,对所有文件进行代码格式化操作。</p>
<h3 id="pddopensdk-核心类库使用">PddOpenSdk 核心类库使用</h3>
<p>支持 <code>.Net Framework4.5.2</code>及<code>Net Standard 2.0</code> ,安装 Nuget 包 <code>MSDev.PddOpenSdk</code>。</p>
<p>使用示例:</p>
<ul>
<li>基本请求及错误信息</li>
</ul>
<pre><code class="language-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&lt;long&gt; { 1122, 331323 }
      };
      var api = new DdkApi();
      var result = await api.GenDdkWeappQrcodeUrlAsync(model);

      // 获取Pdd官方返回的错误信息
      var errorResponse = _pdd.DdkApi.ErrorResponse.Value;
      Console.WriteLine(errorResponse.Error_msg);

    }
}
</code></pre>
<ul>
<li>图片上传示例</li>
</ul>
<pre><code class="language-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)
</code></pre>
<h3 id="aspnet-core-项目使用">ASP.NET Core 项目使用</h3>
<p>先安装Nuget 包 <code>MSDev.PddOpenSdk.AspNetCore</code>。</p>
<p>更多 示例代码。</p>
<ul>
<li>在 Startup.cs 中注入服务</li>
</ul>
<pre><code class="language-csharp">services.AddPdd(options =&gt;
{
    // 使用appsettings 配置你的ClientId等参数
    options.ClientId = Configuration.GetSection("Pdd")["ClientId"];
    options.CallbackUrl = Configuration.GetSection("Pdd")["RedirectUri"];
    options.ClientSecret = Configuration.GetSection("Pdd")["ClientSecret"];
});
</code></pre>
<ul>
<li>然后在控制器使用注入服务</li>
</ul>
<pre><code class="language-csharp">readonly PddService _pdd;
public YourController(PddService pdd)
{
    _pdd = pdd;
}
</code></pre>
<ul>
<li>获取 AccessToken</li>
</ul>
<pre><code class="language-csharp">/// &lt;summary&gt;
/// 测试获取token
/// &lt;/summary&gt;
/// &lt;param name="code"&gt;&lt;/param&gt;
/// &lt;returns&gt;&lt;/returns&gt;
public async Task&lt;IActionResult&gt; Callback(string code)
{
    var token = await _pdd.AuthApi.GetAccessTokenAsync(code);
    // 自行维护Token过期时间
    return Content(token.AccessToken);
}
</code></pre>
<ul>
<li>
<p>调用其他接口</p>
<p><strong>获取 AccessToken 之后才能正常调用其他接口。</strong></p>
</li>
</ul>
<pre><code class="language-csharp">public async Task&lt;ActionResult&gt; Test()
{
    // 构造请求模型
    var requestModel = new SearchDdkGoodsRequestModel
    {
      SortType = 0,
      WithCoupon = false
    };
    // 调用相应接口方法
    var result = await _pdd.DdkApi.SearchDdkGoodsAsync(requestModel);
    return Content(JsonConvert.SerializeObject(result));
}
</code></pre>
<blockquote>
<p>所有方法名与官方文档保持一致,并有中文注释提醒,只是更改了命名规范,非常容易查找使用。</p>
</blockquote>
<h1 id="问题反馈">问题反馈</h1>
<p>欢迎通过以下方式反馈问题:</p>
<ul>
<li>提交 GitHub Issues</li>
<li>Email: zpty@outlook.com(优先处理)</li>
<li>QQ 群:737822525</li>
</ul><br><br>
来源:https://www.cnblogs.com/msdeveloper/p/open-pdd-net-sdk.html
頁: [1]
查看完整版本: C#类库推荐 拼多多.Net SDK,开源免费!