Integrasikan Commerce ke Dalam Aplikasi Saya
Gunakan Proyecta SDK untuk membuat pelanggan, memulai checkout, membatasi fitur, dan membatalkan langganan dari kode aplikasi Anda.
Setelah menghubungkan Stripe dan membuat produk, Anda dapat mengintegrasikan commerce ke dalam aplikasi melalui resource SDK proyecta.commerce. Empat operasi yang paling umum adalah: membuat pelanggan, memulai checkout, memeriksa akses fitur, dan membatalkan langganan.
import Proyecta from '@proyecta-ai/sdk';
const proyecta = new Proyecta({ apiKey: process.env.PROYECTA_API_KEY });1. Buat pelanggan
Section titled “1. Buat pelanggan”Pelanggan adalah entitas yang dapat ditagih dalam aplikasi Anda — biasanya berupa pengguna, organisasi, atau proyek. Buat pelanggan segera setelah entitas yang bersangkutan dibuat di database Anda, lalu simpan id yang dikembalikan agar Anda dapat mereferensikan pelanggan tersebut dalam checkout dan pemeriksaan akses.
const customer = await proyecta.commerce.customers.create({ email: 'alice@example.com', name: 'Alice Liddell',});
await db.users.update({ id: userId, proyectaCustomerId: customer.id });Anda juga dapat menyertakan alamat penagihan (line1, line2, city, state, postal_code, country) saat pembuatan atau melalui customers.update().
2. Mulai checkout
Section titled “2. Mulai checkout”commerce.checkout() membuat sesi checkout yang di-host oleh Stripe dan mengembalikan URL untuk mengarahkan pelanggan. Setelah pembayaran, Stripe akan mengarahkan pelanggan ke success_url Anda.
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);Beberapa line_items didukung. Untuk langganan, quantity merepresentasikan jumlah kursi (seat).
3. Periksa akses fitur
Section titled “3. Periksa akses fitur”Sebelum mengizinkan pelanggan menggunakan fitur premium, panggil commerce.check() untuk memverifikasi bahwa mereka memiliki akses:
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 });}Ini adalah cara yang direkomendasikan untuk membatasi konten premium. Lihat Produk & Fitur untuk memahami model fitur/entitlement.
4. Batalkan langganan
Section titled “4. Batalkan langganan”await proyecta.commerce.cancel({ customer_id: customer.id, subscription_id: 'sub_123', cancellation_timing: 'at_billing_period_end', // or 'immediate'});Secara default, pelanggan tetap memiliki akses hingga akhir periode penagihan.
Biarkan AI mengurus semuanya
Section titled “Biarkan AI mengurus semuanya”Anda tidak perlu menulis ini secara manual. Contoh prompt yang umum digunakan:
"Create a Proyecta customer when a user signs up. Store the proyecta_customer_id on the user record.""Build a /pricing page that shows my Proyecta products and starts a checkout when a button is clicked.""Gate the /admin route — only allow users whose Proyecta customer has access to feat_admin.""When a user clicks Cancel Subscription, call proyecta.commerce.cancel with at_billing_period_end."