Page 1 of 1
EOT not working with Paypal
![Post Post](styles/custom/imageset/icon_post_target.gif)
Posted:
January 11th, 2012, 2:47 pm
by seb2point0
Hello,
I have S2Member installed and only taking PayPal payments. Everything seems to working fine except EOT is not working although I have set all the necessary parameters in my PayPal account.
It seems like I've done everything right. What are some steps that I can take to debug ? Is there a log I could look at ?
Thanks
Re: EOT not working with Paypal
![Post Post](styles/custom/imageset/icon_post_target.gif)
Posted:
January 12th, 2012, 8:08 pm
by Raam Dev
Hello,
You can enable logging in WP Admin -> s2Member -> PayPal Options -> PayPal Account Details -> Enable Logging Routines. The logs will definitely shed some light on any EOT issues you're having.
If you discover something in the logs that doesn't look right, please paste the relevant log entries here (using [code] tags), X-ing out any private information.
Re: EOT not working with Paypal
![Post Post](styles/custom/imageset/icon_post_target.gif)
Posted:
January 13th, 2012, 1:32 am
by seb2point0
Hello,
Thanks for your reply. Apparently I had already enabled logs a while back so I have plenty of data. Here is a log for a customer who paid for one month.
- Code: Select all
PHP v5.2.17 :: WordPress® v3.2.1 :: s2Member® v111105
Memory 20.98 MB :: Real Memory 21.25 MB :: Peak Memory 21.04 MB :: Real Peak Memory 21.25 MB
mydomain.com/?s2member_paypal_return=1&s2member_paypal_return_tra=hash
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.3; SIMBAR={B16C7346-BC4E-11DF-96F4-891DCD57244C}; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.1; AskTB5.5)
array (
'transaction_subject' => '1 month access',
'payment_date' => '12:55:50 Dec 05, 2011 PST',
'txn_type' => 'subscr_payment',
'subscr_id' => 'ID',
'last_name' => 'Lastname',
'option_selection1' => 'mydomain.com',
'option_selection2' => 'IP',
'residence_country' => 'ES',
'item_name' => '1 month access',
'mc_currency' => 'EUR',
'business' => 'my@email.com',
'payment_type' => 'instant',
'protection_eligibility' => 'Ineligible',
'payer_status' => 'verified',
'payer_email' => 'customer@hotmail.com',
'txn_id' => 'ID',
'receiver_email' => 'my@email.com',
'first_name' => 'Firstname',
'option_name1' => 'Originating Domain',
'invoice' => 'ID',
'payer_id' => 'ID',
'option_name2' => 'Customer IP Address',
'receiver_id' => 'ID',
'item_number' => '1',
'payment_status' => 'Completed',
'mc_fee' => '0.90',
'mc_gross' => '19.00',
'custom' => 'mydomain.com',
'charset' => 'windows-1252',
's2member_log' =>
array (
0 => 'Return-Data received on: Mon Dec 5, 2011 8:56:06 pm UTC',
1 => 's2Member POST vars verified through a POST back to PayPal®.',
2 => 's2Member originating domain ( `$_SERVER["HTTP_HOST"]` ) validated.',
3 => 's2Member `txn_type` identified as ( `web_accept|subscr_signup|subscr_payment` ).',
4 => 's2Member `txn_type` identified as ( `web_accept|subscr_signup|subscr_payment` ) w/o update vars.',
5 => 'Registration Cookies set on ( `web_accept|subscr_signup|subscr_payment` ) w/o update vars.',
6 => 'Transient Tracking Cookie set on ( `web_accept|subscr_signup|subscr_payment` ) w/o update vars.',
7 => 'Redirecting Customer to Registration Page. They need to Register now.',
),
'subscr_gateway' => 'paypal',
'eotper' => NULL,
'ccaps' => NULL,
'level' => '1',
'ip' => 'IP',
'period1' => '0 D',
'mc_amount1' => '0.00',
'period3' => '1 M',
'mc_amount3' => '19',
'recurring' => '0',
'initial_term' => '0 D',
'initial' => '19',
'regular' => '19',
'regular_term' => '1 M',
's2member_paypal_return_tra' => 'hash',
)
Just so I understand. Does PayPal send a notification at the EOT or does s2member preform end of term by itself using the information Paypal sends it in this return ? I imagine it is the latter.
Looking at this log, it seems like everything is being sent back correctly. As for the cron job I was using the WP-cron option but since it wasn't working I switched to real cron. Only problem : my host only allows actual PHP scripts to be executed on the server and not URL (therefore, no parameters). I had to create a php file on the server which I call up with cron which then calls the correct URL :
- Code: Select all
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://mydomain.com/?s2member_auto_eot_system_via_cron=1/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
?>
Re: EOT not working with Paypal
![Post Post](styles/custom/imageset/icon_post_target.gif)
Posted:
January 13th, 2012, 7:31 pm
by Raam Dev
For subscriptions, PayPal will send an IPN message notifying s2Member of an EOT (due to cancellation, failed payment, etc.). The Automatic EOT Time field on the user's profile will remain blank until an IPN message from PayPal is received. (If you'd like to override this, you can manually enter an EOT time in that field to force the user's account to expire at a specific time.)
Your logs should show messages from PayPal about the cancellation/EOT. Do you not have those?
Re: EOT not working with Paypal
![Post Post](styles/custom/imageset/icon_post_target.gif)
Posted:
January 14th, 2012, 3:29 am
by seb2point0
Hello,
Yes I found and EOT ipn log
- Code: Select all
PHP v5.2.17 :: WordPress® v3.2.1 :: s2Member® v111105
Memory 23.80 MB :: Real Memory 24.50 MB :: Peak Memory 24.06 MB :: Real Peak Memory 24.50 MB
mydomain.com/?s2member_paypal_notify=1
User-Agent:
array (
'txn_type' => 'subscr_eot',
'subscr_id' => 'I-6845PEKKNPMV',
'last_name' => 'Lastname',
'option_selection1' => 'mydomain.com',
'option_selection2' => 'IP',
'residence_country' => 'FR',
'item_name' => 'Access for 24 hours',
'mc_currency' => 'EUR',
'business' => 'my@email.com',
'verify_sign' => 'HASH',
'payer_status' => 'unverified',
'payer_email' => 'customer@email.com',
'first_name' => 'Firstname',
'receiver_email' => 'my@email.com',
'option_name1' => 'Originating Domain',
'payer_id' => 'ID',
'invoice' => 'Invoice~IP',
'option_name2' => 'Customer IP Address',
'item_number' => '1',
'custom' => 'mydomain.com',
'charset' => 'windows-1252',
'notify_version' => '3.4',
'ipn_track_id' => 'HASH',
's2member_log' =>
array (
0 => 'IPN received on: Sun Dec 11, 2011 9:20:20 am UTC',
1 => 's2Member POST vars verified through a POST back to PayPal®.',
2 => 's2Member originating domain ( `$_SERVER["HTTP_HOST"]` ) validated.',
3 => 's2Member `txn_type` identified as ( `subscr_eot|recurring_payment_expired|recurring_payment_suspended_due_to_max_failed_payment` ) - or - `recurring_payment_profile_cancel` w/ `initial_payment_status` ( `failed` ).',
4 => 'Sleeping for 5 seconds. Waiting for a possible ( `subscr_signup|subscr_modify|recurring_payment_profile_created` ).',
5 => 'Awake. It\'s Sun Dec 11, 2011 9:20:25 am UTC. s2Member `txn_type` identified as ( `subscr_eot|recurring_payment_expired|recurring_payment_suspended_due_to_max_failed_payment` ) - or - `recurring_payment_profile_cancel` w/ `initial_payment_status` ( `failed` ).',
6 => 'Skipping this IPN response, for now. The Subscr. ID is not associated with a registered Member.',
7 => 'Re-generating. This IPN will go into a Transient Queue; and be re-processed during registration.',
),
'subscr_gateway' => 'paypal',
'period1' => '0 D',
'period3' => '1 D',
'ip' => 'IP',
)
Here is the subscriber in my WP-Admin
http://twi.tl/041i0z1K38111B0h1Q3A although you can't see it, the account is still in a level 1 role (as are all my customers).
I am confused by :
- Code: Select all
6 => 'Skipping this IPN response, for now. The Subscr. ID is not associated with a registered Member.',
Re: EOT not working with Paypal
![Post Post](styles/custom/imageset/icon_post_target.gif)
Posted:
January 14th, 2012, 10:57 pm
by Raam Dev
That message is saying that when s2Member received the IPN message regarding the subscriber with Subscriber ID I-6845PEKKNPMV, s2Member couldn't find an s2Member account tied to that Subscription ID.
If you edit a user, you'll see at the bottom of their profile there are some extra fields added by s2Member. One of those fields is the Subscriber ID field. When the customer makes a purchase through s2Member, that field is automatically filled in by s2Member, thereby linking any IPN messages with that Subscriber ID to that specific user account in s2Member.
I can think of two scenarios where that field might not be properly filled in:
1) You manually added some of your users and didn't fill in their Subscription ID's
or
2) Your IPN Integration and/or PDT/Auto-Return Integration is not properly configured (see WP Admin -> s2Member -> PayPal Options)