تكامل PayPal مع React و Node.js: دليل Orders API و Smart Buttons
تكامل PayPal مع Orders API و Smart Buttons. يغطي إعداد webhooks ومدفوعات الاشتراك وأنماط معالجة الأخطاء الحقيقية من الإنتاج.
جدول المحتويات
- مكانة PayPal في استراتيجية الدفع
- إعداد PayPal بشكل صحيح
- تنفيذ Orders API v2
- أزرار الدفع الذكية في React
- تكوين Webhooks
- المشاكل الشائعة في التكامل
مكانة PayPal في استراتيجية الدفع
PayPal ليس مجرد طريقة دفع أخرى - إنه محسّن للتحويل. من تجربتي مع منصات التجارة الإلكترونية:
- 15-30% من العملاء يفضلون PayPal على إدخال تفاصيل البطاقة
- تحسن التحويل على الجوال بشكل كبير مع الدفع بنقرة واحدة من PayPal
- تصور حماية المشتري يبني الثقة للعملاء الجدد
تنفيذ Orders API v2
إنشاء الطلبات
export class PayPalOrderService { async createOrder(params: CreatePayPalOrderParams) { const request = new checkoutNodeJssdk.orders.OrdersCreateRequest(); request.requestBody({ intent: 'CAPTURE', purchase_units: [{ reference_id: params.orderId, amount: { currency_code: params.currency, value: params.amount.toFixed(2), breakdown: { item_total: { value: itemTotal.toFixed(2) }, shipping: { value: shippingAmount.toFixed(2) }, tax_total: { value: taxAmount.toFixed(2) }, }, }, items: params.items.map(item => ({ name: item.name.substring(0, 127), quantity: item.quantity.toString(), unit_amount: { value: item.unitAmount.toFixed(2) }, })), }], }); const response = await paypalClient.execute(request); return { paypalOrderId: response.result.id, approvalUrl: response.result.links.find(l => l.rel === 'approve')?.href, }; } }
أزرار الدفع الذكية في React
import { PayPalScriptProvider, PayPalButtons } from '@paypal/react-paypal-js'; export function PayPalPaymentButton({ orderId, onSuccess, onError }) { return ( <PayPalScriptProvider options={{ clientId: PAYPAL_CLIENT_ID }}> <PayPalButtons createOrder={async () => { const response = await fetch('/api/paypal/create-order', { method: 'POST', body: JSON.stringify({ orderId }), }); const data = await response.json(); return data.paypalOrderId; }} onApprove={async (data) => { const response = await fetch('/api/paypal/capture-order', { method: 'POST', body: JSON.stringify({ paypalOrderId: data.orderID }), }); const result = await response.json(); onSuccess(result); }} onError={onError} /> </PayPalScriptProvider> ); }
المشاكل الشائعة في التكامل
1. مشاكل دقة المبلغ
// ❌ سيء: أخطاء الفاصلة العائمة const amount = 19.99 + 5.00; // قد يكون 24.990000000000002 // ✅ جيد: اعمل بالسنتات، حول في النهاية const amountCents = 1999 + 500; const paypalAmount = (amountCents / 100).toFixed(2); // "24.99"
2. التحقق من مجموع العناصر
PayPal يتحقق من أن مجموع العناصر يساوي الإجمالي.
الخلاصة
تكامل PayPal يتطلب الانتباه إلى:
- دقة المبلغ - استخدم دائماً الحساب بالنقطة الثابتة
- التحقق من التفصيل - العناصر يجب أن تجمع بشكل صحيح
- موثوقية Webhook - تحقق من التوقيعات، تعامل بشكل مستقر
- معالجة النزاعات - كن مستعداً بعملية
- تحويل الأخطاء - أخطاء PayPal تحتاج ترجمة للمستخدمين
مقالات ذات صلة
تكامل بوابات الدفعقراءة 32 دقيقة
تكامل Stripe مع React و Node.js: Payment Intents و Webhooks و 3D Secure
تكامل Stripe الإنتاجي مع Payment Intents و webhooks و 3D Secure. يغطي فواتير الاشتراكات ومعالجة الأخطاء وأنماط امتثال PCI.
هندسة الأمانقراءة 20 دقيقة
قائمة فحص أمان API: Rate Limiting والتحقق من المدخلات وتكوين CORS
تأمين APIs مع rate limiting والتحقق من المدخلات وتكوين CORS. قائمة فحص مختبرة إنتاجياً تغطي المصادقة والتشفير ومعالجة الأخطاء.
تصميم الخلفيةقراءة 19 دقيقة
بنية قوائم الانتظار: دليل تنفيذ Redis و RabbitMQ و SQS
بناء أنظمة قوائم انتظار موثوقة مع Redis و RabbitMQ و AWS SQS. يغطي dead letter queues والتكافؤ وأنماط المعالجة الحقيقية.
تكامل بوابات الدفعقراءة 28 دقيقة
تكامل Braintree للدفع: دليل Drop-in UI والتنفيذ المخصص
تكامل Braintree الكامل يغطي Drop-in UI و hosted fields و PayPal و Venmo و vault للمدفوعات المتكررة وأنماط النشر الإنتاجي للأسواق وأعمال الاشتراكات.
تكامل بوابات الدفعقراءة 30 دقيقة
دليل تكامل Adyen: تنفيذ Drop-in Component و API
تكامل Adyen للمؤسسات مع Drop-in component و API. يغطي تكوين الدفع ومعالجة webhooks ودعم العملات المتعددة.