E-Ticaret

payments

21 uç · /api/shop/v1/payments

İstek örnekleri ucun GERÇEK metodu ve yolundan üretilir. 21 ucun elle doğrulanmış gövde örneği henüz yok; o uçlarda iskelet gövdesizdir — uydurma bir alan yazmıyoruz.

GET/api/shop/v1/admin/payments/{payment_id}

Payment detail

OturumYol parametresi: payment_id
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/admin/payments/<payment_id>" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/payments/{payment_id}/captures

Capture authorized

OturumYol parametresi: payment_id
İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/payments/<payment_id>/captures" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/payments/{payment_id}/disputes

Admin elle itiraz kaydı: Türkiye PSP'lerinin bir kısmı chargeback'i banka-yazısıyla bildiriyor

OturumYol parametresi: payment_id

(webhook yok) → merchant kuyruğa elle işleyebilmeli. Webhook yoluyla AYNI çekirdeği kullanır.

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/payments/<payment_id>/disputes" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/admin/payments/{payment_id}/refunds

List refunds

OturumYol parametresi: payment_id
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/admin/payments/<payment_id>/refunds" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/payments/{payment_id}/refunds

İade → komisyon geri-alma (admin).

OturumYol parametresi: payment_id
İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/payments/<payment_id>/refunds" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/payments/{payment_id}/void

Void

OturumYol parametresi: payment_id
İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/payments/<payment_id>/void" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/admin/payments/reconciliation

Credential-listesi + kaldırma (müşteri-oturumu).

Oturum
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/admin/payments/reconciliation" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/payments/reconciliation

Run

Oturum
İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/payments/reconciliation" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/admin/payments/reconciliation/{run_id}

Detail

OturumYol parametresi: run_id
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/admin/payments/reconciliation/<run_id>" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/admin/payments/reconciliation/exceptions

BLE-6234 · istisna-kuyruğu (varsayılan yalnız açık; ?status=all|open|resolved|disputed).

Oturum
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/admin/payments/reconciliation/exceptions" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/admin/payments/reconciliation/exceptions/{id}/resolve

İstisnayı çöz/itiraz-et (open → resolved|disputed). Çözen personel + not kaydedilir.

OturumYol parametresi: id
İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/admin/payments/reconciliation/exceptions/<id>/resolve" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/storefront/payments/{intent_id}

Intent durumu (redirect-dönüşü sonrası storefront poll'u). client_token zorunlu.

OturumYol parametresi: intent_id
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/storefront/payments/<intent_id>" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/storefront/payments/{intent_id}/confirm

CRM-worker geri-yazımı (consume-seam): contact-id ile pending→synced. Idempotent.

OturumYol parametresi: intent_id
İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/storefront/payments/<intent_id>/confirm" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/storefront/payments/{order_id}/3ds/callback

3DS callback: attempt'i (pending) sonuçla — outcome='fail' → failed, aksi → authenticated. Attempt

OturumYol parametresi: order_id

yoksa/zaten-sonuçlanmışsa 404. ⚠ **GÜVENLİK — stub ACS üretimde kimlik DOĞRULAYAMAZ (fail-closed):** Bu uç ağa hiç çıkmaz; gerçek banka ACS'i (imzalı sonuç) TF21'de gelir. `outcome` istekten okunduğu için, üretimde serbest bıraksaydık saldırgan `/3ds/init` (acs_ref al) + `/3ds/callback` (outcome=success) ile `threeds_status='authenticated'` yazıp risk step-up kapısını KENDİ KENDİNE geçerdi (mock-social deseninin ödeme karşılığı). Bu yüzden ÜRETİMDE stub asla `authenticated` yazmaz → step-up tamamlanamaz ve sipariş fail-CLOSED bloke kalır (gerçek step-up için TF21 ACS gerekir). Üretim-dışında (sandbox/dev) tam akış test edilebilir kalır.

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/storefront/payments/<order_id>/3ds/callback" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/storefront/payments/{order_id}/3ds/init

3DS challenge başlat: sipariş için payment_attempts (pending) + stub ACS challenge. Sipariş yoksa 404.

OturumYol parametresi: order_id
İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/storefront/payments/<order_id>/3ds/init" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/storefront/payments/installments

Query

Oturum
İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/storefront/payments/installments" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/shop/v1/storefront/payments/masterpass/cards

Cüzdan kartları (stub; gerçek kartlar Masterpass'tan = TF21). Bağlı değilse 404. token_ref dönmez.

Oturum
İstek
curl -X GET "https://{slug}.shop.blesyum.app/api/shop/v1/storefront/payments/masterpass/cards" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/storefront/payments/masterpass/link

Masterpass cüzdan bağla (upsert msisdn; sandbox anında bağlanır — gerçek OTP=TF21). token_ref

Oturum

server-side üretilir, dönmez. customer_token verilirse müşteriye bağlanır.

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/storefront/payments/masterpass/link" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/storefront/payments/masterpass/pay

Sandbox Masterpass ödeme (iskelet). Bağlı cüzdanla sahte-provizyon → sandbox referansı. GERÇEK para

Oturum

HAREKET ETMEZ + gerçek provizyon/kayıt = TF21 (canlı-key). Bağlı değilse 404; geçersiz tutar 400.

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/storefront/payments/masterpass/pay" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/storefront/payments/masterpass/unlink

Cüzdan bağını kaldır (status=removed). Yoksa 404.

Oturum
İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/storefront/payments/masterpass/unlink" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/shop/v1/storefront/payments/webhook/{provider}

3PL durum webhook'u — **fail-closed**: imza `x-shop-webhook-signature` =

Herkese açıkYol parametresi: provider

HMAC-SHA256(settings `fulfillment.webhook_secret`, raw-body). Secret yoksa **401** (taşıyıcı-webhook deseninin aynısı; imzasız çağrı kabul EDİLMEZ). Body: `{event_id, request_id, status, tracking_number?}`. - Bilinmeyen durum → 400 (allowlist). - Aynı `event_id` tekrarı → **no-op ack** (idempotent). - **Geriye dönüş kabul edilmez**: gelen durumun rütbesi mevcuttan küçükse yok sayılır (ağ sırası bozulursa `shipped` sonrası gecikmiş `picked` durumu geri almasın). - `shipped` → `shop.shipments` kaydı (mevcut sevkiyat modeline bağlanır).

İstek
curl -X POST "https://{slug}.shop.blesyum.app/api/shop/v1/storefront/payments/webhook/<provider>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
Bu sayfa işine yaradı mı?