Einen Delphi-Stripe-Client erzeugen

Stripe veröffentlicht eine der vollständigsten OpenAPI-Spezifikationen im öffentlichen Internet — über 500 Endpunkte für Payments, Billing, Identity, Terminal und Connect. Füttere sie in sgcOpenAPI und du erhältst eine streng typisierte Delphi-Unit, die die Spezifikation spiegelt — mit bereits befüllten Request- und Response-Klassen, eingebauter Authentifizierung und automatisch gehandhabter Paginierung.

Stripe + sgcOpenAPI

Stripe veröffentlicht und pflegt eine offizielle OpenAPI-3-Spezifikation. Parser und Codegenerator von sgcOpenAPI wandeln sie direkt in Pascal um, der von Delphi 7 bis RAD Studio 13 kompiliert.

Quell-Spezifikation

github.com/stripe/openapi

Auth

Bearer Secret Key + Idempotency-Keys

Generierte Unit

sgcOpenAPI_Stripe

Plattformen

Windows, macOS, Linux, iOS, Android

Die Spezifikation an den Parser übergeben

Lade die aktuelle spec3.json aus Stripes öffentlichem Repository herunter und übergib sie an TsgcOpenAPIParser. Der Parser löst $ref-Verweise, Composition-Keywords und das gemeinsame Fehlermodell auf, sodass der Codegenerator ein vollständig dereferenziertes API-Modell sieht.

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;

Der Generator schreibt eine einzige Pascal-Unit namens sgcOpenAPI_Stripe.pas mit einer streng typisierten Klasse pro Tag in der Spezifikation — TsgcStripe_Charges, TsgcStripe_Customers, TsgcStripe_Subscriptions, TsgcStripe_PaymentIntents usw. — plus eine übergeordnete TsgcStripe-Fassade, die den gemeinsamen HTTP-Client und den Authentifizierungs-Zustand besitzt.

Eine Zahlung anlegen

Setze den Bearer-Token einmal auf der Fassade und rufe dann Methoden auf den typisierten Unter-Objekten auf. Request Bodies werden über fließende Eigenschaften befüllt; Antworten kommen als streng typisierte Objekte zurück.

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;

Kunden und Abonnements

Die Paginierung übernehmen die generierten Cursor-Objekte. Idempotency-Keys werden über den optionalen Parameter IdempotencyKey bei jeder mutierenden Methode übergeben.

// 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;

Was die generierte Unit dir liefert

Weil die Unit aus der offiziellen Spezifikation generiert wird, sind jeder dokumentierte Endpunkt und jedes dokumentierte Feld ohne manuelle Bindungsarbeit verfügbar.

Payments & Refunds

Charges, PaymentIntents, PaymentMethods, Refunds, Disputes, Sources, Tokens — die komplette klassische Charges-API plus der moderne PaymentIntents-Flow mit Strong Customer Authentication.

Billing & Subscriptions

Customers, Invoices, InvoiceItems, Subscriptions, SubscriptionItems, Prices, Products, Coupons, PromotionCodes, TaxRates.

Connect & Payouts

Accounts, AccountLinks, Transfers, Payouts, BalanceTransactions — alles, was nötig ist, um eine Stripe-Connect-Plattform aus einem Delphi-Backoffice zu betreiben.

Identity & Terminal

Identity-VerificationSession-Objekte und Terminal-Reader/Location-Objekte sind alle vorhanden, einschließlich der polymorphen last_verification_report-Schemas, die Stripe für KYC-Ergebnisse verwendet.

Webhook-Events

Das vollständige Event-Schema mit diskriminierten data.object-Payloads ist enthalten. Parse eingehende Webhook-Bodies mit denselben Typen, mit denen du den ursprünglichen Request gesendet hast.

Files & Reporting

Files, FileLinks, Reporting — Multipart-Upload-Helfer werden automatisch erzeugt, weil die Spezifikation diese Endpunkte mit multipart/form-data markiert.

Zwei Dinge, auf die du achten solltest

Versions-Drift der Spezifikation

Stripe liefert monatlich neue API-Versionen aus. Pinne die Spec-Datei auf die Version, die dein Account verwendet (setze Stripe-Version bei jedem Request) und generiere die Delphi-Unit neu, wenn du upgradest. Der Generator ist deterministisch — gleiche Spezifikation, gleiche Ausgabe.

Polymorphe Antworten

Mehrere Stripe-Schemas (payment_method_details, source, balance_transaction.source) verwenden oneOf mit einem Diskriminator. Die generierte Unit liefert eine Basisklasse plus einen Nachfahren pro Variante — cast je nach der Eigenschaft Type herunter.

Aus dem Blog

OpenAPI-Delphi-Parser

Wie der zugrunde liegende Parser reale OpenAPI-3.x-Spezifikationen handhabt — einschließlich der vertrackten Composition-Keywords.

Beitrag lesen →

OpenAPI-Parser: Bundle-Schemas

Umgang mit Multi-Datei-Spezifikationen und externen $ref-Verweisen — nützlich, wenn Stripe-Unter-Spezifikationen aufgeteilt sind.

Beitrag lesen →

sgcOpenAPI 2026.6

Aktuelle Release Notes für sgcOpenAPI — neue Generator-Optionen und Parser-Verbesserungen.

Beitrag lesen →

Erzeuge deinen Stripe-Client noch heute

sgcOpenAPI liefert Parser, Codegenerator, OpenAPI-Server sowie die Google-, Amazon-, Microsoft- und Azure-SDK-Bundles mit — ein Produkt, drei Stufen.