Vous créez une application Web de commerce électronique et vous devez prendre en charge plusieurs méthodes de paiement (Visa, MasterCard ... etc.) Afin que vos clients puissent facilement payer leurs commandes. Plutôt que de mettre en œuvre cela vous-même, vous décidez de compter sur un fournisseur tiers de confiance pour vous fournir ces services.
Ogone est une entreprise bien connue de Belgique qui fournit des services de paiement. Ils fournissent plus de 40 méthodes de paiement internationales et locales. Ils gèrent les transactions de paiement entre vos clients, votre boutique en ligne et les fournisseurs de méthodes de paiement (par exemple Visa).
Bien sûr, vous devez payer une petite somme pour chaque transaction gérée par Ogone, mais qui vous achète une protection contre la fraude intégrée, une sécurité, des outils pour gérer vos paiements ... et bien plus encore. Le coût de la mise en œuvre de tout cela vous-même est beaucoup plus grand.
Vous vous inscrivez donc à un compte Ogone et décidez d'intégrer leur système dans votre application Web.
Comment pouvons-nous réaliser cela? Découvrons ...
Tout d'abord, allez sur le site Web Ogone et inscrivez-vous pour un compte de test gratuit. Dans le coin supérieur droit du site, vous trouverez un bouton étiqueté "Créez votre compte de test gratuit".
Figure 1 - Compte de test

Cliquez dessus et remplissez le formulaire résultant. Assurez-vous que les données que vous saisissez dans ce formulaire sont correctes. Après avoir soumis votre demande de nouveau compte de test, un employé d'Ogone vérifiera vos coordonnées et en fonction du résultat approuvera ou rejetera votre demande. Ce processus pourrait prendre quelques heures. Assez ennuyeux, mais il n'y a aucun moyen de contourner cela.
Une fois votre compte approuvé, vous recevrez un e-mail qui contient votre mot de passe. Vous êtes maintenant prêt à vous connecter à l'Ogone Merchant Administration.
Avant de pouvoir commencer à utiliser votre compte de test, vous devez configurer les paramètres suivants:
Pour configurer vos options d'abonnement, cliquez sur le compte d'option affiché dans le menu du côté gauche de l'écran.
Figure 2 - Menu d'administration des marchands

Sur la page du compte, vous serez présenté avec quelques options, sélectionnez l'option "votre abonnement". Vous devez maintenant choisir un type d'abonnement. Choisissez "Adventure" et cliquez sur le bouton intitulé "Confirmer et accéder à vos options".
Ici, vous pouvez ajouter un certain nombre d'options à votre abonnement telles que la détection de fraude, l'hébergement d'images, le look de facture ... etc. Pour cette démo, nous n'avons pas besoin d'options supplémentaires, alors cliquez simplement sur Confirmer pour enregistrer vos paramètres.
Après avoir configuré votre type d'abonnement, vous pouvez procéder en ajoutant les méthodes de paiement que vous souhaitez offrir à vos clients. Cliquez sur les méthodes de paiement des options dans le menu d'administration marchande (figure 2). Après avoir ajouté Visa à la liste "Méthodes de paiement sélectionnées", vous devez modifier ce mode de paiement et le définir sur activé.
Figure 3 - Activer le mode de paiement des visas

Cliquez simplement sur l'option d'édition illustrée à la figure 3, marquez le mode de paiement comme activé (Activation: Oui) et cliquez sur Soumettre. Vous pouvez utiliser le numéro de carte 4111 1111 1111 1111 pour tester les paiements de visa. Entrez tout pour la date d'expiration et le code de sécurité à 3 chiffres.
Enfin, vous devez configurer certains paramètres techniques qui déterminent comment les paiements en ligne seront traités. Continuez en cliquant sur l'option Informations techniques affichées dans le menu (figure 2).
La page résultante est divisée en les onglets suivants:
Cliquez simplement sur ces liens pour voir des captures d'écran comment j'ai configuré mon compte de test Ogone. J'ai défini la signature SHA-1-IN et SHA-1-OUT sur "Microsoftaspnet4". Nous y reviendrons plus tard.
Vous avez maintenant créé et configuré votre compte de test Ogone. Vous êtes prêt à effectuer votre premier paiement en ligne.
J'ai créé un projet d'application Web ASP.NET simple qui montre comment vous pouvez intégrer les paiements Ogone dans votre propre site Web ASP.NET.
Figure 4 - La solution

Cette application Web ne contient qu'une poignée de pages:
Remarque : Comme vous pouvez le voir, le projet contient également quelques fichiers de code. Nous en discuterons dans les sections suivantes. Ces fichiers contiennent le code nécessaire pour gérer le processus de paiement avec Ogone. N'hésitez pas à améliorer la conception, je viens d'inclure le strict minimum de code pour faire fonctionner les choses.
Ne cliquez pas sur le bouton Démarrer affiché ci-dessous, c'est juste une capture d'écran. C'est à quoi ressemble la page par défaut.aspx:
Figure 5 - La page default.aspx

Une référence (ou ID de commande) est générée pour identifier de manière unique la commande en cours de paiement. Ogone garde une trace de ces références. Vous ne pouvez pas traiter la même référence deux fois. C'est pourquoi j'ai choisi d'utiliser un GUID généré aléatoirement pour cet exemple. J'ai dû raccourcir le GUID à 30 caractères car Ogone n'autorise pas plus que cette limite.
De toute évidence, en plus de cette référence, vous devez également spécifier le montant qui doit être payé. L'exemple de code envoie également le long de l'adresse e-mail du client en question. De cette façon, Ogone peut envoyer un e-mail au client que son paiement a été traité avec succès.
Voyons le code caché derrière l'événement de clic du bouton:
Listing 1 - Demandez le paiement ogone
// Persist order to database
// ...
OgoneRequest ogoneRequest = new OgoneRequest ( ) ;
ogoneRequest . RequestPayment ( this . _reference , amount , customerEmail ) ;
// Clear shopping cart
// ...Vous pouvez démarrer un paiement en créant une nouvelle instance de la classe OgonErequest et en appelant la méthode de demande (...). Cette méthode nécessite 3 paramètres, à savoir la référence de commande, le montant qui doit être payé et l'adresse e-mail du client.
Listing 2 - Constructeur d'OgonErequest
public OgoneRequest ( )
{
OgoneUrl = ConfigurationManager . AppSettings [ "Ogone_Url" ] ;
Psid = ConfigurationManager . AppSettings [ "Ogone_PSID" ] ;
ShaKey = ConfigurationManager . AppSettings [ "Ogone_SHA1_IN" ] ;
Currency = ConfigurationManager . AppSettings [ "Ogone_Currency" ] ;
Language = ConfigurationManager . AppSettings [ "Ogone_Language" ] ;
AcceptUrl = ConfigurationManager . AppSettings [ "Ogone_AcceptUrl" ] ;
ExceptionUrl = ConfigurationManager . AppSettings [ "Ogone_ExceptionUrl" ] ;
CancellationUrl = ConfigurationManager . AppSettings [ "Ogone_CancellationUrl" ] ;
}Le constructeur de la classe OgonErequest initialise certaines propriétés en lisant certaines valeurs du fichier de configuration de l'application (web.config). Vous devez spécifier l'URL pour appeler pour démarrer le processus de paiement, votre ogone psid (nom d'utilisateur), la clé SHA1-in que vous avez spécifiée sur l'administration marchande, les URL de redirection ... etc.
Listing 3 - Méthode de demande de requête (...)
public void RequestPayment ( string reference , double amount , string email )
{
// Multiply by one hundred and round to zero decimals
amount = Math . Round ( amount * 100 , 0 ) ;
RemotePost post = new RemotePost { Url = this . OgoneUrl } ;
post . Add ( "pspid" , this . Psid ) ;
post . Add ( "orderid" , reference ) ;
post . Add ( "amount" , amount . ToString ( ) ) ;
post . Add ( "currency" , this . Currency ) ;
post . Add ( "language" , this . Language ) ;
post . Add ( "email" , email ) ;
// Hash
post . Add ( "SHASign" , Ogone . GenerateHash (
reference + amount + this . Currency +
this . Psid + this . ShaKey ) ) ;
// Redirection URLs
post . Add ( "accepturl" , this . AcceptUrl ) ;
post . Add ( "exceptionurl" , this . ExceptionUrl ) ;
post . Add ( "cancelurl" , this . CancellationUrl ) ;
post . Post ( ) ;
}La méthode RequestPayment (...) initie un nouveau processus de paiement en effectuant un post HTTP à l'aide de la classe RemotePost. Toutes les informations nécessaires sont incluses dans le post tel que votre PSID, le montant qui doit être payé, la langue, le signe SHA1 ... etc.
Vous devez calculer le hachage SHA1 en utilisant la signature SHA1-in que vous avez configurée dans l'administration marchande. Ogone déclare que vous devez également inclure la référence, le montant, la devise et votre PSID dans ce hachage. Nous reviendrons à calculer les hachages SHA1 plus tard.
Remarque : Le post HTTP envoie sur certaines URL de redirection que Ogone utilisera lorsque le paiement sera effectué, annulé ... etc. Si vous ne les fournissez pas, les URL par défaut sont configurées dans l'administration marchande seront utilisées (onglet de rétroaction des transactions sous des informations techniques).
Figure 6 - Confirmation de paiement

Après avoir commencé le processus de paiement, vous serez redirigé vers une nouvelle page comme le montre la figure ci-dessus. Vous pouvez modifier la disposition de cette page en spécifiant des paramètres supplémentaires dans le post HTTP. Jetez un œil au code source accompagnant cet article et la documentation officielle d'Ogone pour plus d'informations sur ce sujet.
Si l'utilisateur clique sur le bouton Annuler, le processus de paiement sera terminé et il sera redirigé vers la page PaytCancelled.aspx. Cette page affiche simplement un message selon lequel l'utilisateur a annulé le processus de paiement.
Mais nous avons configuré notre compte Ogone de telle manière que toutes les informations pertinentes concernant le processus de paiement soient incluses dans la chaîne de requête. Par exemple:
http: // localhost: 3767 / PaymentCancelled.aspx? OrderId = 246cf6f0-8bad-4EDB-806C-EEED3FB & Currency = EUR & Montant = 19.99 & PM = CreditCard & Acceptation = & Status = 1 & Cardno = & ed = & cn = & trxdate = 04% 2f08% 2f10 & payid = 6806803 & nCerror = & Brand = ... etc.
Vous pouvez extraire des informations telles que la référence de commande d'origine, le montant, le mode de paiement (par exemple: visa), l'état de réussite du paiement ... etc. Vous pouvez enregistrer ou rejeter ces informations si vous le souhaitez. C'est à vous. Ogone comprend également un hachage SHA1 composé à l'aide de la signature SHA1-Out configurée dans l'administration marchande. Ce hachage vous permet de vérifier l'identité de la personne qui a fait la demande et la validité des données présentes dans la chaîne de requête.
Si le processus de paiement est terminé avec succès, Ogone redirige l'utilisateur vers la page PaymentCcepted.aspx. La chaîne de requête inclura également les mêmes données. Lors de l'événement de chargement de la page, l'état du paiement et la validité du hachage SHA sont vérifiés. Si les deux sont corrects, le paiement est accepté.
Listing 4 - PAYSACcepted.aspx Page de chargement d'événements de chargement
OgonePaymentStatus status = OgoneResponse . Status ;
// Invalid Sha key returned from Ogone?
bool paymentSucceeded = OgoneResponse . IsShaSignValid && Ogone . IsPaymentStatusValid ( status ) ;Remarque : Ogone comprend un paramètre appelé statut (entier) dans la chaîne de requête. Ce statut vous informe du statut du paiement. L'exemple de code de cet article a enveloppé certaines de ces valeurs dans une enum appelée OgonePaymentStatus. Consultez la documentation officielle OGONE pour une liste de toutes les valeurs possibles. La méthode IspaymentStatusValid (...) vérifie si le paramètre de statut entrant est l'une des valeurs qui nous informe du paiement.
Le type de classe OgonEResponse est juste un petit wrapper qui gère les paramètres de chaîne de requête qu'Ogone inclut lorsqu'il redirige l'utilisateur vers votre site.
Listing 5 vous montre un petit extrait de cette classe. La propriété iSShasignValid lit la signature SHA1-Out à partir du fichier de configuration de l'application (web.config) et recalcule le signe SHA. Pour ce faire, vous devez inclure d'autres données telles que le montant, la référence de commande, la devise ... etc. (Consultez la documentation officielle d'Ogone pour plus d'informations).
Si le signe SHA calculé correspond à celui inclus dans la chaîne de requête, nous traitons d'une demande provenant d'Ogone et les données des paramètres de chaîne de requête sont valides.
Listing 5 - Classe OgoneResponse
public static class OgoneResponse
{
public static string OrderId { get { return HttpContext . Current . Request [ "orderid" ] ; } }
public static string Amount { get { return HttpContext . Current . Request [ "amount" ] ; } }
public static string ShaSign { get { return HttpContext . Current . Request [ "shasign" ] ; } }
public static bool IsShaSignValid
{
get
{
string key = OrderId + Currency + Amount + PaymentMethod + AcceptanceCode +
( int ) Status + CardNumber + PaymentId + NcError + Brand +
ConfigurationManager . AppSettings [ "Ogone_SHA1_OUT" ] ;
return ShaSign == Ogone . GenerateHash ( key ) ;
}
}
} Listing 6 vous montre un moyen possible comment vous pouvez calculer un hachage SHA1 pour une chaîne. La chaîne est convertie en un tableau d'octets puis codée à l'aide d'un SHA1CryptoServiceProvider. Le hachage résultant est ensuite converti en format hexadécimal.
Listing 6 - Calcul des hachages SHA1
public static string GenerateHash ( string input )
{
byte [ ] bytes = new ASCIIEncoding ( ) . GetBytes ( input ) ;
SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider ( ) ;
byte [ ] hash = sha . ComputeHash ( bytes ) ;
StringBuilder result = new StringBuilder ( ) ;
for ( int i = 0 ; i < 20 ; i ++ )
{
string temp = hash [ i ] . ToString ( "X2" ) ;
if ( temp . Length == 1 )
{
temp = "0" + temp ;
}
result . Append ( temp ) ;
}
return result . ToString ( ) ;
}Et avec cela, l'article se termine ...
J'espère que vous avez apprécié ce didacticiel sur la façon d'intégrer les services de paiement Ogone avec votre application Web de commerce électronique. Pour récapituler ce que nous avons couvert du point de vue d'un développeur: