Community Support Forums — WordPress® ( Users Helping Users ) — 2011-08-29T19:29:34-05:00 http://www.primothemes.com/forums/feed.php?f=4&t=14613 2011-08-29T19:29:34-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14613&p=33305#p33305 <![CDATA[Re: Success redirect being ignored in v110815]]> Thank you for the follow-up.

We're working on some improvements for the next release that will hopefully work around this issue, and we're going to implement a trim in these key locations as well, just as a second line of defense in this specific case. It's possible that your output_buffering setting is causing this. You might try setting output_buffering to the default value of 0. See: http://www.php.net/manual/en/outcontrol ... ration.php

Changelog excerpt for next release:
* (s2Member Pro) **Bug fix**. Some site owners running s2Member Pro, on server configurations with PHP-based output compression enabled, were causing problems with the `success=""` Shortcode Attribute for s2Member Pro Forms. s2Member Pro has been improved in this regard *( i.e. s2Member Pro now makes better attempts to clear output buffers before returning plain text data with it's handlers )*. In addition, calls to `trim()` have also been implemented as an additional line of defense against errors reported in the previous release; which were related to URLs with leading white space, returned by s2Member's core PayPal® IPN processor.

Statistics: Posted by Jason Caldwell — August 29th, 2011, 7:29 pm


]]>
2011-08-28T16:05:02-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14613&p=33207#p33207 <![CDATA[Re: Success redirect being ignored in v110815]]>
output_buffering = 4096
zlib.output_compression = Off

We do not have an "output_handler =" line in php.ini, so we are taking the default.

I believe these are all normal, recommended settings, but if you think they might be causing a problem, let me know.

Statistics: Posted by svillee — August 28th, 2011, 4:05 pm


]]>
2011-08-27T13:25:11-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14613&p=33085#p33085 <![CDATA[Re: Success redirect being ignored in v110815]]> Hey, thanks for your hard work in tracking this down.
svillee wrote:
I did some debugging/tracing of my own, and I think I found the problem. In plugins/s2member-pro/includes/classes/gateways/paypal/paypal-checkout-rdp-in.inc.php at line 668, we have this:

Code:
$ipn["s2member_paypal_proxy_return_url"] = c_ws_plugin__s2member_utils_urls::remote (site_url ("/?s2member_paypal_notify=1" . $ipn_q), $ipn, array ("timeout" => 20));


I verified that after this call, $ipn["s2member_paypal_proxy_return_url"] has the correct url (my success attribute), but with three CR/LF pairs (i.e., "\r\n\r\n\r\n") prepended to it. I don't know exactly where these CR/LF pairs are coming from. But then in line 672 we have this:

Code:
if ($post_vars["attr"]["success"] && substr ($ipn["s2member_paypal_proxy_return_url"], 0, 2) === substr ($post_vars["attr"]["success"], 0, 2) /* In case the IPN routine returns something weird. */


The substr check is failing, because of the prepended CR/LF pairs. Thus, it ignores the redirect entirely.

For now, I have added a trim() call to line 668, so it now looks like this:

Code:
$ipn["s2member_paypal_proxy_return_url"] = trim(c_ws_plugin__s2member_utils_urls::remote (site_url ("/?s2member_paypal_notify=1" . $ipn_q), $ipn, array ("timeout" => 20)));


It's working fine with this change.

Interesting. I wonder where the newlines are coming from? That's not s2Member introducing those, is it possible that you have output buffering enabled via PHP, or something like that?

In the mean time, certainly, trim() won't hurt anything and should fix this problem. We'll add that change to the next release so this problem is avoided. I would like to find the cause of the newlines though. We'll take a look, but if you find anything further, please let me know :-)

Statistics: Posted by Jason Caldwell — August 27th, 2011, 1:25 pm


]]>
2011-08-27T01:50:31-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14613&p=33042#p33042 <![CDATA[Re: Success redirect being ignored in v110815]]> Statistics: Posted by Cristián Lávaque — August 27th, 2011, 1:50 am


]]>
2011-08-26T14:31:52-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14613&p=32966#p32966 <![CDATA[Re: Success redirect being ignored in v110815]]>
Code:
$ipn["s2member_paypal_proxy_return_url"] = c_ws_plugin__s2member_utils_urls::remote (site_url ("/?s2member_paypal_notify=1" . $ipn_q), $ipn, array ("timeout" => 20));


I verified that after this call, $ipn["s2member_paypal_proxy_return_url"] has the correct url (my success attribute), but with three CR/LF pairs (i.e., "\r\n\r\n\r\n") prepended to it. I don't know exactly where these CR/LF pairs are coming from. But then in line 672 we have this:

Code:
if ($post_vars["attr"]["success"] && substr ($ipn["s2member_paypal_proxy_return_url"], 0, 2) === substr ($post_vars["attr"]["success"], 0, 2) /* In case the IPN routine returns something weird. */


The substr check is failing, because of the prepended CR/LF pairs. Thus, it ignores the redirect entirely.

For now, I have added a trim() call to line 668, so it now looks like this:

Code:
$ipn["s2member_paypal_proxy_return_url"] = trim(c_ws_plugin__s2member_utils_urls::remote (site_url ("/?s2member_paypal_notify=1" . $ipn_q), $ipn, array ("timeout" => 20)));


It's working fine with this change.

Statistics: Posted by svillee — August 26th, 2011, 2:31 pm


]]>
2011-08-26T09:03:59-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14613&p=32945#p32945 <![CDATA[Re: Success redirect being ignored in v110815]]>
What is the status of this issue? I am working with svillee on a site and we would like to be able to report *something* back to our client today.

Thanks

Statistics: Posted by plymplan — August 26th, 2011, 9:03 am


]]>
2011-08-24T09:03:44-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14613&p=32786#p32786 <![CDATA[Re: Success redirect being ignored in v110815]]>
Code:
[s2Member-Pro-PayPal-Form level="1" ccaps="" desc="$9.00 USD / Monthly - 1 Free Credit Every 30 Days" ps="paypal" cc="USD" ns="1" custom="www.mydomain.com" ta="0" tp="0" tt="D" ra="9.00" rp="1" rt="M" rr="1" accept="paypal,visa,mastercard,amex,discover,maestro,solo" accept_via_paypal="paypal" coupon="" accept_coupons="0" default_country_code="" captcha="0" success="http://www.mydomain.com/membership-signup/gha-member-success/" /]


If it would be helpful to add logging statements (similar to error_log) to some php module, let me know. The scenario is solidly reproducible.

Statistics: Posted by svillee — August 24th, 2011, 9:03 am


]]>
2011-08-23T20:24:58-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14613&p=32723#p32723 <![CDATA[Re: Success redirect being ignored in v110815]]> OK. Thanks for reporting this important issue.
I'll assume at this point there MUST be something to this.
Can I see the s2Member Shortcode that you're using for your Pro Form integration please?

Statistics: Posted by Jason Caldwell — August 23rd, 2011, 8:24 pm


]]>
2011-08-23T16:03:14-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14613&p=32701#p32701 <![CDATA[Re: Success redirect being ignored in v110815]]>
I am not using PayPal Central IPN. kynatro, I'm curious...has your issue been resolved?

I have added some debugging/tracing code to plugins/s2member/includes/classes/paypal-notify-in.inc.php. Here is the exit statement at line 191:

Code:
exit (((!empty ($paypal["s2member_paypal_proxy_return_url"])) ? $paypal["s2member_paypal_proxy_return_url"] : ""));


I have determined that $paypal["s2member_paypal_proxy_return_url"] has the right value at this point, i.e., the url I specified on my success attribute. But somehow it is being ignored. Do I understand correctly that this value is being sent back to PayPal as the response to its IPN? Is there some way to trace the response as PayPal sees it?

Thanks in advance for any help.

Statistics: Posted by svillee — August 23rd, 2011, 4:03 pm


]]>
2011-08-20T14:22:35-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14613&p=32473#p32473 <![CDATA[Re: Success redirect being ignored in v110815]]> Thanks for reporting this important issue.

I've just tested the latest version of s2Member Pro v110815 in this regard, and everything seems to be working properly without the central IPN system, so I suspect the conflict in your case lies somewhere in the way your central IPN handler has been implemented.

The success return URL is passed through a proxy request to your IPN handler, and then returned with all possible Replacement Codes having been filled, by the IPN routine for s2Member. So, when you see this value in the IPN log: s2member_paypal_proxy_return_url, that indicates to me that everything is working fine, up until the point at which the IPN routine returns the value of that variable, which is your success attribute. If the value is not returned properly by s2Member's IPN handler, your Pro Form won't get it back, and thus, will NOT use it.

I would start by updating your central IPN handler to the latest version, attached to this post.
paypal-central-ipn.zip
Next, I would make sure that your WordPress installation is not somehow preventing s2Member's IPN handler from returning/outputting the URL after it finishes processing. For instance, I've seen some web sites make attempts to integrate output buffering through PHP-based mechanisms like ob_gzhandler, deflate, or zlib.output_compression. If your site utilizes any of these PHP-based mechanisms for output buffering, that could be causing corrupt data in PHP scripts that don't expect that, such as s2Member's IPN handler. My advice in that case, is to use Apace for output buffering instead, with something like this in your .htaccess file.
Code:
# COMPRESSION FOR SPEED
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css text/plain
AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml application/rdf+xml application/rss+xml application/atom+xml image/svg+xml
AddOutputFilterByType DEFLATE font/truetype application/x-font-ttf font/opentype application/x-font-otf
</IfModule>

If all else fails, please send me a Dashboard login and I'll take a look for you by running diagnostics on s2Member. If you'd like to go this route, please send that information privately though this contact form: http://www.s2member.com/contact/

Statistics: Posted by Jason Caldwell — August 20th, 2011, 2:22 pm


]]>
2011-08-18T21:18:14-05:00 http://www.primothemes.com/forums/viewtopic.php?t=14613&p=32362#p32362 <![CDATA[Success redirect being ignored in v110815]]>
Currently we have our system routing payment IPN calls through the PayPal Central IPN script distributed as part of the PRO Extras package as we are handling multiple sites transactions through a single PayPal account. The IPN calls are coming back properly as far as we can tell. I have pasted in an IPN response from the logs below for our account modification form which upgrades free, level 0 users to paying level 1 users with a monthly subscription cost. This form also grants them a custom capability as well. I have redacted personal information and modified domain, custom capability names and thank you URLs to be generic placeholders for anonymity and security.

Code:
WordPress v3.2.1 :: s2Member v110815 :: s2Member Pro v110815
Memory 8.84 MB :: Real Memory 9.25 MB :: Peak Memory 9.00 MB :: Real Peak Memory 9.25 MB
www.mydomain.com/?s2member_paypal_notify=1&s2member_paypal_proxy=paypal&s2member_paypal_proxy_use=pro-emails,subscr-signup-as-subscr-payment&s2member_paypal_proxy_verification=[REDACTED]&s2member_paypal_proxy_return
_url=https%3A%2F%2Fwww.mydomain.com%2Fthankyou
User-Agent: WordPress/3.2.1; http://www.mydomain.com
array (
  'txn_type' => 'subscr_signup',
  'subscr_id' => '[REDACTED]',
  'custom' => 'www.mydomain.com',
  'txn_id' => '[REDACTED]',
  'period1' => '0 D',
  'period3' => '1 M',
  'mc_amount1' => '0.00',
  'mc_amount3' => '4.95',
  'mc_gross' => '4.95',
  'mc_currency' => 'USD',
  'tax' => '0.00',
  'recurring' => '4.95',
  'payer_email' => '[REDACTED]',
  'first_name' => '[REDACTED]',
  'last_name' => '[REDACTED]',
  'option_name1' => 'Referencing Customer ID',
  'option_selection1' => '[REDACTED]',
  'option_name2' => 'Customer IP Address',
  'option_selection2' => '[REDACTED]',
  'item_name' => '$4.95/month',
  'item_number' => '1:my_custom_capability',
  'proxy_verified' => 'paypal',
  's2member_log' =>
  array (
    0 => 'IPN received on: Thu Aug 18, 2011 10:00:25 pm UTC',
    1 => 's2Member POST vars verified with a Proxy Key',
    2 => 's2Member originating domain ( `$_SERVER["HTTP_HOST"]` ) validated.',
    3 => 's2Member `txn_type` identified as ( `web_accept|subscr_signup` ).',
    4 => 's2Member `txn_type` identified as ( `web_accept|subscr_signup` ) w/ update vars.',
    5 => 's2Member Level/Capabilities updated w/ advanced update routines.',
    6 => 'Modification Confirmation Email sent to Customer, with a URL that provides them with a way to log back in.',
    7 => 'Subscr. Return ( `modification=1` ), a Proxy Return URL is ready.',
    8 => 'User exists. Handling `payment` for Subscription via ( `subscr-signup-as-subscr-payment` ).',
    9 => 'Payment Notification URLs have been processed.',
    10 => 'Storing IPN signup vars now. These are associated with a User\'s account record; for future reference.',
  ),
  'subscr_gateway' => 'paypal',
  'eotper' => NULL,
  'ccaps' => 'my_custom_capability',
  'level' => '1',
  'ip' => '[REDACTED]',
  'initial_term' => '0 D',
  'initial' => '4.95',
  'regular' => '4.95',
  'regular_term' => '1 M',
  's2member_paypal_proxy_return_url' => 'https://www.mydomain.com/thankyou',
  's2member_paypal_proxy' => 'paypal',
  's2member_paypal_proxy_use' => 'pro-emails,subscr-signup-as-subscr-payment',
  's2member_paypal_proxy_verification' => '[REDACTED]',
)


Here is the shortcode for the Pro form that returns this IPN response:

Code:
[s2Member-Pro-PayPal-Form modify="1" level="1" ccaps="my_custom_capability" desc="$4.95/month" ps="paypal" lc="" cc="USD" dg="0" ns="1" custom="www.mydomain.com" ta="0" tp="0" tt="D" ra="4.95" rp="1" rt="M" rr="1" rrt="" rra="2" accept="paypal,visa,mastercard,amex,discover" accept_via_paypal="paypal" coupon="" accept_coupons="0" default_country_code="" captcha="0" success="https://www.mydomain.com/thankyou" /]


We have attempted success URL values both absolute and relative to no avail. Please keep in mind that transactions are going through, users are being upgraded and given their custom capability and being associated with the transaction, they are just not being directed to the success URL thank you page.

Any help on this would be greatly appreciated.

Statistics: Posted by kynatro — August 18th, 2011, 9:18 pm


]]>