Commit 81b0e0ad authored by mattwire's avatar mattwire

Fix issue with event/membership payments failing to record in CiviCRM (introduced in 5.3).

parent fe9c3fa1
...@@ -542,11 +542,6 @@ class CRM_Core_Payment_Stripe extends CRM_Core_Payment { ...@@ -542,11 +542,6 @@ class CRM_Core_Payment_Stripe extends CRM_Core_Payment {
throw new \Civi\Payment\Exception\PaymentProcessorException('Failed to create Stripe Charge: ' . $errorMessage); throw new \Civi\Payment\Exception\PaymentProcessorException('Failed to create Stripe Charge: ' . $errorMessage);
} }
// Success! Return some values for CiviCRM.
$newParams['id'] = $this->getContributionId($params);
$newParams['trxn_id'] = $stripeCharge->id;
$newParams['payment_status_id'] = $completedStatusId;
// Return fees & net amount for Civi reporting. // Return fees & net amount for Civi reporting.
try { try {
$stripeBalanceTransaction = \Stripe\BalanceTransaction::retrieve($stripeCharge->balance_transaction); $stripeBalanceTransaction = \Stripe\BalanceTransaction::retrieve($stripeCharge->balance_transaction);
...@@ -556,11 +551,20 @@ class CRM_Core_Payment_Stripe extends CRM_Core_Payment { ...@@ -556,11 +551,20 @@ class CRM_Core_Payment_Stripe extends CRM_Core_Payment {
$errorMessage = self::handleErrorNotification($err, $params['stripe_error_url']); $errorMessage = self::handleErrorNotification($err, $params['stripe_error_url']);
throw new \Civi\Payment\Exception\PaymentProcessorException('Failed to retrieve Stripe Balance Transaction: ' . $errorMessage); throw new \Civi\Payment\Exception\PaymentProcessorException('Failed to retrieve Stripe Balance Transaction: ' . $errorMessage);
} }
// Success!
// For contribution workflow we have a contributionId so we can set parameters directly.
// For events/membership workflow we have to return the parameters and they might get set...
$newParams['trxn_id'] = $stripeCharge->id;
$newParams['payment_status_id'] = $completedStatusId;
$newParams['fee_amount'] = $stripeBalanceTransaction->fee / 100; $newParams['fee_amount'] = $stripeBalanceTransaction->fee / 100;
$newParams['net_amount'] = $stripeBalanceTransaction->net / 100; $newParams['net_amount'] = $stripeBalanceTransaction->net / 100;
civicrm_api3('Contribution', 'create', $newParams); if ($this->getContributionId($params)) {
unset($newParams['id']); $newParams['id'] = $this->getContributionId($params);
civicrm_api3('Contribution', 'create', $newParams);
unset($newParams['id']);
}
$params = array_merge($params, $newParams); $params = array_merge($params, $newParams);
return $params; return $params;
......
<?php <?php
/** /**
* Shared payment functions that should one day be migrated to CiviCRM core * Shared payment functions that should one day be migrated to CiviCRM core
* Version 1.0 * Version 20190311
*/ */
trait CRM_Core_Payment_StripeTrait { trait CRM_Core_Payment_StripeTrait {
...@@ -68,7 +68,12 @@ trait CRM_Core_Payment_StripeTrait { ...@@ -68,7 +68,12 @@ trait CRM_Core_Payment_StripeTrait {
* @return mixed * @return mixed
*/ */
protected function getContributionId($params) { protected function getContributionId($params) {
return $params['contributionID']; /*
* contributionID is set in the contribution workflow
* We do NOT have a contribution ID for event and membership payments as they are created after payment!
* See: https://github.com/civicrm/civicrm-core/pull/13763 (for events)
*/
return CRM_Utils_Array::value('contributionID', $params);
} }
/** /**
......
## Releae 5.3.1
* Fix issue with event/membership payments failing to record in CiviCRM (introduced in 5.3).
## Release 5.3 ## Release 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. There are no database changes in this release but you should update your Stripe webhook API version to 2019-02-19.
### Changes ### Changes
......
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
<author>Matthew Wire (MJW Consulting)</author> <author>Matthew Wire (MJW Consulting)</author>
<email>mjw@mjwconsult.co.uk</email> <email>mjw@mjwconsult.co.uk</email>
</maintainer> </maintainer>
<releaseDate>2019-03-08</releaseDate> <releaseDate>2019-03-12</releaseDate>
<version>5.3</version> <version>5.3.1</version>
<develStage>stable</develStage> <develStage>stable</develStage>
<compatibility> <compatibility>
<ver>5.10</ver> <ver>5.10</ver>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment