Ինչպես են աշխատում API վճարումները պրովայդերների մոտ
Վճարովի API-ը ձեր հավելվածի և պրովայդերի միջև պայմանագիր է, որը վերածում է «վճարում», «հաստատել 3DS», «վերադարձնել միջոցները», «վճարել հաճախորդին» և «ստանալ կարգավիճակը» հուսալի, կրկնվող զանգերի։ Գլխարկի տակ կան տասնյակ կանոններ ՝ թունավորում, idempotency, webhuks, հակաֆրոդ, հերթեր, SLA և աուդիտ։ Ներքևում գործնական քարտեզն է այն մասին, թե ինչպես է այն կազմակերպվում պրովայդերների մեծամասնության մոտ։
Ռուսական մոդել 'ինչ էակներ կան գրեթե միշտ
Payme/Charge-ը ապամոնտաժման փորձ է (authorize + capture կամ անմիջապես purchae)։- Payts Method-ը քարտեզն է (PAN/token), բանկային հաշիվը/alias, դրամապանակը, տեղական մեթոդը։
- Customer-ը հաճախորդի/վճարողի էությունն է (երբեմն կրճատ)։
- Payout/Transfer-ը հաճախորդի/merchant-ի առաջացող զգեստն է։
- Refund/Reversal-ը հղում է բնօրինակին (closed-loop)։
- Webhook Event-ը կարգավիճակի մասին ասինխրոն ծանուցում է։
- Dip.ru/Chargeback-ը վճարային ցանցի բանավեճ է (քարտեզների համար)։
- Order/Deloice-ը գործընկերների շուրջ բիզնես կոնտեքստն է։
Վավերացում և անվտանգություն
API բանալիներ/OAuth 2։ 0/mTSA - սերվերի սերվերի համար։
Հաճախորդների հոսանքները միակողմանի հոսանքներ են առջևի համար (գաղտնիքները չլսելու համար)։- Քարտեզների տոկենիզացիան 'PAN-ը գնում է պրովայդերի։ պահպանում եք միայն հոսանքը։
- PCI DSS, եթե դուք տեսնում եք PAN, դուք PCI գոտում եք։ ավելի լավ է խուսափել և օգտագործել հանրակացարանի դաշտերը/MSK։
- HMAC-ը webhuks ստորագրությունը ստուգում է, որ իրադարձությունը եկել է պրովայդերից։
- Երկզոնային ճարտարապետությունը հանրային ճակատ է (JS/MSK) և մասնավոր backend (բանալիներ, risk-տրամաբանություն)։
Idempotency, գծեր և համաձայնություն
Idempotency-Key վերնագրում 'հարցման կրկնօրինակը (թայմաուտում) չի ստեղծում կրկնօրինակը։- Windobox/Saga-ը ձեզ մոտ. <<սարահարթը ուղարկելու համար>>, նա ձայնագրեց մի ժապավենի մեջ, որը սպասում էր webhuke>։
- Retrai backoff-ից միայն սխալների համար։ Retryable/non-retryable մատրիցը պարտադիր է։
Տիպիկ էնդպոինտներ (սխեմաներ և ֆլոու)
1) Քարտեզներ (Visa/Wintercard և այլն)
POST/POST-ը սարահարթ է («amount», «currency», «payme _ method _ token», «capture» = false/2019)։
POST /payments/{id}/confirm — шаг 3-D Secure 2 (challenge/redirect result).
POST/POST/payments/+ id/capture - տեղադրումից հետո (մասնակի/ամբողջական)։- POST/POST/payments/+ id +/refund - 108 (մասեր, մինչև պարտքի գումարը)։
GET /payments/{id} — статус (authorized, captured, failed, requires_action).
3-D Secure/SCA: պրովայդերը կվերադառնա «requires _ action» + «client _ secret »/URL challenge համար։ Հաճախորդի հաստատումից հետո ռազմաճակատ կվերադառնա ձեր backend-ի արդյունքը, դուք պայքարում եք «/www.irm »։
2) A2A / Open Banking (Pay by Bank)
POST/payments-ը բացատրում է «redir.ru _ ul» -ի պատասխանը հաճախորդի բանկին։
Հաճախորդը է ww.webhook 'pay.ru բանկից։ succeeded/failed`.
GET/payments/+ id կոդը վերջնական կարգավիճակն է (հաճախ միայն ասինխրոնո)։
3) Տեղական մեթոդները (PIX, PayID, FPX, iDEAL և այլն)
POST/payments-ը կստանա «qr _ code »/« deeplink »/« copy _ code»։- Ցույց տվեք օգտագործողին, սպասում եք webhook-ի մասին։
- Թայմաուտները և TTL-ը կոդի վրա պայմանագրի մի մասն են։
4) Վճարումներ (payouts)
POST /payouts (`amount`, `currency`, `destination_token` или `card_token`/`bank_alias`).
GET /payouts/{id} — статусы (`queued`, `sent`, `paid`, `failed`).
Webhuki 'payout. paid/failed "-ը ճշմարտության աղբյուրն է։- Փակված հանգույց. Վճարեք աղբյուրը (reversal) մինչև այլընտրանքը։
Ուեբհուկի '«ճշմարտության աղբյուրը»
Իրադարձությունները ' Առաքում ՝ HMAC-ի ստորագրած ելույթներով, հաճախ «առնվազն մեկ անգամ» պահեք վերամշակողի գաղափարախոսությունը։ Best practice: Webhuk-ը պետք է թարմացնի 3xx-ը։ Ցանկացած բիզնես տրամաբանություն հետո ասինխրոն է։ HTTP-2019: «2xx» հաջողությունը; «4xx» հաճախորդի սխալը (վալիդացիա, ֆրոդ/բանկի մերժում, սխալ հոսանք); «5xx» - պրովայդեր։ Причины отказов: `insufficient_funds`, `do_not_honor`, `stolen_card`, `limit_exceeded`, `risk_decline`, `bank_unavailable`. Խոհարարների պատուհանները '3DS-ի համար, դուք չեք կարող անվերջ կտրել։ A2A-ի համար գործում են TTL ռեդիրեկտ/կոդի։ payouts-ի համար - backoff. Քարտեզներ ՝ vs clyring-ը (հնարավոր է գումարը փոխելը), 3DS2-ը, վիրահատության, բանավեճերի/charjbacks-ի վերացումը։ A2A/Open Banking: redirect/consent-ֆլոուն, բարձր apruv, ցածր արժեքը; ամեն ինչ ասինխրոն է և շատ կախված է բանկից։ API-ի տարբերակները ՝ «/v1 »,« ամսաթվերը »վերնագրում կամ ֆիչեֆլագում։ Metriks: p95 հեղինակային իրավունքի/վճարման ժամանակը, approve rate-ը BIN/bank/մեթոդով, retrav, webhuki-lag մասնաբաժինը։ Sandbox: Թեստային հոսանքներ/քարտեր/բանկեր, 3DS/rediretts սիմուլյացիա, «կոճակներ» վեբհուկի արձանների համար։ Թեստ-քեյսները 'հաջողությունը/մերժումը, 3DS challenge, պրովայդերի թայմաուտը, ուեբհուկի կրկնօրինակը, մասնակի capture/refund, ռեդիկտի վերացումը, payout fail-ը։ Go-2019 'բանալիներ, webhuks, IP-allowlist, ներառել հակաֆրոդը, տալ սահմաններ և ալերտներ։ Ստեղծել սարահարթ (քարտեզը) 1. Կոմպոզիցիայի ճարտարապետությունը 'սերվերային գաղտնիքները առանձին, հաճախորդները միապաղաղ են։ 2. Idempotency: Յուրաքանչյուր write-մարտահրավերում + idempotent webhuks-ը։ 3. Webhuki: HMAC ստորագրությունը, retray, առաջադրանքների հերթը, աշխատանքային բայերը։ 4. 3DS/SCA և redirects 'վերամշակումը/թայմաուտները, ֆրենդլի-UX-ի կրկնվող փորձը։ 5. Անտիֆրոդ/լիմիտներ ՝ velocity, նոր գրառումներ, սև ցուցակներ, RG/AML շեմեր։ 6. Ժպիտը և ժապավենը 'կրկնակի ձայնագրություն, եռակողմ շրջանակ, անոմալիայի ալտերտեր։ 7. Նվագախումբը 'պահեստային պրովայդեր, routing կանոնները BIN/երկրով/գումարով։ 8. Տե՛ ս ՝ approve rate/p95/retrai, բանկերի ալտերտեր/2019։ 9. Իրավաբանորեն/PCI 'տոկենիզացիա, վերադարձման քաղաքականություն, փակելով payouts-ը։ 10. Քայքայման պլանը 'kill-switch ջրանցք, հերթեր, ձեռքով ռեժիմ կրիտիկական վիրահատությունների համար։ Կարո՞ ղ եք անել առանց 3DS-ի։ Կախված է կարգավորումից/ռիսկի։ EC/UK-ում SCA-ն պարտադիր է։ high-risk-ի համար ավելի լավ է step-up։ API վճարումները միայն «սարահարթ» չեն։ Սա կարգապահություն է. Ապահով վավերացում, ինտենսիվացում, ասինխրոն Webhuks, asinhron Weebhuks, Leder և Suck/anfrod/AML, նվագախումբ և նվագախումբ։ Դուք կկառուցեք գործընթացը այս սխեմայի համաձայն, պահեք պահեստային ալիքները և թափանցիկ UX-ը, և ձեր վճարովի շերտը կլինի արագ, կանխատեսելի և դիմացկուն բանկերի և պրովայդերների ձախողումներին։
Սխալների և կարգավիճակների վերամշակում
Անտիֆրոդը և ռիսկը
Device-fingerprinting և վարքագծային տվյալները JS/MSK պրովայդերի միջոցով կամ ձեր սեփական շերտով։
Ռելսերի առանձնահատկությունները
Տարբերակումը և համատեղելիությունը
Դիտարկումը և SLA
Խոզուկ և ֆինանսներ
Լեջեր 'կրկնակի ձայնագրություն, անփոփոխ ամսագրեր, «authorized/captured/refunded» արձաններ։
Sandbox, հավաստագրում և այլն
Մինի-օրինակներ (սխեմատիկ)
POST /v1/payments
{
"amount": 9232, "currency": "EUR", "payment_method_token": "pm_tok_123", "capture": true, "metadata": {"order_id": "ORD-1001"}
}
→ 200 { "id": "pay_abc", "status": "requires_action", "next_action": {"type":"redirect", "url":"..."} }Webhuk հաջողակ վերացման մասին
POST /webhooks
{
"type": "payment. captured", "data": {"id":"pay_abc","amount":9232,"currency":"EUR","metadata":{"order_id":"ORD-1001"}}
}Վճարում (payout)
POST /v1/payouts
{
"amount": 5000, "currency": "EUR", "destination_token": "dest_tok_456", "metadata": {"user_id":"u_77"}
}
Ներդրման չեկի ցուցակ
Հաճախակի սխալներ
PAN-ի պահպանումը իր կողմում առանց PCI-ի և տոկենիզացիայի։
Mini-FAQ
Ի՞ նչն է ավելի հուսալի 'սինխրոն կարգավիճակը կամ վեբհուկը։
Ինչու՞ payout «ոչ ակնթարթային»։