diff --git a/frontend/src/api/orders.ts b/frontend/src/api/orders.ts index 32a02b8..41dac62 100644 --- a/frontend/src/api/orders.ts +++ b/frontend/src/api/orders.ts @@ -5,6 +5,7 @@ export interface Order { plate: string status: string trackingId: string | null + amountPaid: number | null createdAt: string } diff --git a/frontend/src/api/payment.ts b/frontend/src/api/payment.ts new file mode 100644 index 0000000..dbaa53a --- /dev/null +++ b/frontend/src/api/payment.ts @@ -0,0 +1,8 @@ +import { request } from './client' +import type { Order } from './orders' + +export function payOrder(orderId: string): Promise { + return request(`/payment/${orderId}/pay`, { + method: 'POST', + }) +} diff --git a/frontend/src/pages/ComposePage.vue b/frontend/src/pages/ComposePage.vue index a133c27..7f90256 100644 --- a/frontend/src/pages/ComposePage.vue +++ b/frontend/src/pages/ComposePage.vue @@ -34,8 +34,12 @@ async function handleSubmit() { errorMessage.value = '' try { - await createOrder(plate.value, letterText.value) - await router.push({ name: 'orders' }) + const order = await createOrder(plate.value, letterText.value) + await router.push({ + name: 'payment', + params: { orderId: order.id }, + query: { plate: plate.value }, + }) } catch { errorMessage.value = 'Kunde inte skapa beställningen. Försök igen senare.' } finally { diff --git a/frontend/src/pages/PaymentRedirect.vue b/frontend/src/pages/PaymentRedirect.vue new file mode 100644 index 0000000..91320af --- /dev/null +++ b/frontend/src/pages/PaymentRedirect.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index 0ec783b..8c4dbd5 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -7,6 +7,7 @@ import RegisterPage from '@/pages/RegisterPage.vue' import LoginPage from '@/pages/LoginPage.vue' import OrdersPage from '@/pages/OrdersPage.vue' import AdminPage from '@/pages/AdminPage.vue' +import PaymentRedirect from '@/pages/PaymentRedirect.vue' import { useAuthStore } from '@/stores/authStore' import { getActivePinia } from 'pinia' @@ -36,6 +37,12 @@ const router = createRouter({ component: AdminPage, meta: { requiresAuth: true, requiresAdmin: true }, }, + { + path: '/betalning/:orderId', + name: 'payment', + component: PaymentRedirect, + meta: { requiresAuth: true }, + }, { path: '/registrera', name: 'register',