GH GambleHub

Մասնակի և ամբողջական refands

TL; DR

Refand-ը captured գումարով հակառակը վիրահատություն է։ Ամբողջովին փակում է գործարքը ամբողջ, մասնիկը վերադարձնում է մի մասը (միգուցե մի շարք partial մինչև ամբողջական)։ Քննադատական է 'refund-to-source, խիստ գաղափարախոսություն, պատճառների ամսագրում, և նվագախումբ' webhuks/reat։ Մենք չափում ենք Refund Rate, TtR p95, Refund Error-ը և վերացնում դուբլները/անհամապատասխանությունները մեքենայով։

1) Տերմինները և սկզբունքային տարբերությունները

Fox Refund-ը ամբողջ ամրագրված գումարի կոդն է («refund _ amount = capture _ amount»)։

Partial Refund-ը եվրոպական հատվածներ է («0

Refund to Source-ը տեղադրված է աղբյուրի մեթոդի/ռելսերի վրա։

Void-ը մինչև capture-ը (եթե ռելսերը աջակցվում են), չի համարվում refand։

Reversal/Chargeback-ը ձեր նախաձեռնությունից դուրս բանկային/ռելսային մեխանիկներն են (բանավեճեր, chargbaki) - ոչ թե շփոթել ռեֆանդի հետ։

2) Երբ թողարկել ամբողջական vs մասնիկ

Ամբողջական (Fox)

Մրցույթի/ծառայությունների վերացումը ամբողջովին, կրկնօրինակելով դուրս գրելը, համակարգային սխալ է։

Պարտավորվում է ծառայություններ մատուցելիս (սպառողի/կարգավորողի կանոններով)։

Մասնակի (Partial)

Ծառայությունների մասնակի վերացումը, համամասնությունները (զեղչեր, ուշացումների փոխհատուցում)։

Ռելսերի տեխնոլոգիական լիմիթները (մեկ վիրահատության համար գումար) պարթիալ շարքն է։

Հետպատերազմյան ֆակտումը (որտեղ կարգավորող թույլատրվում է) ավելի քիչ iGaming-ում է։

Լուծում 'մենք կլանում ենք մատրիցը' reason _ code www.jurisdiction 'www.policy = f.rupartialboth, limits, անհրաժեշտ հավանականության մակարդակ։

3) Քաղաքականություններ և սահմաններ

Refund-to-source = time լռելյայն; բացառությունները MLRO/Cass-ի միջոցով (տրամաբանվում է)։

Cut-off: refands թույլատրվում են N օր capture-ից (մեթոդով/իրավասությամբ)։

Max Partial Count: ոչ ավելի քան K partial paytial-ում (տիպիկ K-5)։

Min Partial Amount: ոչ ավելի ցածր, քան ռելսերի/PSA տեխնոլոգիական նվազագույնի։

Approval Matrix:
  • Սապպորտի գործակալ ՝ partial meX- ը, fox-ը։
  • Մենեջեր/ֆինանսներ 'ավելի քան սահմաններ, խաչաձև-մեթոդական բացառություններ։
  • Cooling-off-ը կրկնվող փորձերի համար (anti-drebesg)։

4) Ճարտարապետությունը և իրադարձությունների հոսքը

Բաղադրիչները

Payts Orchestram-ը կարգավիճակների ճշմարտության աղբյուրն է։

Refund Express-API-ը, idempotenty, retrav նվագախումբը, ամսագիրը։

PMS Adapters-ը ռուսական է։

Reconciliation-ը, DLQ, ռուսական։

Ledger/Accounting-ը 108 է, դեֆերը, հավասարեցումը կլիրինգների հետ։

Risk/Compli.ru - սանկցիաների/SoF-ի ստուգումներ վիճահարույց սցենարների ժամանակ։

Հաջորդականությունը (partial/fox)

1. `Refund. Create '(API) վալիդացիան (limits, մնացած, policy, KYC/SoF անհրաժեշտության դեպքում)։

2. Генерация idempotency_key (`hash(payment_id + refund_amount + reason + nonce)`).

3. PBS-ի մարտահրավերը հաստատեց «PENDING» կարգավիճակը։

4. Webhuk/SUCCESS '/« FAILED »; Time-ute-ը նույն բանալին է։

5. Իրադարձությունների հրապարակումը Kafka-ում տեղադրված է Ledger, BI, alerts-ում։

6. Avto-suck 'համեմատություն' provider _ refund _ id 'հետ։

5) Idempotenty-ը և anti-ubley-ը

Նույն ռեֆանդը չի կարող կրկնապատկվել, ամբողջ տրամաբանությունը idempotency storage (KV/Redis + TTL) միջոցով։

Payme _ id medamount medreason (և, անհրաժեշտության դեպքում, «partial _ index»)։

Ռետրոյները օգտագործում են նույն բանալին։

Զուգահեռ partial պաշտպանվում է row-level proks/optimistic version գումարով։

Prindocod

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) Երկրորդային ռելսերի առանձնահատկությունները

Քարտեզներ (Visa/Wintercard)

Աջակցում են fox/partial; հաճախ մի քանի partial; TTR կախված է հաճախորդի բանկից (T + 1... T + 5 b.d.)։

Webhuks-ը արագ է գալիս հաջողության մասին, բայց խմիչքի վրա ներարկումը կարող է սայթաքել։

A2A/Open Banking/RTP

Հաճախ ակնթարթային կոմպոզիցիա (reversal/credit push); որոշ պրովայդերներ աջակցում են միայն fox կամ 1 partial։

Խիստ կապվածություն սկզբնական հաշվի հետ։ refund-to-source պարտական է։

Էլեկտրոնային դրամապանակներ

Սովորական fox/partial; TtR րոպե; սահմանափակումներ partial և նվազագույն գումարով։

Wauchers/Winpaid/Winpaid

Սովորաբար refund-to-source-ը հասանելի չէ ռուսական քաղաքականությանը 'ներքին դրամապանակին կամ re-issue վաուչերին (եթե պրովայդերը կարող է)։ Պահանջում է կոմպլենս-2019։

Crypto

Ռելսերը 'ալատիլային; Նախատեսվում է չօգտագործել որպես ռեֆանդի մեթոդ։ Եթե թույլատրվում է, նույն հասցեն/փոխանակումը փաստագրված փոխարժեքով և միջնորդություններով։ AML սկրինինգը։

8) Մոսկվան, հասակը և ֆինանսները

Ledger: www.DR Revenue/CR Cash 'capture; refund-ը հակառակն է։ Partial արտահայտվում է համամասնորեն։

Recognect: iGaming refand-ում նվազեցնում է GGR համապատասխան ժամանակահատվածը (ռուսական քաղաքականությունը)։

Reconciliation: Ամենօրյա մուտքերը 'merchant _ refund _ id, provider _ refund _ id ", կարգավիճակները, գումարները, FX դասընթացները։

FX 'գրանցեք դասընթացների տրամաբանությունը (capture պահին կամ refund պահին), որտեղ կիրառելի է։ պահեք ներքնազգեստների ճաղը։

9) KPI, նպատակներ և ալերտներ (Refund Health)

Refund Rate = «Refunded _ Tx/Captured _ Tx» (բաժանել ՝ պատճառներով)։

Refund Amount Ratio = `Refunded_Amount / Captured_Amount`.

TtR p95 = p95 («credited _ at - created _ at») մեթոդով։

Refund Error Rate = `Failed / Attempted` (<0. 3%).

Refund-to-Source% 2495 տոկոսը (որտեղ հասանելի է)։

Double Refund Incidents = 0.

Ալերտա

«TtR p95» -ը SLO-ից բարձր է P2 մեթոդով։

Spikes-ը «Refund Rate» -ում մեկ պրովայդերում/BIN no P1 (ստուգել հափշտակները/դուբլի)։

Ցանկացած 'Double Refund> 0' www.P0 (Avto Refands)։

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 Partial

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 և sapport

Հաղորդագրությունների ձևանմուշները, որոնք ցույց են տալիս, որ քարտեզները հնարավոր հետաձգում են, A2A-ը գրեթե անմիջապես է։

Գրասենյակում գտնվող կարգավիճակները '<<Նախագծված է & lt; ցույց տալ սպասվող հաշվարկման ամսաթիվը։

Պատճառները (reason _ code) մարդասպան են '«Կրկնապատկման կրկնօրինակումը», «Ծառայությունների վերացումը», «Մասնակի փոխհատուցումը»։

Winf-interpartial-ը անվտանգ է միայն սահմանների և հստակ կանոնների հետ։

12) Ռիսկը և բաղադրիչը

Անտի լվացում 'ռեֆանդը չպետք է վերածվի այլընտրանքային ալիքի։ գրանցեք բացառություններ MLRO-ի հավանությամբ։

Սանկցիաները/RER '«կարմիր» հաշիվներին/ռեքվիզիտներին ուղղված վերադարձումների ժամանակ պարտադիր ստուգում է։

DSAR/Retention: Պահեք refands հետքերը տվյալների պահպանման քաղաքականության շրջանակներում։

Տեղական կանոնները 'վերադարձման ժամկետները և կարգը (օրինակ սպառողական հաշվարկները), արտացոլում ենք պոլիկիում։

13) Հաճախակի սխալներ և ինչպես խուսափել դրանցից

Կրկնակի ռեֆանդը, քանի որ գաղափարախոսության և կրկնվող webhucks-ը թույլ են տալիս պահպանել idem-բանալին/կարգավիճակը, ստուգել մնացորդը։

Partial> մնացած www.row-ww.k/optimistic version և խիստ ստուգումներ։

Cross-method refund-ը առանց համակարգչի թույլտվության խախտում է refund-to-source-ը։

Void-ի և refund-ի խառնուրդը զեկույցներում ցույց է տալիս KPI-ի աղավաղումը։

Ոչ մի մեքենա-Swart-ը PBS-ի և ձեր սառցադաշտի միջև «սև անցքեր» է։

14) Պլեյբուկի

Պրովայդերի վերադարձի աճը պլանավորվում է ստուգել ավտոզիզացիոն ձախողումները/կաղնիները, ներառել ֆեյլերը, կապ PSA-ի հետ։

Զանգվածային partial-փոխհատուցումը (քարոզարշավը) խորհուրդ է տալիս բարձրացնել partial-ի սահմանը, ներառել խմբակային վիրահատությունները, ուժեղացնել նվազումները։

Webhuks-ի սխալը պլանավորվում է անցնել կիսագնդին, բարձրացնել TTL idempotenty-ը, հետաձգել Auto-refands-ը։

Refund-to-source (հազվադեպ) բացառությունը բացատրում է MLRO-ի էսկալացիան, փաստաթղթավորված վճարումը և նշումը 'comp _ aproved = www.ru։

15) Թեստային քեյսները (UAT/Lenta.ru)

1. Fox refund-ը մեկ capture-ից հետո ճիշտ շրջում է մնացորդը։

2. Partial (3 ռուբլիներ) շարքը նշված է www.capture-ի գումարը։ ապա fox մնացորդի վրա։

3. Idempotention 'նույն հարցման կրկնօրինակը 1 արդյունք է։

4. Webhuk-drebesg: 3 նույն ծանուցումը մեկ ապացույց է։

5. Սավկի 'արհեստական mismatch wwww.alert և ավտոկորեքսիա։

6. Իրավունքների սահմանափակումը 'գործակալը չի կարող գերազանցել սահմանափակումը։

7. Cut-off 'ուշ ռեֆանդի փորձը ճիշտ մերժում և տրամաբանություն է։

16) Ստուգման չեկի թերթ

  • Fox/partial + refund-to-source-ի քաղաքական գործիչները։
  • Idempotenty, retrai, webhuks և կես, DLQ։
  • Տվյալների մոդելը մնացած վերադարձի և reason _ code։
  • Լեգերը և ամենօրյա ավտոմեքենաները։
  • KPI/dashbord: Refund Rate, TtR, Error, Double Refund = 0։
  • Իրավունքները և apruv-մատրիցը, կոշիկի ձևանմուշները։
  • UAT-ի թեստային քեյսերը և մակարդակի ալերտները։

Ռեզյումե

Refands-ի կառավարումը գործընթացների խիստ կարգապահությունն է 'refund-to-source, idempotention, թափանցիկ տվյալների մոդել, avto-suck և հասկանալի քաղաքականություններ partial/fox։ Նման հիմքերով դուք պահում եք TTR-ն ցածր, սխալները 'զրոյի, դուբլի, անհնար են, իսկ կոմպլենսները և ֆինանսները համաժամեցված են բիզնեսի նպատակների հետ։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։