Թուրքական լիրա (փոխանցում)Մանրածախ5,750 թուման▲ +0.47%ԱՄՆ դոլարՄանրածախ281,320 թուման• 0.00%ԵվրոՄանրածախ316,790 թուման▲ +0.06%USDT → TRYՄանրածախ53.03 TRY▼ -0.08%Թուրքական լիրա (փոխանցում)Մեծածախ5,640 թուման• —ԱՄՆ դոլարՄեծածախ277,260 թուման• —ԵվրոՄեծածախ312,230 թուման• —USDT → TRYՄեծածախ52.05 TRY• —
Վերջին թարմացում՝ 06 հոկ, 2026 թ., 12:45 (Թեհրանի ժամանակով)

Այս էջը ներկայումս հասանելի է միայն պարսկերենով։

Մշակողների փաստաթղթեր

Hamta գործընկերների փոխարժեքների API

Այս API-ի միջոցով ձեր կայքը, առցանց խանութը կամ բոտը ստանում է ձեր գործընկերային հաշվի փոխարժեքները անմիջապես Hamta-ից՝ առանց գների ձեռքով մուտքագրման և միշտ համաժամեցված գործընկերների վահանակի հետ։

Ընդհանուր

Hamta API-ն միայն ընթերցման REST ծառայություն է, որը պատասխանը վերադարձնում է JSON ձևաչափով՝ UTF-8 կոդավորմամբ։ Յուրաքանչյուր API բանալի պատկանում է մեկ գործընկերային հաշվի և վերադարձնում է միայն այդ հաշվի փոխարժեքները՝ ձեր ինքնարժեքը Hamta-ից և ձեր հաճախորդի գինը՝ գործընկերների վահանակում ձեր իսկ սահմանած հավելագնով։ Շուկայի հղումային փոխարժեքներ այս API-ն չի տրամադրում։

Հիմնական հասցե

https://hamtagift.com

Բոլոր հարցումները պետք է ուղարկվեն HTTPS-ով։

Նույնականացում

Յուրաքանչյուր հարցում պետք է API բանալին ուղարկի Authorization վերնագրում՝ Bearer ձևով։ Բանալիները սկսվում են hamta_live_ նախածանցով։

  1. Մուտք գործեք գործընկերների վահանակ և բացեք «API և Telegram» էջը։
  2. Ստեղծեք նոր բանալի (Սեփականատեր, Կառավարիչ և Մշակող դերերը կարող են բանալի ստեղծել)։
  3. Բանալին ցուցադրվում է միայն մեկ անգամ․ պահեք այն ձեր սերվերի անվտանգ միջավայրի փոփոխականում։ Hamta-ն պահում է միայն բանալու գաղտնագրված (հեշ) պատճենը․ եթե կորցնեք բանալին, չեղարկեք այն և ստեղծեք նորը։
Հարցման վերնագիր
Authorization: Bearer hamta_live_…

Երբեք մի տեղադրեք API բանալին զննարկչի կողմի կոդում (էջի JavaScript), բջջային հավելվածում կամ հանրային կոդի պահոցում։ Հարցումներն ուղարկեք միայն ձեր սերվերից։

Փոխարժեքների ստացում

GET/api/partner/v1/rates

Վերադարձնում է ձեր գործընկերային հաշվի բոլոր գործիքների ընթացիկ փոխարժեքները։ Հարցումը պարամետրեր կամ մարմին չունի, և պատասխանը երբեք չի քեշավորվում (Cache-Control: no-store)։

Ժամեր և հասանելիություն

Փոխարժեքների API-ն պատասխանում է շուկայի աշխատանքային օրերին՝ Թեհրանի ժամանակով 11:00-ից 20:00 (վերջին ընդունվող հարցումը՝ 19:59-ին)։ Ուրբաթ օրերին և շուկայի պաշտոնական տոն օրերին այն փակ է։ Այս ժամերից դուրս վերադարձվում է 503՝ OUTSIDE_MARKET_HOURS կոդով․ Retry-After վերնագիրը ցույց է տալիս մինչև հաջորդ բացումը մնացած վայրկյանները, իսկ next_open դաշտը՝ բացման ժամը (ISO 8601, UTC)։

503
{
  "ok": false,
  "success": false,
  "error": "OUTSIDE_MARKET_HOURS",
  "message": "<string>",
  "market_hours": "11:00 - 20:00 Asia/Tehran",
  "next_open": "<ISO 8601 string>"
}

Թույլատրված IP-ների ցուցակը կամընտիր է և գրանցվում է Hamta-ի աջակցության կողմից՝ ձեր խնդրանքով։ Քանի դեռ ոչ մի հասցե գրանցված չէ, ձեր բանալիներն ընդունվում են ցանկացած IP-ից։ Եթե գրանցվի մեկ կամ մի քանի հասցե, ցանկացած այլ հասցեից եկող հարցում կմերժվի 403-ով և IP_NOT_ALLOWED կոդով։ Ընդունվում են միայն ճշգրիտ հանրային IPv4 կամ IPv6 հասցեներ (առանց միջակայքերի), առավելագույնը 10․ ցուցակը կիրառվում է ձեր հաշվի բոլոր բանալիների համար և երևում է գործընկերների վահանակում (API և Telegram բաժին)։

403
{
  "ok": false,
  "success": false,
  "error": "IP_NOT_ALLOWED",
  "message": "<string>"
}

Պատասխան

Հաջող պատասխանը վերադառնում է 200 կարգավիճակով։ Ստորև բերված կառուցվածքը ճշգրտորեն այն բանալիներն են, որոնք վերադարձնում է API-ն․ թվային արժեքների փոխարեն գրված է տվյալի տեսակը։ Ձեր հաշվի իրական պատասխանը տեսնելու համար բացեք գործընկերների վահանակի «API և Telegram» էջը։

Հաջող պատասխանի կառուցվածք
{
  "ok": true,
  "partner": "<string>",
  "updatedAt": "<ISO 8601 string | null>",
  "note": "buy = customer buys (خرید از ما), sell = customer sells (فروش به ما). null = not configured.",
  "rates": [
    {
      "code": "havaleLir",
      "label": "لیر حواله ترکیه",
      "unit": "TOMAN",
      "unitBasis": 1,
      "partnerCost": {
        "retail": {
          "buy": "<decimal string | null>",
          "sell": "<decimal string | null>"
        },
        "wholesale": {
          "buy": "<decimal string | null>",
          "sell": "<decimal string | null>"
        }
      },
      "customerPrice": {
        "retail": {
          "buy": "<decimal string | null>",
          "sell": "<decimal string | null>"
        },
        "wholesale": {
          "buy": "<decimal string | null>",
          "sell": "<decimal string | null>"
        }
      }
    },
    …
  ]
}

Դաշտեր

ԴաշտՏեսակՆկարագրություն
okbooleanՀաջող պատասխանում միշտ true է, սխալի պատասխանում՝ false։
partnerstringՁեր ընկերության անվանումը՝ ինչպես գրանցված է գործընկերային հաշվում։
updatedAtstring | nullHamta-ի հղումային փոխարժեքների վերջին թարմացման ժամանակը ISO 8601 (UTC) ձևաչափով․ null, եթե հայտնի չէ։
notestringՖիքսված նշում buy, sell և null արժեքների իմաստի մասին։
ratesarrayԳործիքների ցանկը՝ միշտ այս հերթականությամբ։
rates[].codestringԳործիքի կայուն նույնացուցիչ․ ձեր կոդում հենվեք այս դաշտի, ոչ թե label-ի վրա։
rates[].labelstringԳործիքի պարսկերեն ցուցադրվող անվանումը․ կարող է փոխվել։
rates[].unit"TOMAN" | "TRY"Գնի միավորը․ TOMAN՝ իրանական թուման, TRY՝ թուրքական լիրա։
rates[].unitBasisintegerԳինը նշված է այսքան միավորի համար․ օրինակ՝ 1000 նշանակում է 1000 միավորի գին։
rates[].partnerCost{ retail, wholesale }Ձեր ինքնարժեքը Hamta-ից՝ բաժանված մանրածախ (retail) և մեծածախ (wholesale) մակարդակների։
rates[].customerPrice{ retail, wholesale }Ձեր հաճախորդի գինը՝ ձեր ինքնարժեքը գումարած գործընկերների վահանակում ձեր սահմանած հավելագինը (լռելյայն՝ 1%)։ Զեղչային արշավի ժամանակ այդ հավելագինը կարող է իջնել մինչև -2%, և հաճախորդի գինը կարող է ավելի շահավետ լինել, քան ձեր ինքնարժեքը։ null է, եթե այդ ուղղության համար հավելագին սահմանված չէ։
….buystring | nullԳինը, որով ձեր հաճախորդը գնում է ձեզանից։
….sellstring | nullԳինը, որով ձեր հաճախորդը վաճառում է ձեզ։

Բոլոր գները տասնորդական թվի տող են (մինչև 6 տասնորդական նիշ) կամ null։ null նշանակում է «կարգավորված չէ»․ երբեք այն զրո մի համարեք։

Գործիքներ

rates ցանկը միշտ պարունակում է այս գործիքները՝ այս հերթականությամբ․

codeԳործիքunitunitBasis
havaleLirԹուրքական լիրայի փոխանցում (թուման՝ մեկ լիրայի դիմաց)TOMAN1
dollarԱՄՆ դոլար (թուման՝ մեկ դոլարի դիմաց)TOMAN1
euroԵվրո (թուման՝ մեկ եվրոյի դիմաց)TOMAN1
usdtToLirԹուրքական լիրա՝ մեկ USDT-ի դիմացTRY1
AMD_1000Հայկական դրամ (թուման՝ 1000 դրամի դիմաց)TOMAN1000
usdtPriceԹուման՝ մեկ USDT-ի դիմացTOMAN1
AFNԱֆղանական աֆղանի (թուման՝ մեկ աֆղանիի դիմաց)TOMAN1
onlineShopԱռցանց գնումների լիրա (թուման՝ մեկ լիրայի դիմաց)TOMAN1
sipayHamtaCard լիրա (թուման՝ մեկ լիրայի դիմաց)TOMAN1

Սխալներ

API-ի սխալները վերադառնում են JSON ձևաչափով՝ "ok": false և "error" դաշտում կոդով։ IP_NOT_ALLOWED և OUTSIDE_MARKET_HOURS սխալները լրացուցիչ պարունակում են "success": false և "message"՝ ձեր Accept-Language վերնագրի լեզվով (fa, en, tr, hy, հակառակ դեպքում՝ անգլերեն)։ Աղյուսակի վերջին երկու տողերը գալիս են կայքի անվտանգության շերտից և պարզ տեքստ են, ոչ թե JSON։

ԿարգավիճակerrorԻմաստըԻնչ անել
401missing_or_malformed_tokenAuthorization վերնագիրը բացակայում է, կամ բանալին hamta_live_ ձևաչափով չէ։Ուղարկեք վերնագիրը Bearer ձևով՝ ամբողջական բանալիով։
401invalid_tokenԲանալին անհայտ է կամ չեղարկված, կամ գործընկերային հաշիվը ակտիվ չէ։Ստեղծեք նոր բանալի գործընկերների վահանակում կամ կապվեք Hamta-ի հետ։
403IP_NOT_ALLOWEDԲանալին վավեր է, սակայն հարցումը չի եկել ձեր հաշվի թույլատրված IP ցուցակի հասցեից։Ուղարկեք գրանցված հասցեից կամ ցուցակը փոխելու համար կապվեք Hamta-ի աջակցության հետ։
429rate_limitedԱյս բանալիով մեկ րոպեում 60-ից ավելի հարցում։Սպասեք Retry-After վերնագրում նշված ժամանակը (վայրկյան) և քեշավորեք արդյունքը։
503OUTSIDE_MARKET_HOURSՇուկայի ժամերից դուրս (Թեհրանի ժամանակով 11:00–20:00) կամ շուկայի տոն օր։Սպասեք Retry-After-ին կամ next_open-ին և շարունակեք ցույց տալ ձեր վերջին վավեր փոխարժեքները։
503rates_unavailableՓոխարժեքները ժամանակավորապես հասանելի չեն։Պահեք ձեր վերջին վավեր փոխարժեքները և փորձեք ավելի ուշ։
403—Հարցումը մերժվել է կայքի անվտանգության կանոններով (պարզ տեքստ՝ Forbidden)։Եթե ձեր հարցումը սովորական է, կապվեք Hamta-ի աջակցության հետ։
429—Չափազանց շատ հարցումներ մեկ IP հասցեից (պարզ տեքստ)։Սպասեք Retry-After ժամանակը և մեծացրեք հարցումների միջև ընդմիջումը։

Սահմանաչափեր

  • Առավելագույնը 60 հարցում րոպեում՝ յուրաքանչյուր API բանալու համար։
  • Հարցումներին պատասխանվում է միայն շուկայի աշխատանքային օրերին՝ Թեհրանի ժամանակով 11:00–20:00 (տե՛ս «Ժամեր և հասանելիություն»)։
  • Թույլատրված IP ցուցակի պատճառով մերժված հարցումները չեն հաշվվում ձեր բանալու րոպեական սահմանաչափի մեջ։
  • Բացի այդ, յուրաքանչյուր IP հասցե ունի կայքի ընդհանուր առանձին սահմանաչափ (անընդհատ՝ վայրկյանում մոտ 2 հարցումից ոչ ավելի)։
  • Աջակցվում է միայն GET մեթոդը։

Պատրաստի կոդի օրինակներ

Ստորև բերված օրինակները բանալին կարդում են HAMTA_API_KEY միջավայրի փոփոխականից, ստուգում են սխալները և տպում յուրաքանչյուր գործիքի մանրածախ հաճախորդային գինը։ PHP օրինակը հարմար է WooCommerce-ի կամ Laravel-ի նման առցանց խանութների համար։

<?php
// Server side only: never send the API key to the browser.
$apiKey = getenv('HAMTA_API_KEY'); // hamta_live_...

$ch = curl_init('https://hamtagift.com/api/partner/v1/rates');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey, 'Accept: application/json'],
    CURLOPT_TIMEOUT        => 10,
]);
$body   = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
$error  = curl_error($ch);
curl_close($ch);

if ($body === false) {
    throw new RuntimeException('Hamta API unreachable: ' . $error);
}
$data = json_decode($body, true); // null for the plain-text 403/429 of the security layer
if ($status !== 200 || !is_array($data) || empty($data['ok'])) {
    // 401: check the key. 429: wait for Retry-After. 503: keep your last good prices.
    throw new RuntimeException('Hamta API error: ' . ($data['error'] ?? ('HTTP ' . $status)));
}

foreach ($data['rates'] as $rate) {
    // Prices are decimal strings or null (= not configured). Keep them as strings
    // (e.g. bcmath) rather than float for money.
    $sellToCustomer = $rate['customerPrice']['retail']['buy'];
    echo $rate['code'], ': ', $sellToCustomer ?? 'not configured', PHP_EOL;
}

Խորհուրդներ

  • Քեշավորեք արդյունքը ձեր սերվերում առնվազն մեկ րոպե՝ յուրաքանչյուր էջի դիտման համար նոր հարցում ուղարկելու փոխարեն։
  • Մշակեք գները որպես տող կամ ճշգրիտ տասնորդական տեսակ (Decimal, bcmath), ոչ թե լողացող կետով թիվ (float)։
  • Գործիքները փնտրեք code դաշտով․ label-ը միայն ցուցադրման համար է։
  • null արժեքը ցուցադրեք որպես «կարգավորված չէ» և երբեք դրա փոխարեն այլ թիվ մի դրեք։
  • Եթե հարցումը ձախողվի, պահեք վերջին վավեր փոխարժեքները՝ դրանց updatedAt ժամանակի հետ միասին։
  • Յուրաքանչյուր ծառայության կամ միջավայրի համար ստեղծեք առանձին բանալի, որպեսզի անհրաժեշտության դեպքում չեղարկեք միայն այն։

Պատրա՞ստ եք միանալու

API բանալիները ստեղծվում են գործընկերների վահանակում։ Եթե դեռ Hamta-ի գործընկեր չեք, կապվեք մեզ հետ՝ գործընկերային հաշիվ բացելու համար։