Générer un client Stripe Delphi

Stripe publie l'une des spécifications OpenAPI les plus complètes sur l'internet public — plus de 500 endpoints couvrant paiements, facturation, identité, terminal et Connect. Injectez-la dans sgcOpenAPI et vous obtenez une unité Delphi fortement typée qui reflète la spec, avec les classes de requête et de réponse déjà peuplées, l'authentification câblée et la pagination gérée pour vous.

Stripe + sgcOpenAPI

Stripe livre et maintient une spécification OpenAPI 3 officielle. Le parseur et le générateur de code de sgcOpenAPI la convertissent directement en Pascal qui compile de Delphi 7 à RAD Studio 13.

Auth

Bearer secret key + clés d'idempotence

Unité générée

sgcOpenAPI_Stripe

Plateformes

Windows, macOS, Linux, iOS, Android

Donner la spec au parseur

Téléchargez le dernier spec3.json depuis le dépôt public de Stripe et chargez-le avec TsgcOpenAPIParser. Le parseur résout les pointeurs $ref, les mots-clés de composition et le modèle d'erreur partagé pour que le générateur de code voie un modèle d'API entièrement déréférencé.

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;

Le générateur écrit une seule unité Pascal nommée sgcOpenAPI_Stripe.pas avec une classe fortement typée par tag dans la spec — TsgcStripe_Charges, TsgcStripe_Customers, TsgcStripe_Subscriptions, TsgcStripe_PaymentIntents et ainsi de suite — plus une façade top-level TsgcStripe qui possède le client HTTP partagé et l'état d'authentification.

Créer une charge

Définissez le bearer token une fois sur la façade, puis appelez les méthodes sur les sous-objets typés. Les corps de requête sont peuplés via des propriétés fluentes ; les réponses reviennent comme objets fortement typés.

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 et subscriptions

La pagination est gérée par les objets cursor générés. Les clés d'idempotence sont passées via le paramètre optionnel IdempotencyKey sur chaque méthode mutante.

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

Ce que l'unité générée vous donne

Parce que l'unité est générée depuis la spec officielle, chaque endpoint documenté et chaque champ documenté sont disponibles sans travail de binding manuel.

Paiements et remboursements

Charges, PaymentIntents, PaymentMethods, Refunds, Disputes, Sources, Tokens — l'API Charges classique complète plus le flux moderne PaymentIntents avec Strong Customer Authentication.

Facturation et abonnements

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

Connect et payouts

Accounts, AccountLinks, Transfers, Payouts, BalanceTransactions — tout ce qu'il faut pour opérer une plateforme Stripe Connect depuis un back-office Delphi.

Identity et Terminal

Les objets Identity VerificationSession et les objets Terminal Reader/Location sont tous présents, y compris les schémas polymorphiques last_verification_report que Stripe utilise pour les résultats KYC.

Événements webhook

Le schéma complet Event avec les payloads data.object discriminés est inclus. Parsez les corps de webhook entrants avec les mêmes types que vous utilisez pour envoyer la requête originale.

Fichiers et reporting

Files, FileLinks, Reporting — les helpers d'upload multipart sont émis automatiquement parce que la spec marque ces endpoints avec multipart/form-data.

Deux choses à surveiller

Dérive de version de spec

Stripe livre de nouvelles versions d'API mensuellement. Épinglez le fichier de spec à la version qu'utilise votre compte (définissez Stripe-Version sur chaque requête) et regénérez l'unité Delphi quand vous mettez à niveau. Le générateur est déterministe — même spec, même sortie.

Réponses polymorphiques

Plusieurs schémas Stripe (payment_method_details, source, balance_transaction.source) utilisent oneOf avec un discriminateur. L'unité générée émet une classe de base plus un descendant par variante — downcast en fonction de la propriété Type.

Depuis le blog

Parseur OpenAPI Delphi

Comment le parseur sous-jacent gère les spécifications OpenAPI 3.x du monde réel, y compris les mots-clés de composition délicats.

Lire le billet →

Parseur OpenAPI : bundle des schémas

Travailler avec des specs multi-fichiers et des pointeurs $ref externes — utile quand les sous-specs Stripe sont divisées.

Lire le billet →

sgcOpenAPI 2026.6

Dernières notes de release pour sgcOpenAPI — nouvelles options de générateur et améliorations du parseur.

Lire le billet →

Générez votre client Stripe aujourd'hui

sgcOpenAPI est livré avec le parseur, le générateur de code, le serveur OpenAPI et les bundles SDK Google, Amazon, Microsoft et Azure — un produit, trois niveaux.