WP Manifestindependent plugin directory
manifest / ecommerce / pmpro-ccbill

Paid Memberships Pro - CCBill Gateway WP Registry grade D-. Critical findings · 1 findingWP RegistryCritical findings · 1 findingOpen the reportD-

CCBill Gateway for Paid Memberships Pro

★ 8stars
1.1latest · 1mo ago

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/strangerstudios/pmpro-ccbill/archive/refs/heads/dev.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Paid Memberships Pro - CCBill Gateway Integration

Welcome to the Paid Memberships Pro - CCBill Gateway Integration GitHub Repository

Adds CCBill as a payment gateway to your list of accepted payment gateways. CCBill makes use of an off-site payment method process. This Add On is currently in Beta.

For more information please visit paidmembershipspro.com/add-ons/ccbill/

Installation

For detailed installation steps, visit the documentation page.

  1. Download the current development ZIP file directly: https://github.com/strangerstudios/pmpro-ccbill/archive/dev.zip

Please ensure that once installing this version of the plugin to remove -dev from the plugin's folder name.

Bugs

If you find an issue/bug, let us know by creating a detailed GitHub issue.

Support

This is a developer's portal for Paid Memberships Pro - CCBill Gateway Integration. We do not offer support on this channel. Any support related questions should be directed to paidmembershipspro.com/support/.

Contributing to Paid Memberships Pro - CCBill Gateway Integration

We encourage and welcome any contribution to Paid Memberships Pro - CCBill Gateway Integration. Please read the guidelines for contributing to this repository.

There are various ways to the help development of Paid Memberships Pro - CCBill Gateway Integration:

  1. Report bugs/issues on GitHub.
  2. Work on any issues by submitting a Pull Request.

Here are some ways for non-developers to contribute to Paid Memberships Pro - CCBill Gateway Integration:

  1. Translate Paid Memberships Pro - CCBill Gateway Integration into your own language.
  2. Purchase a paid membership to help fund ongoing development and bug fixes.
  3. Leave an honest review for Paid Memberships Pro - CCBill Gateway Integration.

Releases

12 releases.

Tag
Published
1.1 latest
Sep 11, 2026 1mo ago
Jul 10, 2025 1 year ago
May 7, 2025 1 year ago
1.0
Apr 14, 2025 1 year ago
Aug 14, 2024 2 years ago
0.5
Jul 15, 2024 2 years ago
Oct 5, 2023 3 years ago
Aug 15, 2023 3 years ago
Jul 27, 2023 3 years ago
0.3
May 5, 2023 3 years ago
0.2
Apr 9, 2023 3 years ago
0.1
Oct 21, 2022 4 years ago

These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.

D- grade

Security

Paid Memberships Pro - CCBill Gateway 1.1 · audited by WP Registry

Critical findings.

1 critical
Audited release
1.1
Findings
1
Worst severity
critical
Content hash
b2efd755640700bde5f3f709…

Findings

  • critical Unauthenticated webhook spoof grants paid membership; clientAccnum is not a secret

    auth_bypass

    admin-ajax.php?action=ccbill-webhook is registered for both wp_ajax_ and wp_ajax_nopriv_ with no capability, nonce, signature, or source-IP check. The only gate (webhook.php:22-33) is that request clientAccnum equals option pmpro_ccbill_account_number. That value is a public 6-digit CCBill merchant ID: sendToCCBill() puts it on the FlexForms redirect as clientAccnum together with pmpro_orderid (the pending MemberOrder id). Any visitor who starts CCBill checkout can read both from the Location URL, skip payment, and POST eventType=NewSaleSuccess&clientAccnum=…&X-pmpro_orderid=…. NewSaleSuccess loads that order, saveOrder(), and pmpro_ccbill_ChangeMembershipLevel() → pmpro_complete_async_checkout(), granting the level stored on the order. Cancellation/Expiration cancel a subscription by id; RenewalSuccess/Failure insert orders and send invoice or billing-failure emails. CCBill documents the intended authenticators this plugin ignores: webhook source IPs (64.38.212/215/240/241.0/24) and, because this integration uses Dynamic Pricing, dynamicPricingValidationDigest = md5(subscriptionId + '1' + salt). The salt is already stored as pmpro_ccbill_salt and used only for outbound formDigest. v0.4's CVE-2023-40608 fix added the account-number compare; v1.1 still documents in-tree that a postback can be spoofed with a guessed order ID and only stopped trusting X-pmpro_levelid for the granted level.

    webhook.php:22-72

    Recommendation

    Do not treat clientAccnum as a webhook secret. Before NewSaleSuccess calls saveOrder()/pmpro_complete_async_checkout, require a matching dynamicPricingValidationDigest (md5(subscriptionId + '1' + pmpro_ccbill_salt) for approvals; denied uses '0') and/or confirm the subscription/transaction via the Datalink API the plugin already calls for cancel/sync. Reject requests whose REMOTE_ADDR (or validated forwarding header from a known proxy) is outside CCBill's published webhook ranges. Put an unguessable token in the configured webhook URL and verify it. Refuse to complete orders that are not in token/pending status for gateway ccbill. Apply equivalent checks on Cancellation/Expiration/Renewal handlers.

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.