latest stable versions: v150827 (changelog)

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

Jason (Lead Developer)

Staff Member

My Latest Replies (From Various Topics)

Viewing 25 replies - 1,076 through 1,100 (of 1,909 total)
Author Replies
Author Replies
Posted: Thursday Jan 10th, 2013 at 10:58 am #36867
Staff Member

Thanks for the heads up on this thread.

~ Investigating now.

Posted: Thursday Jan 10th, 2013 at 10:03 am #36863
Staff Member

Thanks for the heads up on this thread.

It is also possible to accomplish this with an s2Member Shortcode.

<a href="&#91;&#91;s2Member-PayPal-Button ... output="url" /&#93;&#93;">click here</a>

For documentation on the output="" shortcode attribute, please see:
Dashboard -› s2Member® -› PayPal® Buttons -› Shortcode Attributes (Explained)

Posted: Thursday Jan 10th, 2013 at 8:24 am #36859
Staff Member

Hi George. Thanks for your patience.

I just took a quick look at your installation files, because you mentioned you were unable to process the Multisite Patches provided by s2Member. It appears that a couple of files that s2Member needs to patch on your installation, were already patched by s2Member at some point.

However, s2Member was unable to verify these patches due to the line break style in these files. My guess is that you may have had some trouble patching WordPress v3.5, and then opened these files at some point in a Windows editor that did not preserve WordPress Unix-style line breaks. This got s2Member confused.

The latest version of s2Member was updated to support WordPress v3.5, and I’ve had those two specific installation files that s2Member was having trouble with on your installation, reset back to WordPress Unix-style line breaks. s2Member’s Multisite Patches can now be verified; and I don’t think you’ll have any further trouble with this going forward. If you do, please let us know.

It’s safe for you to re-run s2Member’s Multisite patches again for yourself, so you can verify what I’ve written here, if you like. Not necessary, but I thought you might like to see s2Member’s patches applied for yourself. If you would, please go to: Dashboard -› s2Member® -› Multisite (Config)


Regarding BuddyPress slugs like: /blogs/create/, that’s really a question for the folks over at BuddyPress. However, I can provide you with some links that might help steer you down the right path on this.

Please check out this BuddyPress Codex article:
http://codex.buddypress.org/developer/customizing/changing-internal-configuration-settings/

I’m not sure you can change /blogs/create/ without using a filter. If you have trouble, even after reading the article above, you might take a look for a plugin that can help with this. Or, if you’re inclined to code it yourself, you can look for the bp_uri filter in the BuddyPress source code.

Please let us know if problems persist.

Posted: Wednesday Jan 9th, 2013 at 12:42 am #36688
Staff Member

Thanks for the follow-ups.

Was your test done through PayPal Pro form, or just express?

It was through a Pro Form, using the PayPal Express Checkout option. My successful test transaction is recorded on your site, inside this log file: /wp-content/plugins/s2member-logs/paypal-payflow-api.log. Just search for my name in that log file to locate the log related entries.

I can create a express button and it works fine. Although it does direct to the page /create afterwards which doesn’t exist (can I change that if I need to setup a backup payment?)

Using a “Button” only integration, s2Member will redirect the customer to your registration form after completing checkout at PayPal. If you have BuddyPress installed, your registration page is /create instead of /wp-login.php?action=register, because BuddyPress introduces it’s own registration system (which IS compatible with s2Member by the way).

NOTE: PayPal Buttons are not the same as Express Checkout. Buttons integrate with “PayPal Standard”, whereas Pro Forms integrate with “PayPal Pro”, in your case you’re integrating with “PayPal Pro (Payflow Edition)”.

s2Member makes a PayPal option available in it’s Pro Form integration with PayPal Pro. It’s that specific PayPal option (on a Pro Form), that uses PayPal Express Checkout.

One thing the technician mentioned was something about my $1 transaction being recorded as a $1, but then $0 gets sent to PayPal as a request, if that makes any sense..

The only thing comes to mind, is s2Member’s initial Set Express Checkout API call to PayPal, where we’re setting up a Billing Agreement, and we set AMT=0.00, as documented here: https://www.x.com/developers/paypal/documentation-tools/api/setexpresscheckout-api-operation-nvp

This is also documented in the PayPal Pro (Payflow Edition) API docs.

Posted: Wednesday Jan 9th, 2013 at 12:02 am #36682
Staff Member
Updating this KB article to mention this limitation.
http://www.s2member.com/kb/using-paypal-created-buttons/
Posted: Tuesday Jan 8th, 2013 at 11:16 pm #36677
Staff Member

Thanks for the follow-up.

I am using a PayPal hosted button because the ones created by s2Member put in about 4 inches of blank space ahead of them and cannot be fixed. I have spent hours working on that to no avail. Using the PayPal hosted buttons is the only option I have gotten to work with my site. How is it that the PayPal button strips out code from the Return URL? Really, the button can do that?

Yes, this is the issue. No, a PayPal-hosted button DOES have some limitations.

Please see my response here for details about these limitations. Actually, just one.
http://www.s2member.com/forums/topic/shareasale-not-tracking-sales/#post-36675

Regarding blank space around your PayPal Buttons. It sounds like your theme could be applying a global CSS style to all INPUT fields, which is causing the display of your PayPal Button to have margin or padding. That’s installation-specific, not a bug with s2Member. (e.g. it’s NOT something we can control, so you will need to review this).

If you would like to post a link to the page on your site where your s2Member Shortcode has produced a PayPal Button that is being displayed by your theme with additional margin or padding, please do. We can point you in the right direction by inspecting your site in FireBug and finding the CSS that is causing this.

Please let us know if problems persist. Thanks!

Posted: Tuesday Jan 8th, 2013 at 11:06 pm #36675
Staff Member
NOTE: If you’re using a PayPal-generated button that you integrated based on instructions provided our team, please be aware of the following limitations.

PayPal-generated buttons, instead of using s2Member Shortcodes.

Most of the time, it’s fine to do this, so long as you’re following the instructions we’ve laid out here.

However, if you would like to enhance s2Member’s compatibility with other advanced features made possible by s2Member, like s2Member -> API / Tracking, you will need to use s2Member’s Shortcodes exclusively, because s2Member Shortcodes inject some additional dynamic variables into your PayPal Buttons when the Shortcode is in use. These dynamic variables cannot be included reliably in a raw HTML button code that you produce at PayPal. Thus, we recommend the use of an s2Member Shortcode if at all possible.

The problem when raw HTML buttons (aka: PayPal-generated buttons) are used.

API Tracking Codes integrated with s2Member will not be displayed immediately. Instead, they’ll be displayed during registration if at all possible, or upon the customer’s first login, in the footer of your WordPress theme.

Not really a HUGE deal, but if you’re testing for IMG tracking pixels in the Return-Page after returning from PayPal, s2Member can’t display those immediately unless you integrate with an s2Member Shortcode.

This is for security purposes.

IMPORTANT TO NOTE: s2Member -> API Tracking Codes WILL be displayed on-site, even if you’ve used a raw HTML button code. However, as I mentioned before, your API Tracking Codes will not be displayed until registration occurs, or upon the customer’s first login. This is NOT ideal in most cases.

Posted: Tuesday Jan 8th, 2013 at 10:49 pm #36674
Staff Member

Thanks for your patience.

Yes, s2Member will handle IPNs sent from PayPal in response to a failed eCheck payment. If this is not working on your installation, let’s begin by taking a quick look at your IPN log files. Please submit those privately through this form: s2Member® » Private Contact Form

It’s common for an eCheck to pass s2Member initially, even if it’s in a PENDING state while you’re waiting to see if the check clears. s2Member will grant the customer immediate access and hope for the best. Short of making an online member wait 4-7 days before we grant them access, that’s all we can do :-) It works best on most sites.

In the event the eCheck fails to clear, the customer will lose access, and PayPal sends the customer a notification about their eCheck having failed to clear against the transaction on your site.

Again, if this is not working properly for you (i.e. customer access is NOT being terminated when you expect they would be), we’ll be happy to review your log files and provide you with an explanation, or a solution.

Posted: Tuesday Jan 8th, 2013 at 10:10 pm #36672
Staff Member

There was only one additional PayPal Express Checkout transaction attempt since our last review, and that transaction was performed by you, and failed due to the same error. I suspect that it may have failed because you were attempting to use the same merchant PayPal account that is tied to your site?

I ran a test transaction of my own against PayPal Express Checkout and it succeeded where yours failed. My PayPal account was in a ‘verified’ state, so I think we can safely rule out verified vs. unverified as being the underlying problem.

Since this problem seems to ONLY affect some customers, and since the error code being returned by PayPal is regarding invalid funding sources, I would suggest that we take the error code for what it is. I’ll have to assume that some of your customers are attempting to use a funding source through their PayPal account that you’re unable to accept for one reason or another. I would contact PayPal about this matter now, and see if they can assist you further. You might also want to review your PayPal account configuration, to see if there are some funding sources which your account is configured to refuse.

NOTE: It’s common for a test that YOU run yourself, to fail with this error. It’s not possible to pay for something at your site via PayPal, where the site you’re paying for is your own (i.e. the customer/merchant account is the same). Thus, you’ll need a second PayPal account (or a friend/customer) to help you test this aspect of your live installation.

Please let me know if problems persist. Thanks!

Posted: Tuesday Jan 8th, 2013 at 9:21 pm #36668
Staff Member

Unable to reproduce this in Firefox. I’ve tested in these browsers so far.

Chrome v 23.0.1271.97 m
Firefox v 17.0.1
Firefox v 18.0
IE 8
IE 9

Has anyone else (Eduan?), been able to reproduce this yet? If so, in what browser please, and which version? Also, specifically which Payment Button are you creating when this occurs? Have you been able to reproduce this in a clean installation of WordPress with no other plugins active; running the default theme?

Is your browser running any extensions / add-ons? Does disabling those correct the issue?

Posted: Tuesday Jan 8th, 2013 at 9:17 pm #36666
Staff Member

Thanks for the follow-up.

You mentioned…

I can give you access to my network if you want to take a look. The problem seems to be that S2M is governing the redirect from /wp-login.php?action=register to /wp-login.php?registration=disabled and this redirection is not taking place if S2M is not active.

If that redirection is failing (assuming that your WP installation is not corrupted), the redirection typically fails only if the value of get_option('users_can_register') is reading `1`. If you’ve confirmed this value is set in the database, to a value of `0`, but it’s still not working as expected, I’d start looking at themes/plugins that are manipulating this value. If s2Member is not active, it’s got to be another theme/plugin doing this.

For instance, the database might read `0`, but at runtime the value can be modified to `1` again by a filter in WP. If you run this PHP code, what do you get? <?php echo get_option('users_can_register'); ?>

My assumption at this point, is that s2Member being active, applies a filter to fix this problem for you. However, the underlying problem, is still a problem; and that’s what really needs to be fixed. If s2Member is not active on blogs where this problems occurs, it’s likely caused by another theme/plugin that you’re running on these blogs, or across the entire network perhaps.

If problems persist, please submit a Dashboard login and FTP access privately for me.
See: s2Member® » Private Contact Form

Posted: Tuesday Jan 8th, 2013 at 8:59 pm #36664
Staff Member
Thank you. I will run tests against Firefox shortly and report back.
Posted: Tuesday Jan 8th, 2013 at 8:58 pm #36663
Staff Member
UPDATE: I’m going to review your log files again shortly. I will reply again with further details.
Posted: Tuesday Jan 8th, 2013 at 8:52 pm #36661
Staff Member

@ Chris Frishe

Thanks for reporting this important issue. I’m not aware of any limitations in this regard, so I would like to see this problem, as it occurs on your installation; so we can provide you with a resolution. Please submit a Dashboard login and FTP access privately using this form: s2Member® » Private Contact Form

Posted: Tuesday Jan 8th, 2013 at 8:24 pm #36655
Staff Member

Thanks for the heads up on this thread.

I’m reviewing this thread now. I’ll post a reply for you shortly :-)
Posted: Tuesday Jan 8th, 2013 at 8:10 pm #36653
Staff Member

Thanks for your patience.

I’ve just completed a review of this thread. Here are my findings.

1. Your ShareASale Tracking Code looks good to me.
2. It sounds like you’ve properly implemented this in the s2Member -> API Tracking -> Signup Tracking section.

Problems…

3. It looks like your Return-Page URL is missing a vital piece of information. You posted this:

http://immbn.com/?s2member_paypal_return=1&tx=4BB30522VR234030W&st=Completed&amt=1.00&cc=USD&cm=immbn%2ecom&item_number=&sig=c0L4mQ5nfzMx5yKllBJOkezFX%2fI2Ctx%2fCtluuBLwJwaFDJyS306%2bLxk5PDXaGCoBvJWuhAn%2bxXrwvDT75n9cEAIlAlEh9kJDh5BVl3OZa6DcHzJwadnrWylt9l%2f7yBo6PnDIW41wBVVqXa%2fzTjUyezxYa2oQygG3t2kZw%2fdZCoI%3d

This URL should include the s2member_paypal_return_tra variable, but it is missing.

4. As a result of the missing Return-Page variable (s2member_paypal_return_tra), your log file is missing an entry which states that s2Member has processed your Signup Tracking Codes. What you should have in the logs, is something like this.

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 => 'Storing Signup Tracking Codes into a Transient Queue. These will be processed on-site.',
8 => ‘Redirecting Customer to Registration Page. They need to Register now.’,

To correct this problem, let’s start by taking a look at the actual s2Member Shortcode that you’ve used to implement your PayPal Button. The missing s2member_paypal_return_tra variable, is probably not making it into the final Return URL, due to one of the following:

1. You’ve NOT used the s2Member Shortcode, and instead you’ve used the full PayPal Button Code in raw HTML, or a PayPal-hosted button? We recommend that you integrate with s2Member Shortcodes for the best compatibility across all features made possible by s2Member.

See: Dashboard -› s2Member® -› PayPal® Buttons -› Membership Level # Buttons

2. Your Shortcode is being modified by a custom hack file, or another plugin that is attempting to integrate with s2Member?

NOTE: If you’re attempting to build the PayPal Button via PHP code, we recommend using the do_shortcode() function provided by WordPress. Here is an example:

<?php echo do_shortcode('&#91;&#91;s2Member-PayPal-Button ... attributes go here of course... /&#93;&#93;'); ?>

Please let us know if problems persist. Thank you!

Posted: Tuesday Jan 8th, 2013 at 7:09 pm #36641
Staff Member

Thanks for the heads up on this thread.

I’m reviewing this thread now and I’ll add a reply shortly for you :-)
Posted: Saturday Jan 5th, 2013 at 8:35 pm #36362
Staff Member

Thanks for the follow-up.

It uses $_SERVER[“REQUEST_URI”] in raw form to echo it out in HTML (into an field and into a link).

The value of $_SERVER variables can’t be trusted, as it can be tampered by the end user.

This is why the WP core uses the esc_url() function whenever WP needs to use REQUEST_URI.
You’re using esc_attr instead, which doesn’t seem to provide enough URL cleaning, and thus open this input for XSS

Just to clarify… s2Member is not using this variable $_SERVER["REQUEST_URI"] in raw form for display, we’re wrapping it with esc_attr(), which sanitizes this variable for display in any HTML attribute, by removing these potentially harmful characters. Thus, preventing the possibility of XSS where this data is concerned.

I understand your desire to follow WordPress standards to the letter on this, by using the specific esc_url() function. However, I’m not aware of any vulnerability arising from our use of esc_attr().

This is a multipurpose function that will sanitize ANY HTML attribute, regardless of what one might consider the value to be going into a sanitation routine for an attribute. The esc_url() function does provide some additional options for controlling invalid protocols, but in terms of XSS, it’s not doing anything more than esc_attr() already accomplishes. An attribute, is an attribute, and an attribute should always be cleaned before display, regardless of what data we might expect it to contain. The esc_attr() function prevents XSS.

All of that being said, I appreciate you bringing this up. We’ll certainly make an effort to fully conform with WordPress standards by applying esc_url() when working with $_SERVER['REQUEST_URI']. I’m adding this to our list now, so we can have this updated for the next maintenance release. For the sake of conformity, I agree this should be implemented if at all possible.

Please let us know if anything else comes up. We’ll be happy to review it with you.

Posted: Saturday Jan 5th, 2013 at 3:42 am #36228
Staff Member

Thanks for your patience.

I’m going to reference this thread again, because we worked to resolve an issue similar (NOT exactly the same), but similar to this one awhile back; and s2Member v121201+ resolves this.

The issue we worked on the past, was related to the same error code that we’re discussing in this thread, however the previous issue was resolved with assistance from PayPal MTS. It was related to the TRXTYPE variable, which needed to be passed as TRXTYPE=A instead of TRXTYPE=S in the Set Express Checkout API call. Upgrading to s2Member v121201+ resolves this.

Now…

The issue that you’re reporting here in this thread,
we’ve not been able to put our finger on just yet, but let’s continue to work to that end here.

I’ve just completed a thorough review of your s2Member log files, and what’s confusing about the Error #36 with HOSTCODE=10422, is that it’s not happening to every single customer, only a few. From my review of your log files, it would appear that, like in the previous issue we dealt with, this is ONLY happening to PayPal Express Checkout transactions, and is not affecting on-site credit card processing at all.

Upon further review, I found that your installation successfully processes Express Checkout transactions (i.e. this error does NOT occur at all times), because you have a record in your s2Member log files referencing Payflow 'CORRELATIONID' => 'c98ddc341ac91', and it was indeed paid via Express Checkout with a successful result.

I tried to find a difference between this success and others which failed, as recorded by your s2Member log files, and it appears this transaction that DID suceeed, was paid for by a PayPal account that was in an `unverified` state on the PayPal side of things. That’s quite common, and is normally NOT a red flag. However, since that is the only difference between a transaction that succeeded via Express Checkout, and the ones which did NOT suceeed, I’m investigating this with PayPal and I’ll let you know what I hear back. So far, they are still working to locate the issue for us.

In the mean time, I would like to monitor your existing installation, so please leave us with the access you granted privately so we can check on your log files. PayPal has recommended that we add one additional variable to your Payflow Express Checkout API calls, which is PAYMENTTYPE=any. I have updated your installation so we can monitor what happens going forward with this new variable. If you would like to run another test transaction of your own, please do; and please reply back so I can see it in your log files.

Thanks for your ongoing patience in this matter.
If I hear something more from PayPal MTS, I will certainly update you.

Posted: Saturday Jan 5th, 2013 at 2:13 am #36224
Staff Member

Related issue at X.com PayPal forums. Posting this as a reference only.

Posted: Saturday Jan 5th, 2013 at 1:48 am #36221
Staff Member

Thank you. I’m communicating via email with you, but I will post an update here also once the issue on your installation has been identified. Please check your email for a private status update. Thanks for your patience.

Posted: Saturday Jan 5th, 2013 at 1:28 am #36220
Staff Member

The only concern I now have is that those user fields are needed on the mailchimp side as well, so we need to be sure the custom fields are updated before any calls to the mailchimp api. I presume things would happen in the right order, but do you know for sure if ws_plugin__s2member_during_configure_user_registration_front_side is called before ws_plugin__s2member_mailchimp_merge_array? In general, is there an easy way to know in what order these filters are applied?

The code sample and registration Hook I provided (ws_plugin__s2member_during_configure_user_registration_front_side) will accomplish that for you, as it DOES come before s2Member’s call to the MailChimp API. For future reference, it’s really a good idea to search the s2Member source code for the Hooks/Filters you’re using, and analyze the code itself. There are simply too many Hooks/Filters available, to try and document each of these and provide an execution order. Inspecting the code, even just briefly, should give you a better understanding in most cases. I recommend Advanced Find/Replace. Or if you have an editor like Dreamweaver, or something that provides a directory/file search, that would work for you.

PS – off topic: I can’t find the tag to put those filter names in ‘code hilite inline’ format as you did – the code tags always create a block for me – is there a trick? Tx!

We work with a slightly different set of tools than our customer’s do here. However, you can accomplish something similar using <tt>my inline code</tt>. You won’t get the syntax hiliting this way, but it’s better than nothing :-) In the future I’ll see if we can improve upon this for everyone. You can get syntax hiliting in code blocks, but our customers can’t do syntax hiliting inline yet.

~ Test with inline code sample using a tt tag. Customers can do this.

Posted: Saturday Jan 5th, 2013 at 1:14 am #36219
Staff Member

Thanks for the follow-up.

I suppose you could try contacting WordPress, but the thing is, I haven’t been able to reproduce this. If you can, and on you’re on a clean installation, then I’d report it to WordPress. Otherwise, I would suggest that we continue here.

On this installation, what themes/plugins are active during these tests? Anything else at play here? Anything at all?

Posted: Saturday Jan 5th, 2013 at 12:49 am #36217
Staff Member

Thanks for the heads up on this thread.

I was unable to reproduce this. Can one of you please take a look at the screenshot below, or provide me with a list of specific instructions about how to reproduce this? Which browser and version also please.

Posted: Saturday Jan 5th, 2013 at 12:35 am #36214
Staff Member

Thanks for the heads up on this thread.

I’ll accept this as a feature request. However, what you’re asking for defies the logic of existing versions of MySQL, the underlying database that powers WordPress. I’ll see what we can do though. Thanks!

Viewing 25 replies - 1,076 through 1,100 (of 1,909 total)

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

Contacting s2Member: Please use our Support Center for bug reports, pre-sale questions & technical assistance.