Genereer een Delphi Stripe-client

Stripe publiceert een van de meest complete OpenAPI-specificaties op het publieke internet — meer dan 500 endpoints die payments, billing, identity, terminal en Connect dekken. Voer hem in sgcOpenAPI en je krijgt een sterk getypeerde Delphi-unit die de spec spiegelt, met request- en response-klassen al ingevuld, authenticatie bedraad en paginering voor je afgehandeld.

Stripe + sgcOpenAPI

Stripe levert en onderhoudt een officiele OpenAPI 3-specificatie. De parser en code-generator van sgcOpenAPI converteren deze direct naar Pascal die compileert op Delphi 7 t/m RAD Studio 13.

Auth

Bearer secret key + idempotency keys

Gegenereerde unit

sgcOpenAPI_Stripe

Platforms

Windows, macOS, Linux, iOS, Android

Voer de spec aan de parser

Download de laatste spec3.json uit de publieke repository van Stripe en laad hem met TsgcOpenAPIParser. De parser lost $ref-pointers, composition-keywords en het gedeelde error-model op zodat de code-generator een volledig gedereferentieerd API-model ziet.

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;

De generator schrijft een enkele Pascal-unit genaamd sgcOpenAPI_Stripe.pas met een sterk getypeerde klasse per tag in de spec — TsgcStripe_Charges, TsgcStripe_Customers, TsgcStripe_Subscriptions, TsgcStripe_PaymentIntents enzovoort — plus een top-level TsgcStripe-facade die de gedeelde HTTP-client en authenticatie-state bezit.

Maak een charge

Stel de bearer-token eenmaal in op de facade, en roep dan methodes aan op de typed sub-objecten. Request-bodies worden via fluent-properties ingevuld; responses komen terug als sterk getypeerde objecten.

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;

Customers en subscriptions

Paginering wordt afgehandeld door de gegenereerde cursor-objecten. Idempotency-keys worden via de optionele IdempotencyKey-parameter op elke muterende methode meegegeven.

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

Wat de gegenereerde unit je geeft

Omdat de unit uit de officiele spec wordt gegenereerd, is elke gedocumenteerde endpoint en elk gedocumenteerd veld beschikbaar zonder handmatig bindwerk.

Payments & refunds

Charges, PaymentIntents, PaymentMethods, Refunds, Disputes, Sources, Tokens — de volledige klassieke Charges-API plus de moderne PaymentIntents-flow met Strong Customer Authentication.

Billing & subscriptions

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

Connect & payouts

Accounts, AccountLinks, Transfers, Payouts, BalanceTransactions — alles wat nodig is om een Stripe Connect-platform vanuit een Delphi-back-office te bedienen.

Identity & Terminal

Identity VerificationSession-objecten en Terminal Reader/Location-objecten zijn allemaal aanwezig, inclusief de polymorfe last_verification_report-schema’s die Stripe gebruikt voor KYC-resultaten.

Webhook-events

Het volledige Event-schema met discriminated data.object-payloads is inbegrepen. Parseer binnenkomende webhook-bodies met dezelfde types die je gebruikt om de oorspronkelijke request te versturen.

Files & reporting

Files, FileLinks, Reporting — multipart-upload-helpers worden automatisch geleverd omdat de spec die endpoints met multipart/form-data markeert.

Twee dingen om op te letten

Spec-versie-drift

Stripe levert maandelijks nieuwe API-versies. Pin het spec-bestand aan de versie die je account gebruikt (stel Stripe-Version in op elke request) en genereer de Delphi-unit opnieuw wanneer je upgradet. De generator is deterministisch — zelfde spec, zelfde output.

Polymorfe responses

Verschillende Stripe-schema’s (payment_method_details, source, balance_transaction.source) gebruiken oneOf met een discriminator. De gegenereerde unit levert een basisklasse plus een afstammeling per variant — downcast op basis van de Type-property.

Vanuit de blog

OpenAPI Delphi-parser

Hoe de onderliggende parser real-world OpenAPI 3.x-specificaties afhandelt, inclusief de lastige composition-keywords.

Lees post →

OpenAPI-parser: bundle-schema’s

Werken met multi-file-specs en externe $ref-pointers — nuttig wanneer Stripe-sub-specs zijn gesplitst.

Lees post →

sgcOpenAPI 2026.6

Nieuwste release-notes voor sgcOpenAPI — nieuwe generator-opties en parser-verbeteringen.

Lees post →

Genereer vandaag nog je Stripe-client

sgcOpenAPI bevat de parser, code-generator, OpenAPI-server en de Google-, Amazon-, Microsoft- en Azure-SDK-bundels — een product, drie tiers.