Integratie van Flask en Mollie (payment provider)

Ik doe (web) vrijwilligers werk voor Licht Voor De Wereld, een Belgische ngo die streeft om de blindheid in Afrika te verminderen. Door ondervoeding en niet genoeg vitamine zijn zeer veel mensen daar blind hoewel ze eigenlijk perfect kunnen zien na een eenvoudige operatie.

Recent hadden ze een probleem : hun donatie pagina was gemaakt en gehost door een extern bedrijf, en dat bouwde zijn website af.  Ze hadden daardoor vrij snel een nieuwe donatie pagina nodig, en omdat ze ook nog eens hun eigen website aan het bijspijkeren waren, was er een probleem van het genre kip en ei : de donatie pagina moet op de nieuwe website komen, maar de nieuwe website is nog niet af. En een extern alternatief was niet direct zo gemakkelijk te vinden.

Ondertussen heb ik een tussenoplossing op poten gezet : ik heb over de loop van een week of 2,3 in mijn vrije avonduren een (basic) online donatie site opgezet voor hen, gebruik makend van Flask en met integratie van de API van Mollie.be, hun payment provider die de eigenlijke betaling afhandelt. De design kan inderdaad beter, maar mijn focus lag vooral op het doen werken van de betalingen !

Online LFTW donatie pagina
Online donatie pagina opgezet in vrijwilligerswerk.

Ik moet zeggen dat het vrij goed meeviel om de donatie pagina op te zetten, en de mannen en vrouwen van Mollie zijn beslist bij de pinken. Ik had een paar vragen over hun webhook (=zij geven een melding aan je webserver als de betaling (niet) gebeurd is) en had direct de morgen nadien antwoord, met inbegrip van het oplossen van een stomme bug waar ik me al een paar uren op aan het blindstaren was.

Verder is hun documentatie up-to-date en kon ik hun voorbeelden bij wijze van spreken doornemen en implementeren (het had iets meer voeten in de aarde dan dat, maar goed). Ik heb zelfs een github request of twee aangemaakt voor het gebruik van een andere python library zodat ik ook op windows lokaal kon testen.

Als je denkt dat het het waard, mag je ook een donatie gaan doen (klik op de image hierboven om direct naar de site te gaan) – zo kunnen weer een paar mensen meer het licht in de ogen terugkrijgen !

Hosting Flask on Webfaction

Ik host nogal wat websites via Webfaction, die je toelaten om voor een vaste prijs per maand te kunnen experimenteren met Python, PHP, nodejs en nog andere programmeer talen.

Als je ziet wat je allemaal met je account kan (mag) doen, dan is het eigenlijk een gunstprijs.

Recent moest ik een Flask applicatie die ik geschreven had opladen. Configuratie op de server was toch nog eventjes anders dan op mijn localhost. Daar had ik alles bijeen gegooid, en gebruikte ik de ingebouwde Flask server om het snel te testen.

Maar op de server staat er een echte front-end webserver voor, Nginx of Apache, want een debug Flask server is echt voor het testen, niet voor productie omgevingen.

Die webserver heeft natuurlijk een andere configuratie, en daarom moet je eigenlijk de app die schrijft importeren vanuit index.py.

Wat links die me verder geholpen hebben :

  • Deploying A Flask App on Webfaction : vrij compleet en logisch opgezet, hoewel ik geen Virtual Environment setup gebruikte, en ook geen link naar mijn static folder moest toevoegen in de Apache config (mét werkte het gewoon niet meer). Ik had wat last met het begrijpen van de commando’s in puntje zes van zijn lijst, maar dat is omdat ik module imports niet veel gebruik, en dus ook niet helemaal onder de knie heb – nu al wat meer 🙂
  • Een oudere versie maar gelijkaardige manier van setup, meer kompleet maar minder transparant, kan je vinden op het Webfaction community forum : Installing Flask on Webfaction.

Wat ik het moeilijkste vond was de import van de app. Je importeert vanuit module x (waar x eigenlijk de folder is waarin je __init__.py staat) de app die je beschrijft in diezelfde __init__.py. Daar heb ik toch wel efkes op gevloekt tot het werkte.