• Resolved Antoine ecodev

    (@ecodev)


    Hello,

    First, thanks to your plugin, I love it.

    I have Ultimate Member on my website, but also Ultimate Member – Friends, Ultimate Member – GTranslate, and Ultimate Member – Stripe.

    We have encountered a critical issue with Ultimate Member / Ultimate Member Stripe that is currently preventing users from completing registration and reaching the Stripe checkout page.

    The problem appears to be related to the um_options option in the WordPress database.

    We discovered that um_options contained a serialized string with the following value:

    “blocked_words”;s:47:”admin
    administrator
    webmaster
    support
    staff”;

    However, the actual string length is 43 bytes, not 47.

    Because of this incorrect serialized string length, PHP unserialize() fails, and Ultimate Member cannot correctly load the complete options array.

    We confirmed this locally:

    • Before repair, um_options could not be unserialized.
    • The stored option contained 444 keys in a working backup.
    • After changing only the serialized length from s:47 to s:43, the option successfully unserialized.
    • After unserializing and reserializing the complete array using PHP serialize(), the Ultimate Member options became available again.
    • The Stripe Live API keys and Ultimate Member extension licenses became visible again.
    • Most importantly, registration worked again and users were redirected to the Stripe checkout page.

    The problem also affected our current installation, where um_options was apparently replaced/reset and now contains only 14 options instead of the previous complete configuration.

    On production, we currently receive the following fatal error:

    PHP Warning: Attempt to read property “tokens” on null in um-stripe/includes/common/class-stripe.php on line 540

    PHP Fatal error: Call to a member function create() on null in um-stripe/includes/common/class-stripe.php on line 540

    The error occurs through:

    Request_Handler->webhook_response()
    Stripe->check_api_key()

    We would like to understand:

    1. Can Ultimate Member or one of its extensions rewrite or partially replace the um_options database option when plugins are activated/deactivated?
    2. Is there a known issue where the blocked_words multiline setting can generate an incorrect serialized string length?
    3. Could a plugin update, migration, activation/deactivation, or settings save operation cause um_options to be overwritten with only a subset of options?
    4. Could the tokens null error in Ultimate Member Stripe be a consequence of um_options not being loaded correctly?

    This is currently a critical production issue because users cannot create accounts, and registration/Stripe checkout is an essential part of our business.

    We have backups of the original um_options values and can provide them if needed.

    Thank you for your help.

    The page I need help with: [log in to see the link]

Viewing 3 replies - 1 through 3 (of 3 total)
  • Thread Starter Antoine ecodev

    (@ecodev)

    Additional finding from further testing

    After performing additional tests, we have identified a potentially reproducible trigger that may be related to the Ultimate Member form configuration.

    It appears that adding, modifying, or deleting a field in an Ultimate Member registration form triggers a save/update of the form metadata.

    After this operation, the integration with Ultimate Member – Stripe appears to become invalid or incomplete during registration. The Stripe object then becomes null, which subsequently leads to a fatal error in the Stripe registration process (currently observed around line 463 of class-registration.php).

    At this stage, we have not yet identified the exact form field or metadata value responsible, so we do not want to conclude that every field modification necessarily causes the corruption.

    However, we have been able to narrow the problem down considerably:

    The problem can be reproduced locally.
    Restoring the previously working um_options configuration does not resolve the problem if the problematic form configuration is subsequently saved.
    The issue appears after modifying the Ultimate Member form configuration.
    The failure then occurs when Ultimate Member – Stripe attempts to initialize/process the Stripe object.
    This results in the Stripe object being null and ultimately causes the fatal error in the registration process.

    This makes us suspect that saving the Ultimate Member form metadata may be altering or removing data required by the UM-Stripe extension, or that UM-Stripe is not correctly rebuilding/reloading its Stripe configuration after the form metadata is updated.

    We are currently trying to isolate the exact field or metadata change that triggers the issue.

    Plugin Support Yurii

    (@yuriinalivaiko)

    Hello @ecodev

    Your question is related to the paid extension “Stripe”. This forum for free products does not allow discussing commercial products, see the Forum Guidelines. Please direct this question to our paid user support team – use the support form on our website here. Follow instructions in this thread: Paid Customers please read this.

    The um_options option stores the Ultimate Member plugin and its extensions settings. Most settings in the wp-admin > Ultimate Member > Settings area are written to this option. If this option is corrupted, it’s a critical error. You should restore it from a database backup.

    Since the latest update, the plugin stores API keys in a new way. API keys are now stored not in the database, but as constants in the wp-config.php file. This is a necessary change due to new security requirements. Perhaps your problem is related to this. Please ensure that the wp-config.php file is writable and try to re-save API keys in settings.

    Regards

    Thread Starter Antoine ecodev

    (@ecodev)

    Thank you for your reply.
    I apologize for not reporting my issue in the right place.
    After working extensively on the matter, I found the solution and forwarded it to your support team so it could help other users facing the same problem.

    Best regards, Antoine.

Viewing 3 replies - 1 through 3 (of 3 total)

You must be logged in to reply to this topic.