Thanks for the heads up on this request for support.
s2Member Pro relies upon these fields for tax calculations, and also for AVS matching against fraud screening filters provided by Authorize.Net. While it’s true that Authorize.Net does not absolutely require them, my experience shows that NOT collecting them, can lead to fraudulent transactions, and scrutiny from the Authorize.Net team.
That being said, you are free to remove them if you wish. You will need to create your own custom Pro Form template for checkout, based on the the one provided by s2Member Pro. Please see: Pre Sale FAQs » Is it possible to modify s2Member® Pro Form templates?
Then, in order to bypass s2Member’s server-side validation against these fields, you will need to edit this file:
/s2member-pro/includes/classes/gateways/authnet/authnet-responses.inc.php
Please remove this section of code (starting at line #756) which requires these fields to be submitted:
/* ----------------------------------------------------------------------------------------------------------------- */
else if(in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (!$s["street"] || !is_string($s["street"])))
$response = array("response" => _x('Missing Street Address. Please try again.', "s2member-front", "s2member"), "error" => true);
/**/
else if(in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (!$s["city"] || !is_string($s["city"])))
$response = array("response" => _x('Missing City/Town. Please try again.', "s2member-front", "s2member"), "error" => true);
/**/
else if(in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (!$s["state"] || !is_string($s["state"])))
$response = array("response" => _x('Missing State/Province. Please try again.', "s2member-front", "s2member"), "error" => true);
/**/
else if(in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (!$s["country"] || !is_string($s["country"])))
$response = array("response" => _x('Missing Country. Please try again.', "s2member-front", "s2member"), "error" => true);
/**/
else if(in_array($s["card_type"], array("Visa", "MasterCard", "Discover", "Amex", "Maestro", "Solo")) && (!$s["zip"] || !is_string($s["zip"])))
$response = array("response" => _x('Missing Postal/Zip Code. Please try again.', "s2member-front", "s2member"), "error" => true);
/* ----------------------------------------------------------------------------------------------------------------- */