Gere um cliente Delphi para Stripe

A Stripe publica uma das especificações OpenAPI mais completas da internet pública — mais de 500 endpoints cobrindo payments, billing, identity, terminal e Connect. Forneça-a ao sgcOpenAPI e você obtém uma unit Delphi fortemente tipada que espelha a spec, com classes de request e response já populadas, autenticação conectada e paginação tratada por você.

Stripe + sgcOpenAPI

A Stripe distribui e mantém uma especificação OpenAPI 3 oficial. O parser e o gerador de código do sgcOpenAPI a convertem diretamente em Pascal que compila do Delphi 7 ao RAD Studio 13.

Spec de origem

github.com/stripe/openapi

Auth

Bearer secret key + chaves de idempotência

Unit gerada

sgcOpenAPI_Stripe

Plataformas

Windows, macOS, Linux, iOS, Android

Forneça a spec ao parser

Baixe o spec3.json mais recente do repositório público da Stripe e carregue com o TsgcOpenAPIParser. O parser resolve ponteiros $ref, palavras-chave de composição e o modelo de erro compartilhado, para que o gerador de código veja um modelo de API totalmente dereferenciado.

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;

O gerador grava uma única unit Pascal chamada sgcOpenAPI_Stripe.pas com uma classe fortemente tipada por tag da spec — TsgcStripe_Charges, TsgcStripe_Customers, TsgcStripe_Subscriptions, TsgcStripe_PaymentIntents etc. — mais uma fachada de topo TsgcStripe que detém o cliente HTTP e o estado de autenticação compartilhados.

Crie uma cobrança

Defina o bearer token uma vez na fachada e depois chame métodos nos sub-objetos tipados. Corpos de requisição são populados por propriedades fluentes; respostas voltam como objetos fortemente 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;

Customers e subscriptions

A paginação é tratada pelos objetos de cursor gerados. Chaves de idempotência são passadas pelo parâmetro opcional IdempotencyKey em todo método que altera estado.

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

O que a unit gerada entrega

Como a unit é gerada a partir da spec oficial, cada endpoint documentado e cada campo documentado fica disponível sem trabalho manual de binding.

Pagamentos & reembolsos

Charges, PaymentIntents, PaymentMethods, Refunds, Disputes, Sources, Tokens — toda a Charges API clássica mais o fluxo moderno de PaymentIntents com Strong Customer Authentication.

Billing & subscriptions

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

Connect & payouts

Accounts, AccountLinks, Transfers, Payouts, BalanceTransactions — tudo o que é preciso para operar uma plataforma Stripe Connect a partir de um back-office Delphi.

Identity & Terminal

Objetos VerificationSession do Identity e objetos Reader/Location do Terminal estão presentes, incluindo os schemas polimórficos last_verification_report que a Stripe usa para resultados de KYC.

Eventos de webhook

O schema completo de Event com payloads data.object discriminados está incluído. Faça parse dos corpos de webhook recebidos com os mesmos tipos que você usa para enviar a requisição original.

Files & reporting

Files, FileLinks, Reporting — helpers de upload multipart são emitidos automaticamente porque a spec marca esses endpoints como multipart/form-data.

Duas coisas a observar

Drift de versão da spec

A Stripe lança novas versões de API todo mês. Pin o arquivo de spec na versão que sua conta usa (defina Stripe-Version em cada requisição) e regenere a unit Delphi quando fizer upgrade. O gerador é determinístico — mesma spec, mesma saída.

Respostas polimórficas

Vários schemas da Stripe (payment_method_details, source, balance_transaction.source) usam oneOf com discriminator. A unit gerada emite uma classe base mais um descendente por variante — faça downcast com base na propriedade Type.

Do blog

Parser OpenAPI Delphi

Como o parser subjacente lida com especificações OpenAPI 3.x do mundo real, incluindo as palavras-chave de composição complicadas.

Leia o post →

Parser OpenAPI: bundle de schemas

Trabalhando com specs multiarquivo e ponteiros $ref externos — útil quando as sub-specs da Stripe são divididas.

Leia o post →

sgcOpenAPI 2026.6

Release notes mais recentes do sgcOpenAPI — novas opções de gerador e melhorias no parser.

Leia o post →

Gere seu cliente Stripe hoje

O sgcOpenAPI vem com o parser, o gerador de código, o servidor OpenAPI e os bundles dos SDKs Google, Amazon, Microsoft e Azure — um produto, três tiers.