WP Manifestindependent plugin directory
manifest / ecommerce / wp-pronamic-pay-restrict-content-pro

Pronamic Pay Restrict Content (Pro) Add-On WP Registry grade D+. High-severity findings · 2 findingsWP RegistryHigh-severity findings · 2 findingsOpen the reportD+

Restrict Content Pro driver for the WordPress payment processing library. http://www.wp-pay.org/extensions/restrict-content-pro/

★ 4stars
15release downloads
32kcomposer installs
v4.11.0latest · 2mo ago

Install

Download pronamic-pay-restrict-content.4.7.1.zip From the v4.7.1 release on GitHub, Sep 17, 2025

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/pronamic/wp-pronamic-pay-restrict-content-pro/releases/download/v4.7.1/pronamic-pay-restrict-content.4.7.1.zip

On Packagist as wp-pay-extensions/restrict-content-pro:

composer require wp-pay-extensions/restrict-content-pro
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

WordPress Pay Extension: Restrict Content Pro

Restrict Content Pro driver for the WordPress payment processing library.

Restrict Content Pro

https://gitlab.com/pronamic-plugins/restrict-content-pro

To download the latest version of Restrict Content Pro the plugin updater API can be used. You have to replace LICENSE and URL in the following command. If you need a beta release you can set beta to 1.

curl --request POST https://restrictcontentpro.com/ \
    --data "edd_action=get_version&license=LICENSE&item_name=restrict-content-pro&item_id=479&version=1.0.0&slug=restrict-content-pro&author=Restrict Content Pro Team&url=URL&beta=0" \
    | jq '.package'

Edit Membership

In Restrict Content Pro version 3 or higher it is possible to edit memberships. Changes to a Restrict Content Pro membership can also influence the connected Pronamic Pay subscription:

Restrict Content Pro edit membership

Edit "Membership Level"

When you change the "Membership Level" of a Restrict Content Pro membership the connected Pronamic Pay subscription will be cancelled. If you click the Restrict Content Pro "Change Level" button you will see a confirmation modal dialog with the following text:

Are you sure you want to change the membership level? The subscription will be cancelled at the payment gateway and this customer will not be automatically billed again.

If you confirm by selecting OK Restrict Content Pro will create a new membership. The other Restrict Content Pro membership will be marked as disabled. The new Restrict Content Pro membership will not be connected to a Pronamic Pay subscription.

Edit "Membership Status"

When you change the "Membership Status" of a Restrict Content Pro membership the connected Pronamic Pay subscription will be updated accordingly.

Restrict Content Pro status Pronamic Pay subscription status
Active Active
Expired Expired
Cancelled Cancelled
Pending Pending

Edit "Date Created"

Editing the Restrict Content Pro membership "Date Created" value will not affect the connected Pronamic Pay subscription. The Pronamic Pay subscription date will not be updated.

Edit "Expiration Date"

Editing the Restrict Content Pro membership "Expiration Date" value will not affect the connected Pronamic Pay subscription. The Pronamic Pay subscription expiration date will not be updated. We are not updating this due to the following Restrict Content Pro notice:

Changing the expiration date will not affect when renewal payments are processed.

Restrict Content Pro edit expiration date notice

Edit "Auto Renew"

Editing the Restrict Content Pro membership "Auto Renew" value will not affect the connected Pronamic Pay subscription. The Pronamic Pay subscription will not be cancelled. We are not doing this due to the following Restrict Content Pro notice:

Changing the recurring indicator will not set up or remove a subscription with the gateway. This checkbox is for updating RCP records only.

Restrict Content Pro edit auto renew notice

Gateway supports

Foreach Restrict Content Pro gateway it is possible to define which features are supported. In Restrict Content Pro version 3 the following supports values are available:

Support Description
one-time one time payments
recurring recurring payments
fees fees
trial free trials

Source: https://docs.restrictcontentpro.com/article/1695-payment-gateway-api

In the Pronamic Pay extension we try to set the supports values as correct as possible for the different gateways. Restrict Content Pro however will not hide/show gateways based on the supports values.

Restrict Content Pro membership levels with a recurring can be paid with a one-time payment gateway like iDEAL. And unlimited membership levels can be paid with a recurring payment gateway like Direct Debit (mandate via iDEAL).

Once a user pays a recurring membership level with a one-time payment gateway, it will not be automatically renewed. Restrict Content Pro is not very clear about this, so make sure you inform your users about this!

Test

  • Not logged in new membership.
  • Logged in new membership.
  • Logged in upgrade membership.
  • Cancel membership.
  • Discount code.
  • Lifetime membership.
  • Free trial.
  • Fee.
  • Free member.
  • Billing Cycle: €7.00 initially, then €3.00 every day.

WP-CLI

What is WP-CLI?

For those who have never heard before WP-CLI, here's a brief description extracted from the official website.

WP-CLI is a set of command-line tools for managing WordPress installations. You can update plugins, set up multisite installs and much more, without using a web browser.

Commands

$ wp pronamic-pay restrict-content-pro
usage: wp pronamic-pay restrict-content-pro upgrade-216 <command>

See 'wp help pronamic-pay restrict-content-pro <command>' for more information on a specific command.

Command pronamic-pay restrict-content-pro upgrade-216 execute

Execute 2.1.6 upgrade.

$ wp pronamic-pay restrict-content-pro upgrade-216 execute

Command pronamic-pay restrict-content-pro upgrade-216 list-payments

List payments for 2.1.6 upgrade.

$ wp pronamic-pay restrict-content-pro upgrade-216 list-payments

Command pronamic-pay restrict-content-pro upgrade-216 list-subscriptions

List subscriptions for 2.1.6 upgrade.

$ wp pronamic-pay restrict-content-pro upgrade-216 list-subscriptions

Command pronamic-pay restrict-content-pro upgrade-216 upgrade-subscriptions

Upgrade subscriptions for 2.1.6.

$ wp pronamic-pay restrict-content-pro upgrade-216 upgrade-subscriptions
$ wp pronamic-pay restrict-content-pro upgrade-216 upgrade-subscriptions --skip-no-match=true --reactivate=true --dry-run=false

Releases

Newest 25 of 29 recorded releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
v4.11.0 latest
Jul 31, 2026 2mo ago
tag only
—
May 13, 2026 5mo ago
tag only
—
May 13, 2026 5mo ago
tag only
—
Jan 5, 2026 9mo ago
tag only
—
Nov 17, 2025 11mo ago
tag only
—
Nov 11, 2025 11mo ago
tag only
—
Sep 17, 2025 1 year ago
pronamic-pay-restrict-content.4.7.1.zip
3
Aug 22, 2025 1 year ago
tag only
—
Jun 19, 2025 1 year ago
tag only
—
Sep 27, 2024 2 years ago
tag only
—
Aug 1, 2024 2 years ago
pronamic-pay-restrict-content.4.6.1.zip
2
Jul 24, 2024 2 years ago
pronamic-pay-restrict-content.4.6.0.zip
1
May 15, 2024 2 years ago
tag only
—
Mar 14, 2024 2 years ago
tag only
—
Mar 14, 2024 2 years ago
pronamic-pay-restrict-content-pro.4.4.4.zip
9
Feb 7, 2024 2 years ago
tag only
—
Sep 29, 2023 3 years ago
tag only
—
Sep 11, 2023 3 years ago
tag only
—
Jul 18, 2023 3 years ago
tag only
—
Jul 12, 2023 3 years ago
tag only
—
Jun 1, 2023 3 years ago
tag only
—
Mar 27, 2023 3 years ago
tag only
—
Feb 7, 2023 3 years ago
tag only
—
Jan 31, 2023 3 years ago
tag only
—
Dec 23, 2022 3 years ago
tag only
—
All releases on GitHub →
D+ grade

Security

Pronamic Pay Restrict Content (Pro) Add-On 4.7.1 · audited by WP Registry

High-severity findings.

1 high 1 medium
Audited release
4.7.1
Findings
2
Worst severity
high
Content hash
b8288c95b720648100bac5b9…

Findings

  • high Membership renewed to active on payment create, not payment success

    auth_bypass

    Extension::new_payment() is hooked to pronamic_pay_new_payment, which PaymentsDataStoreCPT::create fires as soon as a Pronamic payment post is inserted — before the customer pays. When the new payment's source is rcp_membership (copied from the subscription by Subscription::new_payment()), the handler inserts an RCP payment and immediately calls $rcp_membership->renew(true, 'active', $expiration) using the unpaid period's end date. That path is reachable without being an admin: SubscriptionsModule::maybe_handle_subscription_action serves GET ?subscription={id}&action=renew&key={key} to anyone who knows the key, then POST with the nonce printed on that page runs handle_subscription_renew → Plugin::start_payment() → create → new_payment(). The same key is already exposed to the logged-in member as the 'Update payment method' link (rcp_subscription_details_actions → get_mandate_selection_url()). handle_subscription_renew does not set mollie_sequence_type=recurring, and payment_status_update only fires rcp_recurring_payment_failed for that meta, so abandoning or failing the gateway payment does not revert the newly active membership. Initial RCP signup uses source rcp_payment and is not affected; this is a renewal/follow-up payment bypass that grants paid content without a successful charge.

    src/Extension.php:925-994

    Recommendation

    Activate or extend the RCP membership only from pronamic_payment_status_update when the Pronamic payment status is SUCCESS (the existing payment_status_update SUCCESS branch already calls renew). On create, insert the RCP payment as pending. For user-initiated renewals, treat abandoned/failed/cancelled payments the same as first payments and expire or revert the membership if it was speculatively renewed. Do not copy source rcp_membership onto a payment that has not yet been collected.

  • medium Payment and subscription secrets generated with uniqid() without entropy

    predictable_token

    Pronamic payment keys and subscription keys are assigned with uniqid('pay_') / uniqid('subscr_') (no more_entropy). Those strings are the only secret on unauthenticated front-end handlers: Plugin::handle_returns (?payment=&key=), Plugin::maybe_redirect (?payment_redirect=&key=), and SubscriptionsModule::maybe_handle_subscription_action (?subscription=&action=cancel|renew|mandate&key=). uniqid() without extra entropy is a microtime timestamp (8 hex seconds + 5 hex microseconds). Combined with sequential CPT IDs and keys appearing in GET URLs (account-page mandate links, emails, referrer logs), an attacker who can bound the creation second can brute-force the key and then submit the nonce form rendered on that page to cancel or renew another member's subscription. Payment return with a guessed key cannot fake Mollie success (status is re-fetched from the API) but does trigger a status refresh and redirect.

    packages/wp-pay/core/src/Plugin.php:1286-1290

    Recommendation

    Replace uniqid() with a cryptographically random secret (for example wp_generate_password(32, false) or bin2hex(random_bytes(16))) for both payment keys (Plugin::complement_payment) and subscription keys (SubscriptionHelper::complement_subscription). Consider using POST-only actions and login checks for cancel/renew in addition to the secret.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.