# Steg-för-steg: Koppla Stripe och Swish till bordsbeställning

**Version:** 2.3  
**Gäller:** maca Restu Pro **1.4.0+** med **onlinemeny**, **bordsbeställning**, **priser på rätter** och **orderstatus för gäst**

Den här guiden hjälper er att sätta upp **gästbetalning**: gästen väljer **Betala online** (Stripe Checkout) eller **Betala med servitör** (personal markerar betald). Ni styr **när** valet visas och vilka sätt som är tillåtna under **maca Restu → Betalningar**.

> **Viktigt:** maca Restu Pro är **inte** ett kassasystem eller certifierad betalterminal. Ni ansvarar för moms, kvitton, återbetalningar och att följa Stripe/Swish och Finansinspektionens regler. Betalning för **Pro-licensen** till maca.se är en helt separat Stripe-koppling — använd **inte** samma nycklar här.

---

## Innan du börjar

1. **Bordsbeställning på** — *maca Restu → Inställningar* → kryssa i **Gästorderlista**.
2. **HTTPS** — WordPress **Webbplatsadress** ska börja med `https://`.
3. **Admin-behörighet** — du behöver kunna logga in på Stripe (och ev. bankens Swish-portal).
4. Öppna **maca Restu → Betalningar** i WordPress — där klistrar du in nycklar och ser webhook-URL:er.
5. **Priser på menyn** — gästbetalning kräver att bordsbeställning visar priser (annars finns inget belopp att betala online).

---

## Gästflöde i maca Restu (kort)

| Inställning | Betydelse |
|-------------|-----------|
| **Betala vid bordet** | Gäst kan välja att betala servitör; servitör trycker **Markera betald** på servitörssidan |
| **När gästen kan betala (online)** | **Vid order** = direkt efter skickad order · **Efter måltid** = när ordern är **serverad** |
| **Aktivera Stripe checkout** | Krävs för **Betala online**; Stripe-nycklar + webhook |
| **Visa Betala online** | Kan stängas av om ni bara vill ha betalning vid bordet |

**Flöde för gästen:** Skicka order → öppna **Mina ordrar** / orderstatus → välj betalsätt → (online: Stripe) eller (servitör: betala när personalen kommer). Valfritt **Dela notan** — dela totalsumman på flera personer och betala sin andel online.

**Guest QR / återställ session:** Om gästen tappat orderstatus (t.ex. privat fönster eller rensad webbläsare) kan personal visa **Guest QR** på servitör-/kökskortet. Gästen skannar och orderstatus öppnas igen via `?maca_order=`.

**Flöde för personal:** Servitörssidan visar t.ex. *Betalar vid bordet* eller *Betald*, plus belopp, tid och betalnings-ID om det är aktiverat. **Markera betald** döljs om gästen redan betalat online. Kökssidan (KDS) kan visa samma betalningsinfo om ni valt det under inställningar.

**Dricks:** Under Betalningar kan ni aktivera dricks (procent eller fasta belopp, ev. eget belopp). Dricks ingår i Stripe-beloppet och sparas på ordern.

**E-postbekräftelse (valfritt):** Vid **Betala online** kan gästen kryssa i *Önskas beställningsbekräftelse på mejl* och ange adress. Efter lyckad betalning skickas en **beställnings- och betalningsbekräftelse** med radspec och momsuppdelning. Adressen **lagras inte** i WordPress — den skickas endast via Stripe Checkout till utskick. Mailet innehåller tydlig text om att det **inte** är ett officiellt skattekvitto; ert kassasystem hanterar lagligt kvitto.

**Moms innan betalning:** Under **Inställningar → Restaurang** anger ni serveringssätt (äta på plats / hämtmat) och momssatser. Sätt **Momskod** per rätt under **Rätter** (mat/alkohol) så momsuppdelningen i mailet blir korrekt.

**Betalningshistorik:** *maca Restu → Betalningshistorik* (under Betalningar) — filter, sammanfattning och CSV-export för avstämning.

> Ni kan aktivera **endast betala vid bordet** utan Stripe — kryssa i *Betala vid bordet* och låt *Stripe checkout* vara av.

---

## Översikt: Stripe eller Swish?

| Alternativ | Passar när | Svårighetsgrad |
|------------|------------|----------------|
| **Stripe (rekommenderat först)** | Ni vill ha kort, Apple/Google Pay och ofta **Swish via Stripe** med ett konto | Medel — tydlig dokumentation |
| **Swish direkt (Handel)** | Ni redan har Swish Handel hos bank och teknisk partner | Högre — certifikat och bankavtal |

Många restauranger börjar med **Stripe** och aktiverar Swish som betalmetod **inuti Stripe** (steg 7 nedan). Direkt Swish (del B) behövs bara om ni **inte** tar Swish via Stripe.

### Utländska gäster (turister m.m.)

| Metod | Utanför Sverige |
| --- | --- |
| **Stripe – kort** | Ja, i regel. Gäster med utländska Visa/Mastercard kan betala; belopp debiteras enligt ert Stripe-konto (ofta **SEK**). Gästens bank kan ta växlingsavgift. |
| **Apple Pay / Google Pay** | Beror på gästens enhet och Stripe-inställningar. |
| **Swish (via Stripe eller direkt)** | I praktiken **svenska Swish-användare**. |

Ni behöver inte ett separat “utländskt” konto för kortbetalning — konfigurera **Stripe** och informera gäster i er **integritetspolicy** (se **maca Restu → Villkor och integritet**).

---

## {#stripe} Del A — Stripe (steg 1–10)

### Steg 1 — Skapa Stripe-konto

1. Gå till [https://dashboard.stripe.com/register](https://dashboard.stripe.com/register).
2. Registrera med **företagets e-post** (inte privat om möjligt).
3. Välj **Sverige** som land och **SEK** som valuta när du uppmanas.
4. Bekräfta e-postadressen via länken Stripe skickar.

### Steg 2 — Aktivera ert företag i Stripe

1. Logga in på [Stripe Dashboard](https://dashboard.stripe.com/).
2. Om du ser bannern **"Complete your account"** / **Slutför ditt konto** — klicka den.
3. Fyll i:
   - **Företagsnamn** (som på gästens kvitto)
   - **Organisationsnummer**
   - **Adress** till restaurangen
   - **Bankkonto** för utbetalningar (IBAN)
4. Ladda upp eventuella dokument Stripe begär (ID för ägare, registreringsbevis).
5. Vänta tills status visar att ni kan ta emot betalningar (ibland några timmar, ibland några dagar).

### Steg 3 — Välj hur pengarna ska landa (vanligt vs Connect)

**Vanligt för en egen restaurang (enklast):**

- Ni använder **ert eget** Stripe-konto.
- Alla betalningar går till ert bankkonto via Stripe.
- I maca Restu klistrar ni in **era** API-nycklar (steg 5).

**Om maca eller en kedja ska ta en avgift per restaurang (senare):**

- Då används **Stripe Connect** — varje restaurang kopplar ett underkonto (`acct_…`).
- Kontakta er utvecklare/macå innan ni väljer Connect.

Den här guiden utgår från **eget Stripe-konto**.

### Steg 4 — Aktivera testläge

1. I Stripe Dashboard, uppe till höger: växla **"Test mode"** / **Testläge** **PÅ** (orange/indikator).
2. Allt du gör nu påverkar **inte** riktiga pengar.

### Steg 5 — Hämta API-nycklar (test)

1. Gå till **Developers** (Utvecklare) → **API keys** (API-nycklar).  
   Direktlänk: [dashboard.stripe.com/test/apikeys](https://dashboard.stripe.com/test/apikeys)
2. Kopiera:
   - **Publishable key** — börjar med `pk_test_…`
   - **Secret key** — klicka **Reveal** — börjar med `sk_test_…`  
     **Dela aldrig secret key** i e-post eller chatt.
3. I WordPress: **maca Restu → Betalningar → Inställningar**.
4. Under **Stripe**:
   - Kryssa i **Testläge**
   - Klistra in **Publishable key** och **Secret key**
5. Klicka **Spara betalningsinställningar**.

### Steg 6 — Förstå webhook (varför den behövs)

När en gäst betalar uppdaterar Stripe er webbplats via en **webhook** — annars vet inte maca Restu att ordern är betald.

Webhook-URL för er sajt står i:

- **maca Restu → Betalningar** (sidokolumnen), eller
- Inställningar under Stripe-rutan.

Den ser ut ungefär så här:

`https://er-restaurang.se/wp-json/maca-menulist/v1/payments/stripe/webhook`

Kopiera hela URL:en (med `https`).

### Steg 7 — Skapa webhook i Stripe

1. Fortfarande i **testläge**: **Developers → Webhooks**.
2. Klicka **Add endpoint** / **Lägg till slutpunkt**.
3. **Endpoint URL:** klistra in webhook-URL från maca Restu (steg 6).
4. **Description:** t.ex. `maca Restu bordsbeställning test`.
5. Under **Select events** / **Välj händelser**, lägg till minst:
   - `checkout.session.completed`
   - `payment_intent.succeeded`
   - `payment_intent.payment_failed`
6. Klicka **Add endpoint**.
7. Öppna den nya webhooken → **Signing secret** → **Reveal** → kopiera värdet som börjar med `whsec_…`.
8. I WordPress under Stripe: klistra in i **Webhook signing secret** → **Spara**.

### Steg 8 — Aktivera betalmetoder (kort, Swish m.m.)

1. Gå till **Settings** → **Payment methods** (Betalningsmetoder).  
   [dashboard.stripe.com/settings/payment_methods](https://dashboard.stripe.com/settings/payment_methods)
2. Aktivera det ni vill erbjuda gäster, t.ex.:
   - **Cards** (kort)
   - **Apple Pay** / **Google Pay** (om tillgängligt)
   - **Swish** — om Stripe visar Swish för ert konto i Sverige, aktivera den här (då behöver ni oftast **inte** Del B nedan)
3. Spara ändringar.

### Steg 9 — Testa gästbetalning

1. I WordPress: **Betalningar** → kryssa **Betala vid bordet** och/eller **Aktivera Stripe checkout**; välj **Vid order** eller **Efter måltid**.
2. Skicka en **testbeställning** från QR-menyn (med priser på rätter).
3. **Manuellt:** välj **Betala med servitör** → logga in på servitörssidan → **Markera betald**.
4. **Online:** välj **Betala online** → betala med testkort `4242 4242 4242 4242`, valfritt datum/CVC.
5. Kontrollera:
   - Stripe → **Payments** (testbetalning)
   - Stripe → **Webhooks → Recent deliveries** (lyckad `checkout.session.completed`)
   - Gästens orderstatus: *Betald — tack!*
   - **maca Restu → Bordsbeställningar** — betalstatus *paid*

### Steg 10 — Gå live (riktiga betalningar)

1. Slutför **steg 2** så Stripe godkänt ert företag.
2. Stäng av testläge i Stripe Dashboard (växla **Test mode** **AV**).
3. Gå till **Developers → API keys** (live): [dashboard.stripe.com/apikeys](https://dashboard.stripe.com/apikeys)
4. Kopiera `pk_live_…` och `sk_live_…`.
5. Skapa en **ny webhook** med samma händelser men **live**-läge och er live webhook-URL.
6. I WordPress: avmarkera **Testläge**, klistra in **live**-nycklar och **live** `whsec_…` → Spara.
7. Gör ett litet riktigt köp (t.ex. billig dryck) och kontrollera utbetalning i Stripe → **Balance**.

---

## {#swish} Del B — Swish direkt (Swish Handel)

Använd denna del **endast** om ni **inte** tar Swish via Stripe (Del A, steg 8).

### Steg B1 — Skaffa Swish Handel

1. Kontakta er **bank** (t.ex. Swedbank, Handelsbanken, SEB, Nordea).
2. Be om **Swish för företag / Swish Handel** kopplat till restaurangens konto.
3. Ni får ett **10-siffrigt Swish-nummer** för företaget (inte privat Swish).
4. Banken eller en **teknisk partner** (t.ex. betaltjänstleverantör) hjälper er med API och certifikat.

### Steg B2 — Teknisk koppling

Swish Handel kräver vanligtvis:

- **Merchant Swish number** (10 siffror)
- **TLS-certifikat** och nycklar från bank/partner
- **Callback URL** registrerad hos partnern

I maca Restu (förberedelse):

1. **maca Restu → Betalningar → Inställningar → Swish**
2. Fyll i **Swish-nummer (Handel)**
3. Kryssa i **Test / sandbox** under test
4. När partnern godkänt er URL: kopiera **Swish callback URL** från Betalningar-sidan och kryssa i **Callback URL registrerad**

> Direkt Swish (certifikat/API) i pluginet är fortfarande begränsat — använd **Swish via Stripe** (steg 8) om möjligt. Spara bankens dokumentation om ni bygger Handel senare.

### Steg B3 — Swish via Stripe (enklare alternativ)

Om Swish finns under Stripe **Payment methods**:

1. Hoppa över Del B.
2. Följ **Del A** och aktivera Swish i **steg 8**.
3. Välj **Stripe** som primär leverantör i maca Restu.

---

## Del C — Inställningar i maca Restu

1. **maca Restu → Betalningar → Inställningar**
2. **Gästbetalningsflöde**
   - **Betala vid bordet** — gäst väljer servitör; personal bekräftar betalning
   - **När gästen kan betala** — *Vid order* eller *Efter måltid*
   - **Dricks** — förval (procent eller fasta belopp), ev. eget belopp
   - **Personalens betalningsinfo** — servitör, kök eller båda
   - **Aktivera Stripe checkout** + visa Betala online
3. **Primär leverantör** — Stripe (rekommenderat)
4. Fyll i Stripe-nycklar och webhook (Del A)
5. Följ **checklistan** tills gästbetalning och Stripe checkout är gröna
6. **Betalningshistorik** — undermeny under Betalningar; exportera CSV vid behov

---

## Felsökning

| Problem | Åtgärd |
|---------|--------|
| "Not fully configured" | Kontrollera att publishable + secret key är ifyllda (Stripe) eller 10-siffrigt Swish-nummer |
| Webhook fel 400/401 i Stripe | Fel `whsec_` — kopiera signing secret från **samma** webhook som URL:en |
| Betalning lyckas men order inte betald | Kontrollera webhook (`checkout.session.completed`), `whsec_`, och att URL:en är publik |
| Ingen betalknapp för gäst | Priser på? Betalningar aktiverad? Timing — vid *Efter måltid* krävs status *serverad* |
| Endast manuell betalning önskas | Kryssa **Betala vid bordet**, stäng av Stripe checkout |
| Testkort fungerar inte | Stripe **testläge** måste vara på i både Stripe och maca Restu |
| Blandar ihop maca-licens och gästbetalning | Pro-licens = maca.se; gästbetalning = **ert** Stripe/Swish under Betalningar |

---

## Support

- **Stripe:** [support.stripe.com](https://support.stripe.com/)
- **Swish företag:** via er bank
- **maca Restu:** [maca.se](https://maca.se) — ange att det gäller **gästbetalning**, inte Pro-licens

---

## Snabbreferens — var i Stripe hittar jag …?

| Jag vill … | Var i Stripe |
|------------|----------------|
| Skapa konto | [dashboard.stripe.com/register](https://dashboard.stripe.com/register) |
| Slutföra företagsuppgifter | Dashboard → **Complete account** |
| API-nycklar (test) | **Developers → API keys** (testläge på) |
| API-nycklar (live) | **Developers → API keys** (testläge av) |
| Webhook | **Developers → Webhooks → Add endpoint** |
| Betalmetoder | **Settings → Payment methods** |
| Se betalningar | **Payments** |
| Utbetalningar | **Balance → Payouts** |
