/// <summary> /// The perform authorize payment. /// </summary> /// <param name="invoice"> /// The invoice. /// </param> /// <param name="args"> /// The args. /// </param> /// <returns> /// The <see cref="IPaymentResult"/>. /// </returns> protected override IPaymentResult PerformAuthorizePayment(IInvoice invoice, ProcessorArgumentCollection args) { // The Provider settings if (BraintreeApiService.BraintreeProviderSettings.DefaultTransactionOption == TransactionOption.SubmitForSettlement) { return(this.PerformAuthorizeCapturePayment(invoice, invoice.Total, args)); } var paymentMethodToken = args.GetPaymentMethodToken(); if (string.IsNullOrEmpty(paymentMethodToken)) { var error = new InvalidOperationException("No payment method token was found in the ProcessorArgumentCollection"); LogHelper.Debug <BraintreeStandardTransactionPaymentGatewayMethod>(error.Message); return(new PaymentResult(Attempt <IPayment> .Fail(error), invoice, false)); } var attempt = ProcessPayment(invoice, TransactionOption.Authorize, invoice.Total, paymentMethodToken); var payment = attempt.Payment.Result; GatewayProviderService.Save(payment); if (!attempt.Payment.Success) { GatewayProviderService.ApplyPaymentToInvoice(payment.Key, invoice.Key, AppliedPaymentType.Denied, attempt.Payment.Exception.Message, 0); } else { GatewayProviderService.ApplyPaymentToInvoice(payment.Key, invoice.Key, AppliedPaymentType.Debit, "To show record of Braintree Authorization", 0); } return(attempt); }
/// <summary> /// The perform authorize payment. /// </summary> /// <param name="invoice"> /// The invoice. /// </param> /// <param name="args"> /// The args. /// </param> /// <returns> /// The <see cref="IPaymentResult"/>. /// </returns> protected override IPaymentResult PerformAuthorizePayment(IInvoice invoice, ProcessorArgumentCollection args) { // The Provider settings if (BraintreeApiService.BraintreeProviderSettings.DefaultTransactionOption == TransactionOption.SubmitForSettlement) { return this.PerformAuthorizeCapturePayment(invoice, invoice.Total, args); } var paymentMethodToken = args.GetPaymentMethodToken(); if (string.IsNullOrEmpty(paymentMethodToken)) { var error = new InvalidOperationException("No payment method token was found in the ProcessorArgumentCollection"); LogHelper.Debug<BraintreeStandardTransactionPaymentGatewayMethod>(error.Message); return new PaymentResult(Attempt<IPayment>.Fail(error), invoice, false); } var attempt = ProcessPayment(invoice, TransactionOption.Authorize, invoice.Total, paymentMethodToken); var payment = attempt.Payment.Result; GatewayProviderService.Save(payment); if (!attempt.Payment.Success) { GatewayProviderService.ApplyPaymentToInvoice(payment.Key, invoice.Key, AppliedPaymentType.Denied, attempt.Payment.Exception.Message, 0); } else { GatewayProviderService.ApplyPaymentToInvoice(payment.Key, invoice.Key, AppliedPaymentType.Debit, "To show record of Braintree Authorization", 0); } return attempt; }
/// <summary> /// The perform authorize capture payment. /// </summary> /// <param name="invoice"> /// The invoice. /// </param> /// <param name="amount"> /// The amount. /// </param> /// <param name="args"> /// The args. /// </param> /// <returns> /// The <see cref="IPaymentResult"/>. /// </returns> protected override IPaymentResult PerformAuthorizeCapturePayment(IInvoice invoice, decimal amount, ProcessorArgumentCollection args) { var paymentMethodToken = args.GetPaymentMethodToken(); if (string.IsNullOrEmpty(paymentMethodToken)) { var error = new InvalidOperationException("No payment method token was found in the ProcessorArgumentCollection"); LogHelper.Debug <BraintreeStandardTransactionPaymentGatewayMethod>(error.Message); return(new PaymentResult(Attempt <IPayment> .Fail(error), invoice, false)); } var merchantAccountId = string.Empty; if (args.ContainsKey("merchantAccountId")) { merchantAccountId = args["merchantAccountId"]; } var attempt = this.ProcessPayment(invoice, TransactionOption.SubmitForSettlement, amount, paymentMethodToken, "", merchantAccountId); var payment = attempt.Payment.Result; this.GatewayProviderService.Save(payment); if (!attempt.Payment.Success) { this.GatewayProviderService.ApplyPaymentToInvoice(payment.Key, invoice.Key, AppliedPaymentType.Denied, attempt.Payment.Exception.Message, 0); } else { var customerKey = invoice.CustomerKey.GetValueOrDefault(); var last4 = string.Empty; if (!Guid.Empty.Equals(customerKey)) { var customer = this.BraintreeApiService.Customer.GetBraintreeCustomer(customerKey); if (customer.CreditCards.Any()) { var cc = customer.CreditCards.FirstOrDefault(x => x.Token == paymentMethodToken); if (cc != null) { last4 += " - " + cc.CardType + " " + cc.LastFour; } } } this.GatewayProviderService.ApplyPaymentToInvoice(payment.Key, invoice.Key, AppliedPaymentType.Debit, this.PaymentLineAuthorizeCaptureDescription + " " + last4, payment.Amount); } return(attempt); }
/// <summary> /// The perform authorize payment. /// </summary> /// <param name="invoice"> /// The invoice. /// </param> /// <param name="args"> /// The args. /// </param> /// <returns> /// The <see cref="IPaymentResult"/>. /// </returns> protected override IPaymentResult PerformAuthorizePayment(IInvoice invoice, ProcessorArgumentCollection args) { var authorizeAmount = invoice.Total; if (args.ContainsKey("authorizePaymentAmount")) { authorizeAmount = Convert.ToDecimal(args["authorizePaymentAmount"]); } var merchantAccountId = string.Empty; if (args.ContainsKey("merchantAccountId")) { merchantAccountId = args["merchantAccountId"]; } // The Provider settings if (this.BraintreeApiService.BraintreeProviderSettings.DefaultTransactionOption == TransactionOption.SubmitForSettlement) { return(this.PerformAuthorizeCapturePayment(invoice, authorizeAmount, args)); } var paymentMethodToken = args.GetPaymentMethodToken(); if (string.IsNullOrEmpty(paymentMethodToken)) { var error = new InvalidOperationException("No payment method token was found in the ProcessorArgumentCollection"); LogHelper.Debug <BraintreeStandardTransactionPaymentGatewayMethod>(error.Message); return(new PaymentResult(Attempt <IPayment> .Fail(error), invoice, false)); } var attempt = this.ProcessPayment(invoice, TransactionOption.Authorize, authorizeAmount, paymentMethodToken, "", merchantAccountId); var payment = attempt.Payment.Result; this.GatewayProviderService.Save(payment); if (!attempt.Payment.Success) { this.GatewayProviderService.ApplyPaymentToInvoice(payment.Key, invoice.Key, AppliedPaymentType.Denied, attempt.Payment.Exception.Message, 0); } else { this.GatewayProviderService.ApplyPaymentToInvoice(payment.Key, invoice.Key, AppliedPaymentType.Debit, this.PaymentLineAuthorizeDescription, 0); } return(attempt); }
/// <summary> /// The perform authorize capture payment. /// </summary> /// <param name="invoice"> /// The invoice. /// </param> /// <param name="amount"> /// The amount. /// </param> /// <param name="args"> /// The args. /// </param> /// <returns> /// The <see cref="IPaymentResult"/>. /// </returns> protected override IPaymentResult PerformAuthorizeCapturePayment(IInvoice invoice, decimal amount, ProcessorArgumentCollection args) { var paymentMethodToken = args.GetPaymentMethodToken(); if (string.IsNullOrEmpty(paymentMethodToken)) { var error = new InvalidOperationException("No payment method token was found in the ProcessorArgumentCollection"); LogHelper.Debug<BraintreeStandardTransactionPaymentGatewayMethod>(error.Message); return new PaymentResult(Attempt<IPayment>.Fail(error), invoice, false); } var attempt = this.ProcessPayment(invoice, TransactionOption.SubmitForSettlement, invoice.Total, paymentMethodToken); var payment = attempt.Payment.Result; this.GatewayProviderService.Save(payment); if (!attempt.Payment.Success) { this.GatewayProviderService.ApplyPaymentToInvoice(payment.Key, invoice.Key, AppliedPaymentType.Denied, attempt.Payment.Exception.Message, 0); } else { var customerKey = invoice.CustomerKey.GetValueOrDefault(); var last4 = string.Empty; if (!Guid.Empty.Equals(customerKey)) { var customer = this.BraintreeApiService.Customer.GetBraintreeCustomer(customerKey); if (customer.CreditCards.Any()) { var cc = customer.CreditCards.FirstOrDefault(x => x.Token == paymentMethodToken); if (cc != null) { last4 += " - " + cc.CardType + " " + cc.LastFour; } } } this.GatewayProviderService.ApplyPaymentToInvoice(payment.Key, invoice.Key, AppliedPaymentType.Debit, this.PaymentLineAuthorizeCaptureDescription + " " + last4, payment.Amount); } return attempt; }