Onlangs heb ik voor CWR Mobility (http://www.cwrmobility.com) een ontwikkelopdracht gedaan waarbij gebruik is gemaakt van diverse nieuwe en interessante technieken.
De opdracht
De opdracht was het uitwerken en ontwikkelen van een web applicatie voor het aanvragen of kopen van software licenties voor een reeds eerder in eigen huis ontwikkelde applicatie.
De in eigen huis ontwikkelde applicatie integreert zich in Microsoft Dynamics CRM en biedt de gebruiker de mogelijkheid om te configureren welke elementen van CRM hij toegankelijk wil hebben op zijn mobiele apparaat. Dit kan een PDA, telefoon, Black Berry of IPhone zijn. Eventueel is er een web interface beschikbaar die op alle mobiele apparaten werkt.
Microsoft Dynamics CRM biedt ook een online omgeving onder de naam CRM Online (http://crm.dynamics.com/). Ook hier kan de applicatie in geintegreerd worden. Hieraan zijn licenties verbonden en om gebruikers de mogelijkheid te geven zich hier voor aan te melden, heb ik een web applicatie gemaakt.
De applicatie
Met de web applicatie kunnen trial en business licenties worden aangevraagd. Voor de business licenses dient maandelijks te worden betaald middels een PayPal account. De web applicatie bevat dus ook PayPal integratie om dit mogelijk te maken. Verder heeft de gebruiker de mogelijkheid om zijn licenties te beheren. Hierbij kunnen onder andere extra licenties worden aangeschaft en kan een trial licentie worden omgezet naar een business licentie.
Alle gegevens die de gebruiker invoert voor de registratie worden opgeslagen in CRM. Als een gebruiker zich aanmeldt wordt er een contact aangemaakt. Kiest de gebruiker voor een trial licentie, dan wordt er tevens een lead aangemaakt, plus een software licentie. Kiest de gebruiker voor een business licentie, dan wordt er een account, een software licentie en een payment profiel aangemaakt. In het payment profiel worden betaalgegevens opgeslagen van de betaling bij PayPal.

Ontwerpkeuzes
Bij het uitwerken van de opdracht heb ik ervoor gekozen om het Microsoft MVC Framework te gebruiken. ASP.Net MVC (Model View Controller pattern) is een alternatief voor ASP.Net Web Forms en biedt diverse voordelen ten opzichte van ASP.Net Web Forms.
Voor mij was van belang dat ik volledige controle had over de HTML markup en dat ik vriendelijke urls kon gebruiken; voordelen die MVC biedt. Door de scheiding tussen interface en code middels het MVC pattern konden ook meer delen van de code worden getest door middel van unit testing. Zie http://www.asp.net/mvc voor meer informatie hierover.
Technieken
Door het gebruik van MVC word je min of meer gedwongen om ook andere technieken te gaan gebruiken, bijvoorbeeld voor form validatie. Daarom heb ik voor form validatie gebruik gemaakt van de JQuery extensie ‘xVal’. (http://xval.codeplex.com/) Dit is een extensie die het mogelijk maakt om van een model met data annotations een JQuery script te genereren voor client side validatie. Door data annotations op het model toe te passen kon ik het model dus gebruiken voor zowel de server als de client validatie. Alle validatie regels staan dus op 1 plek. Voor meer informatie over JQuery, zie http://www.jquery.com/.
Omdat het registratie process in de web applicatie wat tijd vergt moest ik ook een oplossing vinden om dit aan de gebruiker te melden, waarbij de gebruiker in de tussentijd geen controle meer heeft over de applicatie. Hier heb ik gekozen voor een overlay met daarin een bericht. Om dit mogelijk te maken heb ik de JQuery extensie ‘SimpleModal’ gebruikt van Eric M. Martin. Het enige dat deze extensie doet is een overlay over de web applicatie zetten met daarin een dialoog en een knop om de dialoog te sluiten. Zie: http://www.ericmmartin.com/projects/simplemodal/.
Voor het aanschaffen van business licenties wordt gebruik gemaakt van de PayPal API. Met behulp van deze API kunnen de betaalgegevens worden verstuurd naar PayPal en kan een betalingsprofiel worden aangemaakt.
Besluit de gebruiker tot aanschaf over te gaan, dan wordt er onder water een token aangevraagd bij PayPal. Dit token wordt aangemaakt met gebruik making van de verstuurde betaalgegevens. De gebruiker wordt vervolgens doorgestuurd naar de PayPal website waar hij akkoord kan gaan met de betaling. Gaat de gebruiker akkoord, dan wordt hij weer teruggestuurd naar de web applicatie waar de registratie in gang wordt gezet. Onder water wordt er vervolgens bij PayPal een betalingsprofiel aangemaakt. De betaling vindt maandelijks plaats.
Om betalingen met PayPal tijdens de ontwikkelingsfase en de testfase te kunnen gebruiken is gebruik gemaakt van de PayPal Sandbox. De Sandbox bootst een werkelijke omgeving precies na. Je kunt je voor het gebruik van deze sandbox hier aanmelden: https://developer.paypal.com/.
De web applicatie is inmiddels online en in gebruik tot volle tevredenheid. Je kunt hem bereiken via http://online.cwrmobility.com. Klanten kunnen nu licenties online aanschaffen of CWR Mobile voor CRM gratis voor een maand uitproberen.