Page 1 of 1

Subscription Order

Posted: Thu Feb 18, 2016 10:56 am
by egormsen
Having another odd problems with a few new subscription orders.

We have had two orders in the past week where the person ordered a subscription but they did not get added to the group that is associated with that subscription. And since we use the group to control access to the content in the subscription they are not able to use the service. If I look at the order it all looks good, the product listed, payment was successfully made and the order status in complete. But when I click on the subscription tab for the order none is listed.

Here is screenshot of the order which show the item, and status, everythign looks good.
Order.png
But when I click on the subscription tab here is want I see
OrderSubTab.png
One thing that we noticed between the orders that did not work and a successful order was if you look at a good order it has an extra line in the description that mentions the monthly charge.

Here is an example of good order
OrderGood.png

Also, one thing that I did find in common between the two orders that did not work correctly is they both had within the past couple of week had an order with the subscription included in it that did not complete successfully. Not sure if that has anything to do with it, but thought is was worth mentioning.


Any ideas or suggestions?

Re: Subscription Oder

Posted: Thu Feb 18, 2016 12:21 pm
by Katie
I wonder if they used the REORDER feature from one of the existing orders that had the same subscription product.

I can see from the screenshots that the product is the same. The good order has the subscription created, and that's why you see "Payment of $24.99 charged monthly..." in the summary. The other order did not have a subscription, so that is why this description is missing.

One thing you can try is to login as the customer with the non-sub order and see what happens if you try to reorder the product TS_247. When a subscription product is in the basket, you should see the extra text "Payment of $24.99 charged monthly...".

If it's not there, then the subscription reorder did not work.

Re: Subscription Oder

Posted: Fri Feb 19, 2016 6:51 am
by egormsen
I think tried what you suggested (logged in as a user, ordered subscription, all looked good, then I cancelled the subscription, then logged in as the user again and did the reorder) and that it seemed to work with out any problems.

FYI I was looking in the log file and noticed this error, seems like it could possibly be related?

Code: Select all

2016-02-16 11:10:00,631 ERROR oNet.AbstractBatcher Could not execute query: INSERT INTO ac_UserGroups (UserId, GroupId, SubscriptionId) VALUES (@p0, @p1, @p2); select SCOPE_IDENTITY()
System.Data.SqlClient.SqlException (0x80131904): Cannot insert duplicate key row in object 'dbo.ac_UserGroups' with unique index 'ac_UserGroups_CK'. The duplicate key value is (15, 4341994).
The statement has been terminated.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
   at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)
ClientConnectionId:d7bd23d5-7c79-4d9c-a7d1-688dcf8b3b17
2016-02-16 11:10:00,694 WARN  ADOExceptionReporter System.Data.SqlClient.SqlException (0x80131904): Cannot insert duplicate key row in object 'dbo.ac_UserGroups' with unique index 'ac_UserGroups_CK'. The duplicate key value is (15, 4341994).
The statement has been terminated.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
   at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)
   at NHibernate.Id.IdentityGenerator.InsertSelectDelegate.ExecuteAndExtract(IDbCommand insert, ISessionImplementor session)
   at NHibernate.Id.Insert.AbstractReturningDelegate.PerformInsert(SqlCommandInfo insertSQL, ISessionImplementor session, IBinder binder)
ClientConnectionId:d7bd23d5-7c79-4d9c-a7d1-688dcf8b3b17
2016-02-16 11:10:00,694 ERROR ADOExceptionReporter Cannot insert duplicate key row in object 'dbo.ac_UserGroups' with unique index 'ac_UserGroups_CK'. The duplicate key value is (15, 4341994).
The statement has been terminated.

Re: Subscription Order

Posted: Fri Feb 19, 2016 7:40 am
by egormsen
Just got some info that may help figure this out - It does seem to be related to customers that have previously had a subscription. Here is the email we received last night:

I subscribed to All Access last month. There was a problem with my debit card and it had to be cancelled. I got an email from Weigh Down that the monthly fee couldn't be process and the subscription was cancelled. I went to the website, put in my mew card info and "renewed" the subscription. That was on Monday or Tuesday of this week. I am unable to access All Access at this time. What's going on?

When I looked at her account here is want I can see
1) On January 15th she order the subscription and everything is good.
2) On February 15th an auto order was generated, but her card was declined. That order status of payment pending, the payment status was Unprocessed
3) On February 15th one of the gals in our customer service area canceled the order and than edited the subscription end date and set it to Feb 15th (she does this because she noticed that if she did not these people would continue to have access to the service since they are not removed the the group when the payment fails)
4) One Feb 16th the customer reorders but does not get access back

Hopefully this helps, let me know if we are doing something wrong

Re: Subscription Order

Posted: Fri Feb 19, 2016 8:01 am
by egormsen
One clarification/update. I double checked with our customer service gal and she said that actually for this order she actually did not cancel the order on the 15th, but did it on the 16th, which is the same day the customer came back in and reorder, so my guess is that is why she does not have access and probably the source of the error message that I posted earlier.

So since we usually have a few of these a day (auto subscription orders that payment fails on) I guess the questions are
1) Should not customers be automatically removed from the subscription group if there payment fails?
2) If not, what is the best wayfor us to handle this?

Re: Subscription Order

Posted: Fri Feb 19, 2016 11:19 am
by Katie
If all this happened before you installed the patch, then it's likely the payment was unprocessed because of the known issues that we fixed with the recent update. In that case, then it should be uncommon to have unprocessed subscription orders in the future.

So, let's say that there was a problem with the payment processing. We do leave the subscription in a pending state. If I was a customer, I would probably want someone to contact me if there was a problem with the payment. To cancel the subscription before attempting to resolve the payment issue is up to you, but that is not going to be an automatic thing in AbleCommerce.

Re: Subscription Order

Posted: Fri Feb 19, 2016 12:31 pm
by egormsen
The most recent problem happened after the patch was installed. I believe it was a expired credit card that caused the payment to fail. I can watch for more this weekend and see what happens.

Sorry but going to have to disagree with you on the auto canceling of a subscription. First of all we generally do followup with people that have payment problems, but is not always practical to happen immediately. We have over 1000 subscribers to our service and we have a customer staff that does multiple jobs and some days do not have time to call the 2-4 cards that typically have a problem each day. If I am subscribed to something and there was a payment had a problem I would want an email and then I could take care of it, but if I do not I do not expect to keep using something that I have not paid for.

I doubt that Netflix, amazon and other similar services would let me keep using their service if my payment failed and I did not take care of it, there are costs associated with people using our service and if you ran a business with that type of model you would not want to absorb those costs.

At least an option to have that ability would be reasonable I believe.

Re: Subscription Order

Posted: Sat Feb 20, 2016 5:10 am
by Katie
I agree with you Eldon because you use the feature to sell digital goods and it's not the same as a merchant who can simply delay the shipment if payment fails. To fix this properly, we would need to add a some new features.

- a new option to suspend (de-activate) or cancel the subscription if payment fails
- an email notification that is sent when the payment fails, and it needs to include reason and a time-frame to correct the issue.
- a time-frame, configured by the merchant, to give the customer an opportunity to re-enable the subscription before it is canceled.

Let me know if you can think of anything else.

Thanks
Katie