2017-08-23 1 views
0

J'essaie d'obtenir la réponse de l'environnement paypal sandbox pour tester les variables revenant de paypal. J'utilise asp.net et vb.net maintenant le code fonctionne bien sur l'url paypal en direct mais pas sur le local pour une raison étrange.Paypal la connexion sous-jacente a été fermée

Je souhaite utiliser l'environnement sandbox pour les tests locaux, mais l'erreur suivante s'affiche.

Une exception de type « System.Net.WebException » a eu lieu dans System.dll mais n'a pas été traitée dans le code utilisateur

Informations complémentaires: La connexion sous-jacente a été fermée: Une erreur inattendue est survenue sur un envoi.

Maintenant, les œuvres de code en direct sur

Dim req As HttpWebRequest = CType(WebRequest.Create("https://www.paypal.com/cgi-bin/webscr"), HttpWebRequest) 

J'avais supposé que tous les changements que j'était ce

Dim req As HttpWebRequest = CType(WebRequest.Create("https://www.sandbox.paypal.com/cgi-bin/webscr"), 

Main Code

Dim req As HttpWebRequest = CType(WebRequest.Create("https://www.sandbox.paypal.com/cgi-bin/webscr"), HttpWebRequest) 
    'Set values for the request back 
    req.Method = "POST" 
    req.ContentType = "application/x-www-form-urlencoded" 
    Dim Param() As Byte = Request.BinaryRead(HttpContext.Current.Request.ContentLength) 
    Dim strRequest As String = Encoding.ASCII.GetString(Param) 
    strRequest = strRequest + "&cmd=_notify-validate" 
    req.ContentLength = strRequest.Length 

    'Send the request to PayPal and get the response 
    Dim streamOut As StreamWriter = New StreamWriter(req.GetRequestStream(), Encoding.ASCII) 
    streamOut.Write(strRequest) 
    streamOut.Close() 
    Dim streamIn As StreamReader = New StreamReader(req.GetResponse().GetResponseStream()) 
    Dim strResponse As String = streamIn.ReadToEnd() 
    streamIn.Close() 

    'Assign payment variables 
    strOrderNo = HttpContext.Current.Request("item_number") 
    strGross = HttpContext.Current.Request("mc_gross") 

Edit 2 Après d'autres enquêtes, il semble que Paypal a changé son bac à sable, mais je ne peux pas mettre à jour mon application à 4.5 pour utiliser simplement le bac à sable. Selon cette pile

Using PayPal PDT with vb.net and getting: the underlying connection was closed: An unexpected error occurred on a send

ce qui suggère de modifier cette ligne à utiliser Tsl12 mais ce n'est pas une option dans mon site web et je ne peux pas le mettre à jour comme un site utilisé tous les jours à moment. Pourquoi est-ce que le code fonctionne bien dans l'environnement en direct pourquoi paypal a-t-il changé son sandbox pour cela?

Répondre

0

Pour quelqu'un d'autre difficulté que je trouve comment résoudre ce problème en utilisant les éléments suivants bidouille

Const _Tls12 As SslProtocols = DirectCast(&HC00, SslProtocols) 
Const Tls12 As SecurityProtocolType = DirectCast(_Tls12, SecurityProtocolType) 
ServicePointManager.SecurityProtocol = Tls12 

Merci à ce grand op à How to implement Security Protocols TLS 1.2 in .Net 3.5 framework

Quelqu'un peut-il me laisser pas les conséquences de l'utilisation du hack ci-dessus va elle Soyez la preuve du futur.