2016-08-05 37 views
0

Ich versuche, PayPal durch ihre .NET SDK zu implementieren. (C#) Ich arbeite mit ASP.NET (Web Forms). Jedes Mal, wenn ich versuche, (einfach durch Konstruktor) erstellen Sie ein neues Zahlungs Objekt, erhalte ich eine Nullreferenceexception mit absolut kein Detail drin ...PayPal .NET SDK - neue Zahlung() - löst NullReference Ausnahme

Hier ist die Ausnahme:

System.NullReferenceException was unhandled by user code 
HResult=-2147467261 
Message=Object reference not set to an instance of an object. 
Source=<SolutionName> 
StackTrace: 
    at <SolutionName>.Classes.MFPal.Checkout(List`1 cartItems) in C:\<SolutionName>\<FolderName>\Classes\MFPal.cs:line 46 
    at <SolutionName>.Pages.Private.ShoppingCart.btnPPCheckout_Click(Object sender, EventArgs e) in C:\<SolutionName>\<FolderName>\Pages\Private\ShoppingCart.aspx.cs:line 164 
    at System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) 
    at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
InnerException: 

InnerException ist null übrigens.

Ich habe den Code bereits auf das absolute Minimum entkoppelt, ich habe zuerst mit einer gefüllten ItemList getestet, jetzt benutze ich nur noch einen leeren. Jetzt verwende ich auch "0" für jeden Preis, aber meine ersten Tests wurden mit korrekten Zahlen gemacht. Zuerst habe ich einfach gebraucht;

Payment.Create(apiContext, new Payment() { ... }); 

Aber ich konnte die Nullreference nicht identifizieren, so dass jetzt sieht der Code wie folgt aus:

 var apiContext = new APIContext(Config.PayPalAccessToken); 
     apiContext.Config = ConfigManager.Instance.GetProperties(); 
     // ONLY ADDED FOR MORE TESTING. 
     apiContext.HTTPHeaders = new Dictionary<string, string>(); 

     // NULLREF ON THE NEXT LINE 
     Payment pym = new Payment() { 
      intent = "sale", 
      redirect_urls = { 
       return_url = "http://<DomainName>/home", 
       cancel_url = "http://<DomainName>/home" 
      }, 
      payer = { payment_method = "paypal" }, 
      transactions = new List<Transaction>() { 
       new Transaction() { 
        amount = { 
         currency = "USD", 
         total = "0", 
         details = new Details() { 
          tax = "0", 
          shipping = "0", 
          subtotal = "0" 
         } 
        }, 
        item_list = new ItemList() { items = new List<Item>() }, 
        description = "asd", 
        invoice_number = "1111111" 
       } 
      } 
     }; 

erlebt jemand ähnliche Probleme? Fehle ich etwas? Eine benötigte Eigenschaft vielleicht? Wenn ich debugge, kann ich nichts Null finden.

Vielen Dank im Voraus!

Antwort

1

Ich habe das Problem gefunden. ging Zeile für Zeile durch, bis ich es erkannte. ich vergessen (und Visual Studio mochte die Idee) auszulassen:

new Amount() {...} 

Constructor aus der Leitung:

amount = {...} 

Es tut mir leid für die scheinbar sinnlos Post. Vielleicht wird irgendwann jemand den gleichen Fehler haben.