X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FPayment%2FDummy.php;h=b2b66125fbdd866217a1ef944cb959473e588952;hb=2cbdf469fa35930800e92960193887064045cd28;hp=92f932c273cc726f9dc3815f55fa43f74db9d95a;hpb=45cf788aaaa63f781f256c2c2d4cfcf8936ab88e;p=civicrm-core.git diff --git a/CRM/Core/Payment/Dummy.php b/CRM/Core/Payment/Dummy.php index 92f932c273..b2b66125fb 100644 --- a/CRM/Core/Payment/Dummy.php +++ b/CRM/Core/Payment/Dummy.php @@ -14,6 +14,8 @@ * $Id: Dummy.php 45429 2013-02-06 22:11:18Z lobo $ */ +use Civi\Payment\Exception\PaymentProcessorException; + /** * Dummy payment processor */ @@ -22,8 +24,8 @@ class CRM_Core_Payment_Dummy extends CRM_Core_Payment { protected $_mode = NULL; - protected $_params = array(); - protected $_doDirectPaymentResult = array(); + protected $_params = []; + protected $_doDirectPaymentResult = []; /** * Set result from do Direct Payment for test purposes. @@ -34,7 +36,7 @@ class CRM_Core_Payment_Dummy extends CRM_Core_Payment { public function setDoDirectPaymentResult($doDirectPaymentResult) { $this->_doDirectPaymentResult = $doDirectPaymentResult; if (empty($this->_doDirectPaymentResult['trxn_id'])) { - $this->_doDirectPaymentResult['trxn_id'] = array(); + $this->_doDirectPaymentResult['trxn_id'] = []; } else { $this->_doDirectPaymentResult['trxn_id'] = (array) $doDirectPaymentResult['trxn_id']; @@ -73,6 +75,7 @@ class CRM_Core_Payment_Dummy extends CRM_Core_Payment { * * @return array * the result in a nice formatted array (or an error object) + * @throws \Civi\Payment\Exception\PaymentProcessorException */ public function doDirectPayment(&$params) { // Invoke hook_civicrm_paymentProcessor @@ -99,21 +102,24 @@ class CRM_Core_Payment_Dummy extends CRM_Core_Payment { //end of hook invocation if (!empty($this->_doDirectPaymentResult)) { $result = $this->_doDirectPaymentResult; + if (CRM_Utils_Array::value('payment_status_id', $result) === 'failed') { + throw new PaymentProcessorException($result['message'] ?? 'failed'); + } $result['trxn_id'] = array_shift($this->_doDirectPaymentResult['trxn_id']); return $result; } if ($this->_mode == 'test') { $query = "SELECT MAX(trxn_id) FROM civicrm_contribution WHERE trxn_id LIKE 'test\\_%'"; - $p = array(); - $trxn_id = strval(CRM_Core_Dao::singleValueQuery($query, $p)); + $p = []; + $trxn_id = strval(CRM_Core_DAO::singleValueQuery($query, $p)); $trxn_id = str_replace('test_', '', $trxn_id); $trxn_id = intval($trxn_id) + 1; $params['trxn_id'] = 'test_' . $trxn_id . '_' . uniqid(); } else { $query = "SELECT MAX(trxn_id) FROM civicrm_contribution WHERE trxn_id LIKE 'live_%'"; - $p = array(); - $trxn_id = strval(CRM_Core_Dao::singleValueQuery($query, $p)); + $p = []; + $trxn_id = strval(CRM_Core_DAO::singleValueQuery($query, $p)); $trxn_id = str_replace('live_', '', $trxn_id); $trxn_id = intval($trxn_id) + 1; $params['trxn_id'] = 'live_' . $trxn_id . '_' . uniqid(); @@ -122,6 +128,7 @@ class CRM_Core_Payment_Dummy extends CRM_Core_Payment { // Add a fee_amount so we can make sure fees are handled properly in underlying classes. $params['fee_amount'] = 1.50; $params['net_amount'] = $params['gross_amount'] - $params['fee_amount']; + $params['description'] = $this->getPaymentDescription($params); return $params; } @@ -146,6 +153,14 @@ class CRM_Core_Payment_Dummy extends CRM_Core_Payment { return TRUE; } + /** + * Supports altering future start dates + * @return bool + */ + public function supportsFutureRecurStartDate() { + return TRUE; + } + /** * Submit a refund payment * @@ -214,7 +229,7 @@ class CRM_Core_Payment_Dummy extends CRM_Core_Payment { * @return array */ public function getEditableRecurringScheduleFields() { - return array('amount', 'next_sched_contribution_date'); + return ['amount', 'next_sched_contribution_date']; } /** @@ -223,7 +238,7 @@ class CRM_Core_Payment_Dummy extends CRM_Core_Payment { * * @return bool|object */ - public function cancelSubscription(&$message = '', $params = array()) { + public function cancelSubscription(&$message = '', $params = []) { return TRUE; }