using Newtonsoft.Json; using Nop.Plugin.Payments.PayPalCommerce.Services.Api.Models.PaymentSources; namespace Nop.Plugin.Payments.PayPalCommerce.Services.Api.Models; /// /// Represents the payment source /// public class PaymentSource { #region Properties /// /// Gets or sets the payment card to use to fund a payment. Can be a credit or debit card. /// [JsonProperty(PropertyName = "card")] public Card Card { get; set; } /// /// Gets or sets the tokenized payment source to fund a payment. /// [JsonProperty(PropertyName = "token")] public Token Token { get; set; } /// /// Gets or sets the PayPal Wallet payment source. Main use of this selection is to provide additional instructions associated with this choice like vaulting. /// [JsonProperty(PropertyName = "paypal")] public PayPal PayPal { get; set; } /// /// Gets or sets the information needed to indicate that Venmo is being used to fund the payment. /// [JsonProperty(PropertyName = "venmo")] public Venmo Venmo { get; set; } /// /// Gets or sets the Apple Pay info. /// [JsonProperty(PropertyName = "applepay")] public ApplePay ApplePay { get; set; } /// /// Gets the instruction to vault the payment source based on the specified strategy. /// [JsonIgnore] public Vault Vault => PayPal?.Attributes?.Vault ?? Card?.Attributes?.Vault ?? Venmo?.Attributes?.Vault; #endregion }