Rahul ne checkout pe PAY dabaya, network slow tha, screen atak gayi, aur usne dobara PAY dabaya. Ab server tak ek hi payment ki do requests pahunch sakti hain. Bina kisi protection ke server dono ko alag payment maan sakta hai aur paisa do baar kat sakta hai. Isi problem ka ek aam jawab hai idempotency key. Ye guide usi idea ko simple Hinglish mein samjhati hai, ek payments API ke official docs ke hisaab se. Har system apni tarah banta hai, isliye ise ek concept ki tarah padho, kisi ek app ki andar ki kahani ki tarah nahi.
- Idempotency ka matlab: ek request ko safely dobara bhej sakte ho, bina wahi kaam do baar hue.
- Key client (app) banata hai: ek unique value, jaise random UUID.
- Har retry mein wahi key jaati hai.
- Server pehli request ka jawab save karta hai; wahi key dobara aaye to saved jawab milta hai, kaam dobara nahi hota.
- Nayi key = nayi payment. Retry mein purani key hi bhejni hoti hai.
Step by step: do tap, ek payment
- App is payment try ke liye ek unique key banata hai (jaise k_7f3a91; ye banaya hua example hai).
- Pehli request: key ke saath server ko jaati hai. Server kaam karta hai (paisa katta hai) aur jawab key ke saath save kar leta hai.
- Network atakne par app dobara bhejta hai: wahi key ke saath.
- Server key pehchan leta hai, naya kaam nahi karta, bas pehle wala saved jawab wapas deta hai.
- Result: Rahul ko ek hi payment ka jawab milta hai, paisa ek hi baar kata.
Kya dhyan rakhna hai
- Key sensitive data se mat banao (email, personal id): random unique string ya UUID rakho.
- Retry mein wahi key bhejo. Naya key banaya to server use nayi payment manega.
- Server keys hamesha nahi rakhta. Ek payments API ke docs mein likha hai ki keys kam se kam 24 ghante purani hone ke baad hata di ja sakti hain; baad mein wahi key dobara aayi to nayi request ban jaati hai. Doosre systems mein ye samay alag ho sakta hai.
- Agar wahi key ke saath parameters badal diye (jaise amount), to wo server galat use maan kar error de sakta hai. Ek key = ek hi request.
- Ye protection tab hi kaam karti hai jab server ye feature support kare. Bina support ke app akele key bhej kar kuch nahi badal sakta.
Banaya hua example (asli code nahi)
| Try | Key | Server kya karta hai |
|---|---|---|
| Pehli baar PAY | k_7f3a91 | Kaam karta hai, jawab save karta hai |
| Dobara PAY (retry) | k_7f3a91 | Saved jawab deta hai, paisa dobara nahi katta |
| Nayi payment | k_c20b44 | Nayi key hai, naya kaam hota hai |
- Retry se pehle ek unique key banao, aur har retry mein wahi key bhejo.
Ye advice hai, guarantee nahi: payment jaise kaam mein hamesha apne provider ke official docs padho, kyunki features aur limits badalte rehte hain.