/// <summary>
        /// Performs a Braintree Transaction using a vaulted credit card.
        /// </summary>
        /// <param name="invoice">
        /// The invoice.
        /// </param>
        /// <param name="paymentMethodToken">
        /// The payment method token.
        /// </param>
        /// <param name="customer">
        /// The customer.
        /// </param>
        /// <param name="option">
        /// The option.
        /// </param>
        /// <returns>
        /// The <see cref="Result{Transaction}"/>.
        /// </returns>
        public Result<Transaction> VaultSale(
            IInvoice invoice,
            string paymentMethodToken,
            TransactionOption option = TransactionOption.SubmitForSettlement)
        {
            var request = this.RequestFactory.CreateVaultTransactionRequest(invoice, paymentMethodToken, option);

            LogHelper.Info<BraintreeTransactionApiService>(string.Format("Braintree Vault Transaction attempt ({0}) for Invoice {1}", option.ToString(), invoice.PrefixedInvoiceNumber()));
            var attempt = this.TryGetApiResult(() => this.BraintreeGateway.Transaction.Sale(request));

            return attempt.Success ? attempt.Result : null;
        }
        /// <summary>
        /// Performs a Braintree sales transaction.
        /// </summary>
        /// <param name="invoice">
        /// The invoice.
        /// </param>
        /// <param name="paymentMethodNonce">
        /// The payment method nonce.
        /// </param>
        /// <param name="customer">
        /// The customer.
        /// </param>
        /// <param name="billingAddress">
        /// The billing address.
        /// </param>
        /// <param name="shippingAddress">
        /// The shipping address.
        /// </param>
        /// <param name="option">
        /// The option.
        /// </param>
        /// <returns>
        /// The <see cref="IPaymentResult"/>.
        /// </returns>
        public Result<Transaction> Sale(IInvoice invoice, string paymentMethodNonce, ICustomer customer, IAddress billingAddress, IAddress shippingAddress, TransactionOption option = TransactionOption.SubmitForSettlement)
        {
            var request = this.RequestFactory.CreateTransactionRequest(invoice, paymentMethodNonce, customer, option);

            if (billingAddress != null) request.BillingAddress = this.RequestFactory.CreateAddressRequest(billingAddress);
            if (shippingAddress != null) request.ShippingAddress = this.RequestFactory.CreateAddressRequest(shippingAddress);

            LogHelper.Info<BraintreeTransactionApiService>(string.Format("Braintree Transaction attempt ({0}) for Invoice {1}", option.ToString(), invoice.PrefixedInvoiceNumber()));
            var attempt = this.TryGetApiResult(() => this.BraintreeGateway.Transaction.Sale(request));

            return attempt.Success ? attempt.Result : null;
        }
        /// <summary>
        /// Performs a Braintree sales transaction.
        /// </summary>
        /// <param name="invoice">
        /// The invoice.
        /// </param>
        /// <param name="paymentMethodNonce">
        /// The payment method nonce.
        /// </param>
        /// <param name="customer">
        /// The customer.
        /// </param>
        /// <param name="option">
        /// The option.
        /// </param>
        /// <param name="email">
        /// The email.
        /// </param>
        /// <returns>
        /// The <see cref="Result{Transaction}"/>.
        /// </returns>
        public Result<Transaction> Sale(IInvoice invoice, string paymentMethodNonce = "", ICustomer customer = null, TransactionOption option = TransactionOption.SubmitForSettlement, string email = "")
        {
            var request = this.RequestFactory.CreateTransactionRequest(invoice, paymentMethodNonce, customer, option);
            if (customer == null && !string.IsNullOrEmpty(email))
            {
                request.Customer = new CustomerRequest() { Email = email };
            }

            LogHelper.Info<BraintreeTransactionApiService>(string.Format("Braintree Transaction attempt ({0}) for Invoice {1}", option.ToString(), invoice.PrefixedInvoiceNumber()));
            var attempt = this.TryGetApiResult(() => this.BraintreeGateway.Transaction.Sale(request));

            return attempt.Success ? attempt.Result : null;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Performs a Braintree sales transaction.
        /// </summary>
        /// <param name="invoice">
        /// The invoice.
        /// </param>
        /// <param name="paymentMethodNonce">
        /// The payment method nonce.
        /// </param>
        /// <param name="customer">
        /// The customer.
        /// </param>
        /// <param name="option">
        /// The option.
        /// </param>
        /// <param name="email">
        /// The email.
        /// </param>
        /// <returns>
        /// The <see cref="Result{Transaction}"/>.
        /// </returns>
        public Result <Transaction> Sale(IInvoice invoice, string paymentMethodNonce = "", ICustomer customer = null, TransactionOption option = TransactionOption.SubmitForSettlement, string email = "")
        {
            var request = this.RequestFactory.CreateTransactionRequest(invoice, paymentMethodNonce, customer, option);

            if (customer == null && !string.IsNullOrEmpty(email))
            {
                request.Customer = new CustomerRequest()
                {
                    Email = email
                };
            }

            LogHelper.Info <BraintreeTransactionApiService>(string.Format("Braintree Transaction attempt ({0}) for Invoice {1}", option.ToString(), invoice.PrefixedInvoiceNumber()));
            var attempt = this.TryGetApiResult(() => this.BraintreeGateway.Transaction.Sale(request));

            return(attempt.Success ? attempt.Result : null);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Performs a Braintree Transaction using a vaulted credit card.
        /// </summary>
        /// <param name="invoice">
        /// The invoice.
        /// </param>
        /// <param name="paymentMethodToken">
        /// The payment method token.
        /// </param>
        /// <param name="customer">
        /// The customer.
        /// </param>
        /// <param name="option">
        /// The option.
        /// </param>
        /// <returns>
        /// The <see cref="Result{Transaction}"/>.
        /// </returns>
        public Result <Transaction> VaultSale(
            IInvoice invoice,
            string paymentMethodToken,
            TransactionOption option = TransactionOption.SubmitForSettlement)
        {
            var request = this.RequestFactory.CreateVaultTransactionRequest(invoice, paymentMethodToken, option);

            LogHelper.Info <BraintreeTransactionApiService>(string.Format("Braintree Vault Transaction attempt ({0}) for Invoice {1}", option.ToString(), invoice.PrefixedInvoiceNumber()));
            var attempt = this.TryGetApiResult(() => this.BraintreeGateway.Transaction.Sale(request));

            return(attempt.Success ? attempt.Result : null);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Performs a Braintree sales transaction.
        /// </summary>
        /// <param name="invoice">
        /// The invoice.
        /// </param>
        /// <param name="paymentMethodNonce">
        /// The payment method nonce.
        /// </param>
        /// <param name="customer">
        /// The customer.
        /// </param>
        /// <param name="billingAddress">
        /// The billing address.
        /// </param>
        /// <param name="shippingAddress">
        /// The shipping address.
        /// </param>
        /// <param name="option">
        /// The option.
        /// </param>
        /// <returns>
        /// The <see cref="IPaymentResult"/>.
        /// </returns>
        public Result <Transaction> Sale(IInvoice invoice, string paymentMethodNonce, ICustomer customer, IAddress billingAddress, IAddress shippingAddress, TransactionOption option = TransactionOption.SubmitForSettlement)
        {
            var request = this.RequestFactory.CreateTransactionRequest(invoice, paymentMethodNonce, customer, option);

            if (billingAddress != null)
            {
                request.BillingAddress = this.RequestFactory.CreateAddressRequest(billingAddress);
            }
            if (shippingAddress != null)
            {
                request.ShippingAddress = this.RequestFactory.CreateAddressRequest(shippingAddress);
            }

            LogHelper.Info <BraintreeTransactionApiService>(string.Format("Braintree Transaction attempt ({0}) for Invoice {1}", option.ToString(), invoice.PrefixedInvoiceNumber()));
            var attempt = this.TryGetApiResult(() => this.BraintreeGateway.Transaction.Sale(request));

            return(attempt.Success ? attempt.Result : null);
        }