chore(payments): remove EFT/bank-transfer method, keep Stripe only
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Removes the EFT (havale) payment surface across API, web, i18n, and docs.
Card payment via Stripe is now the only checkout path.
API (apps/api/src):
- Delete payments/bank-accounts/ module (controller + service + module)
- payments.service: drop EFT methods (createEftPayment, uploadEftReceipt,
approveEft, rejectEft, getActiveBankInfo, getPendingEftPayments) and the
BankAccountsService dependency
- payments.controller: drop /payments/eft, /payments/eft/:id/{receipt,approve,reject},
/payments/bank-info, /payments/pending; keep /payments/me
- payments.module: drop BankAccountsModule import
- admin.service: drop pending EFT counter from getDashboardStats; drop
getPendingPayments (admin EFT approval list)
- admin.controller: drop /admin/payments/pending endpoint
- admin.service.spec: drop the getPendingPayments + pendingPayments assertions
Web (apps/web/src):
- Delete components/payment/bank-transfer-card.tsx
- Delete routes/dashboard/admin/payments.tsx (EFT approval page); regenerate
routeTree.gen.ts
- subscription/index.tsx: drop EFT tab from PaymentMethodSection, drop the
paymentMethod state + handleEftCompleted, simplify ConfirmationCard to the
Stripe-only path, drop unused imports (Tabs, BankTransferCard, Building2)
- billing.tsx: drop "eft" from method filter chips; keep methodLabels.eft and
the legacy receipt download so historical EFT records still display
- dashboard.tsx + admin/index.tsx: drop /dashboard/admin/payments from the
sidebar + admin quick-link grid; trim unused icon imports; KEYS_6 → KEYS_5
for the now-5-card admin stats skeleton
- messages/{tr,en}.json: strip every EFT-only key under payment.* (eftTransfer,
eftConfirmationDescription, eftPaid, eftStatus, bank.*, uploadReceipt* etc.)
Schema (apps/api/src/database/schema):
- bankAccounts table + payments.bankAccountId column are kept as-is: legacy
EFT payments remain visible on the billing page and the schema preserves
historical records.
Docs:
- README.md: "Stripe (kart) + EFT" → "Stripe (kart)"
- CLAUDE.md: stack table + PaymentsModule row + payments table note + route
list updated; admin EFT approval route removed
Verification:
- pnpm typecheck: green (api + web + shared + config + ui)
- pnpm lint: green
- pnpm test: 20 web tests pass, 173 api tests pass
This commit is contained in:
@@ -273,7 +273,6 @@
|
||||
"totalAmount": "Total Amount",
|
||||
"paymentMethod": "Payment Method",
|
||||
"creditCard": "Credit Card",
|
||||
"eftTransfer": "EFT/Wire Transfer",
|
||||
"payWithCard": "Pay with Card",
|
||||
"paying": "Processing payment...",
|
||||
"bankDetails": "Bank Details",
|
||||
@@ -282,30 +281,15 @@
|
||||
"iban": "IBAN",
|
||||
"description": "Description",
|
||||
"paymentDescription": "Sase.tr Subscription Payment",
|
||||
"uploadReceipt": "Upload Receipt",
|
||||
"uploadReceiptDescription": "Upload your receipt after EFT/Wire transfer.",
|
||||
"dragDrop": "Drag and drop a file or click to browse",
|
||||
"supportedFormats": "PNG, JPG, or PDF (max 5MB)",
|
||||
"uploading": "Uploading...",
|
||||
"receiptUploaded": "Receipt uploaded successfully. Waiting for approval.",
|
||||
"uploadFailed": "Receipt upload failed.",
|
||||
"paymentStatus": "Payment Status",
|
||||
"waitingApproval": "Waiting for Approval",
|
||||
"approved": "Approved",
|
||||
"step1": "Plan & Brands",
|
||||
"step2": "Payment",
|
||||
"step3": "Confirmation",
|
||||
"confirmation": "Payment received!",
|
||||
"confirmationDescription": "Your subscription has been activated successfully.",
|
||||
"eftConfirmationDescription": "Your EFT/Wire receipt has been received. Your subscription will be activated after approval.",
|
||||
"goToDashboard": "Go to Dashboard",
|
||||
"initializeFailed": "Payment initialization failed. Please try again.",
|
||||
"processingPayment": "Processing payment...",
|
||||
"eftPaid": "I Made EFT/Wire Transfer",
|
||||
"eftStatus": {
|
||||
"created": "EFT/Wire transfer record created",
|
||||
"receiptUploaded": "Receipt uploaded"
|
||||
},
|
||||
"paymentFailed": "Payment failed. Please try again.",
|
||||
"stripe": {
|
||||
"secureCheckoutTitle": "Secure payment with 3D Secure",
|
||||
@@ -315,31 +299,6 @@
|
||||
"verifyingTitle": "Verifying your payment",
|
||||
"verifyingDescription": "Your subscription will activate as soon as Stripe confirms. Stay on this page for a few seconds.",
|
||||
"trustProvider": "Stripe payment infrastructure"
|
||||
},
|
||||
"bank": {
|
||||
"bankLabel": "Bank",
|
||||
"accountHolderLabel": "Account holder",
|
||||
"ibanLabel": "IBAN",
|
||||
"kolayAdresLabel": "Easy Address",
|
||||
"kolayAdresType": {
|
||||
"email": "Email",
|
||||
"phone": "Phone",
|
||||
"tckn": "TR ID"
|
||||
},
|
||||
"descriptionLabel": "Reference",
|
||||
"amountLabel": "Amount",
|
||||
"copyIban": "Copy IBAN",
|
||||
"copyKolayAdres": "Copy easy address",
|
||||
"copyDescription": "Copy reference",
|
||||
"qrAlt": "Mobile banking QR code",
|
||||
"qrHint": "Scan in your bank app",
|
||||
"qrUnavailable": "QR coming soon",
|
||||
"reveal": "Show",
|
||||
"hide": "Hide",
|
||||
"previewDescription": "Fills in once your payment is created",
|
||||
"proceedToUpload": "I made the transfer — upload receipt",
|
||||
"unavailableTitle": "Bank transfer unavailable",
|
||||
"unavailableDescription": "Please use card payment or try again shortly."
|
||||
}
|
||||
},
|
||||
"billing": {
|
||||
|
||||
@@ -273,7 +273,6 @@
|
||||
"totalAmount": "Toplam Tutar",
|
||||
"paymentMethod": "Ödeme Yöntemi",
|
||||
"creditCard": "Kredi Kartı",
|
||||
"eftTransfer": "EFT/Havale",
|
||||
"payWithCard": "Kartla Öde",
|
||||
"paying": "Ödeme yapılıyor...",
|
||||
"bankDetails": "Banka Bilgileri",
|
||||
@@ -282,30 +281,15 @@
|
||||
"iban": "IBAN",
|
||||
"description": "Açıklama",
|
||||
"paymentDescription": "Sase.tr Abonelik Ödemesi",
|
||||
"uploadReceipt": "Dekont Yükle",
|
||||
"uploadReceiptDescription": "EFT/Havale sonrası dekontunuzu yükleyin.",
|
||||
"dragDrop": "Dosyayı sürükleyip bırakın veya tıklayın",
|
||||
"supportedFormats": "PNG, JPG veya PDF (maks. 5MB)",
|
||||
"uploading": "Yükleniyor...",
|
||||
"receiptUploaded": "Dekont başarıyla yüklendi. Onay bekleniyor.",
|
||||
"uploadFailed": "Dekont yükleme başarısız.",
|
||||
"paymentStatus": "Ödeme Durumu",
|
||||
"waitingApproval": "Onay Bekleniyor",
|
||||
"approved": "Onaylandı",
|
||||
"step1": "Plan ve Markalar",
|
||||
"step2": "Ödeme",
|
||||
"step3": "Onay",
|
||||
"confirmation": "Ödemeniz alındı!",
|
||||
"confirmationDescription": "Aboneliğiniz başarıyla aktifleştirildi.",
|
||||
"eftConfirmationDescription": "EFT/Havale dekontunuz alındı. Onay sonrası aboneliğiniz aktifleştirilecektir.",
|
||||
"goToDashboard": "Panele Git",
|
||||
"initializeFailed": "Ödeme başlatılamadı. Lütfen tekrar deneyin.",
|
||||
"processingPayment": "Ödeme işleniyor...",
|
||||
"eftPaid": "EFT/Havale Yaptım",
|
||||
"eftStatus": {
|
||||
"created": "EFT/Havale kaydı oluşturuldu",
|
||||
"receiptUploaded": "Dekont yüklendi"
|
||||
},
|
||||
"paymentFailed": "Ödeme başarısız oldu. Lütfen tekrar deneyin.",
|
||||
"stripe": {
|
||||
"secureCheckoutTitle": "3D Secure ile güvenli ödeme",
|
||||
@@ -315,31 +299,6 @@
|
||||
"verifyingTitle": "Ödemen doğrulanıyor",
|
||||
"verifyingDescription": "Stripe onayı geldiğinde aboneliğin otomatik aktifleşecek. Bu sayfayı kapatmadan birkaç saniye bekle.",
|
||||
"trustProvider": "Stripe ödeme altyapısı"
|
||||
},
|
||||
"bank": {
|
||||
"bankLabel": "Banka",
|
||||
"accountHolderLabel": "Hesap Sahibi",
|
||||
"ibanLabel": "IBAN",
|
||||
"kolayAdresLabel": "Kolay Adres",
|
||||
"kolayAdresType": {
|
||||
"email": "E-posta",
|
||||
"phone": "Telefon",
|
||||
"tckn": "TCKN"
|
||||
},
|
||||
"descriptionLabel": "Açıklama",
|
||||
"amountLabel": "Tutar",
|
||||
"copyIban": "IBAN'ı kopyala",
|
||||
"copyKolayAdres": "Kolay Adres'i kopyala",
|
||||
"copyDescription": "Açıklamayı kopyala",
|
||||
"qrAlt": "Mobil bankacılık QR kodu",
|
||||
"qrHint": "Bankan ile tara",
|
||||
"qrUnavailable": "QR yakında",
|
||||
"reveal": "Göster",
|
||||
"hide": "Gizle",
|
||||
"previewDescription": "Ödeme oluştuğunda burası dolar",
|
||||
"proceedToUpload": "Havaleyi yaptım, dekont yükle",
|
||||
"unavailableTitle": "Havale şu an aktif değil",
|
||||
"unavailableDescription": "Kart ile ödemeyi tercih edebilir veya birazdan tekrar denersin."
|
||||
}
|
||||
},
|
||||
"billing": {
|
||||
|
||||
Reference in New Issue
Block a user