Medio Ambiente:. Visual Studio 2010 Professional .NET Framework 4 C#La integración de PayPal en C#/Solución NET utilizando WSDL (SOAP)
Agregado referencia de servicio utilizando la siguiente WSDL: https://www.paypalobjects.com/wsdl/PayPalSvc.wsdl
Problema 1: cuando se compila simplemente así, obtenga un montón de errores del archivo Reference.cs. Parece errores de espacio de nombres. Menciona que no puede encontrar el espacio de nombres de referencia del servicio en el espacio de nombres de mi proyecto. Por lo tanto, entré en el archivo Reference.cs y donde obtuve este error, eliminé el espacio de nombres del proyecto antes de los nombres del método, y ahora se compila.
Finalmente, obteniendo acceso a todas las clases. Creado y rellenado DoDirectPaymentReq y CustomSecurityHeader objetos con las propiedades requeridas. Se creó una instancia de la clase PayPalAPIAAInterfaceClient, que contiene el método DoDirectPayment que toma los argumentos de tipo CustomSecurityHeader y DoDirectPaymentReq. Se ve así:
using (var client = new **PayPalAPIAAInterfaceClient**())
{
var credentials = new CustomSecurityHeaderType
{
Credentials = new UserIdPasswordType
{
Username = "[email protected]",
Password = "xxxxxxx",
Signature = "jksadfuhasfweakjhasf"
}
};
_doDirectPaymentResponseType = client.DoDirectPayment(ref credentials, _doDirectPaymentReq);
}
Problema 2: Después de escribir un TestMethod para el método que contiene el código anterior, me sale el error de la siguiente manera:
System.InvalidOperationException: Could not find default endpoint element that references contract 'Paypal.PayPalAPIAAInterface' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.
at System.ServiceModel.Description.ConfigLoader.LoadChannelBehaviors(ServiceEndpoint serviceEndpoint, String configurationName)
at System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName, Configuration configuration)
at System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName)
at System.ServiceModel.ChannelFactory.InitializeEndpoint(String configurationName, EndpointAddress address)
at System.ServiceModel.ChannelFactory`1..ctor(String endpointConfigurationName, EndpointAddress remoteAddress)
at System.ServiceModel.EndpointTrait`1.CreateSimplexFactory()
at System.ServiceModel.ClientBase`1.CreateChannelFactoryRef(EndpointTrait`1 endpointTrait)
at System.ServiceModel.ClientBase`1.InitializeChannelFactoryRef()
at System.ServiceModel.ClientBase`1..ctor()
at PaymentEngine.Paypal.PayPalAPIAAInterfaceClient..ctor() in Reference.cs: line 30063
Por lo tanto, hasta ahora no lo he hecho haber podido realizar una transacción exitosa utilizando el protocolo SOAP de PayPal mediante el uso de WSDL en C#.
Tenía la impresión de que esto es muy simple. Simplemente agregue la referencia de servicio y utilice las clases con sus propiedades y métodos creados en el proxy de WSDL.
¿Dónde me estoy equivocando?
¿Estoy utilizando el WSDL incorrecto? Me gustaría probar primero contra Sandbox y luego activar Live.
Si estoy en lo cierto con el WSDL, se parece a la clase PayPalAPIAAInterfaceClient no conocer su punto final, que no sé si estoy supone que debe configurar manualmente o no desde su ya existe en la definición WSDL en el final (compruébalo). Creo que la clase en sí debería saber a qué punto extremo llamar dependiendo de si estoy usando Signature o Certificate para completar CustomSecurityHeaderType.
Pero, ¿cómo sabe la clase PayPalAPIAAInterfaceClient si intento llamar al Sandbox (prueba) o es una transacción en vivo?
PayPal solía tener dos WSDL diferentes para Sandbox y para Live. Se pueden encontrar aquí: ->https://cms.paypal.com/us/cgi-bin/?cmd=_render-content & content_id = desarrollador/e_howto_api_soap_PayPalSOAPAPIArchitecture
Después de hablar con su apoyo que se se le solicitó usar el siguiente WSDL para Sandbox y Live: ->https://www.paypalobjects.com/wsdl/PayPalSvc.wsdl
Pero, ¿cómo le digo a la clase PayPalAPIAAInterfaceClient cuando se supone que debe realizar pruebas Live o Sandbox. Y también a qué punto final usar dependiendo de mi método de SOAP y Signature. Se mencionan los puntos finales de PayPal aquí:
https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/howto_api_endpoints
ayuda!
OMG !!! Que estúpido de mi parte !! ¿Por qué no miré en la aplicación? ¡Config! ESO FUNCIONO !! ¡GRACIAS, GRACIAS, GRACIAS! Aunque recibo un error de "Versión no admitida" de Paypal. – dparkar
La versión no compatible puede resolverse enviando la versión correcta en la solicitud SOAP: la última versión es 84.0 en este momento. – Robert
¡Gracias Robert! Eso funcionó también :) – dparkar