/// <summary> /// Builds the <see cref="PaymentDetailsItemType"/>. /// </summary> /// <param name="invoice"> /// The invoice. /// </param> /// <param name="actionCode"> /// The <see cref="PaymentActionCodeType"/>. /// </param> /// <returns> /// The <see cref="PaymentDetailsType"/>. /// </returns> public PaymentDetailsType Build(IInvoice invoice, PaymentActionCodeType actionCode) { // Get the decimal configuration for the current currency var currencyCodeType = PayPalApiHelper.GetPayPalCurrencyCode(invoice.CurrencyCode); var basicAmountFactory = new PayPalBasicAmountTypeFactory(currencyCodeType); // Get the tax total var itemTotal = basicAmountFactory.Build(invoice.TotalItemPrice()); var shippingTotal = basicAmountFactory.Build(invoice.TotalShipping()); var taxTotal = basicAmountFactory.Build(invoice.TotalTax()); var invoiceTotal = basicAmountFactory.Build(invoice.Total); var items = BuildPaymentDetailsItemTypes(invoice.ProductLineItems(), basicAmountFactory); var paymentDetails = new PaymentDetailsType { PaymentDetailsItem = items.ToList(), ItemTotal = itemTotal, TaxTotal = taxTotal, ShippingTotal = shippingTotal, OrderTotal = invoiceTotal, PaymentAction = actionCode, InvoiceID = invoice.PrefixedInvoiceNumber() }; // ShipToAddress if (invoice.ShippingLineItems().Any()) { var addressTypeFactory = new PayPalAddressTypeFactory(); paymentDetails.ShipToAddress = addressTypeFactory.Build(invoice.GetShippingAddresses().FirstOrDefault()); } return(paymentDetails); }
/// <summary> /// Builds the <see cref="PaymentDetailsItemType"/>. /// </summary> /// <param name="invoice"> /// The invoice. /// </param> /// <param name="actionCode"> /// The <see cref="PaymentActionCodeType"/>. /// </param> /// <returns> /// The <see cref="PaymentDetailsType"/>. /// </returns> public PaymentDetailsType Build(IInvoice invoice, PaymentActionCodeType actionCode) { // Get the decimal configuration for the current currency var currencyCodeType = PayPalApiHelper.GetPayPalCurrencyCode(invoice.CurrencyCode); var basicAmountFactory = new PayPalBasicAmountTypeFactory(currencyCodeType); // Get the tax total var itemTotal = basicAmountFactory.Build(invoice.TotalItemPrice()); var shippingTotal = basicAmountFactory.Build(invoice.TotalShipping()); var taxTotal = basicAmountFactory.Build(invoice.TotalTax()); var invoiceTotal = basicAmountFactory.Build(invoice.Total); var items = BuildPaymentDetailsItemTypes(invoice.ProductLineItems(), basicAmountFactory); var paymentDetails = new PaymentDetailsType { PaymentDetailsItem = items.ToList(), ItemTotal = itemTotal, TaxTotal = taxTotal, ShippingTotal = shippingTotal, OrderTotal = invoiceTotal, PaymentAction = actionCode, InvoiceID = invoice.PrefixedInvoiceNumber() }; // ShipToAddress if (invoice.ShippingLineItems().Any()) { var addressTypeFactory = new PayPalAddressTypeFactory(); paymentDetails.ShipToAddress = addressTypeFactory.Build(invoice.GetShippingAddresses().FirstOrDefault()); } return paymentDetails; }