When discussing how MemberMouse handles recurring billing we first need to distinguish between payment services that support tokenization or card-on-file functionality and those that don't. Card-on-file functionality is when the payment service stores a customer's credit card information in a secure way and provides a payment token that can be used to make future payments.
With payment services that don't support card-on-file functionality (i.e. PayPal, Authorize.net), MemberMouse has no control over the recurring billing process. When the customer purchases a subscription via one of these services, a schedule is set up within the payment service and they take responsibility for rebilling the customer at the appropriate time.
With card-on-file payment services, the MemberMouse plugin on your site is responsible for keeping track of the payment schedule and sending payment requests to the payment service (i.e. Stripe, Braintree, Authorize.net CIM) when a payment is due. In order for this to work, a periodic check needs to happen on your site to see if there are any payments that need to be billed. So the question is: what method can we use to perform this periodic check that's easy, transparent to setup and reliable across all server environments our customers are using?
Traditionally, this type of periodic check is done using a cron on UNIX systems or a similar server-side scheduled process on other systems. The challenge with this approach is that it would require customers to manually setup a scheduled process on their server and it's not functionality that's guaranteed to be available across all environments.
WordPress has a psuedo-cron called WP_Cron, but in our opinion this is too unreliable to be in charge of something as critical as billing. The primary reason is that WP_Cron depends on outside traffic hitting the site in order to execute itself. So if there's little or no traffic to your site then rebill payments can't be guaranteed to execute at the right time.
Ultimately, we went with a solution that we could guarantee would work for everyone, would require no setup and be as accurate as possible. Our solution is to make keeping track of recurring billing a joint effort between the MemberMouse plugin on your site and our central server. Both your site and our central server have a copy of the recurring billing schedule. We dispatch pending requests periodically throughout every day from our central server to the MemberMouse plugin on your site and then the MemberMouse plugin sends a request to the payment service.
IMPORTANT: No personal information about customers is stored on our server. The only thing that's stored is the unique ID for the payment and the date it should be processed.
Check if Payment Scheduler is Available
Normally the process of our central server sending payment requests to the MemberMouse plugin on your site goes off without a hitch, however, there are some security settings on the server that can inadvertently block these requests from coming in and as a result block rebill payments from being processed.
To ensure that the payment scheduler is available on your MemberMouse plugin, you can run a diagnostic by following the instructions below:
- Log into your account on membermouse.com.
- Click Dashboard > My Account
- In the License Management section at the top you'll see a list of your MemberMouse licenses. Click the Run Diagnostic gear icon next to for the Plan name of the license you would like to check.