Swedbank Pay
Swedbank Pays PAX-terminaler (till exempel A920Pro) talar nexo Retailer
3.1, en ISO-standard med XML över HTTP. Terminalen är server: den
lyssnar på port 11000 och kassan skickar sina meddelanden dit med
POST /EPASSaleToPOI/3.1.
Rekommenderat läge: “bara klient”. Kassan ringer upp terminalen och terminalen ringer aldrig tillbaka. Det är det driftsäkraste: en enda förbindelse, ingen port in till kassan och ingen kassaadress att ställa in i terminalen. Kassören följer köpet på terminalen, och kan avbryta det med C på kassan.
Som tillval kan kassan spegla terminalen - terminalens skärmtexter i
kassans display. Då lyssnar kassan också ("listen"), och terminalens
adminmeny ställs in med kassans adress och port. Det är en förbindelse
till som kan gå fel - välj det bara om butiken verkligen vill ha det.
Inställning
Ställs in på kortterminalfliken i inställningssidan, eller för hand i
config/card_payment.json:
{"provider": "swedbankpay", "terminal": "http://172.16.10.185:11000", "poi_id": "FHD1"}
| Fält | Betydelse |
|---|---|
terminal | Terminalens adress och port. Ge terminalen en fast adress i routern. |
poi_id | Terminalens ID hos Swedbank Pay - se nedan. Måste vara rätt. |
sale_id | Kassans namn mot terminalen. Förval RGO1. |
listen | Bara för speglingen, t.ex. "0.0.0.0:11000". Utelämnas i “bara klient”. |
Inställningssidans kortterminalflik har Swedbank Pay, med en sökning som föreslår terminaler i nätet.
Hitta adressen
Terminalens inställningsskärm för kassakopplingen visar IP-adress och port, och en QR-kod som innehåller samma sak:
{"terminalIP":"172.16.10.185","terminalPort":"11000"}
Står det “Ingen IP-adress funnen” är terminalen inte ansluten till något nät - koppla den till wifi först.
POIID - terminalens ID
poi_id är inte ett fritt namn. Det tilldelas av Swedbank Pay och väljer
terminalens inställningar hos dem - fråga supporten vilket ID terminalen
har.
Terminalen byter till det ID kassan loggar in med: den svarar “New Poi ID detected, updating parameters”, rapporterar sig till Swedbank Pay under det nya ID:t och byter om det godkänns. Är ID:t okänt för Swedbank Pay nekas rapporten (“invalid POIId: not found”) och terminalen visar “felaktig konfiguration” - också efter omstart och ny parameterhämtning. Det rättas genom att kassan loggar in med det rätta ID:t; inget behöver göras på terminalen.
Köpet
- Kassan loggar in på terminalen vid första köpet.
- Ett köp skickas som
PaymentRequest. Beloppet anges som decimaltal med punkt (1.00), inte i ören. - Godkänt: kassan sparar terminalens transaktions-id och skriver kundkvittots färdiga rader på sin egen skrivare.
- Nekat: terminalen svarar “Failure” både för ett nekat kort och för ett tekniskt fel. Kassan skiljer dem åt med svarskoden i kvittot och säger “kortköpet nekades” eller “gick inte igenom”.
- Tappas svaret frågar kassan terminalen efter utfallet
(
TransactionStatusRequest) i stället för att gissa.
Makulering (om kontrollenheten inte svarar efter ett godkänt köp) görs
med ReversalRequest och går bara på det senaste köpet. Terminalen svarar
“upptagen” en kort stund efter varje köp; kassan väntar och försöker
igen.
Dagligt underhåll
Swedbank Pay vill att terminalen är utloggad med underhåll tillåtet minst en timme per dygn, så att den kan hämta uppdateringar när ingen kund väntar. Kassan gör det själv: efter Z-rapporten loggar den ut terminalen med underhåll tillåtet, och loggar in igen vid nästa köp.
Inget dagsavslut
Protokollet saknar dagsavslut helt - ingen X-, Z- eller batchrapport. Kassans Z-rapport bygger på sin egen journal, och terminalens totaler stäms av i Swedbank Pays egna rapporter. Terminalen vill i stället vara utloggad med underhåll tillåtet en stund varje dag, för uppdateringar.
Fallgropar
- Kompakt XML. Med radbrytningar och indrag stänger terminalen anslutningen utan att svara. Kassan skickar alltid allt på en rad.
POIIDmåste finnas i varje meddelande, annars stängs anslutningen.- Terminalens egna inställningar stänger av kassakopplingen. Medan någon är inne i terminalens meny svarar den “Busy - Maintenance in progress”.
- Elementordningen i XML:en följer schemat och får inte ändras.
Känt problem: terminalen slutar ta emot kassan
Status: orsaken hittad 2026-10-26 - terminalen hade laddat ur. En A920Pro är en batteriterminal. När batteriet tar slut, eller nästan slut, slutar den svara kassan fast den kan se ut att vara på. Ladda terminalen, starta om den vid behov, och kassan når den igen.
Rutin i butiken (förslag, inte bestämd): terminalen har en fast plats i en laddvagga när den inte bärs runt, så att den alltid står på laddning mellan köpen och efter stängning.
Vad som syns. Kassan säger “kortterminalen svarar inte” vid Kort, fast terminalen ser normal ut och har nät. Inget köp går igenom från kassan.
Vad vi har sett (testterminal A920Pro, POIID FHD1, 2026-10-24 21.20):
- Terminalen lyssnar fortfarande på port 11000 - det syns i dess
egen nätverkstabell (
adb shell cat /proc/net/tcp). - Men ingen kommer in: anslutningar från två olika maskiner (en dator och CHD6800-kassan, som var den kassa terminalen var inställd på) avbryts innan betalappen ser dem - inget hamnar i appens logg.
- Terminalen själv når både internet och kassan, och adb över nätet (port 5555) fungerar.
- Dagen innan gick det att ansluta, så länge terminalens kassaadress pekade på den maskin som anslöt. Felet kom efter att kassaadressen ändrats till CHD6800.
- Strax innan hade terminalen ett underhållspass som inte nådde Swedbank Pays system (“failed to connect to tms.externaltest.payex.com”).
Vad det visade sig vara. Batteriet. Det vi först misstänkte - att terminalen bara släpper in den kassa den är inställd på, att underhållspasset lämnat den i ett halvt läge, eller wifi-nätet - behövde inte förklara något.
Kontrollera så här:
- Kan kassans maskin nå porten? Från en dator:
curl http://<terminalen>:11000/ska ge 404 (det är ett gott tecken - terminalen svarar). Inget svar alls = felet ovan. - Lyssnar terminalen?
adb shell cat /proc/net/tcp- port 11000 är2AF8i listan. - Vad säger betalappen?
adb logcat | grep SwedbankPay- leta efter underhåll, nätverksfel och vilket fönster som visas (Displaying fragment ...).
Åtgärd, i tur och ordning:
- Kontrollera batteriet och sätt terminalen på laddning. Det var orsaken 2026-10-26.
- Starta om terminalen.
- Hjälper inte det: spara terminalens adminmeny igen, med rätt kassaadress - eller utan kassaadress i läget “bara klient” - och starta om betalappen.
Om ett köp pågick när felet kom: kontrollera på terminalen om det gick igenom innan kunden går - kassan kan inte fråga terminalen när den inte kommer fram.
Felsökning
Testterminalerna går att nå med adb över nätet
(adb connect <terminalen>:5555, efter adb tcpip 5555 via USB). Betalappen
(com.optomany.AxeptPro) skriver varje meddelande den tar emot och
skickar i loggen:
adb logcat | grep "SwedbankPay"
Där syns också terminalens kontakt med Swedbank Pays system (TMS), och det är där orsaken till ett “felaktig konfiguration” brukar stå.
Provat
Mot en riktig A920Pro (testterminal): inloggning, byte av POIID till det Swedbank Pay tilldelat, och felbilden vid fel POIID och vid öppen meny. Ett riktigt kortköp, nekat köp och makulering återstår.