I'll just keep this thread going to try and document another approach to integrating an unsupported Gateway. So I'm going to start from the beginning for my own sake. From
this post it seems the cleanest way to manipulate s2member is through the Paypal IPN w/ Proxy Key methodology.
The Gateway I'm using (NMI) has support for recurring billing. So, the main problem is keeping s2member in sync with the Gateway as far as membership status goes. Here's a use case:
A visitor wants to buy a membership so she goes to a payment form and fills out her details. When the form is submitted the visitor is taken to a payment processing page, which does two things:
1. It sends the visitor's payment details to the Gateway, and an attempt is made to process the payment. A successful attempt sends a positive response back to the processing page.
2. The processing page THEN posts the visitor's details to s2Member's IPN handler in a Paypal response format allowing s2member to process the signup.
After that the visitor is taken to a payment confirmation page.
I'm hoping s2member keeps track of a subscription's payment schedule independently as this Gateway does NOT send out event-based messsages like auth.net and Paypal. Looking at the wp_users and wp_usermeta databases I only see two fields specific to s2member, and neither have to do with scheduling or expiration. At this point I'm wondering what s2member does internally when it creates a new member, but pawing through the class files is a little overwhelming.
If something about this seems completely bonkers please let me know. I'll try and update this thread with my results.