Uygulamamı Commerce ile Entegre Et
Uygulama kodundan müşteri oluşturmak, ödeme başlatmak, özellikleri kilitlemek ve abonelikleri iptal etmek için Proyecta SDK’sını kullanın.
Stripe’ı bağlayıp bir ürün oluşturduktan sonra, proyecta.commerce SDK kaynağı aracılığıyla commerce’i uygulamanıza entegre edersiniz. En yaygın dört işlem şunlardır: müşteri oluşturma, ödeme başlatma, özellik erişimini kontrol etme ve abonelik iptal etme.
import Proyecta from '@proyecta-ai/sdk';
const proyecta = new Proyecta({ apiKey: process.env.PROYECTA_API_KEY });1. Müşteri oluşturma
Section titled “1. Müşteri oluşturma”Müşteri, uygulamanızdaki faturalandırılabilir varlıktır; genellikle bir kullanıcı, organizasyon veya proje olur. İlgili varlık veritabanınızda oluşturulur oluşturulmaz bir müşteri kaydedin ve döndürülen id’yi saklayın; böylece ödeme ve erişim kontrollerinde bu müşteriye başvurabilirsiniz.
const customer = await proyecta.commerce.customers.create({ email: 'alice@example.com', name: 'Alice Liddell',});
await db.users.update({ id: userId, proyectaCustomerId: customer.id });Oluşturma sırasında veya customers.update() aracılığıyla bir fatura adresi de (line1, line2, city, state, postal_code, country) ekleyebilirsiniz.
2. Ödeme başlatma
Section titled “2. Ödeme başlatma”commerce.checkout(), Stripe tarafından barındırılan bir ödeme oturumu oluşturur ve müşteriyi yönlendirmeniz için bir URL döndürür. Ödeme tamamlandıktan sonra Stripe, müşteriyi success_url adresinize yönlendirir.
const { url } = await proyecta.commerce.checkout({ customer_id: customer.id, line_items: [{ variant_id: 'var_pro_monthly', quantity: 1 }], success_url: 'https://myapp.com/welcome', cancel_url: 'https://myapp.com/pricing',});
return Response.redirect(url);Birden fazla line_items desteklenmektedir. Aboneliklerde quantity, koltuk sayısını ifade eder.
3. Özellik erişimini kontrol etme
Section titled “3. Özellik erişimini kontrol etme”Bir müşterinin premium özellik kullanmasına izin vermeden önce, erişiminin olup olmadığını doğrulamak için commerce.check() çağrısı yapın:
const { has_access } = await proyecta.commerce.check({ customer_id: customer.id, resource_id: 'feat_pro_features',});
if (!has_access) { return Response.json({ error: 'Upgrade required' }, { status: 402 });}Premium içeriği kilitlemek için önerilen yöntem budur. Özellik/yetkilendirme modeli hakkında daha fazla bilgi için Ürünler & Özellikler sayfasına bakın.
4. Abonelik iptal etme
Section titled “4. Abonelik iptal etme”await proyecta.commerce.cancel({ customer_id: customer.id, subscription_id: 'sub_123', cancellation_timing: 'at_billing_period_end', // veya 'immediate'});Varsayılan olarak müşteri, fatura döneminin sonuna kadar erişimini korur.
AI’ya her şeyi otomatik olarak bağlatın
Section titled “AI’ya her şeyi otomatik olarak bağlatın”Bunu elle yazmanıza gerek yok. Yaygın kullanılan komutlar:
"Bir kullanıcı kayıt olduğunda Proyecta müşterisi oluştur. proyecta_customer_id'yi kullanıcı kaydına kaydet.""Proyecta ürünlerimi gösteren ve bir butona tıklandığında ödeme başlatan bir /pricing sayfası oluştur.""/admin rotasını kilitle — yalnızca Proyecta müşterisinin feat_admin özelliğine erişimi olan kullanıcılara izin ver.""Kullanıcı Cancel Subscription butonuna tıkladığında, at_billing_period_end parametresiyle proyecta.commerce.cancel çağrısı yap."