Authorize.Net Membership Plugin Finite recurring charge issue

There have been many questions through the forums related to the Membership plugin, finite subscriptions, and getting an error message of "Credit Card expires before the start of the subscription" especially in situations where a "Finite" subscription plan lasts for one year and the expiration of the credit card used is presently good, but expires within the year.

This is because the class that runs Authorize.net is poorly developed and confusing Finite vs. Serial vs. Indefinite subscription types.

In plugin extension file: plugins/membership/classes/Membership/Gateway/Authorize.php there is a case block of logic around line 672 that considers the type of the subscription being processed for payment.

Through this switch block, you can easily see that Finite subscriptions are starting up ARB (automated/automatic recurring billing) even though they should only be charged once through the _process_nonserial_purchase() function instead of _process_serial_purchase() function.

To ensure that Finite subscriptions don't charge your users twice (once at time of signup, and once at the "recurring" date), have your developer comment out the switch for Finite and roll it right into Indefinite so they both process the same way - through _process_nonserial_purchase(). This will confirm to work for 1 year non-recurring subscriptions.

Also, make sure to keep notes on this hack because it will be removed if your system is updated by WPMUDEV dashboard updates.

This post is an ALERT and a potential fix for Membership and Authorize.net users that are being forced to work with a WPMUDEV plugin extension that is very poorly developed.