RielSync
ENខ្មែរ
ចូលប្រព័ន្ធចាប់ផ្តើម
Rates API

ទាញយកអត្រា NBC ចូលក្នុងប្រព័ន្ធរបស់អ្នកផ្ទាល់

HTTP endpoint មួយផ្តល់អត្រា USD ទៅ KHR ផ្លូវការរបស់ធនាគារជាតិនៃកម្ពុជា សម្រាប់ថ្ងៃណាដែល RielSync មាន។ វាសម្រាប់អ្នកអភិវឌ្ឍន៍ និងអ្នកដំឡើងប្រព័ន្ធ IT ដែលចង់ទាញអត្រាចូលក្នុងម៉ាស៊ីនគិតលុយ ERP ឬស្គ្រីប ជាជាងឱ្យ RielSync សរសេរចូលឱ្យ។

GET/public/v1/rates$3.99 ក្នុងមួយខែ ជាជម្រើសបន្ថែម

ចាប់ផ្តើមរហ័ស

  1. បង្កើត key នៅក្នុង console ក្រោម Settings, API keys។ ចម្លងវាពេលវាបង្ហាញ។
  2. ផ្ញើវាជា Bearer token លើសំណើ GET។
  3. អាន rate ពីចម្លើយ JSON។
curl
curl https://www.rielsync.com/public/v1/rates \
  -H "Authorization: Bearer rs_live_7f2c9a41e8b3d05c"
ចម្លើយ 200
{
  "date": "2026-09-17",
  "rate": 4040,
  "base": "USD",
  "quote": "KHR",
  "rate_date": "2026-09-17",
  "carried_forward": false
}

ការផ្ទៀងផ្ទាត់ខ្លួន

រាល់សំណើត្រូវមាន key ដែលបង្កើតនៅក្នុង console។ Key មានទម្រង់ rs_live_... ហើយជារបស់គណនី មិនមែនជារបស់ការតភ្ជាប់តែមួយទេ។ គណនីអាចមានរហូតដល់ប្រាំក្នុងពេលតែមួយ ដែលធ្វើឱ្យការផ្លាស់ប្តូរមានសុវត្ថិភាព៖ បង្កើត key ថ្មី ចង្អុលប្រព័ន្ធរបស់អ្នកទៅវា រួចលុប key ចាស់។

Header
Authorization: Bearer rs_live_7f2c9a41e8b3d05c

Key ដែលបាត់ ឬមិនស្គាល់ត្រឡប់ 401 invalid_key។ Key ត្រឹមត្រូវលើគណនីដែលគ្មាន API ត្រឡប់ 403 not_enabled។

ការហៅពីកម្មវិធីរុករក

ទំព័រនៅលើគេហទំព័ររបស់អ្នកផ្ទាល់អាចហៅ API ដោយផ្ទាល់បាន ព្រោះ API ទទួលសំណើពីគ្រប់ origin។ អនុញ្ញាតតែសំណើ GET ប៉ុណ្ណោះ ហើយ key ត្រូវដាក់ក្នុង header Authorization។ ស្គ្រីបរបស់អ្នកអាចអាន X-RateLimit-Limit X-RateLimit-Remaining និង Retry-After ពីចម្លើយបាន។ អ្វីៗនៅលើទំព័រសាធារណៈអាចត្រូវបានអានដោយអ្នកដែលមើលទំព័រនោះ រួមទាំង key របស់អ្នកផង។ បើអាច សូមហៅ API ពីម៉ាស៊ីនមេរបស់អ្នកផ្ទាល់ រួចបញ្ជូនអត្រាទៅទំព័រ។

បីរបៀបហៅ

/public/v1/ratesគ្មានប៉ារ៉ាម៉ែត្រ។ ត្រឡប់អត្រាសម្រាប់ថ្ងៃនេះតាមម៉ោងកម្ពុជា។ វាមិនដែលត្រឡប់កាលបរិច្ឆេទនាពេលអនាគតទេ។
/public/v1/rates?date=2026-09-19មួយថ្ងៃ។ ប្រសិនបើ NBC មិនបានផ្សព្វផ្សាយអ្វីសម្រាប់ថ្ងៃនោះ អត្រាមុនចុងក្រោយបំផុតត្រូវបានត្រឡប់ជាមួយ carried_forward: true។
/public/v1/rates?from=2026-09-01&to=2026-09-30ចន្លោះកាលបរិច្ឆេទ ត្រឡប់ជាបញ្ជីនៃ { date, rate }។ មានតែថ្ងៃដែល NBC បានផ្សព្វផ្សាយប៉ុណ្ណោះដែលបង្ហាញ។ ថ្ងៃចុងសប្តាហ៍ និងថ្ងៃឈប់សម្រាកមិនមានទេ ជាជាងត្រូវបានបំពេញ។

ឧទាហរណ៍ជាក់ស្តែង

ស្ថានភាពពិត ជាមួយសំណើ និងចម្លើយដូចដែលវាត្រឡប់មកពិតប្រាកដ។ កាលបរិច្ឆេទ និងអត្រាក្នុងឧទាហរណ៍ទាំងនេះជាតម្លៃគំរូ។

ថ្ងៃសៅរ៍ ម៉ាស៊ីនគិតលុយសុំអត្រាថ្ងៃនេះ

NBC មិនបានផ្សព្វផ្សាយអ្វីសម្រាប់ថ្ងៃសៅរ៍ ដូច្នេះអត្រាថ្ងៃសុក្រនៅតែជាអត្រាមានប្រសិទ្ធភាពសម្រាប់ថ្ងៃនោះ។
GET /public/v1/rates
Authorization: Bearer rs_live_7f2c9a41e8b3d05c
200 OK
{
  "date": "2026-09-19",
  "rate": 4043,
  "base": "USD",
  "quote": "KHR",
  "rate_date": "2026-09-18",
  "carried_forward": true
}
date គឺជាថ្ងៃសៅរ៍ដែលម៉ាស៊ីនគិតលុយបានសួរ។ rate_date គឺជាថ្ងៃសុក្រដែល NBC បានផ្សព្វផ្សាយពិតប្រាកដ។ carried_forward ប្រាប់អ្នកថាទាំងពីរខុសគ្នា ដូច្នេះអ្នកអាចបង្ហាញកាលបរិច្ឆេទប្រភពលើបង្កាន់ដៃបាន បើចាំបាច់។

ល្ងាចថ្ងៃសុក្រ សុំអត្រាថ្ងៃច័ន្ទ

NBC ផ្សព្វផ្សាយអត្រាប្រចាំថ្ងៃនៅរសៀលមុន ដូច្នេះថ្ងៃច័ន្ទមានរួចហើយនៅថ្ងៃសុក្រ។
GET /public/v1/rates?date=2026-09-21
Authorization: Bearer rs_live_7f2c9a41e8b3d05c
200 OK
{
  "date": "2026-09-21",
  "rate": 4046,
  "base": "USD",
  "quote": "KHR",
  "rate_date": "2026-09-21",
  "carried_forward": false
}
ការហៅដោយគ្មានប៉ារ៉ាម៉ែត្រនៅថ្ងៃសុក្រដដែលនោះនៅតែត្រឡប់ថ្ងៃសុក្រ។ Endpoint មិនដែលត្រឡប់កាលបរិច្ឆេទអនាគតទេ លុះត្រាតែអ្នកសុំតាមឈ្មោះ។

សុំកាលបរិច្ឆេទដែល NBC មិនទាន់ផ្សព្វផ្សាយ

កាលបរិច្ឆេទដែលនៅឆ្ងាយជាងអ្វីដែល NBC បានទៅដល់ ត្រឡប់កំហុស ជាជាងការទាយ។
GET /public/v1/rates?date=2026-10-15
Authorization: Bearer rs_live_7f2c9a41e8b3d05c
404 Not Found
{
  "error": "rate_not_yet_published",
  "message": "No rate has been published for 2026-10-15."
}
សាកល្បងម្តងទៀតបន្ទាប់ពី NBC ផ្សព្វផ្សាយ ជាទូទៅនៅរសៀលមុនថ្ងៃដែលអត្រាមានប្រសិទ្ធភាព។ កុំប្រើអត្រាចាស់សម្រាប់កាលបរិច្ឆេទអនាគតនៅក្នុងកូដរបស់អ្នក។

ចុងខែ ទាញយកទាំងខែ

ចន្លោះកាលបរិច្ឆេទត្រឡប់តែថ្ងៃដែល NBC បានផ្សព្វផ្សាយប៉ុណ្ណោះ។
GET /public/v1/rates?from=2026-09-01&to=2026-09-30
Authorization: Bearer rs_live_7f2c9a41e8b3d05c
200 OK
{
  "base": "USD",
  "quote": "KHR",
  "rates": [
    { "date": "2026-09-01", "rate": 4038 },
    { "date": "2026-09-02", "rate": 4039 },
    { "date": "2026-09-03", "rate": 4041 },
    { "date": "2026-09-04", "rate": 4040 },
    { "date": "2026-09-07", "rate": 4042 },
    { "date": "2026-09-08", "rate": 4042 },
    { "date": "2026-09-09", "rate": 4043 },
    { "date": "2026-09-10", "rate": 4041 },
    { "date": "2026-09-11", "rate": 4042 },
    { "date": "2026-09-14", "rate": 4044 },
    { "date": "2026-09-15", "rate": 4043 },
    { "date": "2026-09-16", "rate": 4041 },
    { "date": "2026-09-17", "rate": 4040 },
    { "date": "2026-09-18", "rate": 4043 },
    { "date": "2026-09-21", "rate": 4046 },
    { "date": "2026-09-22", "rate": 4045 },
    { "date": "2026-09-23", "rate": 4044 },
    { "date": "2026-09-25", "rate": 4044 },
    { "date": "2026-09-28", "rate": 4045 },
    { "date": "2026-09-29", "rate": 4046 },
    { "date": "2026-09-30", "rate": 4045 }
  ]
}
ថ្ងៃទី 5 និងទី 6 ជាចុងសប្តាហ៍ ដូច្នេះវាមិនមាន ជាជាងត្រូវបានធ្វើម្តងទៀត។ ធាតុ 21 សម្រាប់ខែដែលមាន 9 ថ្ងៃមិនផ្សព្វផ្សាយ គឺត្រឹមត្រូវ មិនមែនជាចន្លោះខ្វះក្នុងទិន្នន័យទេ។

អត្រាថ្មីបំផុតរបស់យើងចាស់ពេកមិនអាចផ្តល់បាន

ប្រសិនបើអត្រាថ្មីបំផុតដែលយើងមានចាស់ជាងប្រាំថ្ងៃធ្វើការ endpoint ត្រឡប់កំហុសជំនួសឱ្យការផ្តល់វា។
GET /public/v1/rates
Authorization: Bearer rs_live_7f2c9a41e8b3d05c
503 Service Unavailable
{
  "error": "rate_stale",
  "message": "The most recent rate on file is older than 5 business days."
}
លេខចាស់ដែលមិនមានអ្នកដឹងហើយបញ្ចូលលើវិក្កយបត្រ អាក្រក់ជាងសំណើដែលបរាជ័យឱ្យឃើញ ដូច្នេះយើងត្រឡប់កំហុស។ សូមពិនិត្យទំព័រស្ថានភាព ហើយអត្រានឹងត្រឡប់មកវិញភ្លាមៗ នៅពេលអត្រាថ្មីត្រូវបានកត់ត្រា។

វាលនៃចម្លើយ

វាលប្រភេទអត្ថន័យ
datestringថ្ងៃដែលអត្រាអនុវត្ត គឺថ្ងៃដែលអ្នកបានសុំ។
ratenumberរៀលក្នុង 1 USD ដូចដែល NBC ផ្សព្វផ្សាយ។
basestringជា USD ជានិច្ច។
quotestringជា KHR ជានិច្ច។
rate_datestringកាលបរិច្ឆេទរបស់ NBC ផ្ទាល់សម្រាប់លេខដែលត្រូវបានត្រឡប់។
carried_forwardbooleanfalse នៅពេល date និង rate_date ដូចគ្នា។ true នៅពេលគ្មានអត្រាត្រូវបានផ្សព្វផ្សាយសម្រាប់ថ្ងៃដែលអ្នកបានសុំ ដូច្នេះអត្រាមុនចុងក្រោយបំផុតកំពុងត្រូវបានប្រើ។

កំហុស

ស្ថានភាពកូដអត្ថន័យ
401invalid_keyKey បាត់ ខុសទម្រង់ ឬត្រូវបានលុប។
403not_enabledKey ត្រឹមត្រូវ ប៉ុន្តែគណនីមិនមាន Rates API បច្ចុប្បន្នទេ។
400invalid_dateប៉ារ៉ាម៉ែត្រកាលបរិច្ឆេទមិនមែនជាកាលបរិច្ឆេទពិតក្នុងទម្រង់ YYYY-MM-DD ទេ។
400range_too_largeចន្លោះ from និង to វែងជាងអ្វីដែលសំណើតែមួយអាចគ្របដណ្តប់។
404rate_not_yet_publishedកាលបរិច្ឆេទត្រឹមត្រូវ ប៉ុន្តែ NBC មិនទាន់ផ្សព្វផ្សាយអត្រាសម្រាប់វាទេ។
404no_rate_availableកាលបរិច្ឆេទនៅមុនអ្វីទាំងអស់ដែលយើងមានក្នុងកំណត់ត្រា។
429rate_limitedសំណើច្រើនពេកលើ key នេះ។ រង់ចាំចំនួនវិនាទីក្នុង header Retry-After រួចសាកល្បងម្តងទៀត។
503rate_staleអត្រាថ្មីបំផុតរបស់យើងចាស់ជាងអ្វីដែលយើងយល់ព្រមផ្តល់។
500internal_errorមានអ្វីមួយខុសនៅខាងយើង។ សាកល្បងម្តងទៀតបន្តិចក្រោយ។

ដែនកំណត់ និងការប្រើប្រាស់ត្រឹមត្រូវ

Key នីមួយៗត្រូវបានកំណត់ត្រឹម 10 សំណើក្នុងមួយវិនាទី 3,000 ក្នុងមួយម៉ោង និង 20,000 ក្នុងមួយថ្ងៃ។ ដែនកំណត់ប្រចាំម៉ោងកំណត់ឡើងវិញនៅដើមម៉ោង។ ដែនកំណត់ប្រចាំថ្ងៃកំណត់ឡើងវិញនៅពាក់កណ្តាលអធ្រាត្រម៉ោងកម្ពុជា។ ដែនកំណត់ក្នុងមួយវិនាទីគឺប្រហែល។ ការលើសដែនកំណត់ត្រឡប់ 429 rate_limited ជាមួយ header Retry-After ដែលប្រាប់ចំនួនវិនាទីត្រូវរង់ចាំ។ ចម្លើយដែលជោគជ័យរួមមាន X-RateLimit-Limit និង X-RateLimit-Remaining សម្រាប់ដែនកំណត់ប្រចាំម៉ោង។

ដែនកំណត់ក្នុងមួយ keyកំណត់ឡើងវិញ
ក្នុងមួយវិនាទី10រំកិល ប្រហែល
ក្នុងមួយម៉ោង3,000នៅដើមម៉ោង
ក្នុងមួយថ្ងៃ20,000ពាក់កណ្តាលអធ្រាត្រម៉ោងកម្ពុជា

សំណើដែលមិនមាន key ឬមាន key មិនត្រឹមត្រូវ ត្រូវបានរាប់តាមអាសយដ្ឋាននីមួយៗ។ បន្ទាប់ពីមាន 20 សំណើក្នុងរយៈពេល 10 នាទី អាសយដ្ឋាននោះនឹងត្រូវរារាំងរយៈពេល 15 នាទី ហើយសំណើពីអាសយដ្ឋាននោះនឹងទទួលបាន 429 ជាមួយ header Retry-After។ សំណើដែលមាន key ត្រឹមត្រូវមិនត្រូវបានរាប់ទេ។

រក្សាអត្រាទុក កុំសួរគ្រប់ការលក់អត្រាប្តូរយ៉ាងច្រើនម្តងក្នុងមួយថ្ងៃ។ ទាញវាពេលម៉ាស៊ីនគិតលុយ ឬម៉ាស៊ីនមេចាប់ផ្តើម រក្សាទុកក្នុងអង្គចងចាំ ឬទំហំផ្ទុកក្នុងម៉ាស៊ីន ហើយធ្វើឱ្យស្រស់ម្តងនៅពេលល្ងាចបន្ទាប់ពី NBC ផ្សព្វផ្សាយ។ ហាងដែលរវល់គួរធ្វើសំណើតែប៉ុន្មានដងក្នុងមួយថ្ងៃ មិនមែនម្តងក្នុងមួយប្រតិបត្តិការទេ។

អ្នកដែលស្រួលភ្ជាប់ការហៅ HTTP អាចប្រើ API ជាមួយ SambaPOS បាន ហើយក្រុម RielSync ព្រមជួយ។ មិនមាន plugin ដែលបានរៀបចំរួចទេ។ POSFlow Solutions ជាក្រុមហ៊ុនប្រព័ន្ធលក់ (point of sale) របស់យើងផ្ទាល់ មានមុខងារនេះភ្ជាប់មកស្រាប់ ដូច្នេះអតិថិជនរបស់ POSFlow Solutions មិនចាំបាច់សរសេរកូដទេ។

ជាភាសាផ្សេងទៀត

JavaScript
const res = await fetch(
  "https://www.rielsync.com/public/v1/rates",
  { headers: { Authorization: `Bearer ${key}` } }
);
const { rate, rate_date } = await res.json();
Python
r = requests.get(
    "https://www.rielsync.com/public/v1/rates",
    headers={"Authorization": f"Bearer {key}"},
)
rate = r.json()["rate"]

ទាំងនេះជាសំណើ HTTP ធម្មតាដែលសរសេរចេញ។ RielSync មិនផ្តល់ជាបណ្ណាល័យ client ទេ។

$3.99 ក្នុងមួយខែបន្ថែមលើគម្រោងណាមួយ ឬ $5.99 ក្នុងមួយខែដាច់ដោយឡែកតម្លៃពេញ និងអ្វីដែលគម្រោងនីមួយៗរួមបញ្ចូល មាននៅលើទំព័រតម្លៃ។
មើលតម្លៃ