تخطَّ إلى المحتوى

دمج التجارة في تطبيقي

ابدأ عمليات الدفع وتحكّم في الوصول إلى الميزات المدفوعة مباشرةً من كود تطبيقك.

بمجرد ربط Stripe وإنشاء منتج، يصبح تطبيقك قادراً على استقبال المدفوعات. وفي تطبيق مبنيّ بـ Proyecta يجري ذلك من المتصفح عبر واجهة التجارة العامة — فلا خادم خلفي عليك تشغيله، ولا مفتاح سري في الأمر.

كتالوجات المتجر هي محتوى. إذا كانت منتجاتك عبارة عن مجموعة قابلة للبيع مدعومة بمحتوى (اطّلع على المنتجات والميزات)، فإنك تقرأ الكتالوج وتعرض الأسعار من خلال واجهة برمجة تطبيقات المحتوى — إذ تتواجد بيانات المنتج هناك. ولا يزال بإمكانك بدء عملية الدفع بالطريقة ذاتها بتمرير variant_id الخاص بمنتج Commerce المرتبط.

import * as platform from '@/lib/platformClient.ts';
import { useEntitlement } from '@/hooks/useEntitlement.ts';

تُنشئ commerceCheckout جلسة دفع مستضافة على Stripe وتُعيد رابطاً تُوجّه المشتري إليه. ولستَ بحاجة إلى إنشاء عميل أولاً — إذ تسجّل المنصة العميل انطلاقاً من عملية الدفع نفسها:

const { url } = await platform.commerceCheckout({
lineItems: [{ variantId: 'var_pro_monthly', quantity: 1 }],
successUrl: 'https://myapp.com/welcome',
cancelUrl: 'https://myapp.com/pricing',
customerEmail: shopperEmail, // optional — prefills Stripe checkout
});
window.location.href = url;

يتم دعم عناصر متعددة في الطلب. وفي حالة الاشتراكات، تمثّل quantity عدد المقاعد. وإن أدخل المشتري كود قسيمة، مرّره معها — فيتحقق الخادم منه ويحسب الخصم استناداً إلى بيانات المتجر لديك، لا إلى مبلغ يرسله المتصفح.

التحكم في الوصول إلى ميزة مدفوعة

Section titled “التحكم في الوصول إلى ميزة مدفوعة”
const { hasAccess, isLoading } = useEntitlement('pro_features');
if (isLoading) return <Spinner />;
if (!hasAccess) return <UpgradePrompt />;
return <ProOnlyThing />;

المفتاح هو slug الميزة (مثل pro_features)، وليس الـ id الخاص بكائن الميزة. ويجري التحقق على الخادم مرتبطاً بالجلسة المسجّل دخولها، فلا يمكن التحايل عليه من المتصفح. اطّلع على المنتجات والميزات للاطلاع على نموذج الاستحقاقات.

دع الذكاء الاصطناعي يتولى الربط

Section titled “دع الذكاء الاصطناعي يتولى الربط”
  • "Build a /pricing page that shows my products and starts a checkout when a button is clicked."
  • "Gate the /pro route so only customers with pro_features access can see it."
  • "Add a cart with a coupon code field and a Checkout button."