X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FAdmin%2FForm%2FPaymentProcessor.php;h=16be41ca046d016230cdab5cfa597d6df7c12729;hb=945744ee3fb862a227ff65f7a17f2fd5b0d7a675;hp=efb4475355b203537b84eea7adc1c6d6ec59aa5c;hpb=999b8fd47075b59c18fd7888cede262865046b4b;p=civicrm-core.git
diff --git a/CRM/Admin/Form/PaymentProcessor.php b/CRM/Admin/Form/PaymentProcessor.php
index efb4475355..16be41ca04 100644
--- a/CRM/Admin/Form/PaymentProcessor.php
+++ b/CRM/Admin/Form/PaymentProcessor.php
@@ -1,9 +1,9 @@
_id) {
- $this->_ppType = CRM_Utils_Request::retrieve('pp', 'String', $this, FALSE, NULL);
- if (!$this->_ppType) {
- $this->_ppType = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessor',
+ $this->_paymentProcessorType = CRM_Utils_Request::retrieve('pp', 'String', $this, FALSE, NULL);
+ if (!$this->_paymentProcessorType) {
+ $this->_paymentProcessorType = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessor',
$this->_id,
'payment_processor_type_id'
);
}
- $this->set('pp', $this->_ppType);
+ $this->set('pp', $this->_paymentProcessorType);
}
else {
- $this->_ppType = CRM_Utils_Request::retrieve('pp', 'String', $this, TRUE, NULL);
+ $this->_paymentProcessorType = CRM_Utils_Request::retrieve('pp', 'String', $this, TRUE, NULL);
}
- $this->assign('ppType', $this->_ppType);
+ $this->assign('ppType', $this->_paymentProcessorType);
$ppTypeName = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessorType',
- $this->_ppType,
+ $this->_paymentProcessorType,
'name'
);
$this->assign('ppTypeName', $ppTypeName);
- $this->_ppDAO = new CRM_Financial_DAO_PaymentProcessorType();
- $this->_ppDAO->id = $this->_ppType;
+ $this->_paymentProcessorDAO = new CRM_Financial_DAO_PaymentProcessorType();
+ $this->_paymentProcessorDAO->id = $this->_paymentProcessorType;
- if (!$this->_ppDAO->find(TRUE)) {
- CRM_Core_Error::fatal(ts('Could not find payment processor meta information'));
- }
+ $this->_paymentProcessorDAO->find(TRUE);
if ($this->_id) {
$refreshURL = CRM_Utils_System::url('civicrm/admin/paymentProcessor',
@@ -101,26 +106,27 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form {
$refreshURL .= "&civicrmDestination=$destination";
}
+ $this->refreshURL = $refreshURL;
$this->assign('refreshURL', $refreshURL);
- $this->assign('is_recur', $this->_ppDAO->is_recur);
+ $this->assign('is_recur', $this->_paymentProcessorDAO->is_recur);
$this->_fields = array(
array(
'name' => 'user_name',
- 'label' => $this->_ppDAO->user_name_label,
+ 'label' => $this->_paymentProcessorDAO->user_name_label,
),
array(
'name' => 'password',
- 'label' => $this->_ppDAO->password_label,
+ 'label' => $this->_paymentProcessorDAO->password_label,
),
array(
'name' => 'signature',
- 'label' => $this->_ppDAO->signature_label,
+ 'label' => $this->_paymentProcessorDAO->signature_label,
),
array(
'name' => 'subject',
- 'label' => $this->_ppDAO->subject_label,
+ 'label' => $this->_paymentProcessorDAO->subject_label,
),
array(
'name' => 'url_site',
@@ -130,7 +136,7 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form {
),
);
- if ($this->_ppDAO->is_recur) {
+ if ($this->_paymentProcessorDAO->is_recur) {
$this->_fields[] = array(
'name' => 'url_recur',
'label' => ts('Recurring Payments URL'),
@@ -139,7 +145,7 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form {
);
}
- if (!empty($this->_ppDAO->url_button_default)) {
+ if (!empty($this->_paymentProcessorDAO->url_button_default)) {
$this->_fields[] = array(
'name' => 'url_button',
'label' => ts('Button URL'),
@@ -148,7 +154,7 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form {
);
}
- if (!empty($this->_ppDAO->url_api_default)) {
+ if (!empty($this->_paymentProcessorDAO->url_api_default)) {
$this->_fields[] = array(
'name' => 'url_api',
'label' => ts('API URL'),
@@ -187,8 +193,11 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form {
$attributes['description']
);
- $types = CRM_Core_PseudoConstant::paymentProcessorType();
- $this->add('select', 'payment_processor_type_id', ts('Payment Processor Type'), $types, TRUE,
+ $this->add('select',
+ 'payment_processor_type_id',
+ ts('Payment Processor Type'),
+ CRM_Financial_BAO_PaymentProcessor::buildOptions('payment_processor_type_id'),
+ TRUE,
array('onchange' => "reload(true)")
);
@@ -221,10 +230,13 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form {
continue;
}
- $this->add('text', $field['name'],
- $field['label'], $attributes[$field['name']]
- );
- $this->add('text', "test_{$field['name']}",
+ $this->addField($field['name'], array('label' => $field['label']));
+
+ $fieldSpec = civicrm_api3($this->getDefaultEntity(), 'getfield', array(
+ 'name' => $field['name'],
+ 'action' => 'create',
+ ));
+ $this->add($fieldSpec['values']['html']['type'], "test_{$field['name']}",
$field['label'], $attributes[$field['name']]
);
if (!empty($field['rule'])) {
@@ -302,18 +314,18 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form {
if (!$this->_id) {
$defaults['is_active'] = $defaults['is_default'] = 1;
- $defaults['url_site'] = $this->_ppDAO->url_site_default;
- $defaults['url_api'] = $this->_ppDAO->url_api_default;
- $defaults['url_recur'] = $this->_ppDAO->url_recur_default;
- $defaults['url_button'] = $this->_ppDAO->url_button_default;
- $defaults['test_url_site'] = $this->_ppDAO->url_site_test_default;
- $defaults['test_url_api'] = $this->_ppDAO->url_api_test_default;
- $defaults['test_url_recur'] = $this->_ppDAO->url_recur_test_default;
- $defaults['test_url_button'] = $this->_ppDAO->url_button_test_default;
- $defaults['payment_instrument_id'] = $this->_ppDAO->payment_instrument_id;
+ $defaults['url_site'] = $this->_paymentProcessorDAO->url_site_default;
+ $defaults['url_api'] = $this->_paymentProcessorDAO->url_api_default;
+ $defaults['url_recur'] = $this->_paymentProcessorDAO->url_recur_default;
+ $defaults['url_button'] = $this->_paymentProcessorDAO->url_button_default;
+ $defaults['test_url_site'] = $this->_paymentProcessorDAO->url_site_test_default;
+ $defaults['test_url_api'] = $this->_paymentProcessorDAO->url_api_test_default;
+ $defaults['test_url_recur'] = $this->_paymentProcessorDAO->url_recur_test_default;
+ $defaults['test_url_button'] = $this->_paymentProcessorDAO->url_button_test_default;
+ $defaults['payment_instrument_id'] = $this->_paymentProcessorDAO->payment_instrument_id;
// When user changes payment processor type, it is passed in via $this->_ppType so update defaults array.
- if ($this->_ppType) {
- $defaults['payment_processor_type_id'] = $this->_ppType;
+ if ($this->_paymentProcessorType) {
+ $defaults['payment_processor_type_id'] = $this->_paymentProcessorType;
}
return $defaults;
}
@@ -327,10 +339,16 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form {
}
CRM_Core_DAO::storeValues($dao, $defaults);
- // When user changes payment processor type, it is passed in via $this->_ppType so update defaults array.
- if ($this->_ppType) {
- $defaults['payment_processor_type_id'] = $this->_ppType;
+ // If payment processor ID does not exist, $paymentProcessorName will be FALSE
+ $paymentProcessorName = CRM_Core_PseudoConstant::getName('CRM_Financial_BAO_PaymentProcessor', 'payment_processor_type_id', $this->_paymentProcessorType);
+ if ($this->_paymentProcessorType && $paymentProcessorName) {
+ // When user changes payment processor type, it is passed in via $this->_ppType so update defaults array.
+ $defaults['payment_processor_type_id'] = $this->_paymentProcessorType;
+ }
+ else {
+ CRM_Core_Session::setStatus('Payment Processor Type (ID=' . $this->_paymentProcessorType . ') not found. Did you disable the payment processor extension?', 'Missing Payment Processor', 'alert');
}
+
$cards = json_decode(CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_PaymentProcessor',
$this->_id,
'accepted_credit_cards'
@@ -356,7 +374,7 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form {
$defaults[$testName] = $testDAO->{$field['name']};
}
}
- $defaults['financial_account_id'] = CRM_Financial_BAO_FinancialTypeAccount::getFinancialAccount($dao->id, 'civicrm_payment_processor', 'financial_account_id');
+ $defaults['financial_account_id'] = CRM_Contribute_PseudoConstant::getRelationalFinancialAccount($dao->id, NULL, 'civicrm_payment_processor');
return $defaults;
}
@@ -380,9 +398,26 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form {
CRM_Core_DAO::executeQuery($query);
}
+ if ($this->_paymentProcessorType !== $values['payment_processor_type_id']) {
+ // If we changed the payment processor type, need to update the object as well
+ $this->_paymentProcessorType = $values['payment_processor_type_id'];
+ $this->_paymentProcessorDAO = new CRM_Financial_DAO_PaymentProcessorType();
+ $this->_paymentProcessorDAO->id = $values['payment_processor_type_id'];
+ $this->_paymentProcessorDAO->find(TRUE);
+ }
$this->updatePaymentProcessor($values, $domainID, FALSE);
$this->updatePaymentProcessor($values, $domainID, TRUE);
- CRM_Core_Session::setStatus(ts('Payment processor %1 has been saved.', array(1 => "{$values['name']}")), ts('Saved'), 'success');
+
+ $processor = civicrm_api3('payment_processor', 'getsingle', array('name' => $values['name'], 'is_test' => 0));
+ $errors = Civi\Payment\System::singleton()->checkProcessorConfig($processor);
+ if ($errors) {
+ CRM_Core_Session::setStatus($errors, 'Payment processor configuration invalid', 'error');
+ Civi::log()->error('Payment processor configuration invalid: ' . $errors);
+ CRM_Core_Session::singleton()->pushUserContext($this->refreshURL);
+ }
+ else {
+ CRM_Core_Session::setStatus(ts('Payment processor %1 has been saved.', array(1 => "{$values['name']}")), ts('Saved'), 'success');
+ }
}
/**
@@ -418,11 +453,11 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form {
'is_test' => $test,
'is_active' => 0,
'is_default' => 0,
- 'is_recur' => $this->_ppDAO->is_recur,
- 'billing_mode' => $this->_ppDAO->billing_mode,
- 'class_name' => $this->_ppDAO->class_name,
- 'payment_type' => $this->_ppDAO->payment_type,
- 'payment_instrument_id' => $this->_ppDAO->payment_instrument_id,
+ 'is_recur' => $this->_paymentProcessorDAO->is_recur,
+ 'billing_mode' => $this->_paymentProcessorDAO->billing_mode,
+ 'class_name' => $this->_paymentProcessorDAO->class_name,
+ 'payment_type' => $this->_paymentProcessorDAO->payment_type,
+ 'payment_instrument_id' => $this->_paymentProcessorDAO->payment_instrument_id,
'financial_account_id' => $values['financial_account_id'],
'accepted_credit_cards' => $creditCards,
), $values);