Genera un client Stripe per Delphi

Stripe pubblica una delle specifiche OpenAPI più complete della rete pubblica — oltre 500 endpoint che coprono pagamenti, billing, identità, Terminal e Connect. Dalla in pasto a sgcOpenAPI e ottieni una unit Delphi fortemente tipizzata che rispecchia la specifica, con classi di request e response già popolate, autenticazione cablata e paginazione gestita per te.

Stripe + sgcOpenAPI

Stripe distribuisce e mantiene una specifica ufficiale OpenAPI 3. Il parser e il code generator di sgcOpenAPI la convertono direttamente in Pascal che compila da Delphi 7 a RAD Studio 13.

Specifica sorgente

github.com/stripe/openapi

Autenticazione

Bearer secret key + idempotency key

Unit generata

sgcOpenAPI_Stripe

Piattaforme

Windows, macOS, Linux, iOS, Android

Dai la specifica al parser

Scarica l'ultima spec3.json dal repository pubblico di Stripe e caricala con TsgcOpenAPIParser. Il parser risolve i puntatori $ref, le keyword di composizione e il modello d'errore condiviso, così il code generator vede un modello API completamente dereferenziato.

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;

Il generator scrive una singola unit Pascal chiamata sgcOpenAPI_Stripe.pas con una classe fortemente tipizzata per ogni tag della specifica — TsgcStripe_Charges, TsgcStripe_Customers, TsgcStripe_Subscriptions, TsgcStripe_PaymentIntents e così via — più una facade TsgcStripe di livello superiore che possiede il client HTTP condiviso e lo stato di autenticazione.

Crea un charge

Imposta il bearer token una volta sulla facade, poi chiama i metodi sui sotto-oggetti tipizzati. I body delle request sono popolati tramite proprietà fluent; le response tornano come oggetti fortemente tipizzati.

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;

Customer e subscription

La paginazione è gestita dagli oggetti cursor generati. Le idempotency key vengono passate tramite il parametro opzionale IdempotencyKey su ogni metodo di mutazione.

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

Cosa ti dà la unit generata

Poiché la unit è generata dalla specifica ufficiale, ogni endpoint documentato e ogni campo documentato sono disponibili senza lavoro di binding manuale.

Pagamenti e rimborsi

Charges, PaymentIntents, PaymentMethods, Refunds, Disputes, Sources, Tokens — l'intera API classica Charges più il moderno flusso PaymentIntents con Strong Customer Authentication.

Billing e abbonamenti

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

Connect e payout

Accounts, AccountLinks, Transfers, Payouts, BalanceTransactions — tutto il necessario per gestire una piattaforma Stripe Connect da un back-office Delphi.

Identity e Terminal

Gli oggetti VerificationSession di Identity e gli oggetti Reader/Location di Terminal sono tutti presenti, inclusi gli schemi polimorfici last_verification_report che Stripe usa per i risultati di KYC.

Eventi webhook

L'intero schema Event con payload data.object discriminati è incluso. Fai il parsing dei body dei webhook in ingresso con gli stessi tipi che usi per inviare la richiesta originale.

File e reporting

Files, FileLinks, Reporting — gli helper per l'upload multipart vengono emessi automaticamente perché la specifica marca quegli endpoint con multipart/form-data.

Due cose a cui fare attenzione

Drift della versione di specifica

Stripe rilascia nuove versioni dell'API ogni mese. Fissa il file di specifica alla versione usata dal tuo account (imposta Stripe-Version su ogni richiesta) e rigenera la unit Delphi quando aggiorni. Il generator è deterministico — stessa specifica, stesso output.

Risposte polimorfiche

Diversi schemi di Stripe (payment_method_details, source, balance_transaction.source) usano oneOf con un discriminatore. La unit generata emette una classe base più un discendente per ogni variante — fai il downcast in base alla proprietà Type.

Dal blog

Parser OpenAPI Delphi

Come il parser sottostante gestisce specifiche OpenAPI 3.x reali, incluse le keyword di composizione più complicate.

Leggi il post →

Parser OpenAPI: bundle degli schemi

Lavorare con specifiche multi-file e puntatori $ref esterni — utile quando le sotto-specifiche di Stripe sono divise.

Leggi il post →

sgcOpenAPI 2026.6

Note dell'ultimo rilascio di sgcOpenAPI — nuove opzioni del generator e miglioramenti del parser.

Leggi il post →

Genera oggi il tuo client Stripe

sgcOpenAPI include il parser, il code generator, il server OpenAPI e i bundle SDK di Google, Amazon, Microsoft e Azure — un prodotto, tre tier.