Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • jamie laux 1 post 71 karma points
    Nov 03, 2015 @ 10:55
    jamie laux
    0

    Orders Staying in Basket / Worldpay / Pipeline Errors

    We are using Umbraco 4.10 ... ( We can't upgrade because of integrations into Legacy systems, and we have inherited some of these as binaries from the initial developers of the site ) We are on a shared hosting ( management budgets )

    Worldpay:

    We are using Worldpay / with a custom payback method which corrects the callback URL

    We can send customers off to Worldpay and when they come back we do get a successful Transaction ID.

    Unfortunately these customers get stuck as a Basket Order and around the time they either return or go off to worldpay we get this error

    Thread was being aborted. Void AbortInternal() at System.Threading.Thread.AbortInternal() at System.Threading.Thread.Abort(Object stateInfo) at System.Web.HttpResponse.AbortCurrentThread() at System.Web.HttpResponse.End() at System.Web.HttpResponse.Redirect(String url, Boolean endResponse, Boolean permanent) at UCommerce.Transactions.Payments.ExternalPaymentMethodService.RequestPayment(PaymentRequest paymentRequest) at UCommerce.Transactions.TransactionLibraryInternal.CreatePayment(Int32 paymentMethodId, Decimal amount, Boolean requestPayment, Boolean overwriteExisting) at Castle.Proxies.TransactionLibraryInternalProxy.CreatePaymentcallback(Int32 paymentMethodId, Decimal amount, Boolean requestPayment, Boolean overwriteExisting) at Castle.Proxies.Invocations.TransactionLibraryInternalCreatePayment.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at UCommerce.Infrastructure.Interceptor.ExceptionLoggingInterceptor.Intercept(IInvocation invocation) at UCommerce.Infrastructure.Interceptor.ExceptionLoggingInterceptor.Intercept(IInvocation invocation) at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.TransactionLibraryInternalProxy.CreatePayment(Int32 paymentMethodId, Decimal amount, Boolean requestPayment, Boolean overwriteExisting) at UCommerce.Api.TransactionLibrary.CreatePayment(Int32 paymentMethodId, Decimal amount, Boolean requestPayment, Boolean overwriteExisting) at Radiator.MasterPages.ShopConfirmHTML.CreatePayment() at Radiator.MasterPages.ShopConfirmHTML.PageLoad(Object sender, EventArgs e) at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) at System.Web.UI.Page.ProcessRequest(HttpContext context) at ASP.defaultaspx.ProcessRequest(HttpContext context) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) at System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error) at System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb) at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags) at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags) at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus) at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags) at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)

    We get this in an umbraco log usually preceeding these messages

    we get an email sent out as the pipeline executes

    Mail Messages sent to [email protected] from [email protected]

    followed by a transaction ID

    Transaction ID is 4311343XXX

    Even though emails get executed by the Pipeline, the orders mostly stay in the Basket

    As you can see from above the error message is quite cryptic... our create payment function is below.

     private void CreatePayment()
        {
            Basket B = null;
            try
            {
                B = SiteContext.Current.OrderContext.GetBasket();
            }
    
            catch
            {
                logonAlert.InnerHtml = "Something has happened during the processing of this request and we were umable to complete the process.<br/>Please return to your basket and try again.<br/>We apologise for any inconvienence.";
                logonAlert.Visible = true;
                pnlMain.Visible = false;
                return;
            }
    
            Shipment shipment = B.PurchaseOrder.Shipments.FirstOrDefault();
            shipment.DeliveryNote = Request["deliveryInstructions"].ToString();
            shipment.Save();
    
            foreach (OrderLine OL in B.PurchaseOrder.OrderLines)
            {
                OL.Shipment = shipment;
                OL.Save();
            }
    
            B.PurchaseOrder.Save();
            B.Save();
    
            if (ConfigurationManager.AppSettings["Sandbox"] == "1")
            {
                TransactionLibrary.CreatePayment(7, requestPayment: false);
                Payment payment = B.PurchaseOrder.Payments.FirstOrDefault();
    
                payment.PaymentStatus = PaymentStatus.Get((int)PaymentStatusCode.Authorized);
                payment.Save();
    
                TransactionLibrary.ExecuteBasketPipeline();
                IEnumerable<WorldPayConfirmation> SB = USiteExtensions.GetChildrenByAlias<WorldPayConfirmation>(Convert.ToInt32(ConfigurationManager.AppSettings["ShopFolder"]), false, "WorldPayConfirmation").Take(1);
                Response.Redirect(SB.First().Url, true);
            }
            else
            {
                TransactionLibrary.CreatePayment(7, requestPayment: true);
                TransactionLibrary.ExecuteBasketPipeline();
            }
    
        }
    

    We use the pipeline to completedorder in out payment settings To enable orders to go to new order status from basket order status we let the callback fail...a maual redirection was dont on site which updated the order status

    Thanks for your help

Please Sign in or register to post replies

Write your reply to:

Draft