Ծրագրավորողի ուղեցույց · API v1

Ընդունեք քարտային վճարումներ GetPay-ի վճարման հղումներով

Ստեղծեք վճարման հղում ձեր սերվերից, ուղարկեք հաճախորդին այդ հղումով և ստացեք ծանուցում, երբ նա վճարի։ GetPay-ը տրամադրում է վճարման էջը, աշխատում է բանկի հետ և ձեզ հայտնում յուրաքանչյուր արդյունքի մասին։

Այս էջի բոլոր օրինակներն օգտագործում են այս հասցեն։ Տեղադրեք ձերը GetPay կառավարման վահանակից (Դոմեն բաժին)․ յուրաքանչյուր խանութ ունի իր հասցեն՝ իր դոմենի վրա։

01Ինչպես է աշխատում

Վճարման հղումը GetPay-ում տեղակայված վճարման էջ է մեկ պատվերի համար։ Ձեր սերվերը ստեղծում է այն ձեր պատվերի տվյալներով, իսկ մնացածը հոգում է GetPay-ը։

  1. Ձեր սերվերըՍտեղծում է վճարման հղում՝ ապրանքներով, գումարով և ձեր պատվերի համարով։ GetPay-ը վերադարձնում է url։
  2. Ձեր կայքըՎերահղում է հաճախորդին այդ url-ին։
  3. ՀաճախորդըՍտուգում է պատվերը, մուտքագրում իր տվյալները և վճարում քարտով բանկի պաշտպանված էջում։ Եթե քարտը մերժվում է, նա կարող է նորից փորձել նույն հղումով։
  4. GetPayՍտուգում է արդյունքը բանկում, ուղարկում հաճախորդին ձեր success_url-ին և ձեր սերվերին ուղարկում payment_link.completed webhook։
  5. Ձեր սերվերըՀաստատում է վճարումը և կատարում պատվերը։
sequenceDiagram
    participant S as Ձեր սերվերը
    participant C as Հաճախորդը
    participant G as GetPay
    participant B as Բանկ (vPOS)
    S->>G: POST /payment-links
    G-->>S: { id, url }
    S->>C: Վերահղում url-ին
    C->>G: Բացում է վճարման էջը, սեղմում «Վճարել»
    G->>B: Վճարման գրանցում
    C->>B: Քարտի տվյալներ, 3-D Secure
    B->>G: Արդյունք
    G->>C: Վերահղում success_url-ին
    G->>S: Webhook payment_link.completed
    S->>G: GET /payment-links/{id} (հաստատում)
      

02Նախքան սկսելը

Ձեր դոմենը և բազային URL-ը

API-ն աշխատում է ձեր սեփական դոմենի վրա, ոչ թե getpay.am-ի։ GetPay կառավարման վահանակում բացեք Դոմեն բաժինը, մուտքագրեք ձեր դոմենը (օրինակ՝ shopx.am) և ավելացրեք ցուցադրված չորս DNS գրառումները, որոնք բոլորը ցույց են տալիս GetPay-ի IP հասցեն․

ՏեսակԱնունՆշանակություն
AapiՁեր API-ի բազային URL-ը՝ https://api.shopx.am/api/v1
AmerchantՁեր կառավարման վահանակը
AcheckoutՎճարման էջերը, որտեղ վճարում են ձեր հաճախորդները
AreceiptԱնդորրագրերի էջերը

Այնուհետև սեղմեք Ստուգել միացումը։ Երբ բոլոր գրառումները գտնվեն, վահանակում կերևա ձեր API-ի բազային URL-ը։ Ցանկացած այլ հասցեի, այդ թվում՝ api.getpay.am-ի ուղարկված հարցումները մերժվում են 403 պատասխանով։

API բանալիներ

Ձեր բանալիները գտնվում են GetPay կառավարման վահանակի Գլխավոր → API բանալիներ բաժնում։ Դրանք երկուսն են՝ յուրաքանչյուր միջավայրի համար մեկական․

ԲանալիԻնչի համար է
sk_sandbox_…Մշակում և թեստավորում։ Վճարումներն ավարտվում են GetPay-ի թեստային էջում․ բանկին դիմում չի կատարվում, և գումար չի գանձվում։
sk_live_…Իրական վճարումներ։ Աշխատում է այն բանից հետո, երբ ձեր առևտրականի հաշիվն անցնում է live ռեժիմի և բանկը միացված է։

Բանալին փոխանցեք յուրաքանչյուր հարցման Authorization header-ում․

Գաղտնի բանալիները պահեք ձեր սերվերում։Երբեք մի տեղադրեք դրանք բրաուզերում, բջջային հավելվածում կամ հանրային ռեպոզիտորիայում։ Պահեք դրանք միջավայրի փոփոխականում, օրինակ՝ GETPAY_SECRET_KEY։

Պայմանավորվածություններ

  • Գումարները նշվում են նվազագույն միավորներով (լումա)։ 150000-ը նշանակում է 1 500,00 AMD։ Միշտ ուղարկեք ամբողջ թվեր։
  • Արժույթ՝ GetPay-ի կողմից միացված արժույթները՝ GET /meta/currencies (առայժմ AMD)։ Մյուսները վերադարձնում են CURRENCY_NOT_SUPPORTED։
  • Հարցումները և պատասխանները JSON ձևաչափով են։ Ուղարկեք Content-Type: application/json։
  • Ժամանակը նշվում է UTC-ով՝ ISO 8601 ձևաչափով, օրինակ՝ 2026-09-30T10:15:00Z։
  • Նույնականացուցիչները UUID են։ Պահեք վճարման հղման id-ն ձեր պատվերի հետ։

03Վճարման հղման ստեղծում

POST/payment-links

Կանչեք այս մեթոդը ձեր սերվերից, երբ հաճախորդը պատրաստ է վճարել։ Ուղարկեք, թե ինչ է նա գնում, ով է նա (եթե գիտեք) և ուր ուղարկել նրան վճարումից հետո։

Պարամետրեր

Ուղարկեք կա՛մ line_items, կա՛մ amount, բայց ոչ երկուսը միասին։ Մնացած ամեն ինչը պարտադիր չէ։

ԴաշտՊարտադիրՆկարագրություն
line_items[]Երկուսից մեկըԱպրանքները, որոնց համար վճարում է հաճախորդը՝ մինչև 100 հատ։ Ընդհանուր գումարը հաշվարկվում է դրանց հիման վրա։
line_items[].nameԱյոԱպրանքի անվանումը, որը ցուցադրվում է վճարման էջում։ Մինչև 255 նիշ։
line_items[].unit_amountԱյոՄեկ միավորի գինը՝ նվազագույն միավորներով։
line_items[].quantityՈչ1-ից 10 000։ Լռելյայն՝ 1։
line_items[].descriptionՈչԿարճ տեքստ անվանման տակ։ Մինչև 1 000 նիշ։
line_items[].image_urlՈչՆկարի հանրային http(s) հասցե, որը ցուցադրվում է ապրանքի կողքին։
line_items[].product_idՈչՁեր SKU-ն կամ ապրանքի նույնականացուցիչը։
line_items[].metadataՈչ«Բանալի — արժեք» տողային զույգեր՝ ձեր սեփական կարիքների համար։
line_items[].ehdmՈչՖիսկալ կտրոնի տվյալներ։ Պարտադիր է, երբ Է-ՀԴՄ-ն միացված է, տե՛ս Ֆիսկալ կտրոններ։
amountԵրկուսից մեկըՖիքսված ընդհանուր գումար՝ նվազագույն միավորներով, երբ ապրանքներ չեք ուղարկում։ Պահանջում է title կամ description։
currencyՈչAMD (լռելյայն) կամ GetPay-ի կողմից միացված այլ արժույթ (տե՛ս GET /meta/currencies)։
titleՈչՎերնագիր վճարման էջում, օրինակ՝ «Պատվեր №1001»։
descriptionՈչԱվելի երկար տեքստ էջում։ Մինչև 2 000 նիշ։
merchant_referenceՈչՁեր պատվերի համարը։ Վերադարձվում է հղման, դրա վճարումների և յուրաքանչյուր webhook-ի մեջ․ դրանով կարելի է որոնել։
languageՈչԷջի լեզուն՝ hy (լռելյայն), en կամ ru։ Հաճախորդը կարող է փոխել այն։
customer.emailՈչՆախապես լրացվում է վճարման էջում։
customer.nameՈչՆախապես լրացվում է վճարման էջում։
customer.phoneՈչՆախապես լրացվում է վճարման էջում։
customer.external_idՈչՁեր հաճախորդի նույնականացուցիչը։ Հաճախորդին երբեք չի ցուցադրվում։
customer.addressՈչline1, line2, city, region, postal_code, country (երկտառ կոդ, օրինակ՝ AM)։
customer_fieldsՈչԻնչ տվյալներ է հարցնում էջը։ email, name, phone, address դաշտերից յուրաքանչյուրի համար՝ required, optional կամ hidden։ Լռելյայն՝ էլ․ փոստը պարտադիր է, անունն ու հեռախոսը՝ ոչ պարտադիր, հասցեն՝ թաքցված։
success_urlՈչՈւր է գնում հաճախորդը վճարելուց հետո։ GetPay-ը հասցեին ավելացնում է payment_link_id, payment_id, receipt_number և receipt_url (տե՛ս Անդորրագրեր)։
cancel_urlՈչ«Վերադառնալ խանութ» հղումը վճարման էջում։
payment_methodsՈչՍահմանափակում է առաջարկվող վճարման եղանակները, օրինակ՝ ["ameriabank"]։ Լռելյայն՝ բոլորը, որոնք միացված են ձեզ մոտ։
expires_in_minutesՈչ30-ից 43 200 (30 օր)։ Լռելյայն՝ 1 440 (24 ժամ)։
metadataՈչՄինչև 50 բանալի։ Բանալիները՝ մինչև 40 նիշ, արժեքները՝ մինչև 500։ Վերադարձվում է հղման, դրա վճարումների և webhook-ների մեջ։
ehdmՈչՖիսկալ կտրոնի կարգավորումներ՝ skip, skip_reason, item։ Տե՛ս Ֆիսկալ կտրոններ։

Պատասխան

201 Created՝ վճարման հղումով։ Պահեք id-ն ձեր պատվերի հետ և ուղարկեք հաճախորդին url-ին։

Եթե հարցման սպասման ժամանակը լրանա,դուք կարող եք չիմանալ՝ հղումը ստեղծվե՞լ է, թե ոչ։ Նորը ստեղծելուց առաջ գտեք այն ձեր պատվերի համարով՝ GET /payment-links?merchant_reference=order-1001։

04Հաճախորդի ուղղորդում վճարման էջ

Վերահղեք հաճախորդի բրաուզերը պատասխանում ստացված url-ին։ Էջը ցուցադրում է ձեր բիզնեսի անվանումը, ապրանքները և ընդհանուր գումարը, հարցնում է ձեր ընտրած դաշտերը և առաջարկում վճարել քարտով։ Հաճախորդը կարող է ընտրել հայերեն, անգլերեն կամ ռուսերեն լեզուն։

Ինչ է լինում հետո

ԱրդյունքՈւր է հայտնվում հաճախորդը
վճարվածՁեր success_url-ը՝ ավելացված ?payment_link_id=…&payment_id=…&receipt_number=…&receipt_url=… պարամետրերով։ Եթե success_url չկա՝ GetPay-ի հաստատման էջը՝ անդորրագրի հղումով։
մերժվածԿրկին վճարման էջում՝ պատճառի նշումով (օրինակ՝ «Քարտի վրա բավարար գումար չկա»)։ Նա կարող է նորից փորձել կամ օգտագործել այլ քարտ, քանի դեռ հղման ժամկետը չի լրացել։
սեղմել է «հետ»Ձեր cancel_url-ը։ Հղումը մնում է բաց, այնպես որ նա կարող է վերադառնալ դրան։
Վերահղումը վճարման ապացույց չէ։Ցանկացած մարդ կարող է բացել ձեր հաջողության էջը ցանկացած պարամետրերով։ Պատվերը կատարելուց առաջ միշտ հաստատեք վճարումը ձեր սերվերում։

05Վճարման հաստատում

Օգտագործեք եղանակներից որևէ մեկը կամ երկուսը միասին։ Webhook-ներն ավելի հուսալի են, քանի որ դրանք հասնում են նույնիսկ այն դեպքում, երբ հաճախորդը փակում է բրաուզերը՝ ձեր հաջողության էջին չհասած։

  • Webhook՝ մշակեք payment_link.completed իրադարձությունը (տե՛ս Webhook-ներ)։
  • API՝ երբ հաճախորդը հայտնվում է ձեր success_url-ում, հարցրեք հղման տվյալները։
GET/payment-links/{id}

Պատվերը կատարեք միայն այն դեպքում, երբ status-ը complete է, payment_status-ը՝ paid, իսկ amount_total-ը և currency-ն համընկնում են ձեր պատվերի հետ։ Այս կանչը նաև կրկին ստուգում է բանկում սպասման մեջ գտնվող վճարումը։

Վճարման հղման կարգավիճակներ

statusՆշանակություն
openՍպասում է վճարման։ Մերժված փորձերից հետո հղումը մնում է բաց։
completeՎճարված է։ payment_status-ը paid է, իսկ payment դաշտում հաջողված վճարումն է։
expiredexpires_at ժամկետը լրացել է մինչև վճարումը։
canceledԴուք փակել եք այն POST /payment-links/{id}/expire կանչով։

Վճարման կարգավիճակներ

Վճարելու յուրաքանչյուր փորձ վճարում է, որը վերադարձվում է հղման payment դաշտում և վճարումների API-ով։

statusՆշանակություն
pendingՀաճախորդը վճարում է, կամ բանկը դեռ չի հաստատել։
succeededԳումարը գանձվել է քարտից։
failedՄերժված է։ Պատճառը նշված է failure_reason-ում։ Հաճախորդը կարող է նորից փորձել։
refundedԱմբողջությամբ վերադարձված է։
partially_refundedԳումարի մի մասը վերադարձված է։ Տե՛ս amount_refunded։
reversedԴուք չեղարկել եք ամբողջ վճարումը բանկում 72 ժամվա ընթացքում։ Տե՛ս reversed_at։
canceledԸնդհատված է, օրինակ՝ հղումը չեղարկվել է վճարման ընթացքում։

06Webhook-ներ

Երբ որևէ բան է տեղի ունենում, GetPay-ը HTTPS POST հարցում է ուղարկում ձեր սերվերին, այնպես որ API-ն պարբերաբար հարցնելու կարիք չկա։ Յուրաքանչյուր հարցում ստորագրված է գաղտնի բանալիով, որը հայտնի է միայն ձեզ և GetPay-ին։

Endpoint-ի կարգավորում

  • Կառավարման վահանակում բացեք Webhook-ներ բաժինը, ընտրեք Sandbox կամ Live և ավելացրեք ձեր URL-ը, օրինակ՝ https://your-site.am/webhooks/getpay։
  • Ընտրեք բոլոր իրադարձությունները կամ միայն ձեզ անհրաժեշտները։
  • Պատճենեք ստորագրման գաղտնի բանալին (whsec_…) և պահեք այն ձեր սերվերում որպես GETPAY_WEBHOOK_SECRET։ Այն տարբերվում է ձեր API բանալուց։
  • Սեղմեք Ուղարկել թեստ՝ ձեր endpoint-ը ստուգելու համար։ Կառավարման վահանակը ցուցադրում է յուրաքանչյուր առաքում՝ ձեր սերվերի պատասխանի հետ միասին։

Live endpoint-ները պետք է օգտագործեն https://։ Sandbox endpoint-ները կարող են օգտագործել http://։ GetPay-ը չի կարող հասնել localhost-ին․ մշակման ընթացքում ձեր համակարգչում իրադարձություններ ստանալու համար օգտագործեք թունել, օրինակ՝ ngrok http 8001, և գրանցեք դրա տրամադրած հանրային URL-ը։

Իրադարձություններ

ԻրադարձությունԵրբdata.object
payment_link.completedՀղումը վճարվել է։ Պատվերը կատարեք այս իրադարձության հիման վրա։վճարման հղում
payment.succeededՔարտային վճարումը հաստատվել է։վճարում
payment.failedՎճարման փորձը մերժվել է։ Հաճախորդը դեռ կարող է նորից փորձել և վճարել։վճարում
payment.refundedՎճարումն ամբողջությամբ կամ մասնակի վերադարձվել է։վճարում
payment.reversedՎճարումն ամբողջությամբ չեղարկվել է բանկում։վճարում
receipt.createdՎճարումը կատարվել է, և թողարկվել է անդորրագիր։ Ուղարկեք url-ը հաճախորդին։անդորրագիր
receipt.updatedԱնդորրագիրը փոխվել է վերադարձից կամ չեղարկումից հետո։անդորրագիր
payment_link.canceledԴուք փակել եք հղումը API-ի միջոցով։վճարման հղում
webhook.testԴուք սեղմել եք «Ուղարկել թեստ» կառավարման վահանակում։թեստային հաղորդագրություն

Հարցման ձևաչափ

HeaderԱրժեք
GetPay-Signaturet=1790755839,v1=5f2b…՝ ուղարկման ժամանակը և HMAC-SHA256 ստորագրությունը։
GetPay-Event-IdԻրադարձության եզակի նույնականացուցիչ։ Օգտագործեք այն՝ կրկնօրինակները անտեսելու համար։
GetPay-Event-TypeՕրինակ՝ payment_link.completed։
Content-Typeapplication/json

data.object-ն ունի ճիշտ նույն կառուցվածքը, ինչ տվյալ օբյեկտի API պատասխանը։

Ստորագրության ստուգում

Ստորագրությունը HMAC-SHA256(secret, t + "." + raw_body) է՝ hex ձևաչափով։ Հաշվարկեք այն հարցման չփոփոխված մարմնի վրա (վերակոդավորված JSON-ը չի համընկնի), համեմատեք հաստատուն ժամանակում և մերժեք 5 րոպեից հին հարցումները։

Պատասխան և կրկնակի փորձեր

  • Վերադարձրեք ցանկացած 2xx կոդ 10 վայրկյանի ընթացքում։ Դանդաղ աշխատանքը (նամակներ, պահեստի թարմացում, ERP համաժամացում) կատարեք ֆոնային առաջադրանքով՝ պատասխանելուց հետո։
  • Ցանկացած այլ դեպքում առաքումը կրկնվում է 1 րոպե, 5 րոպե, 30 րոպե, 2 ժամ, 6 ժամ, 12 ժամ և 24 ժամ անց։ Դրանից հետո առաքումը նշվում է որպես ձախողված, և այն կարող եք նորից ուղարկել կառավարման վահանակից։
  • Պատրաստ եղեք կրկնօրինակների։ Նույն իրադարձությունը կարող է հասնել մեկից ավելի անգամ։ Պահեք մշակված GetPay-Event-Id արժեքները և բաց թողեք կրկնությունները։
  • Մի՛ հիմնվեք հերթականության վրա։ Իրադարձությունները կարող են հասնել ոչ հերթականությամբ։ Օգտագործեք data.object-ի ներսում նշված կարգավիճակը կամ ստացեք վերջին վիճակը API-ից։
  • Կասկածի դեպքում վերստուգեք։ Ստացեք իրադարձությունը GET /events/{id} կանչով՝ ձեր գաղտնի բանալիով։

07Թեստավորում sandbox-ում

sk_sandbox_… բանալիով ամեն ինչ աշխատում է այնպես, ինչպես live ռեժիմում, բայց Վճարել կոճակը բանկի փոխարեն բացում է GetPay-ի թեստային էջը։ Դուք եք ընտրում, թե ինչպես կավարտվի վճարումը։ Webhook-ները, վերահղումները, մերժման հաղորդագրությունները և գումարի վերադարձները գործում են ճիշտ այնպես, ինչպես live ռեժիմում։ Բանկային մուտքի տվյալներ պետք չեն։

Թեստային էջի կոճակԱրդյունքԲանկի կոդ
Հաջող վճարումsucceeded՝ 424242******4242 թեստային քարտով00
Անբավարար միջոցներfailed0116
Քարտի ժամկետը լրացել էfailed0101
Մերժվել է թողարկողի կողմիցfailed0100
3-D Secure-ը ձախողվել էfailed0-2006
Թողնել մշակման մեջpending՝ բանկը դեռ չի հաստատել․ ավարտեք այն ավելի ուշ թեստային էջից—

Live ռեժիմի անցնելուց առաջ ստուգեք հետևյալը՝ հաջող վճարում, մերժում և դրան հաջորդող հաջող կրկնակի փորձ, հաճախորդ, որը վճարելուց հետո փակում է բրաուզերը (ձեր webhook-ը միևնույն է պետք է կատարի պատվերը), և գումարի վերադարձ։

08Գումարի վերադարձ և չեղարկում

Գումարը հետ տալու երկու եղանակ կա։ Երկու դեպքում էլ այն բանկի միջոցով վերադառնում է հաճախորդի քարտին։

ԳործողությունԳումարԵրբԱրդյունք
ՉեղարկումՄիշտ ամբողջ վճարումըՎճարման սկզբից 72 ժամվա ընթացքում և միայն եթե դեռ ոչինչ չի վերադարձվելreversed
Ամբողջական վերադարձԱյն ամենը, ինչ դեռ չի վերադարձվելՀաջող վճարումից հետո ցանկացած ժամանակrefunded
Մասնակի վերադարձՑանկացած գումար՝ մնացորդի սահմաններում․ կարելի է կրկնելՀաջող վճարումից հետո ցանկացած ժամանակpartially_refunded, այնուհետև refunded, երբ մնացորդ չի մնում

Յուրաքանչյուր վճարում ինքն է հայտնում, թե ինչ է հնարավոր անել տվյալ պահին, այնպես որ կանոններին ինքնուրույն հետևելու կարիք չկա․

ԴաշտՆշանակություն
can_reversetrue, քանի դեռ չեղարկումը հնարավոր է։
reversible_untilՉեղարկման վերջնաժամկետը՝ վճարման սկզբից 72 ժամ անց։ Ցույց տվեք այն ձեր աշխատակիցներին։
can_refundtrue, քանի դեռ վերադարձնելու գումար կա։
amount_refundableԱռավելագույն գումարը, որը դեռ կարող եք վերադարձնել՝ նվազագույն միավորներով։
amount_refundedՄինչ այժմ վերադարձված գումարը։
reversed_atԵրբ է վճարումը չեղարկվել։

Վճարման չեղարկում

POST/payments/{id}/reverse

Չեղարկում է ամբողջ վճարումը բանկում։ Օգտագործեք այն, երբ պատվերը չեղարկվում է վճարումից կարճ ժամանակ անց։ 72 ժամ անցնելուց կամ որևէ վերադարձ կատարելուց հետո հարցումը վերադարձնում է 409, և չեղարկման փոխարեն պետք է կատարել վերադարձ։ Դրան հաջորդում է payment.reversed webhook-ը։

Վճարման վերադարձ

POST/payments/{id}/refund

Մասնակի վերադարձի համար ուղարկեք {"amount": 500000}՝ մինչև amount_refundable գումարի չափով։ Ամբողջ մնացորդը վերադարձնելու համար ուղարկեք դատարկ մարմին կամ {}։ Կարող եք կատարել մի քանի մասնակի վերադարձ։ Յուրաքանչյուրին հաջորդում է payment.refunded webhook-ը։

Երկու հարցումներն էլ վերադարձնում են թարմացված վճարումը։ Վճարման նույնականացուցիչը գտնվում է հղման payment.id դաշտում և ձեր success URL-ին ավելացված payment_id պարամետրում։

09Անդորրագրեր

Յուրաքանչյուր վճարված վճարում ստանում է անդորրագիր, ինչպես Stripe-ում․ կարճ համար, որը հաճախորդը կարող է նշել (օրինակ՝ 4821-0937), և GetPay-ի կողմից ձեր դոմենի վրա հյուրընկալվող անդորրագրի էջ՝ https://receipt.your-domain.am/… հասցեով։ Էջում երևում են ձեր բիզնեսի տվյալները, ապրանքները, օգտագործված քարտը, վերադարձները և PDF-ով պահպանելու կոճակ։ Էջը հասանելի է հայերեն, անգլերեն և ռուսերեն։

Անդորրագիրը թողարկվում է վճարման պահին, ուստի հղումն արդեն կա, երբ հաճախորդը վերադառնում է ձեր կայք, և երբ գալիս են webhook-ները։ Ոչինչ ստեղծել կամ միացնել պետք չէ։

Որտեղ եք ստանում անդորրագրի հղումը

ԱլիքԻնչ եք ստանում
Success URLreceipt_number և receipt_url պարամետրերը ավելացվում են ձեր success_url-ին՝ payment_link_id-ի և payment_id-ի կողքին։ Օգտագործեք դրանք՝ շնորհակալության էջում «Դիտել անդորրագիրը» հղում ցույց տալու համար։
Webhook-ներreceipt.created՝ վճարման պահին, և receipt.updated՝ յուրաքանչյուր վերադարձից կամ չեղարկումից հետո։ data.object-ը ամբողջական անդորրագիրն է։ Բոլոր payment.* և payment_link.* իրադարձություններում վճարումը նույնպես պարունակում է receipt_number և receipt_url։
APIreceipt_number և receipt_url՝ յուրաքանչյուր վճարման վրա (GET /payments/{id} և հղման payment դաշտը), իսկ ամբողջական անդորրագիրը՝ GET /payments/{id}/receipt-ով։
Ցույց տվեք անդորրագրի հղումը, բայց մի՛ վստահեք դրան։Ինչպես վերահղման մյուս պարամետրերը, սրանք էլ կարող է փոխել ցանկացած մեկը։ Պատվերը կատարելուց առաջ հաստատեք վճարումը ձեր սերվերում (տե՛ս Վճարման հաստատում)։ Էլ․ նամակների և անձնական էջի համար receipt_url-ը վերցրեք webhook-ից կամ API-ից։

Անդորրագրի օբյեկտը

ԴաշտՆշանակություն
numberՀաճախորդին ցուցադրվող անդորրագրի համարը։ Եզակի է ձեր հաշվի սահմաններում։
urlԱնդորրագրի հրապարակային էջը։ Նույն արժեքն է, ինչ վճարման receipt_url-ը։
statusՎճարման կարգավիճակը՝ succeeded, partially_refunded, refunded կամ reversed։
amountՎճարված գումարը՝ մանր միավորներով։
amount_refundedՄինչ այժմ վերադարձված գումարը։ Յուրաքանչյուր վերադարձ իր ամսաթվով նշված է refunds[]-ում։
amount_netՀաճախորդի վերջնական վճարած գումարը՝ amount − amount_refunded, իսկ չեղարկումից հետո՝ 0։
line_items[]Վճարման հղման ապրանքները։
merchantՁեր բիզնեսի անվանումը, իրավաբանական անվանումը, ՀՎՀՀ-ն, հասցեն և աջակցության կոնտակտները՝ վերցված կառավարման վահանակի պրոֆիլից։
customerՀաճախորդի մուտքագրած էլ․ հասցեն, անունը և հեռախոսը։
payment_methodԲանկը, քողարկված քարտի համարը, քարտապանի անունը, հաստատման կոդը և RRN-ը։
paid_at, issued_atԵրբ է կատարվել վճարումը և երբ է թողարկվել անդորրագիրը։
Պահեք անդորրագրի հղումները գաղտնի։Հղումն ունեցող ցանկացած մեկը կարող է բացել անդորրագիրը, և հղումը հնարավոր չէ գուշակել։ Կիսվեք այն միայն հաճախորդի հետ։ Sandbox անդորրագրերը բացվում են նույն էջում՝ «Թեստային ռեժիմ» նշումով։

10Ֆիսկալ կտրոններ (Է-ՀԴՄ)

Եթե ձեր բիզնեսը պարտավոր է տրամադրել ՀԴՄ կտրոն, GetPay-ը կարող է յուրաքանչյուր հաջող վճարում գրանցել Պետական եկամուտների կոմիտեում PayX էլեկտրոնային ՀԴՄ-ի միջոցով (Է-ՀԴՄ, ehdm.am)։ Անհրաժեշտ է ձեր սեփական պայմանագիրը PayX-ի հետ։ Նրանց տրամադրած API մուտքանունը միացրեք վահանակում՝ Կարգավորումներ → Է-ՀԴՄ։

Քանի դեռ Է-ՀԴՄ-ն միացված է, յուրաքանչյուր վճարման հղում պետք է նշի, թե ինչ է վաճառվում՝ դասակարգչի կոդը, անվանումը հայերեն և չափման միավորը։ Վճարումը հաջողվելուց հետո GetPay-ը ավտոմատ տրամադրում է ֆիսկալ կտրոնը, իսկ չեղարկումից կամ ամբողջական վերադարձից հետո՝ վերադարձի կտրոնը։

Ստուգեք՝ արդյոք Է-ՀԴՄ-ն միացված է

GET/ehdm

enabled: true նշանակում է, որ ձեր վճարման հղումները պետք է պարունակեն ֆիսկալ տվյալներ (կամ բաց թողնեն դրանք)։ dep-ը ձեր Է-ՀԴՄ կարգավորումներում ընտրված հարկային բաժինն է․ այն օգտագործվում է dep չուղարկող ապրանքների համար։

Ֆիսկալ տվյալներ վճարման հղման մեջ

ԴաշտՊարտադիրՆկարագրություն
line_items[].ehdm.adg_codeԱյո*Դասակարգչի կոդ՝ ԱԴԳՏ ծառայությունների համար (օր.՝ 85.59 — դասընթացներ) կամ ԱՏԳ ԱԱ ապրանքների համար (օր.՝ 5401)։ Որոնեք GET /ehdm/adg-codes?q=…-ով։
line_items[].ehdm.good_nameԱյո*Անվանումը հայերեն, ինչպես տպվում է կտրոնում, մինչև 50 նիշ։ Լռելյայն՝ line_items[].name, եթե տեղավորվում է։
line_items[].ehdm.unitԱյո*Հետևյալներից մեկը՝ հատ, կգ, գրամ, լիտր, մետր, ք/մ, խ/մ, մլ, այլ։ Կտրոնում տպվում է ինչպես ուղարկվել է։
line_items[].ehdm.good_codeԱյո*Ներքին կոդ՝ ձեր ապրանքի կոդը կամ շտրիխ-կոդը (մինչև 50 նիշ), տպվում է կտրոնի վրա որպես Ն/Կ։
line_items[].ehdm.depՈչՀարկային բաժին՝ 1 ԱԱՀ, 2 ԱԱՀ-ից ազատված, 3 շրջանառության հարկ, 7 միկրոձեռնարկություն։ Լռելյայն՝ Է-ՀԴՄ կարգավորումներում ընտրված հարկային բաժինը։
ehdm.itemՈչՆույն դաշտերը՝ առանց ապրանքների amount հղման համար։ good_name-ը լռելյայն՝ title։
ehdm.skipՈչtrue՝ հղումը ստեղծվում է առանց ֆիսկալ կտրոնի, օրինակ՝ երբ այն տրամադրվում է այլ տեղում։ ehdm.skip_reason՝ ոչ պարտադիր նշում։
* Պարտադիր է միայն, երբ Է-ՀԴՄ-ն միացված է։ Եթե ինչ-որ բան բացակայում է, հղումը չի ստեղծվում, և ստանում եք EHDM_FIELDS_REQUIRED՝ բացակայող դաշտերի ցանկով։

Վճարումից հետո

Կտրոնը գրանցվում է ֆոնային ռեժիմում, սովորաբար մի քանի վայրկյանում։ Հաճախորդի անդորրագրի էջը (receipt_url) այն ցույց է տալիս ՀԴՄ կտրոնի տեսքով՝ ֆիսկալ համարով, QR կոդով և PayX PDF-ի հղումով։ Դուք այն ստանում եք երեք տեղում․

ԱլիքԻնչ եք ստանում
APIfiscal_receipt՝ յուրաքանչյուր վճարման մեջ, և GET /payments/{id}/fiscal-receipt։
Webhook-ներreceipt.updated՝ երբ ֆիսկալ կտրոնը տրամադրվում է և երբ վերադարձվում է։ Այն data.object.fiscal-ում է։
ՎահանակԳործարքի մանրամասներում երևում են ֆիսկալ կտրոնը, դրա կարգավիճակը և Կրկնել կոճակը։

Ֆիսկալ կտրոնի կարգավիճակներ

ԿարգավիճակՆշանակություն
pendingՍպասում է գրանցման (կամ կրկնվում է)։
issuedԳրանցված է հարկային մարմնում։
failedԲոլոր փորձերից հետո չհաջողվեց գրանցել։ Կրկնեք վահանակից կամ API-ից։
reverse_pendingՉեղարկումից կամ ամբողջական վերադարձից հետո տրամադրվում է վերադարձի կտրոն։
reversedՎերադարձի կտրոնը տրամադրված է։
reverse_failedՎերադարձի կտրոնը չհաջողվեց տրամադրել։ Կրկնեք։
canceledՎճարումը վերադարձվել է նախքան կտրոնի գրանցումը, ուստի ոչինչ չի գրանցվել։
Վճարումը երբեք չի սպասում կտրոնին։Եթե PayX-ը հասանելի չէ, GetPay-ը կրկնում է մոտ 10 ժամ, ապա սահմանում failed․ կրկնեք POST /payments/{id}/fiscal-receipt/retry-ով։ Մասնակի վերադարձը հնարավոր չէ ավտոմատ վերադարձնել ըստ ապրանքների․ needs_manual_return-ը դառնում է true, և վերադարձի կտրոնը տրամադրում եք PayX-ում։
Sandbox կտրոնները մոդելավորված են։Դրանք ունեն livemode: false և երբեք չեն հասնում PayX-ին կամ հարկային մարմնին, ուստի կարող եք թեստավորել ամբողջ հոսքը, ներառյալ վավերացման սխալները։

11API տեղեկագիր

Բոլոր endpoint-ներն օգտագործում են ձեր գաղտնի բանալին։ Sandbox բանալին տեսնում է միայն sandbox-ի տվյալները, իսկ live բանալին՝ միայն live-ի տվյալները։

EndpointՆկարագրություն
POST /payment-linksՍտեղծել վճարման հղում։
GET /payment-linksՀղումների ցանկ՝ սկզբում նորերը։Ֆիլտրեր՝ status, merchant_reference, customer_external_id, limit (1–100, լռելյայն՝ 20), offset։
GET /payment-links/{id}Ստանալ հղումը և դրա վերջին վճարումը։
POST /payment-links/{id}/expireՓակել չվճարված հղումը, որպեսզի դրանով այլևս հնարավոր չլինի վճարել։
GET /paymentsՎճարումների ցանկ։Ֆիլտրեր՝ status, merchant_reference, payment_link_id, limit, offset։
GET /payments/{id}Ստանալ վճարումը՝ ներառյալ քարտի տվյալները (քողարկված համար, քարտապանի անուն, հաստատման կոդ, RRN)։
GET /payments/{id}/receiptՍտանալ վճարված վճարման անդորրագիրը (404, քանի դեռ վճարված չէ)։ Նույն օբյեկտն է, ինչ receipt.* webhook-ներում։
POST /payments/{id}/refundՎերադարձնել վճարումն ամբողջությամբ (առանց գումարի) կամ մասնակի (amount)։
POST /payments/{id}/reverseՉեղարկել ամբողջ վճարումը 72 ժամվա ընթացքում։
GET /meta/currenciesGetPay-ի արժույթները․ վճարման հղումներ կարելի է ստեղծել is_enabled: true ունեցողներով։ Բանալի պետք չէ։
GET /ehdmԱրդյոք Է-ՀԴՄ-ն միացված է ձեր հաշվի համար, և ձեր հարկային բաժինը։
GET /ehdm/adg-codesԴասակարգչի կոդերի որոնում։Ֆիլտրեր՝ q (կոդի սկիզբ կամ անվան մաս), kind (adgt կամ atg), limit։
GET /payments/{id}/fiscal-receiptՎճարման ֆիսկալ կտրոնը։
POST /payments/{id}/fiscal-receipt/retryԿրկնել failed կամ reverse_failed ֆիսկալ կտրոնը։
GET /eventsԻրադարձությունների ցանկ՝ սկզբում նորերը։Ֆիլտրեր՝ type, limit, offset։
GET /events/{id}Ստանալ մեկ իրադարձություն, օրինակ՝ ստացված webhook-ը հաստատելու համար։

Ցանկերը վերադարձվում են հետևյալ տեսքով՝ { "object": "list", "items": [...], "total", "limit", "offset" }։

12Սխալներ

Սխալի դեպքում վերադարձվում է JSON՝ HTTP կարգավիճակով, կայուն message_code-ով, որը կարող եք ստուգել ձեր կոդում, և ընթեռնելի message-ով։

Կարգավիճակmessage_codeՆշանակություն
400BAD_REQUESTՀարցումը հնարավոր չէ մշակել, օրինակ՝ չաջակցվող արժույթ, կամ վճարման ոչ մի եղանակ միացված չէ։ Կարդացեք message-ը։
400EHDM_FIELDS_REQUIREDԷ-ՀԴՄ-ն միացված է, և ֆիսկալ տվյալներ են բացակայում։ details.missing-ը թվարկում է դաշտերը, օր.՝ line_items[0].ehdm.adg_code։
400CURRENCY_NOT_SUPPORTEDԱրժույթը միացված չէ GetPay-ի կողմից։ details.supported-ը թվարկում է թույլատրված արժույթները։
400EHDM_CURRENCY_NOT_SUPPORTEDՖիսկալ կտրոնները միայն AMD-ով են։ Օգտագործեք AMD կամ ուղարկեք ehdm.skip: true։
401UNAUTHORIZEDԳաղտնի բանալին բացակայում է կամ անվավեր է։
403FORBIDDENԲանալին չի կարող կատարել այս գործողությունը, օրինակ՝ live բանալի, երբ ձեր հաշիվը դեռ live ռեժիմում չէ։
404NOT_FOUNDԱյս բանալու և միջավայրի համար նման օբյեկտ չկա։
409CONFLICTԸնթացիկ վիճակում հնարավոր չէ, օրինակ՝ չեղարկում 72 ժամից հետո, չվճարված վճարման վերադարձ կամ վճարված հղման փակում։ message-ում նշված է, թե ինչ անել դրա փոխարեն։
422VALIDATION_ERRORԴաշտը բացակայում է կամ անվավեր է։ details.errors-ում թվարկված է յուրաքանչյուր դաշտ։
502PAYMENT_GATEWAY_ERRORԲանկը մերժել է վերադարձը կամ չի պատասխանել։ Կարելի է անվտանգ կրկնել ավելի ուշ։

13Գործարկման ստուգացանկ

  • Ձեր դոմենը միացված է Դոմեն բաժնում, և ձեր սերվերն օգտագործում է այնտեղ նշված API-ի բազային URL-ը։
  • Ձեր առևտրականի հաշիվն ավարտել է գրանցման գործընթացը և կառավարման վահանակում փոխարկված է live ռեժիմի։
  • Ձեր բանկի (Ameriabank vPOS) մուտքի տվյալները միացված և ակտիվացված են Վճարային համակարգեր → Live բաժնում։
  • Ձեր սերվերն օգտագործում է sk_live_… բանալին միջավայրի փոփոխականից, ոչ թե կոդից։
  • Ավելացված է live webhook endpoint՝ https:// հասցեով, և դրա whsec_… գաղտնի բանալին ձեր սերվերում է։
  • Ձեր webhook-ի մշակիչը ստուգում է ստորագրությունները, մերժում հին ժամանակադրոշմները և անտեսում իրադարձությունների կրկնվող նույնականացուցիչները։
  • Պատվերները կատարում եք միայն complete / paid կարգավիճակը հաստատելուց և գումարի ու արժույթի համընկնումը ստուգելուց հետո։
  • Ձեր շնորհակալության էջը կամ պատվերի էլ․ նամակը հաճախորդին ցույց է տալիս receipt_url-ը։
  • Եթե օգտագործում եք Է-ՀԴՄ՝ PayX-ը միացված և ակտիվացված է Կարգավորումներ → Է-ՀԴՄ բաժնում, և ձեր հղումներն ուղարկում են line_items[].ehdm։
  • Կատարել եք մեկ փոքր իրական վճարում և վերադարձրել այն։