J'essaie d'intégrer les paiements Paypal dans une application .NET 4.0 C# WinForm faire un paiement direct (sans ouvrir le navigateur avec le site paypal) a trisuré un webservices asmx appelant cette méthode à partir d'un WebMethodErreur dans l'intégration de C# WinForm Paypal avec le service Web asmx
public DoDirectPaymentResponseType DoDirectPaymentAPIOperation(string
amountinUSDollar, string creditCardType, string creditCardNumber, int
exp_month, int exp_year, string firstName, string middleName, string
lastName, string address1, string address2, string city, string state,
string zip, string phoneNumber, string CVV2)
{
DoDirectPaymentResponseType response = new
DoDirectPaymentResponseType();
DoDirectPaymentReq wrapper = new DoDirectPaymentReq();
DoDirectPaymentRequestType request = new DoDirectPaymentRequestType();
DoDirectPaymentRequestDetailsType requestDetails = new
DoDirectPaymentRequestDetailsType();
requestDetails.PaymentAction = (PaymentActionCodeType)
Enum.Parse(typeof(PaymentActionCodeType), "SALE");
CreditCardDetailsType creditCard = new CreditCardDetailsType();
PayerInfoType cardOwner = new PayerInfoType();
PersonNameType payer = new PersonNameType();
payer.FirstName = firstName;
payer.MiddleName = middleName;
payer.LastName = lastName;
cardOwner.PayerName = payer;
creditCard.CardOwner = cardOwner;
creditCard.CreditCardNumber = creditCardNumber;
if (creditCardType == "VISA")
{
creditCard.CreditCardType = CreditCardTypeType.VISA;
}
else if (creditCardType == "MasterCard")
{
creditCard.CreditCardType = CreditCardTypeType.MASTERCARD;
}
creditCard.CVV2 = CVV2;
creditCard.ExpMonth = exp_month;
creditCard.ExpYear = exp_year;
requestDetails.PaymentDetails = new PaymentDetailsType();
requestDetails.PaymentDetails.NotifyURL = "http://IPNhost";
BasicAmountType paymentAmount = new
BasicAmountType(CurrencyCodeType.USD, amountinUSDollar);
requestDetails.PaymentDetails.OrderTotal = paymentAmount;
wrapper.DoDirectPaymentRequest = request;
Dictionary<string, string> config = getConfigDict();
PayPalAPIInterfaceServiceService service = new
PayPalAPIInterfaceServiceService(config);
response = service.DoDirectPayment(wrapper);
}
Quand il essaie de faire l'appel à l'API, dans la dernière ligne du code que je reçois cette erreur: « Exception dans HttpConnection Exécuter: réponse HTTP non valide la requête a été annulée: Impossible de créer SSL/TLS secure channel. "} System.Exception {PayPal.Exception.PayPalException}.
J'ai eu une application web 4.5 .NET WebForm avec Paypal intégré dans lequel je devais définir cette
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
dans son fichier Global.asax et il résout le problème pour cette application spécifique et je l'ai trouvé que je doivent utiliser ce
ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072;
pour .NET 4.0, mais ma question est:
Si ce serait la solution au problème de mai, où dois-je mettre cette ligne dans mon code? Parce qu'il n'y a pas Global.asax dans mon webservice asmx.
Je suppose, mais il semble que votre "NotifyURL" n'a pas activé HTTPS. L'exception semble être générée du côté de PayPal, mais ce n'est pas certain étant donné l'appel. Alternativement, l'URL avec laquelle vous commencez la connexion n'a pas SSL/TLS allumé – DiskJunky
@DiskJunky, merci, vous avez apporté de la lumière à mon problème, j'ai écrit la ligne juste avant "response = service.DoDirectPayment (wrapper)" et défini https dans le NotifyURL et je ne reçois plus l'erreur. Maintenant, je suis sur le point de formuler une autre question parce que je reçois une réponse d'échec et que je passe tous les paramètres requis à l'API – Eagle