【ライブラリ配布】StripeSubscription
概要
Stripeで月額課金制アプリケーション(サブスクリプション)を作成する時に使いそうな関数をまとめたDLLです。各種要素での顧客検索機能や、Advanced Encryption Standard(AES)での暗号化処理も実装しています。
リリースノート
2019/10/07:バージョン 1.0.0.0 公開
ダウンロード
使い方
ダウンロードしたファイルを解凍してください。 その後、参照の追加から「StripeSubscription.dll」を追加してください。 Nugetで「stripe.net」をダウンロードして「using Stripe;」を追加しておくと返ってきたデータを扱えます。
関数&プロパティ一覧
クラス名 | 名称 | 分類 | 詳細 |
AES | Encryption | 関数 | AES暗号化を行う |
AES | Decryption | 関数 | AES復号を行う |
Methods | ApiKey | プロパティ | DLLで使用するAPIキー |
Methods | LoginFormShow | 関数 | ログイン画面を表示 |
Methods | SeachCustomerToEmail | 関数 | メールアドレスを元に顧客情報を全検索する |
Methods | SeachCustomerToName | 関数 | 氏名を元に顧客情報を全検索する |
Methods | SeachCustomerToPhone | 関数 | 電話番号を元に顧客情報を全検索する |
Methods | SeachCustomerToProductId | 関数 | 商品IDを元に顧客情報を全検索する |
Methods | SeachCustomerToPlanId | 関数 | プランIDを元に顧客情報を全検索する |
Methods | SubscriptionControl | 関数 | サブスクリプションの停止/有効化を設定 |
Methods | SetPlan | 関数 | 顧客にプランを設定 |
Methods | CreateCardToken | 関数 | クレジットカードのトークン化 |
関数説明
Encryption
■詳細
AES暗号化を行う関数です。 共通鍵の変更は現状できません。
■関数概要
型名 | 詳細 | |
引数1 | string | 暗号化対象文字列 |
返り値 | string | 暗号化後文字列 |
■サンプルコード
1 2 3 4 5 6 7 8 9 10 11 |
private void button1_Click(object sender, EventArgs e) { // インスタンス生成 var aes = new StripeSubscription.AES(); // 暗号化 var str = aes.Encryption("暗号化対象文字列"); // 出力 Console.Write(str); } |
Decryption
■詳細
AES復号を行う関数です。 共通鍵の変更は現状できません。
■関数概要
型名 | 詳細 | |
引数1 | string | 復号対象文字列 |
返り値 | string | 復号文字列 |
■サンプルコード
1 2 3 4 5 6 7 8 9 10 11 |
private void button1_Click(object sender, EventArgs e) { // インスタンス生成 var aes = new StripeSubscription.AES(); // 復号 var str = aes.Decryption("復号対象文字列"); // 出力 Console.Write(str); } |
LoginFormShow
■詳細
簡易ログイン画面と簡易ユーザー登録画面を提供します。 前提としてAPIキープロパティの設定が必須です。
■関数概要
型名 | 詳細 | |
引数 | なし | なし |
返り値 | Customer | ログインした顧客情報(非ログインならnull) |
■サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
private void button1_Click(object sender, EventArgs e) { // インスタンス生成 var stripe = new StripeSubscription.Methods(); // DLLで使用するAPIキー設定 stripe.ApiKey = "sk_test_XXXXXXXXXXXXX"; // ログイン画面表示 var customer = stripe.LoginFormShow(); // ログイン判定 if(customer != null) { // ログインした Console.Write("顧客ログインあり"); } else { // ログインしなかった Console.Write("顧客ログインなし"); } } |
SeachCustomerToEmail
■詳細
メールアドレスを元に顧客情報を全検索します。 顧客情報は複数件ヒットする可能性があります。 前提としてAPIキープロパティの設定が必須です。
■関数概要
型名 | 詳細 | |
引数1 | string | 検索対象のメールアドレス |
引数2 | bool | 完全一致(true) or 部分一致(false) |
返り値 | StripeList<Customer> | 顧客情報リスト(.Dataに格納されています) |
■サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
private void button1_Click(object sender, EventArgs e) { // インスタンス生成 var stripe = new StripeSubscription.Methods(); // DLLで使用するAPIキー設定 stripe.ApiKey = "sk_test_XXXXXXXXXXXXX"; // 完全一致検索 var customers = stripe.SeachCustomerToEmail("EmailAddress", true); // 検索結果判定 if(customers.Data.Count != 0) { // 検索結果あり Console.Write("顧客情報あり"); } else { // 検索結果なし Console.Write("顧客情報なし"); } } |
SeachCustomerToName
■詳細
氏名を元に顧客情報を全検索します。 顧客情報は複数件ヒットする可能性があります。 前提としてAPIキープロパティの設定が必須です。
■関数概要
型名 | 詳細 | |
引数1 | string | 検索対象の氏名 |
引数2 | bool | 完全一致(true) or 部分一致(false) |
返り値 | StripeList<Customer> | 顧客情報リスト(.Dataに格納されています) |
■サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
private void button1_Click(object sender, EventArgs e) { // インスタンス生成 var stripe = new StripeSubscription.Methods(); // DLLで使用するAPIキー設定 stripe.ApiKey = "sk_test_XXXXXXXXXXXXX"; // 完全一致検索 var customers = stripe.SeachCustomerToName("Name",true); // 検索結果判定 if(customers.Data.Count != 0) { // 検索結果あり Console.Write("顧客情報あり"); } else { // 検索結果なし Console.Write("顧客情報なし"); } } |
SeachCustomerToPhone
■詳細
電話番号を元に顧客情報を全検索します。 顧客情報は複数件ヒットする可能性があります。 前提としてAPIキープロパティの設定が必須です。
■関数概要
型名 | 詳細 | |
引数1 | string | 検索対象の電話番号 |
引数2 | bool | 完全一致(true) or 部分一致(false) |
返り値 | StripeList<Customer> | 顧客情報リスト(.Dataに格納されています) |
■サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
private void button1_Click(object sender, EventArgs e) { // インスタンス生成 var stripe = new StripeSubscription.Methods(); // DLLで使用するAPIキー設定 stripe.ApiKey = "sk_test_XXXXXXXXXXXXX"; // 完全一致検索 var customers = stripe.SeachCustomerToPhone("PhoneNumber",true); // 検索結果判定 if(customers.Data.Count != 0) { // 検索結果あり Console.Write("顧客情報あり"); } else { // 検索結果なし Console.Write("顧客情報なし"); } } |
SeachCustomerToProductId
■詳細
商品IDを元に顧客情報を全検索します。 顧客情報は複数件ヒットする可能性があります。 前提としてAPIキープロパティの設定が必須です。
■関数概要
型名 | 詳細 | |
引数1 | string | 検索対象の商品ID |
引数2 | bool | 完全一致(true) or 部分一致(false) |
返り値 | StripeList<Customer> | 顧客情報リスト(.Dataに格納されています) |
■サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
private void button1_Click(object sender, EventArgs e) { // インスタンス生成 var stripe = new StripeSubscription.Methods(); // DLLで使用するAPIキー設定 stripe.ApiKey = "sk_test_XXXXXXXXXXXXX"; // 完全一致検索 var customers = stripe.SeachCustomerToProductId("ProductId", true); // 検索結果判定 if(customers.Data.Count != 0) { // 検索結果あり Console.Write("顧客情報あり"); } else { // 検索結果なし Console.Write("顧客情報なし"); } } |
SeachCustomerToPlanId
■詳細
プランIDを元に顧客情報を全検索します。 顧客情報は複数件ヒットする可能性があります。 前提としてAPIキープロパティの設定が必須です。
■関数概要
型名 | 詳細 | |
引数1 | string | 検索対象の商品ID |
引数2 | bool | 完全一致(true) or 部分一致(false) |
返り値 | StripeList<Customer> | 顧客情報リスト(.Dataに格納されています) |
■サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
private void button1_Click(object sender, EventArgs e) { // インスタンス生成 var stripe = new StripeSubscription.Methods(); // DLLで使用するAPIキー設定 stripe.ApiKey = "sk_test_XXXXXXXXXXXXX"; // 完全一致検索 var customers = stripe.SeachCustomerToPlanId("PlanId", true); // 検索結果判定 if(customers.Data.Count != 0) { // 検索結果あり Console.Write("顧客情報あり"); } else { // 検索結果なし Console.Write("顧客情報なし"); } } |
SubscriptionControl
■詳細
サブスクリプションIDを元に有効化/停止を行います。 停止にした際に次の更新を行わないようになります、完全停止まで期間が残っている場合は再度有効化可能です。 前提としてAPIキープロパティの設定が必須です。
■関数概要
型名 | 詳細 | |
引数1 | string | コントロール対象のサブスクリプションID |
引数2 | bool | 有効化(true) or 停止(false) |
返り値 | なし | なし |
■サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
private void button1_Click(object sender, EventArgs e) { // インスタンス生成 var stripe = new StripeSubscription.Methods(); // DLLで使用するAPIキー設定 stripe.ApiKey = "sk_test_XXXXXXXXXXXXX"; // サブスクリプション停止 stripe.SubscriptionControl("SubscriptionId", true); // サブスクリプション有効化 stripe.SubscriptionControl("SubscriptionId", false); } |
SetPlan
■詳細
プランを顧客に紐づけます。 前提としてAPIキープロパティの設定が必須です。
■関数概要
型名 | 詳細 | |
引数1 | string | 対象の顧客ID |
引数2 | string | 対象のプランID |
返り値 | なし | なし |
■サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
private void button1_Click(object sender, EventArgs e) { // インスタンス生成 var stripe = new StripeSubscription.Methods(); // DLLで使用するAPIキー設定 stripe.ApiKey = "sk_test_XXXXXXXXXXXXX"; // 顧客情報取得 var customers = stripe.SeachCustomerToEmail("EmailAddress", true); if(customers.Data.Count != 0) { foreach(var c in customers) { // プランの存在確認 var query = c.Subscriptions.Any(x => x.Plan.Id == "PlanId"); if (!query) { // 有効なプランがない場合、プラン設定 stripe.SetPlan(c.Id, "PlanId"); } } } } |
CreateCardToken
■詳細
クレジットカードのトークンを作成します。 顧客情報作成時等に使います。 前提としてAPIキープロパティの設定が必須です。
■関数概要
型名 | 詳細 | |
引数1 | string | カード番号 |
引数2 | int | 有効年 |
引数3 | int | 有効月 |
引数4 | string | CVC |
引数5 | string | カード名義人氏名 |
返り値 | Token | クレジットカードトークン |
■サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
private void button1_Click(object sender, EventArgs e) { // インスタンス生成 var stripe = new StripeSubscription.Methods(); // DLLで使用するAPIキー設定 stripe.ApiKey = "sk_test_XXXXXXXXXXXXX"; // 顧客情報検索 var customers = stripe.SeachCustomerToEmail(txtEmail.Text, true); if (customers.Data.Count == 0) { // 顧客情報が存在しない場合 try { // 顧客情報作成 var options = new CustomerCreateOptions { Email = txtEmail.Text, Source = stripe.CreateCardToken($"{txtNum1.Text}{txtNum2.Text}{txtNum3.Text}{txtNum4.Text}", int.Parse(cmbYear.Text), int.Parse(cmbMonth.Text), txtCvc.Text, txtCardName.Text).Id, Name = txtName.Text, Metadata = new Dictionary<string, string>() { { "pass", aes.Encryption(txtPass.Text)} }, }; var service = new CustomerService(); CustomerData = service.Create(options); MessageBox.Show($"ユーザーの作成が完了しました"); } catch { MessageBox.Show($"ユーザーの登録に失敗しました\n登録内容をご確認ください"); } } else { MessageBox.Show($"ユーザーの登録に失敗しました\nユーザーは既に登録済です"); } } |
ディスカッション
コメント一覧
まだ、コメントがありません