示例#1
0
        protected override IPaymentResult PerformProcessPayment(SalePreparationBase preparation, IPaymentMethod paymentMethod)
        {
            // We have to use the CheckoutConfirmationModel in this implementation.  If this were to be used
            // outside of a demo, you could consider writing your own base controller that inherits directly from
            // Merchello.Web.Mvc.PaymentMethodUiController<TModel> and complete the transaction there in which case the
            // BazaarPaymentMethodFormControllerBase would be a good example.

            var form = UmbracoContext.HttpContext.Request.Form;
            var purchaseOrderNumber = form.Get("purchaseOrderNumber");

            if (string.IsNullOrEmpty(purchaseOrderNumber))
            {
                var invalidData = new InvalidDataException("The Purchase Order Number cannot be an empty string");
                return(new PaymentResult(Attempt <IPayment> .Fail(invalidData), null, false));
            }

            // You need a ProcessorArgumentCollection for this transaction to store the payment method nonce
            // The braintree package includes an extension method off of the ProcessorArgumentCollection - SetPaymentMethodNonce([nonce]);
            var args = new ProcessorArgumentCollection();

            args.SetPurchaseOrderNumber(purchaseOrderNumber);

            // We will want this to be an Authorize(paymentMethod.Key, args);
            // -- Also in a real world situation you would want to validate the PO number somehow.
            return(preparation.AuthorizePayment(paymentMethod.Key, args));
        }
示例#2
0
 /// <summary>
 /// Responsible for actually processing the payment with the PaymentProvider
 /// </summary>
 /// <param name="preparation">
 /// The preparation.
 /// </param>
 /// <param name="paymentMethod">
 /// The payment method.
 /// </param>
 /// <returns>
 /// The <see cref="IPaymentResult"/>.
 /// </returns>
 protected override IPaymentResult PerformProcessPayment(SalePreparationBase preparation, IPaymentMethod paymentMethod)
 {
     return(preparation.AuthorizePayment(paymentMethod.Key));
 }