public void BancontactPaymentRequest() { var obj = new BancontactPaymentRequest { Amount = 51, Currency = "Lorum_7", Details = new BancontactDetailsRequest { CallbackUrl = "Lorum_575", CancelledUrl = "Lorum_282", ExpiredUrl = "Lorum_983", FailedUrl = "Lorum_659", Issuers = new [] { "Lorum_188", "Lorum_789" }, PurchaseId = "Lorum_730", SuccessUrl = "Lorum_773" }, DueDate = DateTime.Now }; var deserialized = ConversionTest(obj); Assert.IsNotNull(deserialized); Assert.AreEqual(obj.Amount, deserialized.Amount); Assert.AreEqual(obj.Currency, deserialized.Currency); Assert.AreEqual(obj.Details.CallbackUrl, deserialized.Details.CallbackUrl); Assert.AreEqual(obj.Details.CancelledUrl, deserialized.Details.CancelledUrl); Assert.AreEqual(obj.Details.ExpiredUrl, deserialized.Details.ExpiredUrl); Assert.AreEqual(obj.Details.FailedUrl, deserialized.Details.FailedUrl); Assert.AreEqual(obj.Details.Issuers.IsFixedSize, deserialized.Details.Issuers.IsFixedSize); Assert.AreEqual(obj.Details.Issuers.IsReadOnly, deserialized.Details.Issuers.IsReadOnly); Assert.AreEqual(obj.Details.Issuers.IsSynchronized, deserialized.Details.Issuers.IsSynchronized); Assert.AreEqual(obj.Details.Issuers.Length, deserialized.Details.Issuers.Length); Assert.AreEqual(obj.Details.Issuers.LongLength, deserialized.Details.Issuers.LongLength); Assert.AreEqual(obj.Details.Issuers.Rank, deserialized.Details.Issuers.Rank); Assert.AreEqual(obj.Details.PurchaseId, deserialized.Details.PurchaseId); Assert.AreEqual(obj.Details.SuccessUrl, deserialized.Details.SuccessUrl); // Check only date and time up to seconds.. Json.NET does not save milliseconds. Assert.AreEqual(obj.DueDate.HasValue, deserialized.DueDate.HasValue); if (obj.DueDate.HasValue && deserialized.DueDate.HasValue) { Assert.AreEqual( new DateTime(obj.DueDate.Value.Year, obj.DueDate.Value.Month, obj.DueDate.Value.Day, obj.DueDate.Value.Hour, obj.DueDate.Value.Minute, obj.DueDate.Value.Second), new DateTime(deserialized.DueDate.Value.Year, deserialized.DueDate.Value.Month, deserialized.DueDate.Value.Day, deserialized.DueDate.Value.Hour, deserialized.DueDate.Value.Minute, deserialized.DueDate.Value.Second)); } }
/// <inheritdoc /> /// <summary> /// Reads the json. /// </summary> /// <param name="reader">The reader.</param> /// <param name="objectType">Type of the object.</param> /// <param name="existingValue">The existing value.</param> /// <param name="serializer">The serializer.</param> /// <returns></returns> /// <exception cref="T:System.ArgumentException"></exception> public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { PaymentRequest target; var token = JToken.Load(reader); switch (Enum.Parse(typeof(PaymentMethod), token["payment_method"].Value <string>())) { case PaymentMethod.iDEAL: target = new IdealPaymentRequest(); break; case PaymentMethod.PayPal: target = new PayPalPaymentRequest(); break; case PaymentMethod.AfterPay: target = new AfterPayPaymentRequest(); break; case PaymentMethod.Creditcard: target = new CreditcardPaymentRequest(); break; case PaymentMethod.Bancontact: target = new BancontactPaymentRequest(); break; case PaymentMethod.WireTransfer: target = new WireTransferPaymentRequest(); break; case PaymentMethod.SOFORT: target = new SofortPaymentRequest(); break; case PaymentMethod.DirectDebit: target = new DirectDebitPaymentRequest(); break; default: throw new ArgumentException(); } serializer.Populate(token.CreateReader(), target); return(target); }