xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

C# / .NET 向けの Paidy SDK を公開しました

あの Amazon でも利用できる (特に) 若者に人気の Paidy 決済。その API の C# / .NET 向けラッパーを作成し、公開しました!普段 EC サービスの開発 / 運用を業務で行っているのですが、とあるお客様で Paidy 導入が必要になったので作りました。

本当はすべての API を網羅する必要性なんて全くない *1 ので完全なオーバーワークですが、今後 Paidy を C# / .NET 環境で導入する方が少しでも楽できればいいなと思っています。

https://download.paidy.com/3Banner_Paidy_1200x628_1x_.png

サポートしている機能

Paidy 自体の導入方法は公式ドキュメントをちゃんと読む必要がありますが、決済処理に必要な API はすべて揃っています。

サポート環境

最新環境である .NET 5 はもちろん、.NET Framework まで幅広くサポートします。

  • .NET Framework 4.6.1+
  • .NET Standard 2.0+
  • .NET 5.0+

簡単な使い方紹介

非常にシンプルで薄いラッパーになっているので、公式ドキュメントを見れば迷子になることなく使える作りになっていると思います。

API

API 関連の処理は Microsoft.Extensions.DependencyInjection 経由で提供されます。.NET Core 標準 DI なので「いつもの感じ」でサクッと使えます。

  1. .AddPaidy();
  2. DI から PaymentService / TokenService を取得する
using Microsoft.Extensions.DependencyInjection;
using Paidy;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        var options = new PaidyOptions
        (
            apiEndpoint: "https://api.paidy.com",
            secretKey: "sk_...",
            apiVersion: null
        );
        services.AddPaidy(options);  // これだけで準備完了!
    }
}
using Paidy.Payments;
using Paidy.Tokens;

public class Sample
{
    private PaymentService PaymentService { get; }
    private TokenService TokenService { get; }

    // DI から取得して
    public Sample(PaymentService paymentService, TokenService tokenService)
    {
        this.PaymentService = paymentService;
        this.TokenService = tokenService;
    }

    // API を呼び出す
    public async ValueTask GetPaymentAsync()
    {
        var payment = await this.PaymentService.CaptureAsync("Paidy Payment ID");
        var token = await this.TokenService.RetrieveAsync("Paidy Token ID");
    }
}

Webhook

Webhook で受信した JSON ペイロードを parse する機能も備えます。JSON からインスタンスを作るだけ!

var payload = "{ Paidy payment webhook payload }"; 
var request = PaymentRequest.From(payload);
var payload = "{ Paidy token webhook payload }"; 
var request = TokenRequest.From(payload);

*1:業務使うのはほんの一部