التجارة الإلكترونية 2 دقيقة للقراءة 1,628 مشاهدات

بناء التجارة الإلكترونية مع Stripe: المدفوعات والاشتراكات والـ Webhooks

ادمج مدفوعات Stripe في تطبيقك. تعلّم عن الدفع والاشتراكات والـ Webhooks والتوافق مع PCI.

Stripe payments

تكامل الدفع مع Stripe

اقبل المدفوعات وأدِر الاشتراكات باستخدام Stripe.

الإعداد

npm install stripe @stripe/stripe-js

من جانب الخادم: إنشاء نية الدفع (Payment Intent)

// api/create-payment-intent.js
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);

app.post('/create-payment-intent', async (req, res) => {
    const { amount, currency = 'usd' } = req.body;

    const paymentIntent = await stripe.paymentIntents.create({
        amount: amount * 100, // cents
        currency,
        automatic_payment_methods: { enabled: true },
    });

    res.json({ clientSecret: paymentIntent.client_secret });
});

من جانب العميل: نموذج الدفع

import { loadStripe } from '@stripe/stripe-js';
import { Elements, PaymentElement, useStripe } from '@stripe/react-stripe-js';

const stripePromise = loadStripe(process.env.NEXT_PUBLIC_STRIPE_KEY);

function CheckoutForm() {
    const stripe = useStripe();
    const elements = useElements();

    const handleSubmit = async (e) => {
        e.preventDefault();

        const { error } = await stripe.confirmPayment({
            elements,
            confirmParams: {
                return_url: `${window.location.origin}/success`,
            },
        });

        if (error) setMessage(error.message);
    };

    return (
        <form onSubmit={handleSubmit}>
            <PaymentElement />
            <button>Pay Now</button>
        </form>
    );
}

معالجة الـ Webhook

app.post('/webhook', express.raw({type: 'application/json'}), (req, res) => {
    const sig = req.headers['stripe-signature'];

    const event = stripe.webhooks.constructEvent(
        req.body, sig, process.env.STRIPE_WEBHOOK_SECRET
    );

    switch (event.type) {
        case 'payment_intent.succeeded':
            const payment = event.data.object;
            // Fulfill order
            break;
        case 'customer.subscription.updated':
            // Handle subscription change
            break;
    }

    res.json({ received: true });
});

اختبر دائماً بوضع الاختبار في Stripe قبل الانتقال إلى الإنتاج.

مشاركة هذه المقالة:
ES
كتبه

Edrees Salih

مهندس برمجيات متكامل يتمتع بخبرة 9 سنوات. شغوف ببناء حلول قابلة للتطوير ومشاركة المعرفة مع مجتمع المطورين.

عرض الملف الشخصي

التعليقات (0)

اترك تعليقًا

لن يتم نشر بريدك الإلكتروني.

لا توجد تعليقات بعد. كن أول من يشارك أفكاره!

مقالات ذات صلة

مقالات ذات صلة

هل تحتاج مساعدة في مشروعك؟

احجز استشارة مجانية لمدة 30 دقيقة لمناقشة تحدياتك التقنية واستكشاف الحلول معًا.