private async Task <PaymentResponse> CreatePayment(string amount = "100.00") { PaymentRequest paymentRequest = new PayPalPaymentRequest(); paymentRequest.Amount = new Amount(Currency.EUR, amount); paymentRequest.Description = "Description"; paymentRequest.RedirectUrl = this.DefaultRedirectUrl; return(await this._paymentClient.CreatePaymentAsync(paymentRequest)); }
/// <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); }
public void PayPalPaymentRequest() { var obj = new PayPalPaymentRequest { Amount = 82, Currency = "Lorum_66", Details = new PayPalDetailsRequest { CallbackUrl = "Lorum_117", CancelledUrl = "Lorum_293", Description = "Lorum_605", ExpiredUrl = "Lorum_942", FailedUrl = "Lorum_274", PurchaseId = "Lorum_130", SuccessUrl = "Lorum_233" }, 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.Description, deserialized.Details.Description); Assert.AreEqual(obj.Details.ExpiredUrl, deserialized.Details.ExpiredUrl); Assert.AreEqual(obj.Details.FailedUrl, deserialized.Details.FailedUrl); 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)); } }
/// <summary> /// Tests whether it is possible or not to have multiple payments when there are digital goods. /// </summary> /// <remarks> /// This test will test all possibilities of /// setting new payments/items collections, /// setting/adding a specific payments/items collection items, /// and setting values, /// in any order of execution. /// </remarks> private static void DigitalGoodsTest() { string msg = "{0} - {1}"; Action <int[], int, int> test = (int[] arrange5in5, int paymentChooser, int itemChooser) => { // Creating objects. PayPalSetExpressCheckoutOperation ecop = new PayPalSetExpressCheckoutOperation { PaymentRequests = new PayPalList <PayPalPaymentRequest> { new PayPalPaymentRequest { Items = new PayPalList <PayPalPaymentRequestItem> { new PayPalPaymentRequestItem(), new PayPalPaymentRequestItem() } }, new PayPalPaymentRequest { Items = new PayPalList <PayPalPaymentRequestItem> { new PayPalPaymentRequestItem(), new PayPalPaymentRequestItem() } }, } }; PayPalList <PayPalPaymentRequest> listPayments = new PayPalList <PayPalPaymentRequest> { new PayPalPaymentRequest { Items = new PayPalList <PayPalPaymentRequestItem> { new PayPalPaymentRequestItem(), new PayPalPaymentRequestItem() } }, new PayPalPaymentRequest { Items = new PayPalList <PayPalPaymentRequestItem> { new PayPalPaymentRequestItem(), new PayPalPaymentRequestItem() } } }; PayPalPaymentRequest payment = new PayPalPaymentRequest { Items = new PayPalList <PayPalPaymentRequestItem> { new PayPalPaymentRequestItem(), new PayPalPaymentRequestItem() } }; PayPalList <PayPalPaymentRequestItem> listItems = new PayPalList <PayPalPaymentRequestItem> { new PayPalPaymentRequestItem(), new PayPalPaymentRequestItem() }; PayPalPaymentRequestItem item = new PayPalPaymentRequestItem(); // Creating delegates. Action listPaymentsSet = () => ecop.PaymentRequests = listPayments; Action paymentSet = () => listPayments[0] = payment; Action paymentAdd = () => listPayments.Add(payment); Action listItemsSet = () => payment.Items = listItems; Action itemAdd = () => listItems.Add(item); Action itemSet = () => listItems[0] = item; Action digitalSet = () => item.Category = ItemCategory.Digital; // Selecting delegates. Action paymentAction = (new[] { paymentSet, paymentAdd })[paymentChooser]; Action itemAction = (new[] { itemSet, itemAdd })[itemChooser]; Action[] all = (new[] { listPaymentsSet, paymentAction, listItemsSet, itemAction, digitalSet }); Action[] sequence = (new[] { all[arrange5in5[0]], all[arrange5in5[1]], all[arrange5in5[2]], all[arrange5in5[3]], all[arrange5in5[4]] }); // Executing test. bool ok = true; Exception ex = null; try { foreach (var action in sequence) { action(); } ok = false; } catch (Exception ex1) { ex = ex1; } finally { Console.WriteLine(msg, ok ? "SUCCESS" : "FAILED", ex != null ? ex.Message : null); } }; // arrangements of 5 elements in 5 slots. int index = 0; var arranges5in5 = new int[5 * 4 * 3 * 2 * 1][]; for (int itA = 0; itA < 5; itA++) { for (int itB = 0; itB < 4; itB++) { for (int itC = 0; itC < 3; itC++) { for (int itD = 0; itD < 2; itD++) { for (int itE = 0; itE < 1; itE++) { List <int> list = new List <int>(new[] { 0, 1, 2, 3, 4 }); arranges5in5[index++] = new[] { list.Slice(itA), list.Slice(itB), list.Slice(itC), list.Slice(itD), list.Slice(itE), }; } } } } } // Trying every variation: (5*4*3*2) * 2 * 2 = 480 alternatives. foreach (var arrg in arranges5in5) { for (int it1 = 0; it1 < 2; it1++) { for (int it2 = 0; it2 < 2; it2++) { test(arrg, it1, it2); } } } }