تعديلات جزئية وكاملة
TL; د
Refand هي العملية العكسية للكمية التي تم التقاطها. تغلق Full المعاملة بأكملها، وتعود جزئيًا جزءًا (يمكن أن تكون سلسلة جزئية تصل إلى كامل). حرج: رد الأموال إلى المصدر، والتطرف الصارم، وتسجيل الأسباب، والتنسيق مع خطافات الويب/السحب. قياس معدل استرداد الأموال، TtR p95، خطأ استرداد الأموال والقضاء على التكرارات/التناقضات من خلال التسويات التلقائية.
1) المصطلحات والاختلافات الأساسية
استرداد كامل - يُعيد المبلغ الملتزم به بالكامل ('استرداد _ المبلغ = capture_amount').
استرداد جزئي - يعيد جزءًا ('0 <refund_amount <capture_amount')، يسمح للباقي بجزء من إجمالي «التقاط _ المبلغ».
رد الأموال إلى المصدر - العودة إلى طريقة الدفع الأصلية/السكك الحديدية (المفضلة/الإلزامية التنظيمية).
الفراغ - الإلغاء للالتقاط (إذا كانت مدعومة بالقضبان)، لا يعتبر رافعًا.
عكس/رد التكاليف - ميكانيكي البنوك/السكك الحديدية خارج مبادرتك (الخلافات، استرداد التكاليف) - لا ينبغي الخلط بينه وبين الرفض.
2) موعد الإصدار الكامل مقابل الجزئي
كامل:- إلغاء الطلب/الخدمة بالكامل، وشطب مكرر، وخطأ في النظام.
- إلزامية إذا لم تقدم الخدمة (وفقا لقواعد المستهلك/المنظم).
- الإلغاء الجزئي للخدمة، والتسويات التناسبية (الخصومات، والتعويض عن التأخيرات).
- قضبان الحدود التقنية (الحد الأقصى لكل عملية) - سلسلة جزئية.
- حجب لجنة ما بعد الوقائع (حيث يُسمح بالتنظيم) - أقل في كثير من الأحيان في iGaming.
3) السياسات والحدود
الاسترداد إلى المصدر = صحيح افتراضياً ؛ الاستثناءات - من خلال حالات الامتثال للمعايير المتعددة الأطراف (المسجلة).
القطع: يُسمح بالحكم بعد أيام من القبض عليه (بالطريقة/الولاية القضائية).
العد الجزئي الأقصى: لا يزيد عن K جزئيًا لكل دفعة (عادةً K ≤ 5).
الحد الأدنى للمبلغ الجزئي: ليس أقل من الحد الأدنى التقني للسكك الحديدية/PSP.
- وكيل الدعم: جزئي ≤ X، كامل ≤ Y.
- المدير/المالية: فوق الحدود، الاستثناءات عبر الطرق.
- تهدئة المحاولات المتكررة (ضد الارتداد).
4) الهندسة المعمارية وتدفق الأحداث
المكونات:- منظم الدفع هو مصدر حقيقة الوضع.
- خدمة استرداد الأموال - واجهة برمجة التطبيقات، الخصوصية، تنسيق عمليات إعادة التدوير، قطع الأشجار.
- محولات PSP - تكامل الطريقة.
- التسوية - التسويات الذاتية، DLQ، التصويبات.
- دفتر الأستاذ/المحاسبة - النشرات، المنشقون، المقاصة مع التخليص.
- المخاطر/الامتثال - عمليات التحقق من العقوبات/SoF في سيناريوهات مثيرة للجدل.
1. استرداد. إنشاء '(API) → التحقق (الحدود، التوازن، السياسة، KYC/SoF إذا لزم الأمر).
2. Генерация idempotency_key ('hash (payment_id + refund_amount + reason + nonce)').
3. مكالمة PSP → «معلقة».
4. → «النجاح »/« الفشل» ؛ عند المهلة - يعيد الدبر بنفس المفتاح.
5. نشر الحدث في Kafka → Ledger، BI، تنبيهات.
6. التسوية التلقائية: رسم خرائط «مزود - استرداد - معرف» للتسجيل.
5) الخصوصية ومكافحة الأخذ
لا يمكن حساب نفس الرجوع مرتين: كل المنطق من خلال التخزين الخفي (KV/Redis + TTL).
المفاتيح على payment_id × الكمية × السبب (وإذا لزم الأمر، «الفهرس الجزئي»).
المعاودات تستخدم نفس المفتاح.
يتم حماية الجزء الموازي بواسطة أقفال مستوى الصف/نسخة متفائلة على الكميات الإجمالية.
python def refund(payment_id, amount, reason, idem_key):
if idem_store. exists(idem_key): return idem_store. get(idem_key)
with tx():
p = db. get_payment(payment_id, for_update=True)
assert p. captured_amount - p. refunded_amount >= amount > 0 r = p. create_refund(amount, reason, status='PENDING', idem_key=idem_key)
resp = psp. refund(p. provider_txid, amount, idem_key)
return finalize(r, resp. status, resp. ext_id)
6) نموذج البيانات (الحد الأدنى الكافي)
json
{
"payment_id": "pay_123",
"captured_amount": 150. 00,
"currency": "EUR",
"refunded_amount": 40. 00,
"refunds": [
{
"refund_id": "rf_001",
"type": "partial full",
"amount": 20. 00,
"reason_code": "PARTIAL_SERVICE",
"idempotency_key": "idem_a1",
"status": "PENDING SUCCESS FAILED",
"provider_refund_id": "psp_rf_9xz",
"created_at": "2025-11-03T12:00:00Z",
"credited_at": "2025-11-03T15:05:00Z",
"notes": "ticket #456"
}
],
"flags": {
"refund_to_source": true,
"jurisdiction": "EEA",
"kyc_tier_required": "tier2"
}
}
7) ميزات في قضبان الدفع
بطاقات (فيزا/ماستركارد)
الدعم الكامل/الجزئي ؛ وكثيرا ما تكون جزئية إلى حد ما ؛ تعتمد TtR على بنك العميل (T + 1... T + 5 bp).
تأتي خطابات الويب حول النجاح بسرعة، لكن التسجيل عند الخروج قد يتأخر → نشرح في نماذج الدعم.
A2A/Open المصرفية/RTP
غالبًا ما يكون العائد الفوري (عكس/دفع الائتمان) ؛ بعض مقدمي الخدمات يدعمون فقط كليا أو جزئيا 1.
إلزام صارم بالحساب الأصلي ؛ ويلزم رد الأموال إلى المصدر.
محافظ إلكترونية
عادي كلي/جزئي ؛ دقائق TtR ؛ الحدود الجزئية والحد الأدنى للمبلغ.
قسائم/مدفوعة مسبقًا
عادة، لا تكون سياسة → متاحة للاسترداد إلى المصدر: العودة إلى المحفظة الداخلية أو إعادة إصدار القسيمة (إذا كان المزود يعرف كيف). يتطلب بنود الامتثال.
التشفير
القضبان - متقلبة ؛ ويفضل ألا يستخدم هذا الأسلوب كطريقة للتجديد. إذا سمح بذلك: العودة إلى نفس العنوان/الصرف بأسعار وعمولات موثقة ؛ فحص AML.
8) المحاسبة والتسوية والمالية
دفتر الأستاذ: وظائف «DR Revenue/CR Cash» عند الالتقاط ؛ على رد الأموال - إعادة الشطب. ينعكس جزئي بشكل متناسب.
الاعتراف: في iGaming، يقلل refand من GGR للفترة المقابلة (السياسة المحاسبية).
التسوية: تاجر التسويات اليومية - رد - معرف ↔ provider_refund_id'، الأوضاع، المبالغ، أسعار العملات الأجنبية.
FX: تثبيت منطق الدورات (وقت الاستيلاء أو وقت استرداد الأموال)، عند الاقتضاء ؛ تمسك شبكة الانتشار.
9) مؤشرات الأداء الرئيسية والأهداف والتنبيهات (صحة الاسترداد)
معدل الاسترداد = 'مردود _ Tx/ Captured_Tx'.
نسبة المبلغ المسترد = 'المبلغ المسترد _ المبلغ/ Captured_Amount'.
TtR p95 = p95 ('credited _ at - created_at') حسب الطريقة.
معدل خطأ الاسترداد = «فشل/محاولة» (<0. 3%).
النسبة المئوية للرد إلى المصدر ≥ 95 في المائة (حيثما كان ذلك متاحا).
حوادث الاسترداد المزدوج = 0.
- «TtR p95» أعلى من SLO بطريقة → P2.
- الارتفاعات بواسطة «معدل الاسترداد» في مزود واحد/BIN → P1 (التحقق من الإمساك/الزوجي).
- أي «استرداد مزدوج> 0» → P0 (التجميد الفوري للتجديدات التلقائية).
10) شرائح SQL
10. 1 تنقيح الملف الشخصي
sql
SELECT
DATE_TRUNC('day', r. created_at) AS d,
method_code, provider,
COUNT() FILTER (WHERE r. status='SUCCESS') AS refunds_ok,
COUNT() FILTER (WHERE r. status='FAILED') AS refunds_fail,
SUM(r. amount) AS refunded_amount,
PERCENTILE_CONT(0. 95) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (r. credited_at - r. created_at))) AS ttr_p95_sec
FROM refunds r
JOIN payments p ON p. payment_id = r. payment_id
GROUP BY 1,2,3;
10. 2 التحكم في الرصيد الجزئي
sql
SELECT p. payment_id,
p. captured_amount,
SUM(r. amount) AS refunded_sum,
(p. captured_amount - SUM(r. amount)) AS refundable_left
FROM payments p
LEFT JOIN refunds r ON r. payment_id = p. payment_id AND r. status IN ('SUCCESS','PENDING')
GROUP BY 1,2
HAVING (p. captured_amount - SUM(r. amount)) < 0;
11) UX والدعم
نماذج الرسائل بالطرق: نشرح التأخير المحتمل في تفريغ البطاقات، A2A - على الفور تقريبًا.
الأوضاع في المكتب: 'إصدار → في طور الإعداد → العودة' ؛ أظهر تاريخ التجنيد المتوقع.
الأسباب (reason_code) - مقروءة بشرية: «شطب مكرر»، «إلغاء الخدمة»، «تعويض جزئي».
الخدمة الذاتية جزئية - آمنة فقط مع حدود وقواعد واضحة.
12) المخاطر والامتثال
مكافحة الغسيل: ينبغي ألا تتحول إعادة التدوين إلى ناتج إلى قناة بديلة ؛ الاستثناءات بموافقة المنظمة.
الجزاءات/REP: للعودة إلى الحسابات/التفاصيل «الحمراء» - التحقق الإلزامي.
DSAR/الاحتفاظ - تخزين آثار التجديدات ضمن سياسة الاحتفاظ.
القواعد المحلية: شروط وإجراءات العائدات (مثل أنظمة المستهلك) - الواردة في السياسة العامة.
13) الأخطاء المتكررة وكيفية تجنبها
الرجوع المزدوج بسبب الافتقار إلى الخصوصية وكتب الويب المتكررة → مفتاح/حالة تخزين نفس الجرم، تحقق من الرصيد.
جزئي> توازن → إصدار قفل صف/متفائل وفحوصات صارمة.
استرداد الأموال عبر الطرق دون إذن الامتثال → ينتهك استرداد الأموال إلى المصدر.
خلط الفراغ واسترداد الأموال في التقارير → تشويه مؤشرات الأداء الرئيسية.
لا توجد فحوصات تلقائية → الثقوب السوداء بين PSP ودفتر الأستاذ الخاص بك.
14) كتب اللعب
زيادة في إرجاع المزود → التحقق من حالات فشل التفويض/نسخ الالتقاط، وتشغيل الفشل، والاتصال بـ PSP.
التعويض الجزئي الشامل (الحملة) → رفع الحد الجزئي، وتمكين عمليات المجموعة، وتعزيز التسويات.
خطأ خطافات الويب → التحول إلى الاقتراع، وزيادة خصوصية TTL، وتأجيل عمليات التجديد التلقائي.
الاستثناء من رد الأموال إلى المصدر (نادر) → تصعيد MLRO، والدفع الموثق، و «comp _ corporated = true».
15) حالات الاختبار (UAT/Prod)
1. الاسترداد الكامل بعد التقاط واحد → إعادة ضبط الرصيد بشكل صحيح.
2. دفعة جزئية (3 ×) → مجموع ≤ التقاط ؛ ثم ممتلئة للباقي.
3. الخصوصية - كرر نفس الاستفسار → 1 النتيجة.
4. ارتداد الويب: 3 إخطارات متطابقة → شطب/رصيد واحد.
5. التسويات: عدم التطابق الاصطناعي → التنبيه والتصحيح التلقائي.
6. تقييد الحقوق: لا يمكن للوكيل أن يتجاوز الحد الجزئي.
7. قطع: محاولة إعادة التأهيل المتأخرة → تصحيح الفشل وقطع الأشجار.
16) قائمة التنفيذ المرجعية
- السياسات الكاملة/الجزئية + المبالغ المستردة إلى المصدر حسب الولاية القضائية/الطريقة.
- الخصوصية، التراجعات، الخطابات الشبكية والاقتراع، DLQ.
- نموذج البيانات مع ما تبقى للعودة reason_code.
- دفتر الأستاذ والتسويات التلقائية اليومية.
- KPI/لوحة القيادة: معدل الاسترداد، TtR، الخطأ، الاسترداد المزدوج = 0.
- الحقوق ومصفوفة التطبيق، نماذج الدعم.
- حالات اختبار UAT وتنبيهات مستوى الإنتاج.
موجز
وتمثل إدارة إعادة التشغيل ضبطاً صارماً للعمليات: استرداد الأموال من مصدر إلى آخر، والخصوصية، ونموذج البيانات الشفاف، والتوفيق التلقائي، والسياسات الجزئية/الكاملة المفهومة. مع مثل هذه الأساسيات، فإنك تحافظ على انخفاض TtR، والأخطاء بالقرب من الصفر، وتكرار المستحيل، والامتثال والتمويل متزامنان مع أهداف الأعمال.