Copied to clipboard

Flag this post as spam?

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


These support forums are now closed for new topics and comments.
Please head on over to http://eureka.ucommerce.net/ for support.

  • Sonni Tost 20 posts 72 karma points
    Mar 14, 2013 @ 14:38
    Sonni Tost
    0

    Change in checkout flow - error in SubmitBasket.xslt

    Hi all,

    I am experiencing an error in SubmitBasket.xslt when I go from the payment provider (DIBS) to the order confirmation.

    I have changed the flow of the checkout in xslt so I can see a specified view of the order before going to the payment provider.

    To do this I have created an extra step in the checkout.

    In the submit I have removed UpdatePayment:
    <umbraco:Macro Alias="OrderDetails[XSLT]" runat="server"></umbraco:Macro>
    <!-- UpdatePayment - MOVED TO PAYMENT GATEWAY -->

    I have then made an extra step (Payment Gateway) that contains Payment Gateway:
    <umbraco:Macro Alias="UpdatePayment[XSLT]" runat="server"></umbraco:Macro>

    And then I go to Order Confirmation that holds submitBasket
    <umbraco:Macro Alias="SubmitBasket[XSLT]" runat="server"></umbraco:Macro>

    As such it looks fine (flow wise) - but it returns an error in SubmitBasket[XSLT] - more specifically in <xsl:variable name="result" select="CommerceLibrary:Checkout()"></xsl:variable>

    I cannot see what goes wrong. The order is registered in uCommerce, the basket is emptied and I receive a confirmation mail. In the checkout pipeline I have added the decrementInventory (and removed it again fearing it was the troublemaker).

    I do not know if it is of any relevance – the order number increments by 2 with each order (it has been set to 1).

    If it can be of any help – my checkout.config looks like this.

    Is there something that I have misunderstood completely?

    Kind regards,

     

    Sonni T.

  • Nickolaj Lundgreen 233 posts 1132 karma points
    Mar 15, 2013 @ 09:35
    Nickolaj Lundgreen
    0

    Does the exception showup in the umbracoLog database-table?

    If so - could you post it?

  • Sonni Tost 20 posts 72 karma points
    Mar 15, 2013 @ 09:49
    Sonni Tost
    0

    It does:

    userId    NodeId    Datestamp    logHeader
    0    -1    2013-03-14 14:36:00.250    System
    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.CreatePayment_callback(Int32 paymentMethodId, Decimal amount, Boolean requestPayment, Boolean overwriteExisting)     at Castle.Proxies.Invocations.TransactionLibraryInternal_CreatePayment.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.Xslt.LibraryImpl.CreatePayment(Int32 paymentMethodId, Decimal amount, Boolean requestPayment, Boolean overwriteExisting)     at UCommerce.Xslt.Library.CreatePayment(Int32 paymentMethodId, Decimal amount, Boolean requestPayment, Boolean overwriteExisting)     at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)     at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)     at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)     at System.Xml.Xsl.Runtime.XmlExtensionFunction.Invoke(Object extObj, Object[] args)     at System.Xml.Xsl.Runtime.XmlQueryContext.InvokeXsltLateBoundFunction(String name, String namespaceUri, IList`1[] args)     at <xsl:template match="/">(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)     at Root(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)     at Execute(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)     at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlSequenceWriter results)     at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer)     at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, XmlWriter results, XmlResolver documentResolver)     at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, TextWriter results)     at umbraco.macro.GetXsltTransformResult(XmlDocument macroXML, XslCompiledTransform xslt, Dictionary`2 parameters)     at umbraco.macro.loadMacroXSLT(macro macro, MacroModel model, Hashtable pageElements)     at umbraco.macro.renderMacro(Hashtable pageElements, Int32 pageId)     at umbraco.presentation.templateControls.Macro.CreateChildControls()     at System.Web.UI.Control.EnsureChildControls()     at umbraco.presentation.templateControls.Macro.OnInit(EventArgs e)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(...

    0    -1    2013-03-14 14:36:19.677    Error
    Exception occoured while processing pipeline 'UCommerce.Pipelines.Checkout.CheckoutPipeline'. See inner exception for details.

    0    -1    2013-03-14 14:36:19.680    System
    Exception occoured while processing pipeline 'UCommerce.Pipelines.Checkout.CheckoutPipeline'. See inner exception for details. UCommerce.Pipelines.PipelineExecutionResult Execute(T)    at UCommerce.Pipelines.Pipeline`1.Execute(T subject)     at UCommerce.Transactions.CheckoutService.Checkout(Basket basket)     at UCommerce.Transactions.TransactionLibraryInternal.Checkout()     at Castle.Proxies.TransactionLibraryInternalProxy.Checkout_callback()     at Castle.Proxies.Invocations.TransactionLibraryInternal_Checkout.InvokeMethodOnTarget()     at Castle.DynamicProxy.AbstractInvocation.Proceed()     at UCommerce.Infrastructure.Interceptor.ExceptionLoggingInterceptor.Intercept(IInvocation invocation)  No billing address is set for order b411daf1-b2d2-4b5f-affd-f8aad923eabe. Please add an OrderAddress and set that as the billing address of the order. UCommerce.Pipelines.PipelineExecutionResult Execute(UCommerce.EntitiesV2.PurchaseOrder)    at UCommerce.Pipelines.Checkout.CreateCustomerTask.Execute(PurchaseOrder purchaseOrder)     at UCommerce.Pipelines.Pipeline`1.Execute(T subject)     at UCommerce.Infrastructure.Interceptor.ExceptionLoggingInterceptor.Intercept(IInvocation invocation)     at Castle.DynamicProxy.AbstractInvocation.Proceed()     at Castle.Proxies.TransactionLibraryInternalProxy.Checkout()     at UCommerce.Xslt.LibraryImpl.Checkout()     at UCommerce.Xslt.Library.Checkout()     at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)     at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)     at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)     at System.Xml.Xsl.Runtime.XmlExtensionFunction.Invoke(Object extObj, Object[] args)     at System.Xml.Xsl.Runtime.XmlQueryContext.InvokeXsltLateBoundFunction(String name, String namespaceUri, IList`1[] args)     at <xsl:template match="/">(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)     at Root(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)     at Execute(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)     at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlSequenceWriter results)     at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer)     at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, XmlWriter results, XmlResolver documentResolver)     at System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, TextWriter results)     at umbraco.macro.GetXsltTransformResult(XmlDocument macroXML, XslCompiledTransform xslt, Dictionary`2 parameters)     at umbraco.macro.loadMacroXSLT(macro macro, MacroModel model, Hashtable pageElements)     at umbraco.macro.renderMacro(Hashtable pageElements, Int32 pageId)     at umbraco.presentation.templateControls.Macro.CreateChildControls()     at System.Web.UI.Control.EnsureChildControls()     at umbraco.presentation.templateControls.Macro.OnInit(EventArgs e)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Control.InitRecursive(Control namingContainer)     at System.Web.UI.Page.ProcessRequestMain(Boolean inc...

    0    -1    2013-03-14 14:36:19.680    Error
    No billing address is set for order b411daf1-b2d2-4b5f-affd-f8aad923eabe. Please add an OrderAddress and set that as the billing address of the order. UCommerce.Pipelines.PipelineExecutionResult Execute(UCommerce.EntitiesV2.PurchaseOrder)    at UCommerce.Pipelines.Checkout.CreateCustomerTask.Execute(PurchaseOrder purchaseOrder)     at UCommerce.Pipelines.Pipeline`1.Execute(T subject)           

  • Morten Skjoldager 440 posts 1499 karma points
    Mar 15, 2013 @ 10:10
    Morten Skjoldager
    1

    There's your problem :) 

    No billing address is set for order b411daf1-b2d2-4b5f-affd-f8aad923eabe. Please add an OrderAddress and set that as the billing address of the order. 

     

  • Sonni Tost 20 posts 72 karma points
    Mar 15, 2013 @ 10:31
    Sonni Tost
    0

    It is a bit odd because before I go to the payment provider the user confirms the addresses, shipping details and the payment methods. Can You point me in a directions as to where I can find them again?

    They must get lost somewhere from orderdetails.xslt - in submit.aspx to paymentgateway.aspx / updatepayment.xslt (with createPayment / executeBasketPipeline) to orderconfirmation.aspx / submitbasket.xslt (the one that fails).

    ST

  • Søren Spelling Lund 1797 posts 2786 karma points
    Mar 26, 2013 @ 10:25
    Søren Spelling Lund
    0

    The XSLT needed a bit of tweaking to make it work.

    Latest versions of uCommerce 3 makes the different payment methods (local and remote) work more seamlessly.

    Ended up upgrading to uCommerce 3.0.8 and making changes to OrderDetails.xslt to use the CommerceLibrary:RequestPayments() API followed by a redirect to order confirmation. This enable Account and remote payment methods like DIBS work in the same way.

Please Sign in or register to post replies

Write your reply to:

Draft