latest stable versions: v150827 (changelog)

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

CCBill EOT Problem

Home Forums Community Forum CCBill EOT Problem

Tagged: ,

This topic contains 26 replies, has 4 voices. Last updated by  Jason (Lead Developer) 4 years, 10 months ago.

Topic Author Topic
Posted: Tuesday Feb 28th, 2012 at 9:43 am #6665
Lee Keels
Username: lkeels

We’ve been using S2Member for several months very successfully and have been very happy with the product. Up until last week we were using PayPal, but have now changed to CCBill and upgraded to S2Member Pro.

We just had our first cancellation today, and it did not generate and automatic EOT back to the user’s record (PayPal EOTs are still working fine as old accounts die off).

What I have done so far:

Instead of the automatic system, I have now set up a cron job to run every 30 minutes. The cron job is generating the following error, but I don’t know what file or directory it is referring to that it can’t find.

/bin/sh: http://www.xxxxxxxxxxx.com/?s2member_auto_eot_system_via_cron=1: No such file or directory

It would be very difficult for me to have to start turning off other plugins as functionality of the site would be adversely affected. I’m hoping that someone can figure out the problem and let me know what I need to do to fix it.

List Of Topic Replies

Viewing 25 replies - 1 through 25 (of 26 total)
Author Replies
Author Replies
Posted: Wednesday Feb 29th, 2012 at 3:26 am #6741

Hi Lee.

I’ll ask Jason about this, since I’m not very familiar with that particular feature.

Thanks for your patience. :)

Posted: Wednesday Feb 29th, 2012 at 9:51 pm #6840
Staff Member

Hi there. Thanks for your inquiry.

The line that you posted looks like it’s attempting to run a shell script,
but the path you’ve provided is actually a URL.

/bin/sh: http://www.xxxxxxxxxxx.com/?s2member_auto_eot_system_via_cron=1: No such file or directory

You will want to use something like cURL to run this CRON job and open the URL.

/usr/bin/curl http://www.xxxxxxxxxxx.com/?s2member_auto_eot_system_via_cron=1
Posted: Wednesday Feb 29th, 2012 at 11:06 pm #6853
Lee Keels
Username: lkeels

I’ve made the change to the cron job. Should this set an EOT for the user to unsubbed a couple days ago, or does the system only get one shot at it?

I’ll post results back.

Posted: Thursday Mar 1st, 2012 at 4:37 am #6871
Staff Member

Hi Lee. No worries, s2Member picks right back up where it left off. Anything that was missed, will be caught by s2Member once you have the CRON job working properly.

UPDATE, very sorry:
Actually, with ccBill, it’s a bit different. There is a 48 hour limitation. Any EOTs that occurred more than 48 hours ago would be missed, due to the way ccBill’s DataLink service works.

Posted: Friday Mar 2nd, 2012 at 11:36 pm #7146
Lee Keels
Username: lkeels

The cron job hasn’t made any difference. No EOTs are being set when CCBill customers cancel. I’m having to set them manually. Any suggestions?

Posted: Sunday Mar 4th, 2012 at 8:44 am #7219
Lee Keels
Username: lkeels

Anything?

Posted: Monday Mar 5th, 2012 at 9:20 pm #7364
Lee Keels
Username: lkeels

Hello…still having problems here and no responses.

Posted: Tuesday Mar 6th, 2012 at 1:50 am #7395

The cron job hasn’t made any difference. No EOTs are being set when CCBill customers cancel. I’m having to set them manually. Any suggestions?

Is that still happening with new EOTs or are you waiting for old ones to trigger the behavior? Jason mentioned above that any EOTs that occurred more than 48 hours ago would be missed, due to the way ccBill’s DataLink service works.

Posted: Tuesday Mar 6th, 2012 at 4:58 pm #7501
Lee Keels
Username: lkeels

EOTs do not work period, old or new. I literally just had a cancellation 2 minutes ago. No EOT was applied to their account.

Could this have something to do with leading zeroes in the Subscription ID? For example, the email that I just received shows a Subscription ID of 31206620100000XXXX, but in the user list on my site, the field has a leading zero, making the ID 031206620100000XXXX (the last four digits do match, none are dropped).

Definitely need some assistance here.

Posted: Wednesday Mar 7th, 2012 at 3:50 am #7529

I’ll ask Jason. Thanks for the new data.

Posted: Thursday Mar 8th, 2012 at 1:47 am #7601
Lee Keels
Username: lkeels

Any word on this?

Posted: Thursday Mar 8th, 2012 at 7:11 am #7613
Raam Dev
Username: Raam
Staff Member

Lee,

Could you please enable logging (WP Admin -> s2Member -> CCBill Options -> CCBill Account Details -> Enable Logging Routines?), conduct another test, and then share any relevant log entries from /wordpress/wp-content/plugins/s2member-logs related to the transaction(s) in question? Please x-out any private information before posting here (e.g., email addresses).

Posted: Friday Mar 9th, 2012 at 1:12 am #7688
Lee Keels
Username: lkeels

Logging has been on all along.

I don’t know how I can test a cancellation, but I don’t need to. I have two live ones from today 3/8.

Can I send you these logs privately somehow? I have no idea what’s relevant and what isn’t. I will also include the Sub IDs of the two cancellations that should have EOTs, but do not.

I searched all the logs for these subscription IDs and they do not appear at all except for the original subscription. No cancellation.

  • This reply was modified 4 years, 10 months ago by  Lee Keels.
Posted: Friday Mar 9th, 2012 at 1:22 am #7690

Hello Lee.

You can send them privately using this form:
s2Member® » Private Contact Form

Posted: Friday Mar 9th, 2012 at 1:33 am #7691
Lee Keels
Username: lkeels

I’ve sent the message and the log files using the form Cristian, thank you.

Posted: Friday Mar 9th, 2012 at 5:37 am #7710
Staff Member

Thank you. Details received.
~ Investigating now.

Posted: Friday Mar 9th, 2012 at 7:17 am #7717
Staff Member

Investigation completed. Thanks for your patience.

Could this have something to do with leading zeroes in the Subscription ID? For example, the email that I just received shows a Subscription ID of 31206620100000XXXX, but in the user list on my site, the field has a leading zero, making the ID 031206620100000XXXX (the last four digits do match, none are dropped).

No, I don’t believe that’s an issue. It’s not s2Member that’s adding the leading 0, it’s ccBill doing this. It’s related to the sub-account prefix they use in communication with IPN and DataLink services.

I literally just had a cancellation 2 minutes ago. No EOT was applied to their account.

First off, a “cancellation” by a customer, which cancels any future payments, does NOT always warrant an immediate EOT on the s2Member side of things (they might still have time left, which they’ve already paid for). Also, with ccBill, the DataLink service connection is only made once per day. So any rebills/refunds/chargebacks/expirations that occur, will only be processed once each day, whenever s2Member pulls all of these events at once from ccBill in it’s scheduled routine, via the s2Member Auto EOT System.
See Also: Dashboard -› s2Member® -› ccBill® Options -› Automatic EOT Behavior

However, in this test case — we actually have a two part problem.

1. By default, s2Member’s integration with the ccBill DataLink service handles ccBill expirations (i.e. EOTs that occur as a result of a Subscription expiring naturally, for one of many different reasons). s2Member also handles refunds, chargebacks, and rebill payments that occur on the ccBill side. However, s2Member does NOT handle customer “cancellations” by default, because ccBill does NOT enable this functionality until each merchant (i.e. YOU) request this to be enabled on your ccBill account, and ccBill approves your request to do so.

Please note this screenshot.
Taken from the ccBill DataLink documentation.
http://www.ccbill.com/cs/manuals/CCBill_Data_Link_Extract_Users_Guide.pdf

2. Once you receive approval from ccBill, you will need to follow these instructions. This is a required step, telling s2Member that your ccBill account has been empowered with the ability to pull cancellation data from the DataLink Service Suite at ccBill.

I’m making a note of this now, so that in future releases of s2Member Pro, this will be included in the ccBill configuration panel. That way others won’t need to hunt this down like you did.

Please create this directory and file:
/wp-content/mu-plugins/s2-hacks.php
( these are MUST USE plugins, see: http://codex.wordpress.org/Must_Use_Plugins )

<?php add_filter("ws_plugin__s2member_pro_ccbill_datalink_pulls_cancellations", "__return_true"); ?>

* Note. Do NOT enable this until ccBill has approved your request. Adding this before your request is approved, will result in errors being returned by the DataLink API, and s2Member would be unable to pull *any* events.

Why does ccBill require approval for DataLink cancellations?
That’s a question best answered by ccBill. However, I suspect it’s because a software application like s2Member, needs to be aware that a cancellation does NOT always warrant an immediate EOT (termination). In many cases, the customer will have already paid for X number of days/weeks/months/years.

The cancellation itself does not always warrant a immediate termination. s2Member is aware of this, and it will handle things appropriately. If you are questioned about the integrity of your application, please let ccBill know that your application is aware of this concern.

Posted: Friday Mar 9th, 2012 at 7:50 pm #7818
Lee Keels
Username: lkeels

I’ve put in a request to have this done, but I thought you should know that CCBill is pushing back HARD on this. They do not want to turn it on. They said that the software should be using the “expire” status that gives the actual date that a customer’s access should end, rather than the “cancellation” status. “Expire” doesn’t require approval.

The reasoning they gave is that on occasion, CCBill will extend a user’s subscription in response to a customer service issue or complaint. The “expire” status will be extended and provided through DataLink. The “cancellation” status will not be updated and the user will lose access earlier than they should.

Posted: Saturday Mar 10th, 2012 at 6:47 am #7827
Staff Member

Thanks for the follow-up Lee. I appreciate it.

Yes, I can imagine. s2Member does pull the EXPIRE status already. You should have a log file indicating s2Member’s activity in this regard, inside /wp-content/plugins/s2member-logs/ccbill-dl.log

Posted: Saturday Mar 10th, 2012 at 5:36 pm #7840
Lee Keels
Username: lkeels

I feel like I’m getting conflicting information here, Jason.

I sent all my logs and a couple of sub IDs in question. I need YOU to tell me if the information is there and if there is a problem. I don’t know how to read these logs and I assumed that is why I was asked for them.

If CCBill pulls the expire status, then why are my cancelled accounts not getting EOTs? According to CCBill, an expire is set when a customer cancels.

I’m not sure what you want me to do at this point. I’m looking to you for a resolution, and if what CCBill says is true, then even when/if they turn on cancellations in DataLink, there is still a chance that users could still be cut off too soon (if extended by CCBill customer service).

Please advise next steps or what you need from me.

Posted: Monday Mar 12th, 2012 at 11:50 pm #7942
Lee Keels
Username: lkeels

Jason and/or Cristian,

It’s been two days since I last posted, and I haven’t had any assistance. Yes, I understand a weekend was involved.

CCBill has denied our request to turn on “cancellations” as you requested. They said the denial was because “…the feature Datalink Cancellations does not have impact on User Management decisions in terms of adding or removing users. ”

We need to get this resolved. Please see also my previous post and let me know what our next steps should be.

Frustration level running high.

Posted: Tuesday Mar 13th, 2012 at 4:02 am #7944

Hi Lee. I’m emailing Jason to remind him of this, it probably slipped through the cracks in his inbox.

Posted: Tuesday Mar 13th, 2012 at 9:37 am #7990
Lee Keels
Username: lkeels

Thanks Cristian!

Posted: Tuesday Mar 13th, 2012 at 11:20 am #8000
Staff Member

Thanks for the heads up on this thread.

@ Lee Keels

If CCBill pulls the expire status, then why are my cancelled accounts not getting EOTs? According to CCBill, an expire is set when a customer cancels.

Well, it’s not ccBill that pulls the EXPIRE status. It’s s2Member that pulls the EXPIRE status *from* ccBill. This works very well, and as ccBill mentioned, an EXPIRE status should always occur eventually (even after a cancellation has taken place) at the correct point in time.

s2Member listens to all of these events, and it will respond appropriately for you. However, it’s ccBill’s job to notify s2Member about these events, so that a response is triggered by your website.

why are my cancelled accounts not getting EOTs?

It’s important to understand that a “cancellation” does not always warrant an immediate EOT.

Taken from the documentation in your Dashboard:
s2Member will not process an EOT ( End Of Term ) until the User has completely used up the time they paid for. In other words, if a User signs up for a monthly Subscription on Jan 1st, and then cancels their Subscription on Jan 15th; technically, they should still be allowed to access the site for another 15 days, and then on Feb 1st, the time they paid for has completely elapsed. At that time, s2Member will remove their Membership privileges; by either demoting them to a Free Subscriber, or deleting their account from the system ( based on your configuration ). s2Member also calculates one extra day ( 24 hours ) into its equation, just to make sure access is not removed sooner than a Customer might expect.

I’ve inspected your log files, and I see no details coming from ccBill with an EXPIRE status yet. So that’s why s2Member has not terminated access for those accounts. ccBill has not EXPIRED any of your customers yet, according to the ccBill DataLink service.

Understanding Why

What was cancelled exactly? (i.e. what did the customer originally sign up for?). Does your customer still have time left, which they had already paid you for prior to cancelling?

Was it an actual “cancellation”? Who processed the cancellation, ccBill? Or you as the site owner?

Posted: Tuesday Mar 13th, 2012 at 12:42 pm #8014
Lee Keels
Username: lkeels

Update: Our first cancelled customer since changing to CCBill is due to lose their subscription on 3/28. I think I should just table this until I see what happens on that day. I assumed an EOT would be set, but apparently that is not the case. I assume now the user will simply be demoted on that day or a day later. If not, I will update the thread. I have also notified CCBill that we do not need the cancellations turned on.
—-

Cancellations are a common occurrence. The user cancels the subscription because they can no longer afford to keep it. We have people that sign up and cancel immediately because they don’t want a recurring charge.

But, let me get this straight. Are you saying that:

1) If a user signs up today for a 30 day membership and …
2) Cancels immediately afterward …
3) They will lose their subscription privileges as they should 30 days from now?

If so, I wish you had said so from the beginning without telling me that I needed to beg CCBill to turn on this cancellation thing. In my expectation, an EOT should be set 30 days out immediately when a cancellation occurs (that’s how it worked when we used PayPal). But if I’m understanding you correctly (and I’m not sure at this point), it sounds like CCBill will send something through DataLink closer to the time that they should lose their subscription, or on the exact day?

CCBill has now escalated to upper management because I’m telling them that we have to have this turned on, and it sounds like you are now telling me that we don’t.

  • This reply was modified 4 years, 10 months ago by  Lee Keels.
  • This reply was modified 4 years, 10 months ago by  Lee Keels.
Viewing 25 replies - 1 through 25 (of 26 total)

This topic is closed to new replies. Topics with no replies for 2 weeks are closed automatically.

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

Contacting s2Member: Please use our Support Center for bug reports, pre-sale questions & technical assistance.