diff --git a/CRM/Stripe/Check.php b/CRM/Stripe/Check.php index b975cc03f4108c2c2f7a06c1f18e2d5d1043084f..91bd7c19a6bd8d47e8e282efb67a7a3735fa0a1d 100644 --- a/CRM/Stripe/Check.php +++ b/CRM/Stripe/Check.php @@ -26,10 +26,14 @@ class CRM_Stripe_Check { * @var string */ const MIN_VERSION_MJWSHARED = '0.8'; + const MIN_VERSION_SWEETALERT = '1.2'; public static function checkRequirements(&$messages) { + // mjwshared: required. Requires min version + $extensionName = 'mjwshared'; + $extensions = civicrm_api3('Extension', 'get', [ - 'full_name' => "mjwshared", + 'full_name' => $extensionName, ]); if (empty($extensions['id']) || ($extensions['values'][$extensions['id']]['status'] !== 'installed')) { @@ -41,23 +45,30 @@ class CRM_Stripe_Check { 'fa-money' ); } + self::requireExtensionMinVersion($messages, $extensionName, CRM_Stripe_Check::MIN_VERSION_MJWSHARED, $extensions['values'][$extensions['id']]['version']); + + // mjwshared: Recommended + $extensionName = 'firewall'; + + $extensions = civicrm_api3('Extension', 'get', [ + 'full_name' => $extensionName, + ]); - if (version_compare($extensions['values'][$extensions['id']]['version'], CRM_Stripe_Check::MIN_VERSION_MJWSHARED) === -1) { + if (empty($extensions['id']) || ($extensions['values'][$extensions['id']]['status'] !== 'installed')) { $messages[] = new CRM_Utils_Check_Message( - 'stripe_requirements', - E::ts('The Stripe extension requires the mjwshared extension version %1 or greater but your system has version %2.', - [ - 1 => CRM_Stripe_Check::MIN_VERSION_MJWSHARED, - 2 => $extensions['values'][$extensions['id']]['version'] - ]), - E::ts('Stripe: Missing Requirements'), - \Psr\Log\LogLevel::ERROR, - 'fa-money' + 'stripe_recommended', + E::ts('If you are using Stripe to accept payments on public forms (eg. contribution/event registration forms) it is recommended that you install the <strong><a href="https://lab.civicrm.org/extensions/firewall">firewall</a></strong> extension. + Some sites have become targets for spammers who use the payment endpoint to try and test credit cards by submitting invalid payments to your Stripe account.'), + E::ts('Recommended Extension: firewall'), + \Psr\Log\LogLevel::NOTICE, + 'fa-lightbulb-o' ); } + // sweetalert: recommended. If installed requires min version + $extensionName = 'sweetalert'; $extensions = civicrm_api3('Extension', 'get', [ - 'full_name' => 'firewall', + 'full_name' => $extensionName, ]); if (empty($extensions['id']) || ($extensions['values'][$extensions['id']]['status'] !== 'installed')) { @@ -70,6 +81,31 @@ class CRM_Stripe_Check { 'fa-lightbulb-o' ); } + + self::requireExtensionMinVersion($messages, $extensionName, CRM_Stripe_Check::MIN_VERSION_SWEETALERT, $extensions['values'][$extensions['id']]['version']); + } + + /** + * @param array $messages + * @param string $extensionName + * @param string $minVersion + * @param string $actualVersion + */ + private static function requireExtensionMinVersion(&$messages, $extensionName, $minVersion, $actualVersion) { + if (version_compare($actualVersion, $minVersion) === -1) { + $messages[] = new CRM_Utils_Check_Message( + 'stripe_requirements', + E::ts('The Stripe extension requires the %1 extension version %2 or greater but your system has version %3.', + [ + 1 => $extensionName, + 2 => $minVersion, + 3 => $actualVersion + ]), + E::ts('Stripe: Missing Requirements'), + \Psr\Log\LogLevel::ERROR, + 'fa-money' + ); + } } } diff --git a/docs/releasenotes.md b/docs/releasenotes.md index 02acf4aa0d5823c9d83f9edd869df3526baf2d77..6b53568abec33474aa1f23e4835061d455b14a26 100644 --- a/docs/releasenotes.md +++ b/docs/releasenotes.md @@ -24,6 +24,8 @@ Where: * civicrmStripeConfirm.js is now a library available at CRM.payment.confirm and builds on CRM.payment. * Initial support for \Civi\Payment\PropertyBag. * Improve handling of network errors when loading Stripe elements and add a new jquery event: *crmBillingFormReloadFailed*. +* Improve user notifications during pre-authentication and confirmation. +* Add check for recommended SweetAlert extension. ## Release 6.4 **This release REQUIRES that you upgrade mjwshared to 0.7 and your Stripe API version must be 2019-12-03 or newer.** diff --git a/info.xml b/info.xml index b53bc877f2a23c347ae5a0fe9d75e472281a5653..f0127062120d0ee825d3690cd7ed2eeff9d4652e 100644 --- a/info.xml +++ b/info.xml @@ -14,8 +14,8 @@ <author>Matthew Wire (MJW Consulting)</author> <email>mjw@mjwconsult.co.uk</email> </maintainer> - <releaseDate>2020-06-06</releaseDate> - <version>6.4.1-beta2</version> + <releaseDate>2020-06-08</releaseDate> + <version>6.4.1-beta3</version> <develStage>beta</develStage> <compatibility> <ver>5.24</ver>