Барьцаа (manual capture)¶
Энэ хуудсаар
Юу хийх: хүн баталмагц мөнгийг барьцаалж, бараа/үйлчилгээ өгсний дараа л авах (capture) эсвэл суллах
(cancel). Хугацаа: ~30 мин. Хэрэгтэй: intent үүсгэдэг backend (вэб, QR,
терминал эсвэл mini app).
1. Хэзээ manual¶
| Тохиолдол | Яагаад |
|---|---|
| Вендинг машин, locker, түлшний колонк | бараа гарах эсэх төлбөрийн дараа мэдэгдэнэ (вендинг) |
| Захиалгаар хийх хоол, нөөцөөс хамаарах бараа | бэлэн болох эсэх тодорхойгүй |
| Түрээс, барьцаа | эцсийн дүн хожим |
Бусад үед automatic (анхдагч): хүн баталмагц succeeded.
2. Урсгал¶
requires_confirmation ──хүн баталсан──▶ processing ──hold──▶ requires_capture ──capture──▶ succeeded
│
├──cancel──▶ canceled (hold суллагдана)
└──capture_before өнгөрсөн──▶ expired
(failure_code: authorization_expired, hold суллагдана)
{ "amount": 12000, "description": "Захиалга #5521", "reference": "5521", "presentment": "qr",
"capture_method": "manual", "capture_within": 900 }
capture_within— баталснаас хойш хэдэн секундэд capture/cancel хийх: 60 – 604 800 (7 хоног), анхдагч 7 хоног. Зөвхөнmanual-д (automatic-д өгвөл400 validation_error). Mini app-ын (app) intent-д ч болно.- Баталмагц
capture_before= баталсан агшин +capture_within;payment_intent.requires_capturewebhook.
3. Capture, cancel, хэсэгчлэн¶
- Capture —
POST /payment-intents/{id}/capture(бие хоосон) →succeeded; live-д дэвтэр хариулаагүй бол202+processing(дараа ньGET). Аль хэдийн capture хийсэнийг дахин →200тэр intent.requires_captureбиш бол409 not_capturable(payment_intent-тэй);capture_beforeөнгөрсөн бол409 expired. - Cancel —
POST /payment-intents/{id}/cancel→canceled, hold суллагдана (буцаалт биш: хүнд юу ч хасагдаагүй). Дэвтрийн суллалт хоцорсон ч цуцлалт хүчинтэй — платформ мөнгийг буцаах хүртэл давтана. - Хэсэгчлэн — дүнтэй capture (
{amount}) «удахгүй». Одоо: бүтэн capture →succeededболтол хүлээх →POST …/refunds {"amount": <өгөөгүй хэсэг>}+ өөрийнIdempotency-Key. Буцаалт зөвхөнsucceeded/partially_refundedintent-д (409 not_refundable).
4. Автомат суллалт¶
Хариу өгөөгүй бол capture_before-д intent expired (authorization_expired) болж, hold хүнд автоматаар
суллагдана (payment_intent.expired; mini app-ын intent-д payment_intent.canceled + status: "expired"). Дараа нь
capture боломжгүй. Дэвтэр өөрөө hold-ыг capture_before + цонхны хагас (≥ 1 мин, ≤ 15 мин) дээр суллана — платформ
суллаж чадаагүй үед л.
capture_within-ийг бараа өгөх + мэдээлэх хамгийн муу хугацаа-аас урт, гэхдээ хүний мөнгийг дэмий барихгүй
байхаар сонго: машинд минут, захиалгын хоолонд цаг.