សង្ខេបសម្រាប់អ្នកដឹកនាំ
ការភ្ជាប់ស្អាតបំផុត គឺពេលច្បាប់អាជីវកម្មស្នូល មិនអាស្រ័យលើ vendor SDK។ អ្នកបំបែក vendor ទុកក្រោយ adapter, ដំណើរការសកម្មភាពជាមួយ queue, និងរក្សាទុកការទំនាក់ទំនងខាងក្រៅជាកំណត់ត្រាអាច audit បាន។
វិធីសាស្ត្រ Clean Architecture
គិតជាស្រទាប់។ ស្រទាប់ “Domain” និង “Application” គួរតែមានស្ថិរភាព។ Gateway បង់ប្រាក់, SMS provider និងប្រព័ន្ធគណនេយ្យ ស្ថិតនៅស្រទាប់ Infrastructure (adapter)។
Controller មិនគួរហៅ payment SDK ដោយផ្ទាល់ទេ។ Controller ហៅ use-case service; use-case ហៅ interface; adapter អនុវត្ត interface នោះ។
លំហូរភ្ជាប់ដែលអាចប្រើក្នុងផលិតកម្ម
បង់ប្រាក់ និង SMS ជា “side effects”។ គួររក្សាទុកជាជំហាន asynchronous តាម queue បើអាច។ Accounting sync គួរតែមានភាពជាប់លាប់ និងអាច audit បាន—not “best effort”។
- Webhook ត្រូវបាន verify និងមាន idempotency (retry បានដោយសុវត្ថិភាព)។
- Accounting និង SMS ដំណើរការតាម queue (UI មិនយឺត)។
- រាល់ការហៅខាងក្រៅត្រូវបានកត់ត្រា (audit trail)។
Idempotency៖ ឧបករណ៍លេខ១សម្រាប់ភាពជឿជាក់
ក្នុង payment និង webhook ព្រឹត្តិការណ៍អាចកើតឡើងម្តងហើយម្តងទៀត។ Idempotency ធានាថា មិនស្ទួនបង់ប្រាក់ ឬស្ទួនបញ្ចូលគណនេយ្យ។
- បង្កើត payment intent
- ដំណើរការ webhook
- បញ្ចូលគណនេយ្យ
- ផ្ញើ SMS (ជៀសវាងស្ទួន)
- ប្រើ key = invoice_id + action
- រក្សាទុក event ដែលបានដំណើរការ
- បើដំណើរការរួច—return ទៅវិញ
- ធ្វើ job អាច retry បាន
អ្វីដែលគួរជៀសវាង
ត្រូវរក្សាទុកអ្វីខ្លះសម្រាប់ Audit និង Debug
អ្នកមិនចាំបាច់រក្សាទុកទាំងអស់ជារហូតទេ ប៉ុន្តែត្រូវមានគ្រប់គ្រាន់ ដើម្បីពន្យល់ side effect ខាងក្រៅទាំងអស់។
| កំណត់ត្រា | វាល | ហេតុផល |
|---|---|---|
| payment_attempts | invoice_id, idempotency_key, request, response, status | តាមដានជីវិត payment។ |
| webhook_events | provider, event_id, payload_hash, received_at, processed_at | Idempotency និង replay។ |
| accounting_posts | invoice_id, journal_ref, request, response, status, retries | Audit និង reconciliation។ |
| sms_messages | to, template, payload, provider_msg_id, status | តាមដានការផ្ញើ។ |
ត្រូវការជំនួយអនុវត្ត?
ReanOrt អាចរចនាស្ថាបត្យកម្មភ្ជាប់ អនុវត្ត webhook និង queue ដែលជឿជាក់ និងដឹកជញ្ជូនលំហូរហិរញ្ញវត្ថុដែលអាច audit បាន។