2010-04-18 3 views
0

Je construis une page de paiement dans asp.net, mais la page où vous commandez vos articles est exécutée en HTTP (non sécurisé) sur mon domaine.Maintenir la session sur le domaine du relais?

Lors de la redirection de l'utilisateur vers le site de paiement, je dois passer par un autre domaine (mon fournisseur de paiement, à qui j'emprunte le certificat SSL), donc mon URL de paiement finit comme https://www.paymentprovider.com/somescript.cgi/www.mydomain.com/mypaymentpage.aspx

Maintenant, le problème ma session est perdue, mais je stocke l'ordre en session, donc j'en ai désespérément besoin. Puis-je d'une manière ou d'une autre envoyer le SessionID dans la chaîne de requête, et y restaurer la session - ou ai-je besoin d'insérer l'ordre entier dans la chaîne de requête? (Pas trop certain que ça va s'adapter cependant, il est assez long)

Toute aide sera très appréciée :-)

Répondre

1

Steffen

la bonne façon est d'utiliser un orderId unique que vous envoyez le paiement, puis la passerelle de paiement son envoyer de nouveau à vous. Ce n'est pas si simple que ses sons, car pour la sécurité, vous avez besoin d'éther pour crypter le orderID, et l'envoyer et le crypter, ou tout le monde peut voir et modifier vos commandes, communiquer avec la passerelle de paiement avec une sorte de protocole crypté. Paypal faire de cette façon, avec votre commande, vous devez envoyer à paypal un identifiant unique que vous pouvez utiliser une seule fois pour une transaction, puis paypal faire la base de référence sur cet ID.

L'autre façon dont vous dites avec la session et le cookie n'est pas sûre et les deux peuvent expirer, perdus, quoi que ce soit. La session est quand même enregistrée sur un cookie. Un temps plus long sur une session peut rendre ce que vous êtes tous prêts à faire - mais c'est dangereux et aléatoire pour ce qui arrive à une session ou au cookie.

+0

Le problème est l'ordre n'est pas stocké dans une base de données, mais je suppose que je dois changer cela, donc je peux utiliser l'approche OrderID. Merci pour le commentaire. – Steffen

+0

@Steffen oui vous devez absolument fixer un moyen de stocker un ID de commande unique même si la commande reste ouverte - et chaque nouvel ordre doit obtenir un nouvel ID de commande unique, et c'est ce que vous passez avec cet ordre dans chaque état de vos pages. – Aristos

+0

Je l'ai maintenant en cours d'exécution. Je crée chaque commande dans la base de données, et utilise un guid pour ma chaîne de requête lors du passage entre les domaines. J'utilise un guid pour que les gens ne puissent pas tracer en 1,2,3 etc. pour voir les commandes des autres. Je réalise que ce n'est pas parfait, mais quand je suis bloqué avec querystring, c'est à peu près le meilleur que je peux obtenir. Merci encore pour vos conseils :-) – Steffen

-2

Pourquoi ne pas charger la session dans un droit Cookie avant de rediriger, et lorsque l'utilisateur atteint votre zone de paiement, recréer la session à partir de ce cookie?

+0

ce qui serait plus que dangereux –

+0

Et ne fonctionne pas parce que le cookie n'est pas disponible car je suis sur un domaine différent. – Steffen

Questions connexes