Genera un cliente Delphi de Stripe

Stripe publica una de las especificaciones OpenAPI más completas de la internet pública — más de 500 endpoints que cubren pagos, facturación, identidad, terminal y Connect. Alimenta esa spec a sgcOpenAPI y obtienes una unit Delphi fuertemente tipada que refleja la spec, con clases de petición y respuesta ya pobladas, la autenticación conectada y la paginación resuelta por ti.

Stripe + sgcOpenAPI

Stripe distribuye y mantiene una especificación OpenAPI 3 oficial. El parser y el generador de código de sgcOpenAPI la convierten directamente en Pascal que compila desde Delphi 7 hasta RAD Studio 13.

Spec de origen

github.com/stripe/openapi

Autenticación

Bearer secret key + claves de idempotencia

Unit generada

sgcOpenAPI_Stripe

Plataformas

Windows, macOS, Linux, iOS, Android

Alimenta la spec al parser

Descarga el spec3.json más reciente desde el repositorio público de Stripe y cárgalo con TsgcOpenAPIParser. El parser resuelve los punteros $ref, las palabras clave de composición y el modelo de error compartido, de modo que el generador de código ve un modelo de API totalmente desreferenciado.

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;

El generador escribe una sola unit Pascal llamada sgcOpenAPI_Stripe.pas con una clase fuertemente tipada por cada tag de la spec — TsgcStripe_Charges, TsgcStripe_Customers, TsgcStripe_Subscriptions, TsgcStripe_PaymentIntents y demás — más una fachada de alto nivel TsgcStripe que posee el cliente HTTP compartido y el estado de autenticación.

Crea un cargo

Configura el bearer token una vez en la fachada y llama a métodos en los sub-objetos tipados. Los cuerpos de petición se rellenan mediante propiedades fluent; las respuestas vuelven como objetos fuertemente tipados.

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;

Clientes y suscripciones

La paginación se gestiona con los objetos cursor generados. Las claves de idempotencia se pasan vía el parámetro opcional IdempotencyKey en cada método mutador.

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

Lo que te da la unit generada

Como la unit se genera desde la spec oficial, cada endpoint y cada campo documentados están disponibles sin trabajo manual de binding.

Pagos y reembolsos

Charges, PaymentIntents, PaymentMethods, Refunds, Disputes, Sources, Tokens — la API clásica completa de Charges más el flujo moderno PaymentIntents con autenticación reforzada de cliente (SCA).

Facturación y suscripciones

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

Connect y payouts

Accounts, AccountLinks, Transfers, Payouts, BalanceTransactions — todo lo necesario para operar una plataforma Stripe Connect desde un back-office Delphi.

Identity y Terminal

Los objetos Identity VerificationSession y Terminal Reader/Location están todos presentes, incluyendo los esquemas polimórficos last_verification_report que Stripe usa para los resultados KYC.

Eventos webhook

Se incluye el esquema completo Event con payloads data.object discriminados. Parsea los cuerpos webhook entrantes con los mismos tipos que usas para enviar la petición original.

Archivos y reporting

Files, FileLinks, Reporting — los helpers de subida multipart se emiten automáticamente porque la spec marca esos endpoints con multipart/form-data.

Dos cosas a vigilar

Drift de versión de la spec

Stripe publica nuevas versiones de API mensualmente. Fija el archivo de spec a la versión que usa tu cuenta (establece Stripe-Version en cada petición) y regenera la unit Delphi cuando actualices. El generador es determinista — misma spec, misma salida.

Respuestas polimórficas

Varios esquemas de Stripe (payment_method_details, source, balance_transaction.source) usan oneOf con un discriminador. La unit generada emite una clase base más un descendiente por variante — haz downcast basado en la propiedad Type.

Desde el blog

Parser OpenAPI Delphi

Cómo el parser subyacente maneja especificaciones OpenAPI 3.x del mundo real, incluyendo las complejas palabras clave de composición.

Leer post →

Parser OpenAPI: bundle de esquemas

Trabajando con specs multi-archivo y punteros $ref externos — útil cuando las sub-specs de Stripe están separadas.

Leer post →

sgcOpenAPI 2026.6

Últimas notas de versión de sgcOpenAPI — nuevas opciones de generador y mejoras del parser.

Leer post →

Genera tu cliente Stripe hoy

sgcOpenAPI incluye el parser, generador de código, servidor OpenAPI y los bundles SDK de Google, Amazon, Microsoft y Azure — un producto, tres niveles.