Skip to content

Commit

Permalink
[Ref] Throw exceptions from Authorize.net rather than return errors
Browse files Browse the repository at this point in the history
This is part of 'modelling good behaviour' - curently doPayment converts the errors to thrown exceptions,
but the recommendation is that the payment processor functions should throw exceptions themselves.
If they do they willl bypass the doPayment handling, but acheive the same thing
  • Loading branch information
eileenmcnaughton committed Jun 5, 2020
1 parent 98215be commit 2edc95e
Showing 1 changed file with 12 additions and 20 deletions.
32 changes: 12 additions & 20 deletions CRM/Core/Payment/AuthorizeNet.php
Original file line number Diff line number Diff line change
Expand Up @@ -133,10 +133,7 @@ public function doDirectPayment(&$params) {
}

if (!empty($params['is_recur']) && !empty($params['contributionRecurID'])) {
$result = $this->doRecurPayment();
if (is_a($result, 'CRM_Core_Error')) {
return $result;
}
$this->doRecurPayment();
return $params;
}

Expand Down Expand Up @@ -237,36 +234,31 @@ public function doRecurPayment() {

$intervalLength = $this->_getParam('frequency_interval');
$intervalUnit = $this->_getParam('frequency_unit');
if ($intervalUnit == 'week') {
if ($intervalUnit === 'week') {
$intervalLength *= 7;
$intervalUnit = 'days';
}
elseif ($intervalUnit == 'year') {
elseif ($intervalUnit === 'year') {
$intervalLength *= 12;
$intervalUnit = 'months';
}
elseif ($intervalUnit === 'day') {
$intervalUnit = 'days';
}
elseif ($intervalUnit == 'month') {
$intervalUnit = 'months';
}

// interval cannot be less than 7 days or more than 1 year
if ($intervalUnit == 'days') {
// interval cannot be less than 7 days or more than 1 year
if ($intervalLength < 7) {
return self::error(9001, 'Payment interval must be at least one week');
throw new PaymentProcessorException('Payment interval must be at least one week', 9001);
}
elseif ($intervalLength > 365) {
return self::error(9001, 'Payment interval may not be longer than one year');
if ($intervalLength > 365) {
throw new PaymentProcessorException('Payment interval may not be longer than one year', 9001);
}
}
elseif ($intervalUnit == 'months') {
elseif ($intervalUnit === 'month') {
$intervalUnit = 'months';
if ($intervalLength < 1) {
return self::error(9001, 'Payment interval must be at least one week');
throw new PaymentProcessorException('Payment interval must be at least one week', 9001);
}
elseif ($intervalLength > 12) {
return self::error(9001, 'Payment interval may not be longer than one year');
if ($intervalLength > 12) {
throw new PaymentProcessorException('Payment interval may not be longer than one year', 9001);
}
}

Expand Down

0 comments on commit 2edc95e

Please sign in to comment.