16 أكتوبر 2025·6 دقيقة قراءة

مولد روابط دفع Stripe للدفعات لمرة واحدة مع البيانات الوصفية

مولد روابط دفع Stripe الذي يضيف معرفات الطلبات إلى البيانات الوصفية في Stripe حتى تتمكن المالية من مطابقة المدفوعات بسرعة ودون مطابقة يدوية.

مولد روابط دفع Stripe للدفعات لمرة واحدة مع البيانات الوصفية

لماذا تضطر المالية لمطابقة المدفوعات يدويًا

غالبًا ما تواجه المالية نفس اللغز: وصل مال لكن من غير الواضح لما كان. قد يظهر تحويل في البنك أو تُعرَض دفعة ناجحة في Stripe، ومع ذلك يكون السبيل للرجوع إلى طلب محدد ضعيفًا. ينتهي الأمر بشخص يفتح الإيميلات، يتفقد الجداول، ويسأل المبيعات "أي عميل هذا؟" وتصبح هذه الساعات كثيرة، خاصة في نهاية الشهر.

الدفعات لمرة واحدة سبب شائع. ليست كل عملية خصم تناسب صفحة دفع منظمة. فكر في عروض خاصة، إضافات في اللحظة الأخيرة، رسوم عاجلة، دفعات جزئية، أو فاتورة بديلة بعد تغيير الشروط. العمل لا يزال بحاجة إلى استلام المال بسرعة، فيُنشئ شخص ما طلب دفع سريعًا، يرسله، ويستمر في عمله.

تفشل التسوية عندما لا تحمل الدفعة المعرف الذي يستخدمه فريقك داخليًا. ستخزن Stripe المبلغ والتاريخ وغالبًا اسم أو بريد العميل، لكن تلك الحقول ليست معرفات ثابتة:

  • تتفاوت الأسماء ("Acme Inc" مقابل "ACME").
  • بريد الدافع قد يكون لقسم الحسابات وليس للعميل النهائي.
  • أوصاف كشف الحساب المصرفي قد تكون غامضة أو مختصرة.
  • قد يوجد معرف الطلب الداخلي فقط في CRM أو أداة الفوترة أو جدول بياناتك.

حتى لو أنشأت رابط دفع عبر Stripe، قد تصل الدفعة دون الحقل الذي تحتاجه المالية أكثر: معرف الطلب الداخلي الذي يربط المال بطلب أو مشروع أو تذكرة محددة.

الهدف بسيط: اجعل كل دفعة قابلة للتعرّف من البداية. إذا كانت الدفعة تتضمن معرف الطلب الداخلي لديك (مع سياق اختياري مثل رقم الفاتورة أو مرجع العرض)، يمكن للمالية المطابقة في ثوانٍ بدل التخمين.

ماذا يعني رابط دفع لمرة واحدة مع بيانات وصفية في Stripe

رابط دفع لمرة واحدة هو عنوان URL لصفحة دفع قابلة للمشاركة تُنشأ لمبلغ محدد مرة واحدة. ترسله عبر الإيميل أو الدردشة أو ملاحظات الفاتورة، ويدفع العميل دون تسجيل دخول في تطبيقك. هذا مختلف عن تجربة الدفع المدمجة داخل المنتج، حيث يعرف التطبيق العميل والعربة وسجل الطلب.

"مولد روابط الدفع" مفيد فقط إذا كان ينشئ الروابط بطريقة موحدة. إذا أنشأ الأشخاص الروابط بطرق مختلفة، ستظل المالية تخمن إلى أي طلب تنتمي كل دفعة.

البيانات الوصفية في Stripe هي مجموعة حقول مفتاح-قيمة صغيرة ترفق بكائنات مثل PaymentIntent أو Charge أو Checkout Session. هي مخصصة للمحاسبة الداخلية والتسوية والأتمتة. البيانات الوصفية ليست مكانًا لملاحظات طويلة، وليست بديلًا لقاعدة بياناتك الداخلية. هي علامة تعريف، ليست القصة الكاملة.

من المفيد أيضًا إبقاء البيانات الوصفية منفصلة عن الحقول الوصفية الموجّهة للبشر. الوصف مخصص للقراءة البشرية، قد يكون متغيرًا وغالبًا ما يُحرر أو يُختصر. البيانات الوصفية منظمة وثابتة، لذا يمكن للبرمجيات (وتصديرات المالية) التصفية والمطابقة بشكل موثوق.

ما الذي يجعل رابط الدفع قابلاً للتسوية

يصبح الرابط قابلاً للتسوية عندما يحمل دائمًا نفس مجموعة الحقول، وبنفس الصيغ، لكل دفعة لمرة واحدة. بهذه الطريقة يمكن للمالية البحث والتصدير والمطابقة دون فتح الإيميلات أو سؤال فريق المبيعات.

عمليًا، تريد مجموعة صغيرة من المعرفات الثابتة، مثل order_id الداخلي لديك (لا يُعاد استخدامه)، وإن لزم فـ customer_id الداخلي، وpurpose (مثل addon أو overage)، وcreated_by لمعرفة من أنشأ الرابط.

حافظ على ثبات صيغة معرف الطلب

معرف الطلب هو_anchor_. اختر صيغة وتمسّك بها (على سبيل المثال ORD-104583). تجنّب التغييرات “المفيدة” مثل إضافة مسافات أو تواريخ أو أسماء العملاء. إن احتجت سياقًا إضافيًا، ضعه في مفاتيح بيانات وصفية منفصلة بدل تغيير المعرف.

قرر ما البيانات التي يجب أن تسافر مع الدفع

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

ابدأ بمعرف الطلب الداخلي. هذا هو المعرف الذي تتحكم به من البداية للنهاية، حتى لو غيّر العميل بريده أو وصلت الدفعة بعد أيام. اختر نظام سجل واحد يصدره (CRM أو ERP أو لوحة الإدارة أو أداة داخلية) وثبت الصيغة، مثلاً ORD-2026-001842 بدل النص الحر.

المبالغ والعملات تحتاج قواعد أيضًا، خاصة عندما تُنشأ الدفعات تحت ضغط زمني. قرر من يملك صلاحية تحديد المبلغ، أي عملة مقبولة، وكيف تُعالج التقريب. إذا جمعت ضرائب أو خصومات أو شحن، اتفق إن كان الرابط يمثل الإجمالي الكامل أم مكونًا واحدًا. اختلاف شائع هو أن مبلغًا "مستديرًا" لا يطابق إجمالي الطلب بعد الضريبة.

معرّفات العملاء تساعد عندما يعيد شخص تمرير الرابط أو يدفع من حامل بطاقة مختلف. على الأقل، التقط بريدًا إلكترونيًا. إن كنت تبيع B2B، أضف اسم الشركة إن وُجد. استخدم هذه الحقول كحقول مساعدة، لا كمفتاح أساسي. الناس قد يخطئون في كتابة الإيميل؛ معرفات الطلب أكثر أمانًا.

سجّل أيضًا غرض الدفع حتى لا يفسر أحد الرسوم لاحقًا. كلمات مثل “Deposit” أو “balance payment” و“add-on” تمنع الالتباس عندما يحتوي نفس الطلب على دفعات متعددة.

مجموعة عملية لتوحيدها لكل دفعة لمرة واحدة تبدو هكذا:

  • معرف الطلب الداخلي (مطلوب، صيغة ثابتة)
  • المبلغ والعمله (مطلوب، مع قواعد تقريب وضرائب)
  • بريد العميل الإلكتروني (مطلوب) واسم الشركة (اختياري)
  • غرض الدفع (مطلوب: deposit, balance, add-on, other)
  • وصف قصير ظاهر للإيصال (اختياري)

مثال: طلب العميل إضافة أخيرة بقيمة $250. بدل إرسال "ادفع $250 هنا" بشكل عام، تنشئ رابطًا مع order_id=ORD-2026-001842، purpose=add-on، currency=USD، و[email protected]. عندما تراجع المالية التحويلات، يمكنها التصفية حسب معرف الطلب وترى فورًا أنه يخص الإضافة وليس الفاتورة الأصلية.

خطوة بخطوة: إنشاء رابط لمرة واحدة مربوط بمعرف طلب

ابدأ باختيار أين ستوضع البيانات الوصفية داخل Stripe. للتسوية النظيفة، أرفق البيانات الوصفية بكائن سيبقى موجودًا بالتأكيد للدفعة.

1) اختر كائن Stripe لنضع عليه البيانات الوصفية

في الواقع، هناك خياران شائعان:

  • Checkout Session: الأفضل عندما تريد تجربة دفع مستضافة ورابط قابل للمشاركة.
  • PaymentIntent: الأفضل عندما تجمع الدفع داخل واجهة مخصصة وتحتاج إلى تحكم أدق.

إذا كنت ترسل رابطًا لمرة واحدة للعميل، غالبًا ما يكون Checkout Session هو الطريق الأسهل لأن تجربة العميل واضحة ويمكنك نقل البيانات الوصفية عبره.

2) ضع مخطط بيانات وصفية صارمًا

قرر حقول البيانات الوصفية مرة واحدة واحتفظ بها متسقة عبر كل دفعات لمرة واحدة. مخطط بسيط يعمل جيدًا:

  • order_id: مرجع الطلب الداخلي لديك
  • invoice_id: رقم الفاتورة الظاهر للعميل (إن استخدمت واحدة)
  • customer_id: معرف سجل العميل الداخلي لديك (ليس بريدًا إلكترونيًا)
  • purpose: تصنيف قصير مثل add-on, rush_fee, أو replacement

اجعل القيم قصيرة ومتوقعة. تظل الفلاتر والتصديرات مرتبة عندما تظهر نفس المفاتيح على كل دفعة.

3) أنشئ الرابط وخزّنه داخليًا

أنشئ رابط الدفع (أو Checkout Session) وسجّل فورًا سجلًا في نظامك يتضمن معرف Stripe والبيانات الوصفية التي ضبطتها بالضبط. عامل الرابط كمستند مالي.

لا تحتاج إلى كثير: معرف الطلب الداخلي، معرف كائن Stripe، المبلغ، العملة، الحالة (created، sent، paid، expired)، والطوابع الزمنية.

4) أرسل الرابط وسجّل حدث الإرسال

أرسل الرابط عبر قناة قابلة للتدقيق (إيميل، SMS، أو أداة الدعم) وسجّل متى ولمن أُرسل. إذا قال العميل "لم يصلني" يمكنك التحقق من التوقيت وإعادة الإرسال دون إنشاء طلب جديد.

قبل الإرسال، قم بفحص سريع للعقلانية: المبلغ، العملة، وأن البيانات الوصفية تتضمن order_id الصحيح. هذا الحقل هو الفارق بين تسوية نظيفة وأسبوع من التخمين.

كيف تُسَوّي المالية باستخدام بيانات Stripe الوصفية

تحقق من سير عمل المالية
اختبر سير عمل تسوية كامل قبل نهاية الشهر بنموذج داخلي عملي.
نموذج أولي

إن وُضعت البيانات الوصفية بشكل صحيح، لا ينبغي أن تضطر المالية لتخمين أي دفعة تنتمي لأي طلب. سجل الدفع في Stripe يحمل نفس المعرف الداخلي الذي تستخدمه محاسبتك أو نظام الطلب.

أين تجد البيانات الوصفية في Stripe

قد تظهر البيانات الوصفية على كائنات مرتبطة اعتمادًا على كيفية إنشاء الدفع. في الروابط لمرة واحدة سترى عادةً البيانات الوصفية على Checkout Session وعلى PaymentIntent الناتج.

عادة ما تتحقق المالية من عرض تفاصيل الدفع للبيانات الوصفية، ثم تؤكد نفس أزواج المفتاح-القيمة على PaymentIntent. يجب تتبع الاستردادات والنزاعات إلى الدفع الأصلي للحفاظ على ظهور معرف الطلب.

لتجنب الالتباس، اختر نمط تسمية واحد ولا تغيّره في منتصف الطريق. على سبيل المثال: order_id, customer_id, invoice_id. الاتساق هو ما يجعل بحث Stripe والتصديرات قابلة للاستخدام.

البحث والتصفية (التسمية تهم)

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

قاعدة عملية: اجعل القيمة فريدة ومقروءة (مثل SO-10482)، وتجنّب تخزين معرفات متعددة في حقل واحد.

التصديرات التي تحافظ على ظهور معرف الطلب

التسوية عادة تحدث في التصديرات (جداول، استيرادات محاسبية، إغلاق شهري). تأكد من أن التصدير يتضمن أعمدة البيانات الوصفية، أو أنك تستطيع الربط على معرف يمكنه ذلك.

سير عمل عملي يُعتمد في الواقع:

  • صدّر المدفوعات أو المعاملات مع البيانات الوصفية المضمنة (حتى يكون order_id عمودًا).
  • صدّر الاستردادات بشكل منفصل ثم اربطها بالدفع الأصلي باستخدام معرف الدفع أو الشحنة.
  • احتفظ بعرض واحد للطلب لكل order_id يظهر المدفوعات، الاستردادات، والمبلغ الصافي.

للدفعات الجزئية، اعتبر كل دفعة كسطر مستقل يشارك نفس order_id، وأضف حقلًا مثل installment إن احتجت لذلك.

التعامل مع حالات العالم الحقيقي: إعادة المحاولة، التكرارات والروابط المنتهية

زامن المدفوعات مع الطلبات
حدّث حالة الطلب تلقائيًا عندما تصل أحداث الدفع من Stripe.
أتمتة الحالة

المدفوعات الحقيقية فوضوية. يطلب العميل رابطًا ثانيًا، أحدهم يجد إيميلًا قديمًا بعد أسبوعين، أو تفشل البطاقة ثلاث مرات ثم تنجح. إن لم تخطط لذلك، ستنتهي المالية بالتخمين.

عندما يطلب العميل رابطًا إضافيًا، عامله كمحاولة جديدة لا كمحو للتاريخ. إعادة استخدام نفس الرابط قد تكون مقبولة إذا ظل المبلغ والشروط صحيحين وما زلت تسيطر على الوصول، لكن كثيرًا من الفرق تفضل إنشاء رابط جديد ليبقى سجل التدقيق واضحًا.

مجموعة قواعد بسيطة تحافظ على السجل:

  • احتفظ بمعرف طلب داخلي واحد، لكن أنشئ معرف محاولة دفع جديد لكل رابط ترسله.
  • اجعل رابطًا واحدًا نشطًا لكل طلب في الوقت نفسه (انتهِ أو ألغي السابق).
  • خزّن المبلغ والعملة على سجل المحاولة، لا فقط على الطلب.
  • إن احتاج العميل مبلغًا مختلفًا، أنشئ محاولة جديدة ولا تعدل القديمة.

استراتيجية الانتهاء مهمة عندما تتغير الأسعار. حدد نافذة واضحة (مثلاً 48 ساعة) وأعلم العميل بها. إن فاتته، أنشئ رابطًا جديدًا مربوطًا بمعرف محاولة جديد.

التكرارات تحدث عندما ينقر أحدهم مرتين، أو يعيد تمرير الرابط، أو تُنشأ رابطان لنفس الطلب. الحل ليس "كن حذرًا" فقط. اجعل إنشاء التكرارات صعبًا بالتحقق من وجود محاولة نشطة قبل إنشاء رابط آخر، وباستخدام مفتاح عدم التكرار (idempotency key) عند إنشاء الجلسات عبر API. ضمن order_id وattempt_id في البيانات الوصفية لتستطيع دائمًا تمييز المحاولات.

أخطاء شائعة تؤدي إلى المطابقة اليدوية

معظم المطابقات اليدوية ليست بسبب Stripe نفسه. تحدث لأن سجل الدفع لا يحمل نفس المعرفات الثابتة التي تستخدمها المالية داخليًا.

فخ شائع هو وضع معرف الطلب فقط في موضوع الإيميل أو تسمية الرابط أو رسالة إلى العميل. ذلك النص لا يظهر بشكل موثوق في أماكن عمل المالية (التصديرات، المدفوعات، استيرادات المحاسبة). إن لم يكن معرف الطلب في بيانات Stripe الوصفية، غالبًا سيُفقد عند سحب تقرير.

مشكلة أخرى هي تغيير أسماء حقول البيانات الوصفية مع مرور الوقت. إن بدأت بـ orderId ثم تحوّلت إلى order_id، فقد أنشأت معيارين داخل نفس الحساب. حينها يجب على المالية تذكر أي عمود تستخدمه (أو دمج عمودين)، وهذا يعيد العمل اليدوي.

الملاحظات البشرية المقروءة قد تساعد مؤقتًا، لكنها ليست مفاتيح ثابتة. تتغير الأسماء، يستخدم العملاء إيميلات مختلفة، ويمكن لشخصين أن يشتركا في اسم أول واحد. معرف داخلي ثابت (order ID, invoice ID, case ID) يمكّنك من مطابقة السجلات دون تخمين.

أخيرًا، كثير من الفرق ينسون حفظ سجل لما أنشأوه. إن لم تحفظ "الطلب 18423 -> جلسة Stripe XYZ"، فلن تتمكن من الإجابة عن أسئلة أساسية لاحقًا: هل أُرسل رابط؟ هل استُبدل؟ ما المبلغ الموافق عليه؟ حتى مع بيانات وصفية مثالية في Stripe، لا يزال مطلوبًا سجل تدقيق بسيط على جانبك.

عادات جيدة تمنع معظم المشاكل:

  • ضع معرفًا داخليًا ثابتًا في بيانات Stripe الوصفية على PaymentIntent (واحتفظ به متناسقًا).
  • ثبّت مفاتيح البيانات الوصفية (اختر نمط تسمية واحد والتزم به).
  • استخدم المعرفات، لا الأوصاف، للمطابقة.
  • خزّن معرف Stripe المنشأ والحالة مقابل الطلب الداخلي.

قائمة فحص سريعة قبل إرسال رابط دفع

تتبع الطلبات والمحاولات
نمذِج الطلبات ومحاولات الدفع في تطبيق داخلي قائم على قاعدة بيانات دون كتابة كود يدوي.
ابنِ الآن

رابط الدفع لمرة واحدة سهل الإنشاء، لكنه صعب التفكيك لاحقًا إن كان تفصيل واحد خاطئًا. فحص سريع يستغرق دقيقة قد يوفر ساعات للمالية.

استخدم مرجع طلب داخلي واحد كمصدر للحقيقة. أيًا كان تسميته (Order ID، Work Order، Ticket)، احتفظ بتنسيق ثابت ليُرتب بشكل مرتب في التصديرات.

قبل الإرسال، تأكد أن تفاصيل المال تطابق طلب العميل. أخطاء المبلغ أو العملة مكلفة لأنها غالبًا ما تخلق استردادات وروابط جديدة ورسائل إضافية.

قائمة التحقق:

  • تأكيد أن معرف الطلب الداخلي موجود وصحيح ويتطابق مع الصيغة المعتادة.
  • التحقق من المبلغ، العملة، وغرض الدفع بلغة بسيطة مقابل الطلب أو العرض.
  • استخدم مجموعة ثابتة من مفاتيح البيانات الوصفية بتسمية وتباين ثابت (مثلاً order_id, customer_id, invoice_ref).
  • تتبع حالة الرابط في نظامك (created, sent, paid, expired, canceled) وعيّن مالكًا لتحديثها.
  • قم بتجربة نهاية-إلى-نهاية باستخدام نفس التصدير أو تنسيق التقرير الذي تستخدمه المالية فعليًا.

مثال صغير: إن وضعت "Order-77" في مكان و"ORDER-077" في مكان آخر، قد ترى المالية قيمتين مختلفتين وتعتبر الدفع غير مطابقة. قد يكون الدفع صحيحًا، لكن التسوية تفشل.

مثال عملي: إضافة في اللحظة الأخيرة تتسوى بسلاسة

قم بتوحيد روابط الدفع بسرعة
أنشئ بسرعة مُولّد روابط Stripe لمرة واحدة مع حقول بيانات وصفية إلزامية.
جرب AppMaster

حالة شائعة فوضوية: إضافة في اللحظة الأخيرة بعد إصدار الفاتورة الأصلية. العميل مستعد للدفع، لكن لا أحد يريد إصدار فاتورة جديدة أو بدء محادثة إيميل يجب على المالية قراءتها لاحقًا.

تخيل هذا: دفع العميل مقابل حزمة تدريب بقيمة $2,000 الأسبوع الماضي. اليوم طلب تقريرًا مخصصًا بقيمة $350 مطلوب قبل نهاية الشهر. قال فريق المبيعات نعم، وفريق التنفيذ قادر، والعميل يريد دفعًا ببطاقة الآن.

بدلًا من إرسال طلب عام "ادفع $350"، تنشئ رابط دفع لمرة واحدة وتلحق به بيانات وصفية تطابق نظامك الداخلي.

على سبيل المثال:

  • metadata.order_id: SO-10483
  • metadata.purpose: add_on
  • metadata.add_on_name: custom_report (اختياري)
  • metadata.created_by: sales (اختياري)

يرسل المبيعات الرابط مع ملاحظة قصيرة: "هذا للإضافة تقرير مخصص على الطلب SO-10483." يدفع العميل. فيما بعد تقوم المالية بالتصفية حسب order_id = SO-10483 وتخصم $350 للطلب كإضافة دون البحث في صناديق البريد أو سجلات الدردشة.

الموقف الحاسم هو أن الدفع يحمل نفس المعرف الداخلي الذي يستخدمه نظام الطلب. حتى لو دفع العميل ببريد مختلف عن المعتاد، تظل المالية قادرة على المطابقة النظيفة.

الخطوات التالية: توحيد سير العمل وأتمتة المتابعة

إن أردت أن تتوقف المالية عن المطاردة وراء السياق، اعتبر روابط الدفع جزءًا من نظام الطلبات لديك، لا رسالة لمرة واحدة. أسرع مكسب هو الاتساق: نفس مفاتيح البيانات الوصفية في كل مرة، وصيغة معرف طلب لا تتغير.

دوّن الحقول القليلة التي يجب دائمًا أن تسافر مع الدفع وثبّتها:

  • order_id
  • customer_id (أو account_id)
  • purpose
  • created_by
  • environment (اختياري، إن فصلت بين الاختبار والبيئة الحية)

بعد تثبيت البيانات الوصفية، حوّل إنشاء الروابط من الدردشة إلى شاشة داخلية بسيطة. يجب أن تتمكن المالية من إنشاء رابط لمرة واحدة بإدخال معرف الطلب والمبلغ والعمله، ثم نسخ الرابط وهي واثقة أنه مُعلّم بشكل صحيح. تلك الشاشة نفسها يجب أن تظهر الحالة حتى لا يضطروا لفتح Stripe على كل سؤال "هل دفع؟".

أتمتة المتابعة بأحداث الدفع

المطابقة اليدوية تحدث أيضًا عندما لا يسمع نظام الطلب شيئًا من Stripe. الخطوة التالية هي تحديث الطلب تلقائيًا عندما تفيد Stripe بدفعة ناجحة.

اجعلها أساسية بالبداية:

  • عند نجاح الدفع: وسم الطلب كمدفوع، خزّن معرف الدفع، ودوّن الطابع الزمني.
  • عند فشل الدفع: علّم الطلب لإعادة المحاولة ونبّه المالك.
  • عند الانتهاء أو الإلغاء: علّم الرابط كغير نشط حتى لا يُعاد استخدامه.

هنا أيضًا تمنع التكرارات. إن وُسم الطلب كمدفوع بالفعل، يمكنك منع إنشاء رابط جديد أو طلب سبب تجاوز.

إن رغبت ببناء ذلك دون كتابة لوحة إدارة كاملة يدويًا، AppMaster (appmaster.io) خيار عملي لإنشاء أداة داخلية تُنمذج الطلبات ومحاولات الدفع، تولّد جلسات Stripe ببيانات وصفية متسقة، وتحدّث الحالة اعتمادًا على أحداث الدفع.

الأسئلة الشائعة

ما هو حقل البيانات الوصفية الواحد الذي يمنع معظم المطابقات اليدوية للمدفوعات؟

ابدأ بمعرف داخلي ثابت واحد عادةً order_id واجعل إدخاله إلزاميًا لكل دفع لمرة واحدة. أضف purpose قصيرة مثل deposit أو add_on عندما يكون للطلب عدة مبالغ. احتفظ ببريد العميل كحقل داعم وليس المفتاح الأساسي.

ما حقول البيانات الوصفية التي يجب أن نوحّدها لروابط دفع Stripe لمرة واحدة؟

استخدم نفس المفاتيح ونفس الصيغة في كل مرة، ولا تعيد تسميتها لاحقًا. إعداد افتراضي بسيط: order_id، customer_id، invoice_id (إن وُجد)، وpurpose. إن احتجت مزيدًا من السياق، أضف مفتاحًا جديدًا بدل تغيير قيمة order_id.

أين يجب أن تعيش البيانات الوصفية في Stripe لروابط الدفع لمرة واحدة؟

للروابط لمرة واحدة، البيانات الوصفية تكون الأكثر فائدة عند إرفاقها بــ Checkout Session وأن تنتقل إلى PaymentIntent الناتج عن تلك الجلسة. الأهم أن ترى المالية نفس order_id على الكائن الذي تراجعه وتصدّره. اختر نهجًا واحدًا والتزمه.

هل يمكن للعملاء رؤية الحقول الوصفية مثل order_id في الإيصال أو القيد؟

البيانات الوصفية مُعدّة للتتبع الداخلي وليست ملاحظات موجهة للعملاء. العملاء عادة ما يرون أوصاف الإيصالات وبيانات القيد المصرفي، وليس الحقول الداخلية في metadata. تجنّب وضع معلومات حساسة في metadata لأنها تظهر في الأدوات الداخلية والتصديرات.

كم يمكن أن تكون طويلة أو مفصّلة بيانات Stripe الوصفية؟

احتفظ بالقيم قصيرة، متوقعة، وصالحة للآلات؛ فالبيانات الوصفية تسمح بالوسم وليست حقل ملاحظات. تجنّب نصوصًا طويلة، تنسيقات خاصة، أو دمج معرفات متعددة بقيمة واحدة. إن أردت تفاصيل، خزّنها في قاعدة بياناتك واحتفظ فقط بمعرف مرجعي في Stripe.

كيف نتعامل مع المدفوعات الجزئية أو المدفوعات المتعددة لنفس الطلب؟

استخدم نفس order_id في كل دفعة حتى تجتمع المبالغ تحت نفس الطلب، وأضف حقلًا ثانويًا يميّز المحاولات أو الأقساط مثل attempt_id أو installment. هذا يحافظ على التسوية نظيفة بينما يظهر كل دفع كسطر منفصل في التصديرات. لا تغيّر معنى order_id عبر الدفعات.

ما هي أسلم طريقة للتعامل مع المحاولات المتكررة، إعادة الإرسال، والروابط المنتهية؟

عامل كل رابط كمحاولة دفع منفصلة وخزن attempt_id مع order_id المشترك. عند إعادة الإرسال، أنشئ سجل محاولة جديدًا، وإذا أمكن عيّن الرابط القديم كمنتهي أو ملغى. بهذه الطريقة ترى المالية أي محاولة دُفعت وأيها استُبدل.

كيف نمنع أو نكشف المدفوعات المكررة لنفس الطلب؟

إذا حدثت مدفوعتان لنفس الطلب عن طريق الخطأ، فـ metadata هي ما يتيح لك اكتشاف ذلك بسرعة لأن كلاهما سيشارك نفس order_id. يجب أن يمنع سير العمل الداخلي إنشاء رابط جديد عندما توجد محاولة نشطة، وأن يتطلب سببًا صريحًا للتجاوز عندما يكون الطلب مُسدَّدًا بالفعل. إن كانت الإضافة مشروعة، فـ purpose وattempt_id يجب أن يوضّحا السبب.

كيف يجب أن نُسوي الاستردادات والنزاعات ونحافظ على ظهور معرف الطلب؟

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

كيف يمكننا تنفيذ مُولّد روابط دفع متسق دون ترميز كل شيء يدويًا؟

أنشئ شاشة داخلية صغيرة تصدر دفعات لمرة واحدة من سجل الطلب، تفرض مخطط البيانات الوصفية، وتخزن معرفات Stripe وتغيّرات الحالة. AppMaster هو خيار عملي لذلك لأنه يتيح نمذجة الطلبات ومحاولات الدفع، إنشاء جلسات Stripe مع بيانات وصفية متسقة، وتحديث حالة الطلب من أحداث الدفع بدون بناء تطبيق مخصّص بالكامل.

من السهل أن تبدأ
أنشئ شيئًا رائعًا

تجربة مع AppMaster مع خطة مجانية.
عندما تكون جاهزًا ، يمكنك اختيار الاشتراك المناسب.

البدء