Delphi Stripe クライアントを生成
Stripe は公開インターネット上で最も完全な OpenAPI 仕様の 1 つを公開しています — 決済、請求、身元、ターミナル、Connect をカバーする 500 を超えるエンドポイント。これを sgcOpenAPI に供給すると、仕様をミラーする強く型付けされた Delphi ユニットが得られ、リクエストおよびレスポンスクラスはすでに設定済み、認証は結線済み、ページネーションは処理済みです。
Stripe は公開インターネット上で最も完全な OpenAPI 仕様の 1 つを公開しています — 決済、請求、身元、ターミナル、Connect をカバーする 500 を超えるエンドポイント。これを sgcOpenAPI に供給すると、仕様をミラーする強く型付けされた Delphi ユニットが得られ、リクエストおよびレスポンスクラスはすでに設定済み、認証は結線済み、ページネーションは処理済みです。
Stripe は公式 OpenAPI 3 仕様を出荷・保守しています。sgcOpenAPI のパーサーとコードジェネレーターは、これを Delphi 7 から RAD Studio 13 でコンパイルする Pascal に直接変換します。
ベアラーシークレットキー + 冪等性キー
sgcOpenAPI_Stripe
Windows、macOS、Linux、iOS、Android
Stripe の公開リポジトリから最新の spec3.json をダウンロードし、TsgcOpenAPIParser で読み込みます。パーサーは $ref ポインター、合成キーワード、共有エラーモデルを解決し、コードジェネレーターが完全に解参照された API モデルを見られるようにします。
uses sgcOpenAPI_Parser, sgcOpenAPI_Generator; var vParser: TsgcOpenAPIParser; vGen: TsgcOpenAPIGenerator; begin vParser := TsgcOpenAPIParser.Create(nil); try vParser.LoadFromFile('C:\specs\stripe\spec3.json'); Memo1.Lines.Add(Format('Loaded Stripe spec: %d paths, %d schemas', [vParser.Paths.Count, vParser.Schemas.Count])); vGen := TsgcOpenAPIGenerator.Create(nil); try vGen.Parser := vParser; vGen.OutputUnit := 'sgcOpenAPI_Stripe'; vGen.OutputFolder := 'C:\Generated\Stripe'; vGen.Generate; finally vGen.Free; end; finally vParser.Free; end; end;
ジェネレーターは、仕様内のタグごとに 1 つの強く型付けされたクラス — TsgcStripe_Charges、TsgcStripe_Customers、TsgcStripe_Subscriptions、TsgcStripe_PaymentIntents など — を持つ sgcOpenAPI_Stripe.pas という 1 つの Pascal ユニットと、共有 HTTP クライアントと認証状態を所有するトップレベルの TsgcStripe ファサードを書き出します。
ファサードでベアラートークンを 1 度設定し、その後、型付きサブオブジェクトのメソッドを呼び出します。リクエストボディは流暢なプロパティで設定され、レスポンスは強く型付けされたオブジェクトとして返ってきます。
uses sgcOpenAPI_Stripe; var vStripe: TsgcStripe; vCharge: TsgcStripeCharge; begin vStripe := TsgcStripe.Create(nil); try vStripe.ApiKey := 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'; vCharge := vStripe.Charges.Create( Amount := 2000, // cents Currency := 'usd', Source := 'tok_visa', // test token Description := 'Order 1234'); try Memo1.Lines.Add('Charge id: ' + vCharge.Id); Memo1.Lines.Add('Status: ' + vCharge.Status); Memo1.Lines.Add('Paid: ' + BoolToStr(vCharge.Paid, True)); finally vCharge.Free; end; finally vStripe.Free; end; end;
ページネーションは生成されたカーソルオブジェクトが処理します。冪等性キーは、すべての変更メソッドのオプショナルな IdempotencyKey パラメーター経由で渡されます。
// Create a customer + attach a subscription var vCustomer: TsgcStripeCustomer; vSub: TsgcStripeSubscription; vItems: TsgcStripeSubscriptionItemList; begin vCustomer := vStripe.Customers.Create( Email := 'jane@example.com', PaymentMethod := 'pm_card_visa'); vItems := TsgcStripeSubscriptionItemList.Create; vItems.Add(Price := 'price_1JxYzZAbCdEfGhIj'); vSub := vStripe.Subscriptions.Create( Customer := vCustomer.Id, Items := vItems, IdempotencyKey := TGUID.NewGuid.ToString); // Page through invoices for this customer for vInvoice in vStripe.Invoices.List(Customer := vCustomer.Id) do Memo1.Lines.Add(Format('%s — %d %s', [vInvoice.Id, vInvoice.AmountDue, vInvoice.Currency])); end;
ユニットは公式仕様から生成されるため、文書化されたすべてのエンドポイントとフィールドが、手動バインディング作業なしで利用可能です。
Charges、PaymentIntents、PaymentMethods、Refunds、Disputes、Sources、Tokens — 完全な古典的 Charges API に加え、Strong Customer Authentication を備えたモダンな PaymentIntents フロー。
Customers、Invoices、InvoiceItems、Subscriptions、SubscriptionItems、Prices、Products、Coupons、PromotionCodes、TaxRates。
Accounts、AccountLinks、Transfers、Payouts、BalanceTransactions — Delphi バックオフィスから Stripe Connect プラットフォームを運用するために必要なすべて。
Identity VerificationSession オブジェクトと Terminal Reader/Location オブジェクトがすべて存在し、Stripe が KYC 結果に使用する多態的な last_verification_report スキーマも含まれます。
判別された data.object ペイロードを持つ完全な Event スキーマが含まれます。元のリクエストの送信に使用するのと同じ型で、受信した webhook ボディをパースしてください。
Files、FileLinks、Reporting — 仕様がそれらのエンドポイントを multipart/form-data でマークしているため、マルチパートアップロードヘルパーが自動的に出力されます。
Stripe は毎月新しい API バージョンを出荷します。仕様ファイルをアカウントが使用するバージョンに固定し(すべてのリクエストで Stripe-Version を設定)、アップグレード時に Delphi ユニットを再生成してください。ジェネレーターは決定論的です — 同じ仕様、同じ出力。
いくつかの Stripe スキーマ(payment_method_details、source、balance_transaction.source)は判別子付きの oneOf を使用します。生成ユニットは基底クラスと、バリアントごとに 1 つの子孫を出力します — Type プロパティに基づいてダウンキャストしてください。