GH GambleHub

بازسازی جزئی و کامل

TL ؛ دکتر متخصص

Refand عملیات معکوس در مقدار گرفته شده است. کامل بسته کل معامله، بازده جزئی بخشی (می تواند یک سری جزئی تا کامل). بحرانی: بازپرداخت به منبع، idempotence دقیق، ورود به سیستم دلیل، و ارکستراسیون با webhooks/retras. اندازه گیری نرخ بازپرداخت، TtR p95، خطای بازپرداخت و حذف تکراری/ناسازگاری از طریق آشتی خودکار.

1) شرایط و تفاوت های اساسی

بازپرداخت کامل - کل مبلغ تعهد شده را برمی گرداند ("مقدار بازپرداخت = capture_amount').
بازپرداخت جزئی - بخشی ("0 <refund_amount <capture_amount') را باز می گرداند، اجازه می دهد تا بقیه جزئی به کل" capture _ amount ".
بازپرداخت به منبع - بازگشت به روش پرداخت/ریل اصلی (ترجیح قانونی/اجباری).
Void - لغو ضبط (اگر توسط ریل پشتیبانی می شود)، به عنوان یک refand در نظر گرفته نمی شود.
برگشت/بازپرداخت - مکانیک بانک/راه آهن خارج از ابتکار شما (اختلافات، بازپرداخت) - نباید با بازپرداخت اشتباه گرفته شود.

2) هنگامی که به صدور کامل در مقابل جزئی

پر کردن:
  • لغو کل سفارش/سرویس، نوشتن تکراری، خطای سیستم.
  • اجباری اگر خدمات ارائه نشده است (با توجه به قوانین مصرف کننده/تنظیم کننده).
جزئی:
  • لغو جزئی از خدمات، تنظیمات متناسب (تخفیف، جبران تاخیر).
  • ریل محدودیت های فنی (حداکثر مقدار در هر عملیات) - سری جزئی.
  • کمیسیون پس از حقایق خودداری (که در آن نظارتی مجاز است) - کمتر در iGaming.
راه حل: دوختن ماتریس «reason _ code × method × jurisdiction» → خط مشی کاملجزئیهر دو، محدودیت ها، سطح مورد نیاز تایید.

3) سیاست ها و محدودیت ها

بازپرداخت به منبع = درست به طور پیش فرض ؛ استثنائات - از طریق موارد MLRO/انطباق (وارد شده).
Cut-off: refands N روز از ضبط (با روش/صلاحیت) مجاز است.
حداکثر تعداد جزئی: بیش از K جزئی در هر پرداخت (معمولا K ≤ 5).
حداقل مقدار جزئی: کمتر از حداقل راه آهن فنی/PSP نیست.

ماتریس تصویب:
  • عامل پشتیبانی: ≤ جزئی X، پر ≤ Y.
  • مدیر/امور مالی: بیش از محدودیت، استثنا متقابل روش.
  • خنک کردن در تلاش های مکرر (ضد گزاف گویی).

4) معماری و جریان رویداد

قطعات:
  • پرداخت Orchestrator منبع حقیقت وضعیت است.
  • خدمات بازپرداخت - API، idempotency، ارکستراسیون از retrays، ورود به سیستم.
  • آداپتورهای PSP - ادغام روش.
  • آشتی - آشتی خودکار، DLQ، اصلاحات.
  • لجر/حسابداری - پست، defectors، پاکسازی با clearings.
  • ریسک/انطباق - تحریم ها/SoF در سناریوهای بحث برانگیز بررسی می شود.
توالی (جزئی/کامل):

1. بازپرداخت. ایجاد اعتبار (API) → (محدودیت ها، تعادل، سیاست، KYC/SoF در صورت لزوم).

2. Генерация idempotency_key ('هش (payment_id + refund_amount + دلیل + nonce)').

3. تماس PSP → «در انتظار».

4. Webhook/نظرسنجی → 'موفقیت '/' شکست خورده'; هنگامی که timeout - retrays با همان کلید.

5. انتشار این رویداد در کافکا → لجر، BI، هشدار.

6. خودکار آشتی: نقشه برداری 'provider _ refund _ id' به رجیستری.

5) Idempotency و ضد طول می کشد

همان refand نمی تواند دو بار اعتبار: تمام منطق از طریق ذخیره سازی idempotency (KV/Redis + TTL).
کلید در payment_id × مقدار × دلیل (و، در صورت لزوم، 'partial _ index').
افزونه ها از همان کلید استفاده می کنند.
Parallel partial توسط قفل های سطح ردیف/نسخه خوش بینانه در مقادیر کل محافظت می شود.

شبه کد:
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)

Webhooks در مورد موفقیت به سرعت می آیند، اما ثبت نام در تخلیه ممکن است دیر شود → ما در قالب های پشتیبانی توضیح می دهیم.

💡 > بانکداری A2A/Open/RTP

اغلب بازگشت فوری (فشار معکوس/اعتباری) ؛ برخی از ارائه دهندگان تنها پشتیبانی کامل یا 1 جزئی.
اتصال شدید به حساب اصلی ؛ بازپرداخت به منبع مورد نیاز است.

کیف پول الکترونیکی

عادی کامل/جزئی ؛ دقیقه TtR ؛ محدودیت های جزئی و حداقل مقدار.

کوپن/پیش پرداخت

معمولا, سیاست → برای بازپرداخت به منبع در دسترس نیست: بازگشت به کیف پول داخلی و یا دوباره شماره کوپن (اگر ارائه دهنده می داند که چگونه). نیاز به مقررات انطباق.

رمزنگاری

ریل - فرار ؛ ترجیحا به عنوان یک روش جایگزین استفاده نشود. در صورت امکان: بازگشت به همان آدرس/مبادله با نرخ مستند و کمیسیون ؛ غربالگری AML.

8) حسابداری، آشتی و امور مالی

لجر: پست های «DR Revenue/CR Cash» در هنگام ضبط ؛ در بازپرداخت - نوشتن. جزئی به طور متناسب منعکس شده است.
شناخت: در iGaming، بازپرداخت GGR دوره مربوطه (سیاست حسابداری) را کاهش می دهد.
آشتی: بازرگان آشتی روزانه _ بازپرداخت _ id ↔ provider_refund_id'، وضعیت، مقدار، نرخ FX.
FX: منطق دوره ها (در زمان ضبط یا در زمان بازپرداخت)، در صورت لزوم ؛ شبکه پخش را نگه دارید.

9) KPI ها، اهداف و هشدارها (سلامت بازپرداخت)

نرخ بازپرداخت = 'بازپرداخت _ Tx/ Captured_Tx'.
نسبت مبلغ بازپرداخت = 'مبلغ بازپرداخت شده/ Captured_Amount'.
TtR p95 = p95 ('credited _ at - created_at') با روش.
نرخ خطای بازپرداخت = 'شکست خورده/تلاش' (<0. 3%).
بازپرداخت به منبع٪ ≥ 95٪ (در صورت موجود بودن).
حوادث بازپرداخت دو برابر = 0.

هشدارها:
  • TtR p95 'بالاتر از SLO با روش P2 → است.
  • خوشه های «نرخ بازپرداخت» در یک ارائه دهنده/BIN → P1 (بررسی grabs/دو برابر).
  • هر بازپرداخت دوگانه> 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) ریسک و انطباق

ضد پولشویی: بازسازی نباید به خروجی یک کانال جایگزین تبدیل شود. استثنائات را با تایید MLRO مرتکب شوید.
تحریم/REP: برای بازگشت آغاز به «قرمز» حساب/جزئیات - تایید اجباری.
DSAR/Retention - ذخیره آثار refands در یک سیاست حفظ.
قوانین محلی: شرایط و روش برای بازده (به عنوان مثال، مقررات مصرف کننده) - منعکس شده در سیاست.

13) اشتباهات مکرر و چگونگی اجتناب از آنها

به دلیل عدم وجود idempointency و webhooks مکرر → کلید/وضعیت فروشگاه idem، تعادل را بررسی کنید.
جزئی> تعادل → ردیف قفل/نسخه خوش بینانه و چک سخت.
بازپرداخت متقابل روش بدون اجازه انطباق → نقض بازپرداخت به منبع.
مخلوط کردن باطل و بازپرداخت در گزارش → اعوجاج KPI ها.
هیچ چک خودکار وجود دارد → سیاه چاله ها بین PSP و دفتر خود را.

14) کتاب های بازی

افزایش در ارائه دهنده بازده → بررسی خرابی مجوز/ضبط تکراری، به نوبه خود در شکست، تماس با PSP.
جبران خسارت جزئی (کمپین) → افزایش محدودیت جزئی، فعال کردن عملیات گروهی، و تقویت آشتی.
خطای Webhooks → سوئیچ به رای گیری، افزایش idempotency TTL، به تعویق انداختن خودکار refands.
استثناء بازپرداخت به منبع (نادر) → تشدید MLRO، پرداخت مستند و 'comp _ approved = true'.

15) موارد تست (UAT/Prod)

1. بازپرداخت کامل پس از یک ضبط → به درستی تعادل را بازنشانی می کند.
2. جزئی دسته ای (3 ×) → جمع ≤ ضبط ؛ سپس بقیه را پر کنید.
3. Idempotency - تکرار همان پرس و جو → 1 نتیجه.
4. Webhook-bounce: 3 اعلان یکسان → یک نوشتن/اعتبار.
5. تطبیق: عدم تطابق مصنوعی → هشدار و تصحیح خودکار.
6. محدودیت حقوق: نماینده نمی تواند از حد جزئی تجاوز کند.
7. Cut-off: تلاش دیررس → خرابی صحیح و ورود به سیستم.

16) چک لیست پیاده سازی

  • سیاست های کامل/جزئی + بازپرداخت به منبع توسط صلاحیت/روش.
  • Idempotency، عقب نشینی، Webhooks و نظرسنجی، DLQ.
  • مدل داده با باقی مانده برای بازگشت و reason_code.
  • دفتر کل و روزانه خودکار آشتی.
  • KPI/داشبورد: نرخ بازپرداخت، TtR، خطا، دو بار بازپرداخت = 0.
  • حقوق و ماتریس برنامه، قالب های پشتیبانی.
  • موارد آزمون UAT و هشدار سطح تولید.

خلاصه

مدیریت Refand یک رشته دقیق از فرآیندها است: بازپرداخت به منبع، idempotency، مدل داده شفاف، خودکار آشتی و سیاست های جزئی/کامل قابل درک است. با چنین اصولی، شما TtR را پایین نگه می دارید، اشتباهات نزدیک به صفر، تکراری غیر ممکن است، و انطباق و مالی هماهنگ با اهداف کسب و کار.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

Telegram
@Gamble_GC
شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.