Skip to content
Snippets Groups Projects
release_notes.md 18.9 KiB
Newer Older
  • Learn to ignore specific revisions
  • mattwire's avatar
    mattwire committed
    ## Release 6.4 (not yet released)
    
    New Features:
    * The Stripe "element" now follows the current CMS/CiviCRM locale.
    * Add jquery form event 'crmBillingFormReloadComplete' and document jquery events.
    * Add jquery form event 'crmBillingFormNotValid' so 3rd-party integrations can re-enable custom submit buttons etc.
    * Add support for sweetalert library on form validation errors so we popup nice messages when you are missing required fields and for card errors and you click submit.
    
    * Make sure we don't submit if we have a reCaptcha and it is not valid.
    
    mattwire's avatar
    mattwire committed
    
    Behind the scenes:
    * Further tweaks to get tests working
    * Initial steps to modernize the testing infrastructure.
    * Add some docblocks
    * Switch to event.code from deprecated event.keyCode
    
    
    mattwire's avatar
    mattwire committed
    ## Release 6.3.2 - Security Release
    If you are using Stripe on public forms (without authentication) it is **strongly** recommended that you upgrade and consider installing the new **firewall** extension.
    
    Increasingly spammers are finding CiviCRM sites and spamming the linked Stripe account with 1000s of attempted payments
    and potentially causing your Stripe account to be temporarily blocked.
    
    #### Changes
    * Add support for firewall extension
    * Add system check to recommend installing firewall extension
    * Add checks and restrictions to AJAX endpoint
    * Add cache code to js/css resources so they are reloaded immediately after cache clear.
    
    * [#168](https://lab.civicrm.org/extensions/stripe/issues/168) Improve handling of webhooks with mismatched API versions - now we track the dashboard API version and don't try to explicitly set a webhook API version.
    You may still need to delete and re-add your webhook but should not need to next time the API version changes.
    
    #### Features
    * [#126](https://lab.civicrm.org/extensions/stripe/issues/126) Stripe element now uses the CMS/CiviCRM locale so it will appear in the same language as the page instead of the browser language.
    
    mattwire's avatar
    mattwire committed
    ## Release 6.3.1
    
    * Add crm-error class to stripe card errors block so it is highlighted on non bootstrap themes
    * Fix Stripe.ipn API when working with charge.captured/succeeded
    * Update documentation to mention contributiontransactlegacy extension
    * [#147](https://lab.civicrm.org/extensions/stripe/issues/147) Add workaround and set required billing fields via jquery
    * [#153](https://lab.civicrm.org/extensions/stripe/issues/153) Support multiple participant registration and CiviDiscount with zero amount.
    * Fix non-stripe submit check - if amount is zero.
    
    
    mattwire's avatar
    mattwire committed
    ## Release 6.3
    
    **This release REQUIRES that you upgrade mjwshared to 0.6 and your Stripe API version to 2019-12-03.**
    
    mattwire's avatar
    mattwire committed
    *If you wish to test the upgrade you can remain on an older version or later but should update the API version as soon as you are happy.*
    
    * **Update required Stripe API version to 2019-12-03**
    
    mattwire's avatar
    mattwire committed
    * Add support for recording partial refunds from Stripe.
    * For forms that have multiple submit buttons (eg. Save, Save and New) override the submit handler on all of them *(This fixes some more instances of missing PaymentIntentID on the backend forms).*
    
    * Resolve issues with backend forms and tax amounts *(fixes issues with backend forms that include an additional tax amount)*.
    
    mattwire's avatar
    mattwire committed
    * Resolve issues with money formats that don't use a dot as decimal separator (eg. €1.024,20).
    
    * Update required Stripe API verison to 2019-12-03.
    
    mattwire's avatar
    mattwire committed
    * Fix issues with StripeSubscription.import and mismatched id/customer_id params.
    * Fix [#125](https://lab.civicrm.org/extensions/stripe/issues/125) Thousands of failed/spam transactions for charge.failed webhook *(We ignore and return 200 OK to Stripe so it does not retry if there is no customer ID)*.
    
    mattwire's avatar
    mattwire committed
    * Change default to 1 hour to cancel uncaptured payments based on client feedback.
    * Update definition of getAmount to match current version in CiviCRM core.
    * Pre-fill existing billing postcode if we already have address.
    * Fix recurring contribution issue on drupal webform.
    * [#148](https://lab.civicrm.org/extensions/stripe/issues/148) Fix Credit or debit card translation.
    
    mattwire's avatar
    mattwire committed
    * Fix [#149](https://lab.civicrm.org/extensions/stripe/issues/149) Cannot submit payment from back end when tax and invoicing disabled.
    
    
    mattwire's avatar
    mattwire committed
    ## Release 6.2.2
    
    * Make sure we detect memberships as auto-renew when they are "forced".
    * Make sure we always load the recurring contribution ID properly.
    
    
    mattwire's avatar
    mattwire committed
    ## Release 6.2.1
    
    * [#121](https://lab.civicrm.org/extensions/stripe/issues/121) Fix auto-recurring membership payments.
    * Stripe.ListEvents API - properly handle newer way to record trxn_id value.
    * Change doRefund signature to match what is in CiviCRM core (fixes a PHP warning).
    
    
    mattwire's avatar
    mattwire committed
    ## Release 6.2
    
    * Track paymentIntents and cancel uncaptured ones after 24 hours.
      > Configurable via scheduled Job.process_stripe and API.
    * Refactor to support updating amount and re-confirming once we reach the thankyou page.
    * When we don't know the amount, pre-auth the card but don't confirm, then update the amount requested.
      > This resolves, for example, registering multiple participants. Users may receive an additional confirmation step such as 3d secure on the *Thankyou* page if their card issuer requires it.
    * Refactor passing of token parameters to use pre_approval_parameters.
      > This should resolve some issues with *PaymentIntent not found*.
    * Improve support for refunds in preparation for work in CiviCRM core (#15476-15479).
    
    mattwire's avatar
    mattwire committed
    * Add CiviCRM version info to stripe customer - this is useful when troubleshooting issues on client sites as it is important to know whether a reported issue may have been fixed in a later version.
    * Fix [#110](https://lab.civicrm.org/extensions/stripe/issues/110) -Allow submit if amount is 0.
    
    mattwire's avatar
    mattwire committed
    * Fix and record paymentIntents for recurring contributions - show authentication to user on thankyou page.
      > this checks loads 3d secure etc from Stripe if required.
    
    mattwire's avatar
    mattwire committed
    * Don't try to record refund for an uncaptured payment.
      > When an uncaptured payment is cancelled it triggers a charge.refunded event. But we don't want to record this in CiviCRM as it was never "captured" and the payment was never really taken.
    
    mattwire's avatar
    mattwire committed
    
    
    ## Release 6.1.6
    
    * Fix [#103](https://lab.civicrm.org/extensions/stripe/issues/103) - Allow submission of drupal webform when there are multiple processors on the page (eg. Stripe + Pay later).
    
    
    ## Release 6.1.5
    
    * Send email receipts from Stripe by default (as this was what 5.x did). Add a setting under Administer->CiviContribute->Stripe Settings to enable/disable receipts from Stripe.
    
    * Support recording full refunds from Stripe.
    
    mattwire's avatar
    mattwire committed
    ## Release 6.1.4
    **This release fixes a MAJOR issue that caused duplicate payments to be taken when a new recurring contribution (subscription) was setup.  All users of 6.x should upgrade.**
    
    * Don't take payment twice on recurring payments (This was happening because a payment was being created via a paymentIntent and subsequently via the first invoice generated by the subscription - currently we don't support 3D secure on subscriptions, this will be fixed in a future release).
    * If we get an error when submitting, make sure we run Stripe submit next time as well so we generate a paymentIntent/paymentMethod for the payment (this fixes the issue where only the first submission attempt would succeeed - subsequent submission attempts would fail with "Missing paymentIntentID").
    * Validate payment forms using javascript so we don't create multiple uncaptured paymentIntents when the form is not valid (each time the form was submitted and failed because eg. the email address was invalid a new paymentIntent would be created).
    
    
    mattwire's avatar
    mattwire committed
    ## Release 6.1.3
    
    
    **You need to Fix/Create webhook after installing this update to add the `charge.captured` event to the list of events sent to the webhook.**
    
    
    mattwire's avatar
    mattwire committed
    * Handle charge.succeeded/charge.captured when no customer_id is provided - fixes 400 errors / missing customer_id.
    * Remove invalid setting of customer on paymentIntent (no user impact).
    * Small improvements to Stripe Plan code (no user impact).
    
    
    mattwire's avatar
    mattwire committed
    *Note: You should use [this CiviCRM core patch](https://github.com/civicrm/civicrm-core/pull/15340) if using webform_civicrm 4.28.*
    
    
    ## Release 6.1.2
    
    * Fix [#89](https://lab.civicrm.org/extensions/stripe/issues/89) - Payment Element is not loading for backend "Credit Card Event Registration".
    
    * Fix repeatContribution - pass the found contribution ID instead of using a separate previous_contribution variable - fixes !63
    
    mattwire's avatar
    mattwire committed
    ## Release 6.1.1
    
    * Fix issue with charge.succeeded triggering error on recurring contributions
    
    
    mattwire's avatar
    mattwire committed
    ## Release 6.1
    
    mattwire's avatar
    mattwire committed
    *This release fixes a number of bugs/issues identified after the release of 6.0.*
    
    #### Upgrade Advice
    
    **IMPORTANT!** If upgrading to 6.x for the first time make sure you install the [mjwshared](https://lab.civicrm.org/extensions/mjwshared) extension
    **BEFORE** you upgrade Stripe.
    
    This release requires an upgrade to version 0.4 of the MJWShared extension.
    
     **ALL users of 6.0 should upgrade to this release.**
    
    mattwire's avatar
    mattwire committed
     If upgrading to 6.x for the first time, please upgrade directly to 6.1 (do not install 6.0 first).
    
    #### Changes
    
    * Support cards that do not request a postal/zip code (*fixes [#80](https://lab.civicrm.org/extensions/stripe/issues/80)*).
    
    mattwire's avatar
    mattwire committed
    * Enable payments on backend (*fixes [#79](https://lab.civicrm.org/extensions/stripe/issues/79)*).
    
    mattwire's avatar
    mattwire committed
    * Resolve multiple issues with "more than one" payment processor on the form and stripe failing to submit if it wasn't the first to be selected:
      * Fix issue when script is reloaded by changes of payment processors.
      * Improve handling for multiple processors and pay later.
      * Make sure we clear the paymentIntentID from the session once we've used it (this prevents a browser refresh trying to use an already captured paymentIntent).
    
    ## Release 6.0
    
    mattwire's avatar
    mattwire committed
    
    
    *Switch to Stripe Elements for SAQ-A compliance on most sites and support the European Secure Customer Authentication (SCA) payments directive.*
    
    **This is a major new release. You cannot rollback once you've upgraded.**
    
    **This extension REQUIRES the [mjwshared](https://lab.civicrm.org/extensions/mjwshared) extension.**
    
    **You MUST update your API version on the stripe dashboard!**
    
    
    * Use [Stripe Elements](https://stripe.com/payments/elements).
    * Use PaymentIntents and comply with the European [SCA directive](https://stripe.com/docs/strong-customer-authentication).
    
    * Require Stripe API Version: 2019-09-09 and ensure that all codepaths specify the API version.
    
    * Switch publishable key/secret key in settings (upgrader does this automatically) so they are now "correct" per CiviCRM settings pages.
    
    mattwire's avatar
    mattwire committed
    * Support cards using 3dsecure and cards not using 3dsecure (workflows with Stripe are slightly different but both are now handled).
    
    * Use minified versions of js/css.
    * Improve payment descriptors and customer information that is sent from CiviCRM to Stripe.
    * Add basic support for PaymentProcessor.refund API.
    
    #### What is NOT supported:
    
    mattwire's avatar
    mattwire committed
    * CiviCRM Event Cart (requires additional funding, changes should probably be made in CiviCRM core to standardize that workflow rather than adding support via this extension).
    
    * Card payments via the admin backend (this was supported in 5.4.1 but has unresolved issues with Stripe Elements when used via popup forms and is not allowed in most situations when complying with the SCA payments directive unless you are approved to accept "MOTO" payments).
    
    mattwire's avatar
    mattwire committed
    
    
    * Don't overwrite system messages when performing webhook checks.
    * Add form to handle creating/updating webhooks instead of automatically during system check (Thanks @artfulrobot)
    
    
    mattwire's avatar
    mattwire committed
    This release fixes multiple bugs and introduces a few small features.
    
    **A major feature for this release is the automatic management of webhooks:**
    Note that when you upgrade you may end up with duplicate webhooks in Stripe with slightly different addresses (particularly on Wordpress where the path should be urlencoded).  Just delete the older (duplicate) webhooks manually from your Stripe dashboard.
    
    
    * Fix drupal webform detection so it doesn't generate a false positive if we also have a webform on the same page.
    * Fix Stripe create customer in test mode.
    * Fix offline (live) event payments for Wordpress.
    
    mattwire's avatar
    mattwire committed
    * If payment fails and we have no contribution don't crash when trying to create a note.
    
    * Fix null dates returning as December 31, 1969 or 1 Jan 1970 (depending on your
        timezone) - also see the commandline script in `utils/fix-issue-44.php` to
        correct your Contributions data.
    
    mattwire's avatar
    mattwire committed
    * Support Drupal 8 Webform.
    * Automatically manage and create webhooks.
    
    * Add StripeCustomer.updatestripemetadata API.
    * Add a system check for invalid API key.
    * Add StripeCustomer.delete to delete a customer from CiviCRM.
    
    mattwire's avatar
    mattwire committed
    * Add StripeSubscription.import API to import subscriptions into CiviCRM.
    * Add Stripe.cleanup API.
    * Report all Stripe errors, not just authentication when running status checks.
    
    * Remove `is_live` field from `civicrm_stripe_customer` - we can get this from the payment processor ID.
    
    mattwire's avatar
    mattwire committed
    ## Release 5.3.2
    
    mattwire's avatar
    mattwire committed
    * Fix retrieving email receipt parameter on stripe IPN which stopped contributions from being marked as completed.
    * Fix webhook check for wordpress so we don't get false positives when everything is configured ok.
    
    
    * Fix issue with event/membership payments failing to record in CiviCRM (introduced in 5.3).
    
    
    **All users should upgrade to 5.3.1 due to an issue with event/membership payments**
    
    
    There are no database changes in this release but you should update your Stripe webhook API version to 2019-02-19.
    
    
    mattwire's avatar
    mattwire committed
    ### Changes
    
    mattwire's avatar
    mattwire committed
    * Update required Stripe API version from 2018-11-08 to 2019-02-19.
    
    mattwire's avatar
    mattwire committed
    * Update stripe-php library from 6.19.5 to 6.30.4.
    
    ### Fixes
    
    mattwire's avatar
    mattwire committed
    * Make sure we clear processor specific metadata from payment form when switching payment processor (fixes https://lab.civicrm.org/extensions/stripe/issues/26).
    
    * Fix saving of fee amount and transaction ID on contribution record.
    
    mattwire's avatar
    mattwire committed
    
    ### Features
    * Add a Webhook System Check.
    * Send a friendly success response if we receive the test webhook.
    * Webhooks now work in test mode.
    * Use the parameter on the recurring contribution to decide whether to send out email receipts.
    
    mattwire's avatar
    mattwire committed
    ## Release 5.2
    *This release introduces a number of new features, standardises the behaviour of recurring contributions/memberships to match standard CiviCRM functionality and does a major cleanup of the backend code to improve stability and allow for new features.*
    
    ### Highlights:
    * Support Cancel Subscription from CiviCRM and from Stripe.
    
    ### Breaking changes:
    * The extension now uses the standard CiviCRM Contribution.completetransaction and Contribution.repeattransaction API to handle creation/update of recurring contributions. This means that automatic membership renewal etc. is handled in the standard CiviCRM way instead of using custom code in the Stripe extension. The behaviour *should* be the same but some edge-cases may be fixed while others may appear. Any bugs in this area will now need to be fixed in CiviCRM core - if you want to help with that see https://github.com/civicrm/civicrm-core/pull/11556.
    * When recurring contributions were updated by Stripe, they were marked cancelled and a new one created in CiviCRM. This was non-standard behaviour and causes issues with CiviCRM core functionality for membership renewal etc. This has now been changed so only one recurring contribution per subscription will ever exist, which will be updated as necessary during it's lifecycle.
    * Different payment amounts are now supported for each contribution in a recurring contribution. Previously they were explicitly rejected by the extension.
    
    ### Changes:
    * Add http response codes for webhook (invalid parameters now returns 400 Bad Request).
    * Major refactor of webhook / events handling (fixes multiple issues, now tested and working on Joomla / Wordpress / Drupal 7).
    * Update to latest version of stripe-php library.
    * Handle "Customer Deleted" from Stripe.
    * Drop use of civicrm_stripe_plans table and just query Stripe each time. This prevents errors when they get out of sync
    
    ### Upgrading
    
    mattwire's avatar
    mattwire committed
    **Please upgrade to 5.0 if you are on ANY older version. Then upgrade directly to 5.2. You do not need to install 5.1 first.**
    
    mattwire's avatar
    mattwire committed
    
    Make sure you run the extension upgrades immediately after updating the code.  There are two MAJOR upgrade steps:
    1. Migrate civicrm_stripe_customers table to match on contact_id instead of email address. This can be re-run if necessary using StripeCustomer.updatecontactids API.
    2. Migrate data from civicrm_stripe_subscriptions to use the recurring contribution (trxn_id = Stripe subscription ID). This can be re-run if necessary using StripeSubscription.updatetransactionids API.
    
    
    ## Release 5.1
    *This was a limited release to selected clients in order to test new functionality.  **Production sites should upgrade to 5.2 directly from 5.0**.*
    
    ### Changes:
    * Use contact_id as reference in civicrm_stripe_customers and don't require an email address for payment.
    
    * Drop old webhook code / endpoint at https://{yoursitename.org}/civicrm/stripe/webhook. You **MUST** update your webhooks to use the standard CiviCRM endpoint at https://{yoursitename.org}/civicrm/payment/ipn/XX (see [Webhooks and Recurring Payments](/recur.md) for details).
    
    mattwire's avatar
    mattwire committed
    
    
    ## Release 5.0
    *This is the first release with a new maintainer (mattwire https://www.mjwconsult.co.uk) and repository move to https://lab.civicrm.org/extensions/stripe.*
    
    **If upgrading from ANY version before 5.0 you should upgrade to this version first. It should be a safe upgrade for all sites on previous versions unless you are running a customised version of the extension.**
    
    ### Highlights:
    * Fix all known "Stripe.js token was not passed".
    * Tested support for Drupal 7 / Wordpress / Joomla for contributions/event payments.
    
    * Improvements to recurring payments (though you will want to upgrade to 5.2 if using recurring payments as recurring payments has had a major rewrite for 5.2).
    
    
    
    # Alpha / Beta releases
    
    ## Release 6.0.beta1
    
    *Thanks to Rich Lott (@artfulrobot) for contributing and testing this release.*
    
    * We don't need to confirm the payment until we capture it
    * payment method id is not required when passing in an existing payment intent
    * Use minified versions of js/css.
    * Remove onclick attribute from submit form so that CiviContribute forms do stripe processing before submission
    * Description and Customer fields in Stripe backend - fixes #78
    
    ## Release 6.0.alpha3
    
    * Support recurring payments with paymentIntents/Elements. Cancel subscription with Stripe when we reach recurring end date
    * **Update required Stripe API version to 2019-09-09**
    * Handle confirmation pages properly for contribution pages (make sure we pass through paymentIntentID).
    * Handle card declined on client side.
    * Support creating recurring payment (subscription).
    * Handle IPN events for charges / invoices (support cancel/refund etc).
    * Add basic support for PaymentProcessor.refund API.
    * Remove membership_type_tag from plan name.
    
    ## Release 6.0.alpha2
    
    * Support Drupal Webform CiviCRM.
    * Support Event Registration.
    * Support Confirm/Thankyou pages on contribution pages / events.
    * Support cards using 3dsecure and cards not using 3dsecure.
    
    ### Not Supported (should be in final 6.0 release):
    * Recurring payments.
    * Backend payments.
    
    ## Release 6.0.alpha1
    
    * ONLY contribution pages with no confirm pages are supported.