Bir Delphi Stripe İstemcisi Üretin

Stripe, API'sinin resmi bir OpenAPI 3 açıklamasını yayınlar ve sürdürür. sgcOpenAPI elle yazılmış bir Stripe bileşeni sunmaz, bir kod üreticisi sunar. sgcOpenAPI.exe dosyasını bu spesifikasyon üzerinde bir kez çalıştırırsınız ve her işlem için bir metot, her birinin karşılığında tipli bir yanıt sınıfı ve size hazır bir istemci veren bir GetOpenAPIClient fonksiyonu içeren tek bir Pascal birimi elde edersiniz.

Stripe + sgcOpenAPI

Aşağıdaki rakamlar tahmin değildir, kod üreticisi güncel spec3.json dosyası üzerinde çalıştırılıp sonuç derlenerek ölçülmüştür.

Kaynak spesifikasyonu

github.com/stripe/openapi deposundaki openapi/spec3.json, OpenAPI 3.0.0 olarak bildirilmiştir. Dönüştürme adımına gerek yoktur.

Ortaya ne çıkıyor

419 yol, 594 metoda ve 594 yanıt sınıfına dönüşür; yanlarında 1.747 model sınıfıyla birlikte, yaklaşık 110.000 satırlık tek bir birim içinde.

Kimlik doğrulama

-a 2 ile üretin ve çalışma zamanında Authentication.Token.BearerToken değerini atayın. İstemci bundan sonra her istekte Authorization: Bearer gönderir.

Derleniyor

Üretilen birim, kütüphane yolunda sgcOpenAPI Source klasöründen başka hiçbir şey olmadan RAD Studio 12'de Win32 için sorunsuz derlenir.

Kod üreticisini çalıştırın

spec3.json dosyasını Stripe'ın herkese açık deposundan indirin veya ham URL'yi doğrudan -i parametresine verin. Bu iki parametre zorunludur, geri kalan her şeyin bir varsayılanı vardır.

> sgcOpenAPI.exe -i "spec3.json" -o "stripe.pas" -a 2

File successfully created stripe.pas

-i yerel bir dosya ya da bir URL alır, JSON ve YAML kabul eder. -o yazılacak Pascal birimidir ve birim bu dosyanın adını taşır. -a 2 belirteç kimlik doğrulamasını seçer, Stripe'ın gizli anahtarının ihtiyaç duyduğu da budur. Aynı çalıştırılabilir dosya, parametresiz başlattığınızda bir grafik sihirbaz olarak çalışır. Çalışma başarılı olduğunda 0 çıkış koduyla biter ve bir derleme betiği 5 (giriş dosyası), 6 (çıkış dosyası) veya 7 (belge geçerli bir OpenAPI 3 belgesine dönüştürülemedi) değerlerini sınayabilir.

Üretilen .pas dosyasını projenize ekleyin, uses bölümüne koyun, tüm entegrasyon bundan ibarettir. Kurulacak bir bileşen yoktur, çünkü sgcOpenAPI hiçbir bileşen kaydetmez ve tasarım zamanı paketi sunmaz.

Bir charge oluşturun

Gizli anahtarı istemci üzerinde bir kez ayarlayın, ardından kod üreticisinin işlem kimliğinden adlandırdığı metodu çağırın. Stripe'ın işlem kimlikleri zaten geçerli Pascal tanımlayıcılarıdır, bu yüzden elinize tam olarak PostCharges geçer.

uses
  stripe;   // az önce ürettiğiniz birim

procedure TfrmStripe.btnChargeClick(Sender: TObject);
var
  oResponse: TsgcOpenAPI_PostCharges_Response;
begin
  GetOpenAPIClient.Authentication.Token.BearerToken :=
    'sk_test_4eC39HqLyjWDarjtT1zdp7dc';

  oResponse := GetOpenAPIClient.PostCharges(
    'amount=2000&currency=usd&source=tok_visa&description=Order+1234');
  try
    if oResponse.IsSuccessful then
      memoLog.Lines.Text :=
        'charge : ' + oResponse.Successful.Id + #13#10 +
        'status : ' + oResponse.Successful.Status + #13#10 +
        'paid   : ' + BoolToStr(oResponse.Successful.Paid, True)
    else
      memoLog.Lines.Text := IntToStr(oResponse.ResponseCode) + ' ' +
        oResponse.ResponseError;
  finally
    oResponse.Free;
  end;
end;

GetOpenAPIClient parametre almaz ve serbest bırakmayacağınız bir istemci döndürür. Temel URL, spesifikasyondaki servers girdisinden gelir, dolayısıyla üretilen yapıcı https://api.stripe.com/ adresini zaten ayarlar ve bunu yalnızca üretim sırasında -u ile ya da çalışma zamanında SetBaseURL ile değiştirirsiniz. Yanıt nesnesi sizindir, örnekte bir try finally kullanılmasının nedeni budur. IsSuccessful, 200 ile 299 arasındaki durumlar için true olur, geri kalanını ResponseCode ve ResponseError taşır.

İstek gövdesi bir formdur, yanıt bir sınıftır

Stripe konusunda insanları şaşırtan tek şey budur ve kaynağı kod üreticisi değil, spesifikasyonun kendisidir.

var
  oCustomer: TsgcOpenAPI_PostCustomers_Response;
  oSub: TsgcOpenAPI_PostSubscriptions_Response;
begin
  oCustomer := GetOpenAPIClient.PostCustomers(
    'email=jane@example.com&payment_method=pm_card_visa');
  try
    if not oCustomer.IsSuccessful then
      raise Exception.Create(oCustomer.ResponseError);

    oSub := GetOpenAPIClient.PostSubscriptions(
      'customer=' + oCustomer.Successful.Id +
      '&items[0][price]=price_1JxYzZAbCdEfGhIj');
    try
      memoLog.Lines.Add(oSub.Successful.Id);
    finally
      oSub.Free;
    end;
  finally
    oCustomer.Free;
  end;
end;

Stripe'ın spesifikasyonundaki 593 istek gövdesinin her biri application/x-www-form-urlencoded olarak bildirilmiştir, bu yüzden üretilen parametre const aBody: string olur ve formu Stripe'ın kendi köşeli parantez gösterimiyle siz kurarsınız. Yanıtlarda durum bambaşkadır: adlandırılmış şemalarla bildirildikleri için her biri, özellikler üzerinden okuduğunuz bir sınıfa dönüşür.

Üretilen birim neler içerir

Birim, belgeyi birebir yansıtır. Hiçbir şey elle seçilmez, dolayısıyla Stripe'ın tanımladığı her şey oradadır, Stripe'ın dışarıda bıraktığı hiçbir şey yoktur.

İşlem başına bir metot

594 tanesi, her biri işlem kimliğinden adlandırılır ve bir Pascal tanımlayıcısında yer alamayacak karakterler atılır. -m 1 onları bunun yerine özetten, -m 2 ise uç noktadan adlandırır.

Metot başına bir yanıt sınıfı

TsgcOpenAPI_PostCharges_Response, TsgcOpenAPIResponse sınıfından türer, Successful özelliğini ve bildirilen her hata durumu için birer özelliği taşır, ayrıca IsSuccessful, ResponseCode ve ResponseError özelliklerini devralır.

1.747 model sınıfı

Stripe'ın bildirdiği her şema, paylaşılan error nesnesi, charge, customer, invoice ve subscription nesneleri ile olay yükleri dahil.

Argüman olarak sorgu parametreleri

İsteğe bağlı sorgu parametreleri, bildirim sırasına göre varsayılan değerli argümanlara dönüşür, böylece GetCharges metodu siz hiçbir URL'ye dokunmadan aCreated, aCustomer, aEnding_before, aExpand, aLimit ve diğerlerini alır.

Yorum olarak etiketler

Belgedeki etiketler, tek sınıfın içindeki metotları gruplayan yorumlar olarak yazılır. Ayrı sınıflara dönüşmezler, bu yüzden her şeye GetOpenAPIClient üzerinden erişilir.

Spesifikasyondaki dokümantasyon

Stripe'ın kendi açıklamaları, siz kapatmadığınız sürece her metodun ve her özelliğin üstüne Pascal yorumları olarak taşınır.

Bilmeye değer dört şey

Dördü de güncel spesifikasyon üzerinde yapılan gerçek bir üretim çalışmasından çıktı.

Birim büyüktür

Yaklaşık 110.000 satır ve 5,5 MB. Hızlı derlenir, ancak IDE kod düzenleyicisi bu boyuttaki bir dosyada yavaştır. -x, "VERB endpoint" biçiminde listelediğiniz işlemleri atar, ardından -p geriye kalan hiçbir işlemin kullanmadığı sınıfları kaldırır. Açabildiğiniz bir birim ile açamadığınız bir birim arasındaki fark budur.

392 uyarı, hepsi okumaya değer

Uyarıların tamamı kompozisyonla ilgilidir. Stripe pek çok yerde anyOf ve oneOf anahtar sözcüklerini bir ayırt edici eşlemesi olmadan kullanır, bu yüzden üretilen sınıf her dal için bir üye taşır ve hangisinin doldurulduğuna sizin kodunuz karar verir. Kod üreticisi sessizce seçim yapmak yerine durumu şema şema bildirir.

Tek dosya yükleme uç noktasının gövdesi yok

POST /v1/files, belgedeki tek multipart/form-data işlemidir ve üretilen PostFiles yalnızca aExpand alır. İhtiyacınız olursa yüklemeyi TsgcHTTP1Client üzerinden ya da doğrudan dosya yükleme API'siyle yapın.

API sürümü ilerlediğinde yeniden üretin

Stripe API'sini sürümler ve spesifikasyonu sık sık günceller. Ürettiğiniz spec3.json dosyasını sabitleyin, projenizin yanında tutun ve yeniden üretimi bilinçli olarak yapın. Kod üreticisi belirleyicidir, aynı belge aynı birimi verir.

Blogdan

OpenAPI Delphi ayrıştırıcısı

Okuyucunun gerçek spesifikasyonları nasıl işlediği, Stripe uyarılarının çoğunu üreten kompozisyon anahtar sözcükleri dahil.

Yazıyı okuyun →

OpenAPI ayrıştırıcısı: şemaları paketleme

Çok dosyalı spesifikasyonlar ve harici $ref işaretçileri, belge okunmadan önce içeri alınırlar.

Yazıyı okuyun →

sgcOpenAPI 2026.6

Güncel sürümün sürüm notları, üretici seçenekleri ve okuyucu değişiklikleriyle birlikte.

Yazıyı okuyun →
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

Stripe istemcinizi bugün üretin

sgcOpenAPI; okuyucuyu, kod üreticisini, OpenAPI sunucusunu ve Amazon, Azure, Google ile Microsoft için hazır SDK'leri sunar. Tek ürün, üç kademe, özelliğe göre değil kullanıcı başına fiyatlandırılır.