Page 1 of 1

zero payment checkout for digital goods showing error

Posted: Mon Jan 06, 2014 12:00 am
by ashugarg
I am working on zero payment checkout for digital goods and the Create Order button seems to hang and there is no redirection as should be for the successful order. The order does gets placed which I can verify in My Account section. I have put try catch and logged the exception which are pasted below. There are actually three exceptions logged every time I run the Complete Order button. The one at the bottom indicates the index issue which I tried to resolve by reindexing but with no success.

Unable to save page view record. Exception has been thrown by the target of an invocation.
Exception: Exception has been thrown by the target of an invocation. Stack Trace: at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at CommerceBuilder.Services.PageTracker.a(HttpApplication A_0, HttpContext A_1) Inner Exception: null id in CommerceBuilder.Orders.OrderNote entry (don't flush the Session after an exception occurs) Inner Exception Stack Trace: at NHibernate.Event.Default.DefaultFlushEntityEventListener.CheckId(Object obj, IEntityPersister persister, Object id, EntityMode entityMode) at NHibernate.Event.Default.DefaultFlushEntityEventListener.GetValues(Object entity, EntityEntry entry, EntityMode entityMode, Boolean mightBeDirty, ISessionImplementor session) at NHibernate.Event.Default.DefaultFlushEntityEventListener.OnFlushEntity(FlushEntityEvent event) at NHibernate.Event.Default.AbstractFlushingEventListener.FlushEntities(FlushEvent event) at NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions(FlushEvent event) at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent event) at NHibernate.Impl.SessionImpl.Flush() at CommerceBuilder.DomainModel.RepositoryWithTypedId`2.Save(TEntity item)


Exception: Exception has been thrown by the target of an invocation. Stack Trace: at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at CommerceBuilder.DomainModel.PersistentBag`1.Save() at CommerceBuilder.Services.OrderStatusService.UpdateOrderStatus(Order order, OrderStatus oldStatus, OrderStatus newStatus) at CommerceBuilder.Stores.StoreEventEngine.UpdateOrderStatus(StoreEvent storeEvent, Order order) at CommerceBuilder.Eventing.DefaultEventsHandler.OrderPaidNoShipments(Object o, OrderPaidNoShipmentsEventArgs e) at CommerceBuilder.Services.Checkout.CheckoutService.ExecuteCheckout(CheckoutRequest checkoutRequest, Boolean validateBasket, Boolean triggerEvents) at AbleCommerce.ConLib.Checkout.PaymentForms.ZeroValuePaymentForm.CompleteButton_Click(Object sender, EventArgs e) in e:\wwwroot\Macoy_dev_R5toR6\ConLib\Checkout\PaymentForms\ZeroValuePaymentForm.ascx.cs:line 62 Inner Exception: Unable to open IndexReader for CommerceBuilder.Orders.Order Inner Exception Stack Trace: at NHibernate.Search.Backend.Workspace.CleanUp(SearchException originalException) at NHibernate.Search.Backend.Workspace.GetIndexReader(IDirectoryProvider provider, Type entity) at NHibernate.Search.Backend.Impl.Lucene.LuceneWorker.Remove(Type entity, Object id, IDirectoryProvider provider) at NHibernate.Search.Backend.Impl.Lucene.LuceneWorker.PerformWork(WorkWithPayload luceneWork) at NHibernate.Search.Backend.Impl.Lucene.LuceneBackendQueueProcessor.Run(Object ignore) at NHibernate.Search.Backend.Impl.BatchedQueueingProcessor.PerformWorks(WorkQueue workQueue) at NHibernate.Search.Backend.Impl.TransactionalWorker.PerformWork(Work work, ISessionImplementor session) at NHibernate.Search.Event.FullTextIndexEventListener.ProcessWork(Object entity, Object id, WorkType workType, AbstractEvent e) at NHibernate.Search.Event.FullTextIndexEventListener.OnPostInsert(PostInsertEvent e) at CommerceBuilder.Search.FullTextIndexEventListener.OnPostInsert(PostInsertEvent e) at NHibernate.Action.EntityIdentityInsertAction.PostInsert() at NHibernate.Action.EntityIdentityInsertAction.Execute() at NHibernate.Engine.ActionQueue.Execute(IExecutable executable) at NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrReplicate(Object entity, EntityKey key, IEntityPersister persister, Boolean useIdentityColumn, Object anything, IEventSource source, Boolean requiresImmediateIdAccess) at NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object entity, String entityName, Object anything, IEventSource source, Boolean requiresImmediateIdAccess) at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent event) at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent event) at CommerceBuilder.DomainModel.SaveOrUpdateEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent event) at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent event) at NHibernate.Impl.SessionImpl.FireSaveOrUpdate(SaveOrUpdateEvent event) at NHibernate.Impl.SessionImpl.SaveOrUpdate(String entityName, Object obj) at NHibernate.Engine.Cascade.CascadeToOne(Object parent, Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) at NHibernate.Engine.Cascade.CascadeCollectionElements(Object parent, Object child, CollectionType collectionType, CascadeStyle style, IType elemType, Object anything, Boolean isCascadeDeleteEnabled) at NHibernate.Engine.Cascade.CascadeCollection(Object parent, Object child, CascadeStyle style, Object anything, CollectionType type) at NHibernate.Engine.Cascade.CascadeOn(IEntityPersister persister, Object parent, Object anything) at NHibernate.Event.Default.AbstractFlushingEventListener.CascadeOnFlush(IEventSource session, IEntityPersister persister, Object key, Object anything) at NHibernate.Event.Default.AbstractFlushingEventListener.PrepareEntityFlushes(IEventSource session) at NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions(FlushEvent event) at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent event) at NHibernate.Impl.SessionImpl.Flush() at CommerceBuilder.DomainModel.RepositoryWithTypedId`2.Save(TEntity item) Inner Exception: Unable to open IndexReader for CommerceBuilder.Orders.Order Inner Exception Stack Trace: at NHibernate.Search.Backend.Workspace.CleanUp(SearchException originalException) at NHibernate.Search.Backend.Workspace.GetIndexReader(IDirectoryProvider provider, Type entity) at NHibernate.Search.Backend.Impl.Lucene.LuceneWorker.Remove(Type entity, Object id, IDirectoryProvider provider) at NHibernate.Search.Backend.Impl.Lucene.LuceneWorker.PerformWork(WorkWithPayload luceneWork) at NHibernate.Search.Backend.Impl.Lucene.LuceneBackendQueueProcessor.Run(Object ignore) at NHibernate.Search.Backend.Impl.BatchedQueueingProcessor.PerformWorks(WorkQueue workQueue) at NHibernate.Search.Backend.Impl.TransactionalWorker.PerformWork(Work work, ISessionImplementor session) at NHibernate.Search.Event.FullTextIndexEventListener.ProcessWork(Object entity, Object id, WorkType workType, AbstractEvent e) at NHibernate.Search.Event.FullTextIndexEventListener.OnPostInsert(PostInsertEvent e) at CommerceBuilder.Search.FullTextIndexEventListener.OnPostInsert(PostInsertEvent e) at NHibernate.Action.EntityIdentityInsertAction.PostInsert() at NHibernate.Action.EntityIdentityInsertAction.Execute() at NHibernate.Engine.ActionQueue.Execute(IExecutable executable) at NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrReplicate(Object entity, EntityKey key, IEntityPersister persister, Boolean useIdentityColumn, Object anything, IEventSource source, Boolean requiresImmediateIdAccess) at NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object entity, String entityName, Object anything, IEventSource source, Boolean requiresImmediateIdAccess) at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent event) at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent event) at CommerceBuilder.DomainModel.SaveOrUpdateEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent event) at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent event) at NHibernate.Impl.SessionImpl.FireSaveOrUpdate(SaveOrUpdateEvent event) at NHibernate.Impl.SessionImpl.SaveOrUpdate(String entityName, Object obj) at NHibernate.Engine.Cascade.CascadeToOne(Object parent, Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) at NHibernate.Engine.Cascade.CascadeCollectionElements(Object parent, Object child, CollectionType collectionType, CascadeStyle style, IType elemType, Object anything, Boolean isCascadeDeleteEnabled) at NHibernate.Engine.Cascade.CascadeCollection(Object parent, Object child, CascadeStyle style, Object anything, CollectionType type) at NHibernate.Engine.Cascade.CascadeOn(IEntityPersister persister, Object parent, Object anything) at NHibernate.Event.Default.AbstractFlushingEventListener.CascadeOnFlush(IEventSource session, IEntityPersister persister, Object key, Object anything) at NHibernate.Event.Default.AbstractFlushingEventListener.PrepareEntityFlushes(IEventSource session) at NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions(FlushEvent event) at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent event) at NHibernate.Impl.SessionImpl.Flush() at CommerceBuilder.DomainModel.RepositoryWithTypedId`2.Save(TEntity item)

Error occurred during incremental reindex. You may need to manually reindex your database.
Exception: Unable to open IndexReader for CommerceBuilder.Orders.Order Stack Trace: at NHibernate.Search.Backend.Workspace.CleanUp(SearchException originalException) at NHibernate.Search.Backend.Workspace.GetIndexReader(IDirectoryProvider provider, Type entity) at NHibernate.Search.Backend.Impl.Lucene.LuceneWorker.Remove(Type entity, Object id, IDirectoryProvider provider) at NHibernate.Search.Backend.Impl.Lucene.LuceneWorker.PerformWork(WorkWithPayload luceneWork) at NHibernate.Search.Backend.Impl.Lucene.LuceneBackendQueueProcessor.Run(Object ignore) at NHibernate.Search.Backend.Impl.BatchedQueueingProcessor.PerformWorks(WorkQueue workQueue) at NHibernate.Search.Backend.Impl.TransactionalWorker.PerformWork(Work work, ISessionImplementor session) at NHibernate.Search.Event.FullTextIndexEventListener.ProcessWork(Object entity, Object id, WorkType workType, AbstractEvent e) at NHibernate.Search.Event.FullTextIndexEventListener.OnPostUpdate(PostUpdateEvent e) at CommerceBuilder.Search.FullTextIndexEventListener.OnPostUpdate(PostUpdateEvent e) Inner Exception: Could not find file 'E:\wwwroot\Macoy_dev_R5toR6\App_Data\Indexes\Order\segments_1t35'. Inner Exception Stack Trace: at Lucene.Net.Index.SegmentInfos.FindSegmentsFile.Run(IndexCommit commit) at NHibernate.Search.Backend.Workspace.GetIndexReader(IDirectoryProvider provider, Type entity)

Here is the code block,

try
{
CheckoutResponse checkoutResponse = checkoutService.ExecuteCheckout(checkoutRequest);
Order ord =checkoutResponse.Order;
response = ord.BillToAddress1;
if (checkoutResponse.Success)
{
if (CheckedOut != null) CheckedOut(this, new CheckedOutEventArgs(checkoutResponse));
Response.Redirect(AbleCommerce.Code.NavigationHelper.GetReceiptUrl(checkoutResponse.Order.OrderNumber));
}
else
{
IList<string> warningMessages = checkoutResponse.WarningMessages;
if (warningMessages.Count == 0)
warningMessages.Add("The order could not be submitted at this time. Please try again later or contact us for assistance.");
if (CheckedOut != null) CheckedOut(this, new CheckedOutEventArgs(checkoutResponse));
}
}
catch (Exception ex)
{
Logger.Error("Error doing checkout. "+ " OrderID - " + response, ex);
}


Please suggest the cause of the error.

Re: zero payment checkout for digital goods showing error

Posted: Mon Jan 06, 2014 1:44 pm
by Katie
By default, AbleCommerce can handle an order without payment. You should see some message like 'There is no charge for your order, click the Complete Order button to continue' within the payment section. What build are you running?

Re: zero payment checkout for digital goods showing error

Posted: Thu Jan 09, 2014 2:17 am
by Naveed
The issue only exists for specific digital good product or for all products?

From the error logs for exception # 2 and 3 it seems an issue with the Lucene indexes. Please re-index from "Administration > Website > Indexes" page and re-check once re-index process finish.