Swish QR-koder via APIt

2019-05-27 | Teknik

Uppdatering: En mer utförlig beskrivning av hur du anropar Swish QR-generator API samt exempel i cURL och Python finns här.

Swish QR-koder förenklar betalningar via Swish. Genereringen av QR-koder kan ske statiskt eller dynamiskt.

Statiska QR-koder är inte specifika för ett visst köp utan kan återanvändas för flera betalningar. Ett exempel är försäljning av en viss typ av vara med ett fast pris (t.ex. enskilda majblommor) – betalningsuppgifter så som mottagare, meddelande och belopp förändras inte från försäljning till försäljning utan är konstanta. Statiska QR-koder går enkelt att skapa via QR-generatorn på Swish hemsida.

Dynamiska QR-koder är bra när betalningsuppgifterna varierar från köp till köp, exempelvis vid varuförsäljning på nätet. Vi ska titta närmare på dynamiska QR-koder. Dessa kan skapas via Swish QR API.

Dynamiska QR-koder

Nedan ska vi använda Swish QR API för att generera en QR-kod som innehåller en mottagares Swishnummer, ett betalningsmeddelande och ett belopp. När användaren scannar QR-koden med Swish-appen så blir dessa uppgifter förifyllda.

Några exempel med curl

Första steget blir att bekanta sig med Swish QR-API. Detta kan vi med fördel göra med curl.

API-dokumentationen (under General QR Code > View Guide) ger vägledning kring hur ett API-anrop ska se ut. API-resursen som vi är ute efter kallas ”Prefilled” i dokumentationen och har (idag) urlen:

https://mpc.getswish.net/qrg-swish/api/v1/prefilled

API-servern förväntar sig ett POST-anrop med Content-Type: application/json. Övrig data ska finnas i request-bodyn. Det krävs ingen autentisering i Prefill-fallet.

Dokumentationen innehåller inget konkret exempel på hur en Prefilled-förfrågan ska se ut. Däremot finns där ett JSON-schema som specificerar anropets utseende, så att det går att validera om ens anrop är okej.

Vi kan ta en JSON-validator till hjälp (det finns en t.ex. här) och utifrån JSON-schemat konstruera ett anrop som är okej. Efter en stunds testande med curl så fick jag fram kommando som hämtar en QR-kod och sparar den till output.png:

curl –data ’{”format”:”png”,”size”:300,”message”:{”value”:”test message”,”editable”:true},”amount”:{”value”:100,”editable”:false}}’ –header ”Content-Type: application/json” –output output.png –request POST https://mpc.getswish.net/qrg-swish/api/v1/prefilled

Om man scannar QR-koden så får man ett förifyllt betalmeddelandet (”test message”) och belopp (100 kr). Vi tittar snart på hur man även kan lägga till en mottagare.

curl-parametrar:

  • –data ’<json-sträng>’ är datat i anropets request-body
  • –header ”Content-Type: application/json” lägger till en header i anropet som säger att anropet innehåller json-data
  • –output output.png spara serverns respons (bild-datat) till en lokal fil
  • –request POST är anropets-metod; vi skickar ett POST-anrop

Det finns information om request-bodyns format i dokumentationen. I korthet: format är filformatet vi vill ha QR-koden i och size är bildens pixelstorlek (300 innebär 300×300 pixlar). editable styr huruvida användaren ska kunna ändra innehållet i respektive fält.

Om man även vill fördefinera en betalningsmottagare så gäller samma mönster som för message och amount:

"payee":{"value":"123456789","editable":true}

Om mottagarnumret är felaktigt så genereras QR-koden, men går inte att scanna i Swish-appen. Här är den färdiga QR-koden:

Swish QR-kod med meddelande (”test message”) och belopp (100). Mottagare är inte förifylld. Bildstorlek: 300×300 pixlar. Filstorlek: 38KB

När vi nu har ett fungerande anrop till API-servern så vet vi tillräckligt för att implementera detta på en hemsida eller webbtjänst.

Swish QR-koder i Oreda?

2019-05-24 | Oreda Schema

En guide kring hur man anropar Swish QR-kodgenerator APIt med exempel i cURL och Python finns här.

Det går sedan ett par år tillbaka att scanna QR-koder i Swish. Genom att öppna Swish-appen och scanna en QR-kod så fylls uppgifterna om mottagare, belopp och meddelande i automatiskt. Sedan är det bara att kontrollera och godkänna betalningen via Mobilt BankID som vanligt. Enkelt.

Swish är det vanligaste betalningssättet i Oreda Schema, därför skulle dynamiska QR-koder underlätta. Betalningarna blir lite enklare och säkrare.

Det finns bra information om Swish QR-koder på Swish hemsida, inklusive en manual för utvecklare. Värt att titta närmare på.

Uppdatering: Nu går det att betala via Swish QR-koder när man uppgraderar till Premium.

Tidsbegränsade lösenord

2019-05-16 | Teknik

Från MySQL 5.7.4 och framåt är alla användares lösenord tidsbegränsade. Om en användares lösenord inte ändrats på 365 dagar så blir användarkontot nedlåst.

Denna förändring är bra att ha koll på, då en låst MySQL-användare kan innebära att webbfrontar och andra applikationer som beror på databasen slutar fungera. För affärskritiska system kan det vara värt att överväga om det inte är bäst att stänga av denna inställning.

Stänga av inställningen

Så här stänger man av det nya beteendet med tidsbegränsade lösenord (i detta exempel för root-användaren). Kolla först att inställningen är påslagen:

> mysql -u root -p
mysql> SHOW GLOBAL VARIABLES LIKE 'default_password_lifetime';
+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| default_password_lifetime | 360 |
+---------------------------+-------+
1 row in set (0.00 sec)

”360” innebär 360 dagar innan lösenordet löper ut. Man stänger av tidsbegränsningen genom att ändra värdet till noll:

mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

Det är alltid bra att kontrollera att det gick som det skulle, genom att köra ”SHOW GLOBAL…”-kommandot igen och verifiera att värdet ändrats från 360 till 0.

Sätta lösenordet

Om lösenordet redan har gått ut för användaren så får man först sätta det på nytt, annars får man felmeddelandet ”ERROR 1820 (HY000): You must SET PASSWORD before executing this statement”.

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepassword');

Kyrkstöten på 3 minuter

2019-05-04 | Kyrkstöten

Nu finns (äntligen!) ett videoklipp på Kyrkstötens hemsida (www.kyrkstoten.se) som förklarar idéen med planeringsverktyget.

Filmen visar hur man kan ser vilka aktiviteter man medverkar i, hur man ändrar på medverkande-tillfällen, samt ger en överblick av hur Kyrkstöten fungerar.

Två år av Oreda

2019-05-02 | Oreda Schema

När min fru och jag lanserade Oreda Schema i januari 2017 så ville vi att schemaverktyget skulle vara till nytta för lärarna i våra skolor.

Att lägga schema för hand kan ta flera dagar i anspråk – värdefull tid som man som pedagog oftast inte har vid tröskeln till ett nytt läsår. Med Oreda Schema tar schemaläggningen minuter eller timmar istället för dagar.

Nu har det snart gått två och ett halvt år sedan lanseringen. 2700 pedagoger har lagt över 8000 scheman i Oreda Schema. De användare som hört av sig till oss har i allmänhet varit översvallande positiva till schemaverktyget. Och vi har fått bekräftelse på att det besparat lärare mycket tid (och frustration!) i sin vardag.

Vi började ta betalt för delar av schemaverktyget förra året, då vi införde Premium-användare. Vi tror att det var ett bra beslut, och det hjälper till att betala för de kostnader som ofrånkomligt kommer upp när man driver en webbtjänst.

Under det senaste året har fler skolor beställt Oreda Schema åt sina pedagoger. Vi tycker att det är en positiv utveckling eftersom lärarna då inte själva behöver stå för kostnaden.

Under våren är vi på väg att göra Oreda Schema fritt tillgängligt för alla lärarstudenter. Tänk vad skönt att som nyexad inte behöva slita med schemamall, papper och penna, utan kunna använda ett schemaverktyg redan från början.

Det har varit spännande och väldigt roligt att se hur Oreda Schema har kommit till användning under de här två första åren. Vi hoppas att schemaverktyget ska fortsätta vara till glädje för pedagoger i våra skolor och ser framemot fortsättningen.

Uppdaterad startsida

2019-02-17 | Kyrkstöten

Kyrkstöten fick idag en uppdaterad startsida. De största förändringarna är att inloggningsrutan nu är till höger, samt att informationen kring hur man kommer igång med sin kyrka har fått sin egen separata sida. Nu finns det även en ruta som beskriver vad man som kyrka kan göra med Kyrkstöten.

Kyrkstöten har varit igång i snart ett år och jag tror att det snart är dags att spela in en intro-video som beskriver hur verktyget fungerar.

Ansvarsgrupper

2019-02-06 | Kyrkstöten

Äntligen! I Kyrkstöten är det nu möjligt att bilda ansvarsgrupper. En ansvarsgrupp är en grupp som består av de personer som brukar medverka i någon uppgift (t.ex. ljudet).

Sidan för ansvarsgrupper

Det finns flera saker som (förhoppningsvis!) kommer bli enklare med ansvarsgrupper, och utvecklingsarbetet har än så länge bara kommit igång. Som ett första konkret steg så går det nu att se och kopiera e-postadresserna för alla personerna i en ansvarsgrupp (förutsatt att man är administratör eller med i ansvarsgruppen). På så vis går det snabbare att t.ex. skicka mejl till personerna i en viss grupp.

Framöver så är planen att man även ska kunna bifoga filer (t.ex. projektor-instruktioner) och kunna skriva in fri-text på sidan för ansvarsgrupper. På längre sikt skulle man kanske även kunna göra det möjligt att bilda andra typer av grupper i Kyrkstöten. Grupper som inte är kopplade till ansvar (t.ex. kollegie-gruppen?).

Du kan se och testa ansvarsgrupperna i Demo-miljön. Den går att komma åt från Kyrkstötens startsida.

Terrefta på webben

2019-01-20 | Terrefta

Nu har Terrefta Software en egen plats på webben. På denna webbplats kommer det att finnas information om de projekt som är kopplade till Terrefta. Dessa projekt är: Oreda Schema, Expirera och Kyrkstöten.

Äldre inlägg från den gamla Oreda Schema-bloggen kommer att importeras. hit Utöver det återstår att uppdatera innehållet på denna webbplats med nya texter och bilder.

Tack för frågor och synpunkter!

2017-08-21 | Oreda Schema

Tack alla ni som skickar in frågor, problem och förslag på förbättringar via mejl och på Facebook. Det är värdefullt att höra hur ni använder schemaverktyget, vad som är bra och vad som kan göras bättre.

Ett par saker som flera ställt frågor kring den senaste tiden:

  1. Utskriftskvalitén: Skärpan på schemautskrifter är idag ganska dålig. Det bästa man kan göra är att välja schemastorlek ”Stor” och utskriftsformat ”Liggande” (istället för stående) innan man skriver ut, vilket hjälper (bara) lite. Förhoppningsvis kommer skärpan på utskrifter vara bättre framöver, men det är för tidigt att säga när.
  2. Skapa nya ämnen: T.ex. ”Hur lägger jag till egen rast och lunchrast på mitt lärarschema?” Detta kan man göra genom att skapa nya, egna ämnen (eller aktiviteter).
  3. Kopiera scheman: Om man vill skapa flera snarlika scheman, med små variationer så skulle det underlätta om det gick att kopiera befintliga scheman. Detta finns inte i Oreda Schema idag. Kanske något att lägga till framöver som en del av schemamallar?

Än en gång, tack för feedback!

Tusen användare

2017-08-17 | Oreda Schema

Det är mitt i skolstarten, och många lägger scheman för fullt. Schemaverktyget passerade nyligen tusen användare, och webbsajten har de senaste veckorna tagit emot ett stort antal nya besökare. Kul!