}
}
+ /**
+ * Can more than one transaction be processed at once?
+ *
+ * In general processors that process payment by server to server communication support this while others do not.
+ *
+ * In future we are likely to hit an issue where this depends on whether a token already exists.
+ *
+ * @return bool
+ */
+ protected function supportsMultipleConcurrentPayments() {
+ if ($this->_paymentProcessor['billing_mode'] == 4 || $this->_paymentProcessor['payment_type'] != 1) {
+ return FALSE;
+ }
+ else {
+ return TRUE;
+ }
+ }
+
/**
* Are live payments supported - e.g dummy doesn't support this.
*
}
// Else default
- return $this->_paymentProcessor['url_recur'];
+ return isset($this->_paymentProcessor['url_recur']) ? $this->_paymentProcessor['url_recur'] : '';
}
}
$paymentProcessorId = explode(CRM_Core_DAO::VALUE_SEPARATOR, $paymentProcessorIds);
if (!empty($paymentProcessorId)) {
- $paymentProcessorType = CRM_Core_PseudoConstant::paymentProcessorType(FALSE, NULL, 'name');
foreach ($paymentProcessorId as $pid) {
if ($pid) {
- $paymentProcessorTypeId = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessor',
- $pid, 'payment_processor_type_id'
- );
- }
- if (!($paymentProcessorTypeId == CRM_Utils_Array::key('PayPal', $paymentProcessorType) ||
- ($paymentProcessorTypeId == CRM_Utils_Array::key('AuthNet', $paymentProcessorType)))
- ) {
- $errors['member_price_set_id'] = ts('The membership price set associated with this online contribution allows a user to select BOTH an auto-renew AND a non-auto-renew membership. This requires submitting multiple processor transactions, and is not supported for one or more of the payment processors enabled under the Amounts tab.');
+ $processor = Civi\Payment\System::singleton()->getById($pid);
+ if (!$processor->supports('MultipleConcurrentPayments')) {
+ $errors['member_price_set_id'] = ts('The membership price set associated with this online contribution allows a user to select BOTH an auto-renew AND a non-auto-renew membership. This requires submitting multiple processor transactions, and is not supported for one or more of the payment processors enabled under the Amounts tab.');
+ }
}
-
}
}
}