పేమెంట్ రికన్సిలియేషన్ లోపాలను పరిష్కరించడం
ఒక క్లయింట్ 2,000 డాలర్లు కోల్పోయారు. ఆ తేడాను కనుగొనడానికి వారి ఫైనాన్స్ లీడ్ నాలుగు రాత్రులు శ్రమించారు.
సమస్య ఒక retry job వల్ల వచ్చింది. సిస్టమ్ 120 పేమెంట్లను రెండుసార్లు ప్రాసెస్ చేసింది. ఇది కస్టమర్ల నుండి మళ్ళీ డబ్బులు వసూలు చేయలేదు, కానీ లెడ్జర్లో డబుల్ రికార్డులను మాత్రమే జోడించింది.
మేము దీనిని ఒక idempotency layer ద్వారా పరిష్కరించాము. ఇది ఒక పేమెంట్ కేవలం ఒక్కసారి మాత్రమే ప్రాసెస్ అయ్యేలా చూస్తుంది.
మేము దీనిని ఇలా చేశాము:
- డబుల్ రిక్వెస్ట్లను నిరోధించడానికి మేము Redis lock ఉపయోగించాము.
- బ్యాకప్గా డేటాబేస్లో ఒక unique indexను జోడించాము.
- గేట్వే పేరు మరియు transaction IDతో కూడిన కీని ఉపయోగించాము.
మేము ఎక్స్ఛేంజ్ రేట్లను (exchange rates) కూడా సరిచేశాము. సిస్టమ్ లైవ్ రేట్లను ఉపయోగిస్తోంది. రేట్లు వేగంగా మారుతుంటాయి, దీనివల్ల తేడాలు ఏర్పడుతున్నాయి.
ఇప్పుడు ఆర్డర్ ప్రారంభమైనప్పుడు మేము రేటును లాక్ చేస్తాము. కస్టమర్కు ఒక ధర కనిపిస్తుంది, ఫైనాన్స్ టీమ్కు కూడా అదే ధర కనిపిస్తుంది.
మేము ఒక రోజువారీ రిపోర్ట్ను కూడా రూపొందించాము. ఇది బ్యాంక్ CSV ఫైళ్లను మా రికార్డులతో పోల్చి చూస్తుంది. దీనివల్ల నెలవారీ పని గంటలు 15 నుండి 2 గంటలకు తగ్గాయి.
Excel మరియు అర్థరాత్రి వరకు పని చేయడంపై ఆధారపడటం ఆపండి. పేమెంట్ లోపాలు అనేవి డిజైన్ సమస్యలు.
డేటాబేస్ ఇండెక్స్తో ప్రారంభించండి. వ్యాపారం పెరిగే కొద్దీ Redis locks జోడించండి. పేమెంట్ నోటిఫికేషన్ కేవలం ఒక్కసారి మాత్రమే వస్తుందని ఎప్పుడూ అనుకోవద్దు.