Payments Akışı
Payment oluşturma, confirm, durum takibi ve operasyonel öneriler.
Payment oluşturmak tahsilat başlatmaz; parayı çekmek için confirm gerekir. SDK örnekleri REST modelini yansıtır; ayrıntılı lifecycle için Ödeme Yaşam Döngüsü ve Confirm sayfasına bakın.
Ödeme oluşturma
const payment = await hsrcpay.payments.create({
amount: 15900,
currency: "TRY",
autoCapture: true,
secureMode: true,
metadata: { cartId: "CART-1042" },
});
// payment.status genelde CREATEDConfirm
const result = await hsrcpay.payments.confirm(payment.id, {
paymentMethod: { id: "pm_xxx" },
payerIdentity: {
ipAddress: clientIp,
userAgent: request.headers.get("user-agent") ?? "",
},
});
if (result.payment.status === "REQUIRES_ACTION" && result.confirmResult.paymentNextAction?.url) {
redirect(result.confirmResult.paymentNextAction.url);
}Confirm yanıtında hem güncel payment hem confirmResult (orchestrator özeti) gelir; sipariş kararını yalnızca payment.status ile vermeyin, webhook ile mutabakat yapın.
Durumlar (API)
| Status | Kısa anlam |
|---|---|
CREATED | Kayıt açıldı, confirm bekliyor |
REQUIRES_PAYMENT_METHOD | Yöntem yok veya son deneme başarısız |
REQUIRES_ACTION | 3DS / yönlendirme |
AUTHORIZED | Auth-only başarı |
SUCCEEDED | Tahsilat tamamlandı |
CANCELED / REFUNDED / EXPIRED | Terminal veya iade |
Decline detayı çoğunlukla charge kaydında (DECLINED); payment tarafında tekrar confirm planlanabilir.
Uygulama tarafı state haritası
Kendi sipariş state’inizi API enum’una 1
kilitlemeyin; aradapending, awaiting_3ds, paid gibi domain katmanı kullanın.
Hatalar
4xx: payload, yetki veya iş kuralı409: idempotency çakışması (yazma işlemlerinde)5xx: geçici; aynı idempotency key ile sınırlı retry, ardından payment GET