Bonjour Thierry,
J'ai trouvé la raison de cette erreur ! En fait, si tu regarde le code de la page ...\admin\Sales\PayPalSubscription.aspx.vb il y est fait référence à trois variables du portail : paypalsubscriptionreturn, paypalsubscriptionnotifyurl et paypalsubscriptioncancelreturn. Manque de bol, ces variables ne sont pas définies par défaut ! Comme un objet Dictionary est utilisé pour stocker les paramètres du portail et que le test ne prend pas en compte l'absence de ces variables, le code plante tout simplement. De plus, après inspection du code, je te précise que le mot de passe PayPal de ton compte n'est absolument pas utile car il n'est jamais utilié. Donc, autant mettre un mot de passe bidon ! Cela évitera que tu te fasse pirater ton compte PayPal si jamais ta base de données venait à être piratée.
Pour que la souscription fonctionne, il faut te connecter en tant que Host (SuperUser) puis aller dans Host > SQL. Coller le code suivant (avec les modifications requises, voir ci-après mes explications) dans la boîte de texte, cocher 'Run as Script' et cliquer sur 'Execute'.
CODE DU SCRIPT :
insert into {databaseOwner}{objectQualifier}PortalSettings ( PortalID, SettingName, SettingValue )
values (n, 'paypalsubscriptionreturn', 'url_de_retour_apres_payement');
insert into {databaseOwner}{objectQualifier}PortalSettings ( PortalID, SettingName, SettingValue )
values (n, 'paypalsubscriptioncancelreturn', 'url_de_retour_sur_annulation');
insert into {databaseOwner}{objectQualifier}PortalSettings ( PortalID, SettingName, SettingValue )
values (n, 'paypalsubscriptionnotifyurl', '');
IL FAUT REMPLACER les parties en rouge AVANT de coller ce script dans la boîte de texte ! Ci-dessous les explications :
- n : Numéro du portail concerné
- url_de_retour_apres_payement : URL de la page sur laquelle l'utilisateur doit être redirigé après payement.
- url_de_retour_sur_annulation : URL de la page sur laquelle l'utilisateur doit être redirigé s'il a cliqué sur annulation sur le site PayPal.
Idéalement, l'url de retour après payement devrait être celle de la page d'acces à tes services. Tandis que l'url de retour sur annulation devrait être une page sur laquelle tu auras pris soin de placer un module Text/HTML avec un blabla expliquant qu'en raison de l'annulation tes services ne sont pas accessibles. Dernière précision, il ne faut PAS spécifier d'url pour le paramètre 'paypalsubscriptionnotifyurl', a moins que tu écrive ta propre page de traitement PayPal IPN. Voir le code de la page d'origine dans ...\admin\Sales\paypalipn.aspx. Enfin, tu ne peux pas utiliser la sandbox PayPal sans modifier le code des pages du dossier ...\admin\Sales. Car l'url de la page PayPal est codé en dur dans leur code.
Voilà, tu me dois bien un verre sur ce coup ! ;-)
Gilles
P.S. : Evidement tu ne peux pas tester complètement (surtout le retour) si ton site n'est pas accessible depuis l'Internet. Si tu bosse en local il te faut un nom de domaine volatile tel que no-ip.com ou encore DynDNS ! N'oublie pas de configurer ton routeur, IIS et ton instance dnn pour qu'il prennent en compte ce domaine.