[PK-34] BE-6 payment QR endpoint + fictitious IBAN dev defaults #2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/PK-34-payment-qr-bysquare"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
GET /api/orders/:id/payment-qr— pay-by-square QR generator pre potvrdzovaciu obrazovku objednávky.Response 200 JSON:
Error shape:
503 {error:"payment_not_configured"}—PAYMENT_IBANv env je prázdny.404 {error:"not_found"}— neplatné UUID, neexistujúca objednávka, alebo caller nemá prístup (žiadne leakovanie existencie objednávky).500 {error:"internal_error" | "invalid_iban" | ...}— interná chyba generátora (logované sreq_idaorder_id, žiadne PII).Auth
userIdmatchujeorder.userId, ALEBO?token=(signed cezORDER_TOKEN_SECRET, base64url).Cudzí caller → 404. To je zhodné s plánovaným pravidlom v
GET /api/orders/:id(BE-5).Env
503 fallback (keď je IBAN prázdny) ponechaný — len v defaultnom
.env.exampleIBAN nastavený je, takžedocker compose upz čistého stavu vracia 200 (reálny QR) prependingobjednávku.Files
be/app/api/orders/[id]/payment-qr/route.ts— handlerbe/lib/pay-by-square.ts— pure service (IBAN mod-97, bysquare payload, qrcode render)be/lib/order-access.ts— auth adapter (PrismaOrderlookup, camelCase fields)be/lib/session.ts— cookie session lookup (PrismaSessionmodel)be/lib/order-tokens.ts— HMAC sign/verify (shared s BE-2/BE-5)be/lib/payment-config.ts— env →PaymentConfigbe/__tests__/*.test.ts— 19 vitest testov (route 5 / pay-by-square 10 / tokens 4)be/.env.example— fiktívny IBAN + komentár pre prod replacementbe/next.config.js—serverComponentsExternalPackages: ['bysquare']be/package.json—bysquare,qrcode,@types/qrcode,vitestbe/.gitignore— pridané*.tsbuildinfoTests
tsc --noEmitčisté.Závislosti / heads-up
userId,guestEmail,variableSymbol,expiresAt, ...).OrderForPaymentfaçade interne ponecháva snake_case pre čitateľnosť route handleru.qr_link = /api/orders/<id>/payment-qr?token=<signOrderToken(order.id)>—signOrderTokenexportované zlib/order-tokens.ts.masox_session(lookup doSession.id). Ak BE-2 vyberie iný názov, prosím zarovnáme.Issue: PK-34
71bac896deto58d75b86d8