Giter Site home page Giter Site logo

strangerstudios / paid-memberships-pro Goto Github PK

View Code? Open in Web Editor NEW
449.0 29.0 348.0 63.36 MB

WordPress membership plugin to restrict access to content and charge recurring subscriptions using Stripe, PayPal, and more. Fully open source. 100% GPL.

Home Page: https://www.paidmembershipspro.com

License: Other

PHP 92.04% CSS 2.16% HTML 2.99% JavaScript 2.67% Shell 0.11% Hack 0.01% SCSS 0.01%
paid-memberships-pro ecommerce ecommerce-platform php wordpress wordpress-plugin strangerstudios-product

paid-memberships-pro's Introduction

WordPress Plugin Downloads License

Welcome to the Paid Memberships Pro GitHub Repository

Paid Memberships Pro gives you all the tools you need to start, manage, and grow your membership site. The plugin is designed for premium content sites, clubs/associations, subscription products, newsletters, and more.

Users can select a membership level, complete checkout, and immediately become members of your site. You decide what content your member can access. Members can log in, view payments, update billing info, or cancel their account directly on your site. View Screenshots »

For more information please visit the Paid Memberships Pro website

Paid Memberships Pro is Open Source Software

Paid Memberships Pro is distributed under the GPLv2 license. This means, among other things, that you may use the software on any site free of charge.

An annual support license is recommended for websites running Paid Memberships Pro. Support licenses include access to our technical support team in the Member Support Area, as well as one-click installation and updates for feature-enhancing Add Ons based on your level. All of our paid memberships are backed by a 30-day, no questions asked, refund guarantee.

View Plans and Pricing »

Installation

For detailed installation steps, visit the documentation on installing the plugin and the initial plugin setup instructions.

  1. Download the current development ZIP file directly: https://github.com/strangerstudios/paid-memberships-pro/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. We do not offer support on this channel. Any support related questions should be directed to paidmembershipspro.com.

Contributing to Paid Memberships Pro

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

There are various ways to help the development of Paid Memberships Pro:

  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:

  1. Translate Paid Memberships Pro 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.

paid-memberships-pro's People

Contributors

andrewlimaza avatar briansantos10 avatar dependabot[bot] avatar dparker1005 avatar eighty20results avatar femiyb avatar github-actions[bot] avatar greathmaster avatar ideadude avatar ipokkel avatar jarrydlong avatar kimcoleman avatar kimwhite avatar lmntl avatar mauteri avatar maximilianoricotabo avatar messica avatar mircobabini avatar nicolaboscolo avatar pbrocks avatar rafecolton avatar sc0ttkclark avatar scottsousa avatar shr3k avatar sjolshagen avatar square-lines avatar travislima avatar tubiz avatar yannkozon avatar zillionsk8 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

paid-memberships-pro's Issues

Error: "Please complete all required fields."

Having a bit of a problem. It was also reported 5 days ago by another user on the WP support forums. [1]

a. I'm using Stripe in test mode.
b. I've enabled stripe lite. [pmpro_stripe_lite = apply_filters("pmpro_stripe_lite", true);]
c. I've filled out the form with correct and valid information (triple checked)
d. The form returns "Please complete all required fields."
d. If I disable Stripe lite and fill out the entire billing section appropriately (which also includes selecting a credit card type), then it works just fine.
e. Using Safari 6.0.02

[1] http://wordpress.org/support/topic/please-complete-all-required-fields

[2] Screenshot

Screen Shot 2013-01-09 at 11 19 19 PM

When I submit the form, the CVV is completed. I've tested this numerous times.

CPT access filter

content.php#L108-109

Should not the filter names be the same?
Or should the has_filter() be function_exists()?

preheader/checkout.php null object

If the user is logged in, and selecting a free membership I get an error at the line below. I believe this is because the user is already logged in, so it never hits the signon line where $user is defined. If this is changed to $current_user, the script begins working. This makes sense because if the user wasn't logged in, they'll hit the sign on script, and current user will always be defined.

https://github.com/strangerstudios/paid-memberships-pro/blob/master/preheaders/checkout.php#L806

Feature: Reporting

To track:

  • cancellations
  • cancellation rate
  • daily new members, monthly
  • total members

Post comments with other suggestions.

Custom-length Trial

Is it possible to make the 'custom length trial' configured to a specific date, instead of a specific cycle. ie. free trials last until christmas day, no matter when the trial began.

thanks,

IPN errors

Ever since 1.7.1 came out, we've been getting sporadic IPN errors on our website:

Please check your server that handles PayPal Instant Payment Notifications (IPN). IPNs sent to the following URL(s) are failing:

http://www.coachmenyc.com/wp/wp-admin/admin-ajax.php?action=ipnhandler

If you do not recognize this URL, you may be using a service provider that is using IPN on your behalf. Please contact your service provider with the above information. If this problem continues, IPNs may be disabled for your account.

I don't see any problem with the URL (it loads and all) but for some reason these errors keep coming in.

How can I diagnose this problem?

Fatal error: Call to undefined function krumo() during checkout

I'm not using krumo on my website, and it appears you have it in your plugin in two places, once in paid-memberships-pro\classes\gateways\class.pmprogateway.php:129 and once in paid-memberships-pro\preheaders\billing.php:230.

My temporary fix was to install krumo to paid-memberships-pro\classes\krumo and added the line require_once(ABSPATH . "wp-content/plugins/paid-memberships-pro/classes/krumo/class.krumo.php"); to paid-memberships-pro.php after the other class includes.

You might need to include krumo with your plugin if you need these calls in your production code.

Initial payment, with recurring payments default to 1 period

This seems like a bug to me.

When choosing a recurring payment profile of any number of days, months, weeks, years. The initial payment automatically defaults to just 1 of those.

E.g.

Initial payment of £10

Recurring payment of £10 every 4 months.

The recurring payments will start after 1 month instead of 4 months. Likewise if this was days, weeks or years.

Should the initial period not match the recurring period?

I am not talking about mixing days, months, weeks or years across trial periods and recurring payments. Just that if you set the period to be every 4 weeks, you would expect to pay every 4 weeks and not once at the beginning and then again after a week?

Something strange happened

I do not know if I am supposed to do this:

  1. I deleted PMPro 1.7.3 through the Admin plugin menu
  2. I uploaded the PMPro-dev, which I downloaded from here
  3. I activated the development version

But this is what happened!!!:

  1. all the previous setup disappeared, all PMPro tables are blank with no data in them.
  2. my PMPro pages that had the short codes on them also got deleted

Is this supposed to happen?

Stripe form data

Credit card fields are not being submitted with form.

I'm using Stripe (in test mode). There are conditional statements that prevent the name attribute -- eliminating these at least enables the form data to be submitted with the request.

I imagine this was intentional, and obviously I don't want to modify code unnecessarily.

Any help would be appreciated.

Thanks!

Email Updates

[ ] Send email to the admin when a user cancels.

[ ] Include the membership level in the new user email.

Open new tab when following PMPro links from admin screens

Your two links (plugin support) and (user forum) on top of the admin page, please add target="_blank" so that these open in a new tab and do not direct me away from the admin pages, where I am actually working and want to return to very easily.

How to echo the user level within a post?

So for example within single.php I want to echo the level ID or name of an author. How would you go about that? This works: membership_level->ID ?>, but only shows up if that user is logged in. Ideas? Thanks!

Plans to support PayFlow Pro

Feature Request: Since PayPal is pushing new subscribers to PayFlow Pro accounts, is there any plan to support this API? I've had to go through the process a couple times asking the client to request the Website Payment Pro account, and it's been pulling teeth to get PayPal to do it. Not to mention they have to actually cancel the account they went through the verification process for and do it again.

pmpro_paypal_express_return_url_parameters adds additional parameters to the notify_url instead of paypal return argument

When additional parameters are added using the pmpro_paypal_express_return_url_parameters filter, for instance using the PMPro Addon Package they are appended incorrectly to $nvpStr when they should be added to $paypal_args['return'] in the Paypal Standard Gateway (LN 182).

This breaks the functionality of the pmpro_after_checkout hook as the 'ap' variable is not passed back to the confirmation page.

Related to this, the use of PMPro Addon Package with the Paypal Express Gateway does not receive the 'ap' variable. LN385 in pmpro-addon-packages.php could be changed to $url .= "&ap=" . $pmproap_ap; to fix this.

Minor: Space needed on pmpro_getLevelCost() function output (tax)

As pointed out by forum member TygrScott here: http://www.paidmembershipspro.com/forums/topic/extremely-minor-bug-report/.

There should be a space in the beginning of the tax output on the pmpro_getLevelCost() function (line 264): file.https://github.com/strangerstudios/paid-memberships-pro/blob/master/includes/functions.php#L264.


Expected output: "The price for membership is $##.## now. Customers in ## will be charged #.#% tax."

Actual output: "The price for membership is $##.## now.Customers in ## will be charged #.#% tax."

Notice there is no space between the first sentence and second sentence in the actual output.

Serialize PMPro Options

Right now each pmpro option set via pmpro_setOption() is stored as its own entry in the wp_options table. Best practice these days is to create one pmpro_options entry and include all options for our plugin in one serialized array.

A script would have to be developed to transition the old options to the new format. The default options would have to be set differently. And the pmpro_getOption and pmpro_setOption functions would have to be updated.

PMPro/Authorize.net Subscription ID Disconnect Report

Customers using PMPro with Authorize.net from version 1.2(ish) through 1.3.8 may have members who signed up with accounts that are not properly connected with the subscription at Authorize.net.

There was a bug during those versions that used the pre-authorization transaction id instead of the subscription transaction id when saving the order in PMPro. This means that when those users cancel their account from PMPro, Authorize.net will not be updated to actually cancel the payment subscription.

I am developing a script that will loop through your members and check for broken subscription ids. This will give you a list of members you should manually check in Authorize.net to see if their subscription is available if it should be... or cancelled if it should be. You'll also be able to update the subscription ID in PMPro so the accounts are linked again.

This is a big problem because you may have customers who think they have cancelled but are still being billed. We will help you resolve these conflicts as best we can. This script will help with that.

Admin Bar Links

Admin Bar links are incorrect for sites installed in a subdirectory.

Please complete all required fields.

I have modified some code to allow a free member to not be registered so I have used skip_account_fields = true for the free member but it always says "Please complete all required fields." is this due to the changes that I made. It is urgent please help.

Feature: Affiliate Tracking

Plans for initial release:

  • Add "Affiliate" page to admin under PMPro.
  • Add "affiliates" with an id, code, # of days to track cookie, commission $ or %, affiliate user.
  • One time or lifetime affiliate fees. (All orders for a user or just the first.)
  • Add reports by affiliate showing all orders tied to an affiliate.
  • Tracking code added to confirmation page to update affiliate orders.
  • The "affiliate user" will be able to view report data when logged in.

Improve PayPal Express Authorization Screen

The price does not show up on the authorization screen. Can we do that somehow? I suspect that using a recurring sub type may be muddying things up. Should we just include the price in the description sent over?

Errors like: undefined indexes and Trying to get property

I was just testing PMP on localhost and see a lot of errors coming up.
Including early output header error on install.

If I have some time to work on what I find, do you want patches split per area, EG admin, install, site pages, profile, etc....
or some other format.

Add "Series" for drip feed functionality

New menu item: "Series".

A series is a series of pages/posts/etc.

Assign membership access.

Assign when each post in the series becomes available (how many days after signup... or on specific dates)

Email updates.

duplicate wp_capabilities and wp_user_level

I can't figure out why, but every user has duplicate wp_capabilities and wp_user_level entries in the wp_usermeta table. Been an issue since last pmpro update.

I'm also assuming this is why my subscriber count is double under the admin.

Anyone have an idea why or how to remedy this?

The only plugin I'm using that I think could affect this is the PMpro plugin.

Cannot modify header information - headers already sent errors on login page

Around line 1200 of paid-memberships-pro.php, 'pmpro_besecure' is being attached to the 'login_head' action, which is then conditionally calling 'wp_redirect'. However, it appears that you can't redirect from login_head, as it is called after wp_login.php outputs text, resulting in 'Cannot modify header information - headers already sent' errors. I'm not sure if you just want to remove the add_action(login_head', 'pmpro_besecure', 2); line, or add some sort of more complicated logic to deal with this.

Main Plugin File

There are some issue with the way things are loaded and handled in the main plugin file.
The issues create a performance hit that should not even be there.
All of the includes from
https://github.com/strangerstudios/paid-memberships-pro/blob/dev/paid-memberships-pro.php#L30
To
https://github.com/strangerstudios/paid-memberships-pro/blob/dev/paid-memberships-pro.php#L58

Should be separated for when it is actually needed.
There is no reason to include files on the front of the site that are only used in the admin panel. A simple is_admin() fixes this quickly.

Same with the update check
https://github.com/strangerstudios/paid-memberships-pro/blob/dev/paid-memberships-pro.php#L64
Why is this running all the time, and every single page load? Queries that don't need to be there.

Options (db) were mentioned in another ticket. So I will leave that there.

Bad path to wp-load.php

Warning: require_once(/home/content/67/10323067/html/content/plugins/paid-memberships-pro/services/../../../../wp-load.php) [function.require-once]: failed to open stream: No such file or directory in /home/content/67/10323067/html/content/plugins/paid-memberships-pro/services/applydiscountcode.php on line 9

Fatal error: require_once() [function.require]: Failed opening required '/home/content/67/10323067/html/content/plugins/paid-memberships-pro/services/../../../../wp-load.php' (include_path='.:/usr/local/php5_3/lib/php') in /home/content/67/10323067/html/content/plugins/paid-memberships-pro/services/applydiscountcode.php on line 9

We keep wp-load.php at site.com/wp/wp-load.php, not site.com/wp-load.php, as part of our wpframe setup, so the relative path you use here doesn't work properly.

Expiration date not stored properly for Stripe Orders

Seems that in paid-memberships-pro / classes / class.memberorder.php there's a substring issue on new orders causing an expiration date like 09/2014 to be stored as expiration month 92 and expiration year as 014. I'm guessing stripe checkout is not passing the leading zero. This does not happen with non-stripe checkouts.

I think this applies to all recent versions but I can't say for sure.

Cancel Gateway Subscriptions without having to put orders in "cancelled" status.

Right now, when you cancel a membership, PMPro sets the last order's status to "cancelled" and checks that status to see if a level has been cancelled.

Now that we are showing orders in the admin and using their statuses for other reporting (i.e. to check if an ORDER has really been cancelled), let's have PMPro check the membership_levels_users table RE cancellations instead of the orders table.

typo line 552 includes/function

Hi Jason,
extra bracket in includes/functions was throwing an error:

line 552: '" . $level['trial_amount]'] . "',

should be: '" . $level['trial_amount'] . "',

Add user_login to email data

Currently you display the user's display_name in the default email templates, however on our site the display name is not the same as your username that you use to log in. The fact that our emails are sending out their display name and not the username is confusing some of our users, so I've had to manually add some code to the pmproemail class in order to provide the user_login information.

Could you add "user_login" => $user->user_login to the email data so I don't have to add this manually every time I update the plugin? Or maybe add a filter to the email data so it can be added externally?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.