Version 1.6 of Paid Memberships Pro is available. Update now.
This was a big one.

We introduce Braintree Payments, which is a great payment provider. Like Stripe, they use javascript to get around most of the PCI compliance burden. However, at this time they support many more international currencies. You should consider our Braintree Payments integration in beta. If you plan to use a site with PMPro and Braintree, get in touch with us and let me know if you notice anything funny, etc. Also, the webhook integration for Braintree is not yet complete, but should be out later this week once we get something worked out. Expect that in version 1.6.1 later this week.
Also, we introduce an Orders page to the admin dashboard. This will let you view and edit orders. Note that changes to orders are not updated at the gateway. Still many people want to be able to tweak orders in their system. Let me know if you have any ideas about these pages.
There were a lot more updates and tons and tons of bug fixes in this one. Everyone should upgrade.
Full list of changes:
* Added Braintree payments as a gateway option. This should be considered in “beta”. Please get in touch if you are using Braintree payments with PMPro. Everything should function except that we’re still working out an issue with the webhook handler.
* Added a new dashboard page Orders to view all orders processed by PMPro with an option to export to CSV.
* Fixed bug where “Your membership level has changed” emails were being sent out the first time a user’s profile was edited, even if the level wasn’t changing.
* Removed the revenue estimate from the members list page. This causes performance issues on sites with many members. A new reports dashboard page is coming soon.
* Not showing payment settings warning now when Payflow is setup with all values filled in.
* Updated preheaders/billing.php to get the most recent successful order from the DB to use when updating. (ORDER BY id DESC in the query)
* Added pmpro_stripe_subscription_deleted hook in stripe-webhook.php for when subscriptions are cancelled on the Stripe side. Use this code to cancel on your site as well: https://gist.github.com/strangerstudios/5093710
* Now using $pmpro_currency_symbol when membership price is shown on the edit profile page in the dashboard/etc.
* Added pmpro_authorizenet_post_url filter to use Authorize.net gateway class with a different post url, e.g. if you have a gateway that offers an Authorize.net compatibility mode.
* Added pmpro_check_status_after_checkout filter so you can e.g. set the status to “pending” instead of “success” when a user checks out with the check gateway. They will still have access to the membership level, but you can update the status via the orders dashboard later.
* Added pmpro_confirmation_order_status filter so you change which status the confirmation page looks for. Can return an array as well since the getLastMemberOrder method call on MemberOrder has been updated to support $status as an array.
* Orders made via the check gateway now have PaymentType = “Check” and CardType = “”.
* Added a notes column to orders.
* Fixed bug where discount codes were not showing up in checkout emails if the level was free.
* Added some wpdb->escape() wrappers to the saveOrder method of MemberOrder which will fix some bugs with orders with fields with apostrophe’s in them, etc.
* Added checks for custom capabilities to the PMPro admin pages in case you want to give non-admins access. Caps are: pmpro_discountcodes, pmpro_emailsettings, pmpro_membershiplevels, pmpro_memberslist, pmpro_memberslist_csv, pmpro_orders, pmpro_orders_csv, pmpro_pagesettings, pmpro_paymentsettings
* Added pmpro_memberslist_extra_cols_header and pmpro_memberslist_extra_cols_body hooks to add extra columns to the members list page.
* Fixed pmpro_paypal_express_return_url_parameters filter to properly encode & and = so the params are properly added to the ReturnURL instead of being seen as extra params to the full PayPal Express URL. The PMPro Addon Packages plugin has been updated to take advantage of this to make that plugin more compatible with PayPal Express.
* Fixed bugs with Strip webook: now listening for charge.succeeded and charge.failed, other fixes.