Hello,
I’m reposting this thread from old forums, since it appears that the content was not moved over.
I will just put in a quick summary:
Here are some logs from s2member-logs/paypal-ipn.log. I removed some of the fields which looked too sensivite or irrelevant:
'txn_type' => 'subscr_failed',
'subscr_id' => ***,
'time_created' => '14:25:06 Oct 06, 2010 PDT',
's2member_log' =>
array (
0 => 'IPN received on: Thu Oct 6, 2011 2:57:33 pm UTC',
3 => 's2Member `txn_type` identified as ( `subscr_failed|recurring_payment_failed|recurring_payment_skipped` ).',
4 => 'This `txn_type` does not require any action on the part of s2Member.',
5 => 's2Member does NOT respond to individual failed payments, only multiple consecutive failed payments.',
6 => 'When multiple consecutive payments fail, a special IPN response will be triggered.',
),
'txn_type' => 'subscr_failed',
'subscr_id' => *** (matching the previous one),
's2member_log' =>
array (
0 => 'IPN received on: Tue Oct 11, 2011 2:50:12 pm UTC',
3 => 's2Member `txn_type` identified as ( `subscr_failed|recurring_payment_failed|recurring_payment_skipped` ).',
4 => 'This `txn_type` does not require any action on the part of s2Member.',
),
'txn_type' => 'recurring_payment_suspended_due_to_max_failed_payment',
'recurring_payment_id' => *** (matching the subscr_id above),
's2member_log' =>
array (
0 => 'IPN received on: Sun Oct 16, 2011 3:24:46 pm UTC',
2 => 's2Member originating domain ( `$_SERVER["HTTP_HOST"]` ) validated.',
3 => 'Ignoring this IPN request. The `txn_type/status` does NOT require any action on the part of s2Member.',
),
We followed the latest upgrades, Jason was trying to help us, but it was no not enough. Lots of our users were created with old version of the plugin.
In the end, Jason decided, that we need extra logging, so he sent us some tweaked code. Thanks!
Here are the logs.
array (
'payment_cycle' => 'Yearly',
'txn_type' => 'recurring_payment_suspended_due_to_max_failed_payment',
'last_name' => '...',
'next_payment_date' => 'N/A',
'residence_country' => 'US',
'initial_payment_amount' => '0.00',
'currency_code' => 'USD',
'time_created' => '10:15:01 Jan 21, 2011 PST',
'verify_sign' => 'A44EOaImnI.MwRNIZ36PF74Qu.zLAxe3E2dBM4wdijzy7Y7NjfKQiejA',
'period_type' => 'Regular',
'payer_status' => 'unverified',
'tax' => '0.00',
'payer_email' => '...@yahoo.com',
'first_name' => 'Melony',
'receiver_email' => 'info@....com',
'payer_id' => 'NDXS...',
'product_type' => '1',
'shipping' => '0.00',
'amount_per_cycle' => '30.00',
'profile_status' => 'Suspended',
'custom' => 'www.....com',
'charset' => 'windows-1252',
'notify_version' => '3.4',
'amount' => '30.00',
'outstanding_balance' => '30.00',
'recurring_payment_id' => 'I-NPR3...',
'product_name' => 'Member',
'ipn_track_id' => '5a7384005b39e',
's2member_log' =>
array (
0 => 'IPN received on: Tue Jan 31, 2012 10:41:54 am UTC',
1 => 's2Member POST vars verified through a POST back to PayPal®.',
2 => 's2Member originating domain ( `$_SERVER["HTTP_HOST"]` ) validated.',
),
'subscr_gateway' => 'paypal',
'subscr_id' => 'I-NPR3...',
'period1' => '0 D',
'period3' => '1 D',
'item_number' => false,
)
So in the end, Jason said:
I can see here what the issue is. s2Member is stopping on a failure to locate the item_number associated with the original transaction.
I suspect this is because your customer originally purchased access to your site while you were running an older version of s2Member. Unfortunately, this particular type of IPN that PayPal sends to s2Member, does not include the rp_invoice_id, or the PROFILEREFERENCE. This forces s2Member to keep a copy of this data locally, so it can reference this vital information and process the EOT.
s2Member started keeping this information locally, starting with version 110927. So if this particular customer signed up originally under a release prior, this could be the result. Unfortunately, there’s not much we can do about this now. PayPal changed the rules on us a bit, and we had to adapt accordingly. Members that signed up in earlier versions of s2Member may fail to expire in certain circumstances. Yours being one of these. This issue affected certain types of transactions where the storage of IPN Signup Vars was required by s2Member in order to fulfill its obligation later on, in being able to properly terminate access upon receipt of this IPN from PayPal. Newer versions of s2Member resolve this issue.
If you have several members this is affecting, my suggestion would be a manual EOT Time through your Dashboard. In your Dashboard you can set the EOT Time for certain customers, and s2Member will be perfectly capable of processing EOTs at the times you set, regardless of this issue. Of course, for any customer that originally paid you under a release of s2Member v110927+, you won’t need to do this.
I’m having issues formating the text as I would like to.