Faturalama
Bir yapay zeka ürünü için Cursor, Claude ve Vercel tarzında plan ve kullanım. Modele göre bölünmüş, dönem sonunu öngören ve krediler bitmeden uyaran bir kullanım ölçeri, üzerinde gezinebileceğiniz günlük bir grafik, ölçer üzerinde önizleyebileceğiniz uyarılara sahip bir harcama limiti, tam orantılı hesaplamayla plan değişiklikleri, gerçek doğrulamalı bir kart formu ve PDF olarak indirilen faturalar.
Billing, bir yapay zeka ürününün ayarlarındaki Plan ve kullanım bölümüdür. Bir SettingsShell bölümüne eklenir ve insanların o sayfaya neden geldiğini kapsar: ne kadar kullandıkları, yetip yetmeyeceği, ne ödedikleri ve bunu nasıl değiştirecekleri.
Kullanım ölçeri modele göre dolar ve son 7 günün hızıyla dönemin muhtemelen nerede biteceğini gösteren daha açık bir uzantı içerir. Bu, dahil edilen kredileri aştığında sakin bir not ne zaman olacağını söyler: “Bu hızla 24 Eki civarında, kredileriniz sıfırlanmadan 4 gün önce bitireceksiniz”; ek kullanımı açma ya da planlara bakma seçenekleriyle. Altında, Chart üzerine kurulu günlük bir çubuk grafik tüm dönemi kapsar: geçmiş günler, bugün tam güçte, dönemin geri kalanı son hızınızdaki soluk öngörülen çubuklar olarak ve dönemi yetecek eşit hız için kesikli bir çizgi. Üzerine gelin ya da odaklanın ve herhangi bir günü okumak için ok tuşlarını kullanın.
Limitler, diğer tüm ayar bölümleri gibi bir taslaktır. Uyarı eşiğini sürükleyin ya da ek kullanımı açın; işaretler ölçerlerde hemen hareket eder, ek kullanım ölçeri kayarak gelir ve kaydetme çubuğu yükselir. Bu dönemde zaten harcanan tutardan düşük bir limit, tutar belirtilerek reddedilir.
Yükseltmeler, herhangi bir tahsilattan önce tam orantılamayı gösterir: kalan günler için yeni plan, mevcut planın kullanılmayan günleri ve “Bugün 13,33 $ ödeyeceksiniz”. Düşürmeler dönem sonuna kadar bekler ve nelerin gideceğini listeler. İptal etmek, teklifsiz tek bir dürüst onaydır; plan dönem sonuna kadar açık kalır ve Keep Pro o zamana kadar geri alır.
Kart formu, imleci oynatmadan siz yazarken sayıları biçimlendirir, Luhn ile doğrular, markayı algılar ve son kullanma tarihini ile güvenlik kodunu denetler. Faturalar durum rozetlerine sahiptir, başarısız olanlar için Pay now sunar ve gerçek PDF dosyaları olarak iner.
Pro registry'yi components.json dosyasına ekleyin
components.json Token'ınızı ekleyin
Hesap sayfanızda bir token oluşturun ve
.env.localdosyasınaHEXTAUI_PRO_TOKENolarak ekleyin.Bloğu ekleyin
pnpm dlx shadcn@latest add @hextaui-pro/billing
API'nize bağlayın
BillingSettings ilettiğiniz veriyi gösterir ve her değişiklik için sizi geri çağırır. Bir callback'ten değer döndürün ya da hata fırlatın: fırlatılan mesaj, isteyen iletişim kutusunda görünür ve siz yeni prop'lar iletene kadar hiçbir şey değişmez.
Kart güncellemeleri
onUpdatePaymentMethod, form kontrollerini geçtiğinde temiz rakamları, son kullanma tarihini, güvenlik kodunu ve markayı alır. Reddi iletişim kutusunda göstermek için hata fırlatın. Üretimde bilgileri ödeme sağlayıcınızın tokenizasyonuna verin ve asla kendiniz saklamayın.
Kendi fatura dosyalarınız
Faturalar, fatura verisinden tarayıcıda oluşturulan PDF'ler olarak iner. Kendi dosyanızı sunmak için onDownloadInvoice'tan bir Blob döndürün ya da faturaya bir href verin.
Yapı
Dıştan içe doğru birleştirdiğiniz parçalar.
| Parça | Açıklama |
|---|---|
BillingSettings | Bölüm içeriği: plan özeti, kullanım ölçerleri ve günlük Chart, limitler, planlar, ödeme, faturalar ve iptal; iletişim kutularıyla birlikte. |
BillingSettingsSkeleton | Bölümün şeklini alan bir yükleme yer tutucusu. SettingsSection'ın skeleton prop'una iletin. |
prorate | Yükseltme iletişim kutusunun arkasındaki orantılama hesabı, sunucunuz veya testleriniz için. |
forecastUsage | Ölçerin ve tükenme notunun arkasındaki projeksiyon. |
createInvoicePdf | Fatura PDF'ini Blob olarak oluşturur. |
BillingSettings
Fiyatlar kuruş cinsindendir ve tarihler 2026-10-28 gibi ISO günleridir. Bir eylemi gizlemek için callback'ini atlayın.
| Prop | Tür | Varsayılan |
|---|---|---|
plans{ id, name, price, included, description?, features }. features her plan için tam listelerdir; böylece bir düşürme eksik olanları listeleyebilir. Fiyatı 0 olan plan, insanların iptal ettiklerinde geçtiği plandır. | BillingPlan[] | – |
subscription{ planId, periodStart, periodEnd, status?, cancelAtPeriodEnd?, scheduledPlanId? }. | BillingSubscription | – |
usage{ models: { id, name, used }[], daily: { date, used }[], extraRate, unit? }. extraRate, dahil olanın ötesindeki birim başına kuruştur. unit varsayılan olarak "credits". | BillingUsage | – |
spendLimit{ enabled, limit, alertAt }. limit kuruş, alertAt yüzdedir. | BillingSpendLimit | – |
paymentMethod{ brand, last4, expMonth, expYear, name? }. | BillingPaymentMethod | null | – |
invoices{ id, number, date, description, amount, status, href?, lines?, paidWith? }. status paid, open, failed, refunded veya void olabilir. | BillingInvoice[] | [] |
todaySunucunuzun bugün saydığı gün. Orantılama, projeksiyonlar ve kart son kullanma tarihi için kullanılır; böylece sunucu ve tarayıcı aynı sonuca varır. | string | the last daily date |
currencyHerhangi bir ISO para birimi kodu. | string | "USD" |
sellerOluşturulan faturaların en üstündeki ad. | string | "Hexta" |
customerOluşturulan faturalarda Bill to altında yazdırılır. | { name?, email? } | – |
onChangePlan{ planId, when, amountDue } ile çağrılır. when, yükseltmelerde "now", düşürmelerde "period_end" olur. | (change) => void | Promise | – |
onCancelPlanDönem sonunda iptal eder. | () => void | Promise | – |
onResumePlanBir iptali ya da planlanmış bir düşürmeyi geri alır. | () => void | Promise | – |
onSpendLimitChangeLimitleri kaydeder. Bir alan hatası göstermek için { limit: message } döndürün. | (limit) => void | errors | Promise | – |
onUpdatePaymentMethodForm geçerli olduğunda { number, expMonth, expYear, cvc, name, brand } ile çağrılır. Reddi göstermek için hata fırlatın. | (card) => void | Promise | – |
onPayInvoiceAçık ve başarısız faturalara Pay now ekler. | (invoice) => void | Promise | – |
onDownloadInvoiceKendi dosyanızı indirmek için bir Blob döndürün, kendiniz ele aldıysanız hiçbir şey döndürmeyin. Verilmezse faturadan bir PDF oluşturulur. | (invoice) => Blob | void | Promise | – |
prorate
{ kind, amountDue, charge, credit, daysLeft, totalDays, effectiveDate, nextBillingDate } döndürür.
| Prop | Tür | Varsayılan |
|---|---|---|
optionsYükseltmeler kalan günler için fiyat farkını bir kez yuvarlayarak tahsil eder. Düşürmeler hiçbir şey tahsil etmez ve periodEnd'de başlar. Ücretsiz bir plandan geçişte bugünden itibaren tam bir ay tahsil edilir. | { from, to, periodStart, periodEnd, today } | – |
| Tuş | Action |
|---|---|
| ←→ | Günlük grafik odaktayken tooltip'i önceki ya da sonraki güne taşır. |
| Enter | Kart formunda bilgileri kontrol eder ve kaydeder. |
| ⌘S | Değişen limitleri kaydeder. Windows ve Linux'ta Ctrl+S. |
- Ölçerler, projeksiyonu ve uyarı eşiğini içeren değer metniyle role meter kullanır ve model dökümü gerçek bir listedir.
- Günlük grafik, “Daily usage this cycle” adlı bir figürdür; toplamı, yakın günlük ortalamayı, en yoğun günü ve eşit hızı içeren bir özetle tanımlanır. Görsel olarak gizli bir tablo her günü listeler, öngörülen günler tahmin olarak işaretlenir.
- Plan değişiklikleri, iptaller, kart güncellemeleri ve indirmeler polite olarak duyurulur. Hatalar, isteyen iletişim kutusunda bir alert olarak görünür ve iletişim kutusu girdinizle açık kalır.
- Kart alanları standart autocomplete token'larını kullanır; böylece tarayıcılar ve parola yöneticileri bunları doldurabilir. İlk geçersiz alan odak alır.
- Dokunmatik ekranlarda input'lar iOS yakınlaştırmasın diye 16px olur ve düğmeler 44px'e büyür.
- Sayılar ve tarihler İngilizce ve sabit saat dilimleriyle biçimlendirilir; böylece sunucu ve tarayıcı aynı metni render eder.
Şunlarla geliştirildi
Billing bloğunun yapıldığı ücretsiz HextaUI bileşenleri. Her biri tek başına yüklenir.
Kod
4 dosya, components/blocks/billing konumuna eklendi.