Thanks for your patience.
I confirmed the missing log entries, which also explains the missing Payment Notification you mentioned. In order to solve the missing Payment Notification issue, we just need to solve the missing log entries (e.g. to determine why s2Member is failing to receive the IPN data related to this type of transaction).
I was unable to reproduce this in our lab, so I have to assume (at this point), the issue is installation-specific. Whenever I see data in the paypal-api.log file, but there is no matching data in the paypal-ipn.log file, it indicates to me that s2Member’s remote connection to it’s IPN handler is failing internally (e.g. the remote URL connection is timing out, or failing to connect – either all the time, or some of the time).
Because s2Member uses the built-in WordPress WP_Http class to make these connections, we can attach a logger to this class, and monitor errors that occur. My hope is this will shed light on the underlying issue for you.
Please create this directory and file:
/wp-content/mu-plugins/s2-http-api-debug.php
(NOTE: these are MUST USE plugins, see: http://codex.wordpress.org/Must_Use_Plugins)
(See also: http://www.s2member.com/kb/hacking-s2member/)
<?php
add_action('http_api_debug', 's2_http_api_debug', 1000, 5);
function s2_http_api_debug($response = NULL, $state = NULL, $class = NULL, $args = NULL, $url = NULL)
{
$info = array(
'state' => $state,
'transport_class' => $class,
'args' => $args,
'url' => $url,
'response' => $response
);
$logs_dir = WP_CONTENT_DIR.'/plugins/s2member-logs';
if(!is_dir($logs_dir))
{
mkdir($logs_dir, 0777, TRUE);
file_put_contents($logs_dir.'/.htaccess', 'deny from all');
}
file_put_contents($logs_dir.'/http-api-debug.log', var_export($info, TRUE)."\n\n", FILE_APPEND);
}
Please monitor this log file (/s2member-logs/http-api-debug.log), and let us know if you come up with anything. Feel free to send this log over to us for review if this problem occurs again, so we can help you determine what the underlying issue really is. Thanks!