2011-08-09 7 views
2

私はPayPalのヘルパーhttp://paypalhelper.codeplex.comを使用していたし、その後エラーPayPal.Platform.SDK.FATALExceptionMVC PayPalのヘルパーエラー:PayPal.Platform.SDK.FATALException

を得ていたが、私は、ソースコードがあまりにもそこに何が起こっているかを見ていると私は1をデバッグした後に取りましたテストプロジェクトpublic void TestImplicitSimplePay()でのテストのと、それは

ライン方法DecodeでクラスSoapEncoder96 return (object)serializer.Deserialize(reader);

public static object Decode(string soapEnvelope, Type toType) 
     { 
      XmlSerializer serializer = null; 

      try 
      { 
       /// Initializing the XMLSerializer. 
       serializer = new XmlSerializer(toType); 

       /// Removing SOAP outer Envelope 
       soapEnvelope = soapEnvelope.Replace("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header /><soapenv:Body>", string.Empty); 
       soapEnvelope = soapEnvelope.Replace("</soapenv:Body></soapenv:Envelope>", string.Empty); 
       soapEnvelope = soapEnvelope.Replace("xmlns:ns2=\"http://svcs.paypal.com/types/ap\"", string.Empty); 
       soapEnvelope = soapEnvelope.Replace("ns2:", string.Empty); 
       soapEnvelope = soapEnvelope.Replace("soapenv:", string.Empty); 
       soapEnvelope = soapEnvelope.Replace("ns3:", string.Empty); 
       soapEnvelope = soapEnvelope.Replace("xmlns:ns2=\"http://svcs.paypal.com/types/ap\"", string.Empty); 

       /// Deserializing and Returning the XML 
       using (MemoryStream reader = new MemoryStream(Encoding.UTF8.GetBytes(soapEnvelope))) 
       { 
        return (object)serializer.Deserialize(reader); //Error here 
       }     
      } 
      catch (FATALException) 
      { 
       throw; 
      } 
      catch (Exception ex) 
      { 
       throw new FATALException("Error occurred in SoapEncoder->Decode method", ex); 
      } 
      finally 
      { 
       serializer = null; 
      } 
     } 
をエラーを投げていることを見つけるたSOAPEnvelopeのxml:

<xml version='1.0' encoding='utf-8'?> 
    <Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"> 
     <Header/> 
     <Body> 
      <PayResponse > 
       <responseEnvelope> 
        <timestamp>2011-08-09T00:28:53.399-07:00</timestamp> 
        <ack>Success</ack> 
        <correlationId>621854fd57929</correlationId> 
        <build>2012864</build> 
       </responseEnvelope> 
       <payKey>AP-1SE162159L922805T</payKey> 
       <paymentExecStatus>COMPLETED</paymentExecStatus> 
     </PayResponse> 

はその渡って来るいくつかのいずれかであると私はそれを修正するために何ができるかを知ってもいいですか?

答えて

1

は、この行を置き換えますと

soapEnvelope = soapEnvelope.Replace("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header /><soapenv:Body>", string.Empty); 

soapEnvelope = soapEnvelope.Replace("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header/><soapenv:Body>", string.Empty); 

をペイパルからの応答が少し変更されているようだしないと自己終了タグが終了する前に<soapenv:Header />ノードはもはやスペースがあります。