/// <summary>
 /// Authorizes and Captures a Payment
 /// </summary>
 /// <param name="invoice">The <see cref="IInvoice"/></param>
 /// <param name="paymentMethodKey">The <see cref="IPaymentMethod"/> key</param>
 /// <param name="args">Additional arguements required by the payment processor</param>
 /// <returns>A <see cref="IPaymentResult"/></returns>
 public static IPaymentResult AuthorizeCapturePayment(this IInvoice invoice, Guid paymentMethodKey,
     ProcessorArgumentCollection args)
 {
     return invoice.AuthorizeCapturePayment(MerchelloContext.Current, paymentMethodKey, args);
 }
 /// <summary>
 /// Authorizes and Captures a Payment
 /// </summary>
 /// <param name="invoice">The <see cref="IInvoice"/></param>
 /// <param name="merchelloContext">The <see cref="IMerchelloContext"/></param>
 /// <param name="paymentMethodKey">The <see cref="IPaymentMethod"/> key</param>
 /// <param name="args">Additional arguements required by the payment processor</param>
 /// <returns>A <see cref="IPaymentResult"/></returns>
 internal static IPaymentResult AuthorizeCapturePayment(this IInvoice invoice, IMerchelloContext merchelloContext,
     Guid paymentMethodKey, ProcessorArgumentCollection args)
 {
     var paymentMethod = merchelloContext.Gateways.Payment.GetPaymentGatewayMethodByKey(paymentMethodKey);
     return invoice.AuthorizeCapturePayment(paymentMethod, args);
 }
 /// <summary>
 /// Authorizes and Captures a Payment
 /// </summary>
 /// <param name="invoice">The <see cref="IInvoice"/></param>
 /// <param name="paymentGatewayMethod">The <see cref="IPaymentMethod"/></param>
 /// <returns>A <see cref="IPaymentResult"/></returns>
 public static IPaymentResult AuthorizeCapturePayment(this IInvoice invoice,
     IPaymentGatewayMethod paymentGatewayMethod)
 {
     return invoice.AuthorizeCapturePayment(paymentGatewayMethod, new ProcessorArgumentCollection());
 }
 /// <summary>
 /// Authorizes and Captures a Payment
 /// </summary>
 /// <param name="invoice">The <see cref="IInvoice"/></param>
 /// <param name="paymentMethodKey">The <see cref="IPaymentMethod"/> key</param>
 /// <returns>A <see cref="IPaymentResult"/></returns>
 public static IPaymentResult AuthorizeCapturePayment(this IInvoice invoice, Guid paymentMethodKey)
 {
     return invoice.AuthorizeCapturePayment(paymentMethodKey, new ProcessorArgumentCollection());
 }