2016-08-05 6 views
0

Я пытаюсь реализовать PayPal через их .NET SDK. (C#) Я работаю с ASP.NET (веб-формы). Всякий раз, когда я пытаюсь создать (просто конструктор) новый объект оплаты, я получаю NullReferenceException с абсолютно никаких деталей в нем ...PayPal .NET SDK - новый Payment() - исключает исключение NullReference

Вот исключение:

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 есть null между прочим.

Я уже отделил код до минимума, я сначала тестировал заполненный ItemList, теперь я просто использую пустой. Теперь я также использую «0» для каждой цены, но мои первые тесты были сделаны с правильными цифрами. Сначала я просто использовал;

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

Но я не мог определить NullReference, так что теперь код выглядит следующим образом:

 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" 
       } 
      } 
     }; 

ли кто испытывает подобные проблемы? Я что-то упускаю? Нужна собственность? Когда я отлаживаю, я не могу найти ничего нулевого.

Спасибо заранее!

ответ

1

Я нашел проблему. Прошел через него по строкам, пока не понял. Я забыл (а Visual Studio понравилась идея) выйти из:

new Amount() {...} 

Конструктор из линии:

amount = {...} 

Я извиняюсь за, казалось бы, бессмысленный пост. Возможно, у кого-то в конце концов будет такая же ошибка.