public function update($id, $params) { $status = Response::STATUS_BAD_REQUEST; $data = array(); $lang_code = $this->safeGet($params, 'lang_code', DEFAULT_LANGUAGE); if (isset($params['processor_params']['certificate_filename']) && !$params['processor_params']['certificate_filename']) { fn_rm(Registry::get('config.dir.certificates') . $id); } $payment_id = fn_update_payment($params, $id, $lang_code); if ($payment_id) { $status = Response::STATUS_OK; $data = array('payment_id' => $payment_id); } return array('status' => $status, 'data' => $data); }
public static function processPaymentCertificates($store_data) { $payment_methods = db_get_array('SELECT p.payment_id, pp.* FROM ?:payments p, ?:payment_processors pp WHERE pp.processor_id = p.processor_id AND p.processor_id != 0'); $certificates_dir = Registry::get('config.dir.certificates'); foreach ($payment_methods as $payment_method) { if (in_array($payment_method['processor_script'], array('paypal_express.php', 'paypal_pro.php', 'qbms.php'))) { $payment_data = fn_get_payment_method_data($payment_method['payment_id']); $certificate_filename = ''; if (isset($payment_data['processor_params']['certificate_filename'])) { $certificate_filename = $payment_data['processor_params']['certificate_filename']; } elseif (isset($payment_data['processor_params']['certificate'])) { $certificate_filename = $payment_data['processor_params']['certificate']; } if ($certificate_filename) { $filename = $payment_method['payment_id'] . '/' . $certificate_filename; $old_certificate_file = $store_data['path'] . '/payments/certificates/' . $certificate_filename; if (file_exists($old_certificate_file)) { fn_mkdir($certificates_dir . $payment_method['payment_id']); fn_copy($old_certificate_file, $certificates_dir . $filename); } else { $filename = ''; } $payment_data['processor_params']['certificate_filename'] = $filename; fn_update_payment($payment_data, $payment_method['payment_id']); } } } }
/** * Create/Update payments data * * @param array $payment_data * @param int $payment_id * @param string $lang_code 2-letter language code * @return int Payment id */ function fn_update_payment($payment_data, $payment_id, $lang_code = DESCR_SL) { $certificate_file = fn_filter_uploaded_data('payment_certificate'); $certificates_dir = Registry::get('config.dir.certificates'); fn_set_hook('update_payment_pre', $payment_data, $payment_id, $lang_code, $certificate_file, $certificates_dir); /** * Create/update the certificate file * only for an existing payment method. * * Non-existing payment method will be created first, * then will be updated. (fn_update_payment calling at line 450). */ if ($payment_id) { if ($certificate_file) { $file = reset($certificate_file); $filename = $payment_id . '/' . $file['name']; fn_mkdir($certificates_dir . $payment_id); fn_copy($file['path'], $certificates_dir . $filename); $payment_data['processor_params']['certificate_filename'] = $filename; } $old_params = fn_get_processor_data($payment_id); if (empty($payment_data['processor_params']['certificate_filename']) && isset($old_params['processor_params']['certificate_filename'])) { $payment_data['processor_params']['certificate_filename'] = $old_params['processor_params']['certificate_filename']; } if (!empty($payment_data['processor_params']['certificate_filename'])) { if (!empty($old_params['processor_params']['certificate_filename']) && $payment_data['processor_params']['certificate_filename'] != $old_params['processor_params']['certificate_filename']) { fn_rm($certificates_dir . $old_params['processor_params']['certificate_filename']); } if (!file_exists($certificates_dir . $payment_data['processor_params']['certificate_filename'])) { $payment_data['processor_params']['certificate_filename'] = ''; } } } if (!empty($payment_data['processor_id'])) { $payment_data['template'] = db_get_field("SELECT processor_template FROM ?:payment_processors WHERE processor_id = ?i", $payment_data['processor_id']); } $payment_data['localization'] = !empty($payment_data['localization']) ? fn_implode_localizations($payment_data['localization']) : ''; $payment_data['usergroup_ids'] = empty($payment_data['usergroup_ids']) ? USERGROUP_ALL : (is_array($payment_data['usergroup_ids']) ? implode(',', $payment_data['usergroup_ids']) : $payment_data['usergroup_ids']); $payment_data['tax_ids'] = !empty($payment_data['tax_ids']) ? fn_create_set($payment_data['tax_ids']) : ''; // Update payment processor settings $processor_params = array(); if (!empty($payment_data['processor_params'])) { $processor_params = $payment_data['processor_params']; $payment_data['processor_params'] = serialize($payment_data['processor_params']); } if (!empty($payment_id)) { $arow = db_query("UPDATE ?:payments SET ?u WHERE payment_id = ?i", $payment_data, $payment_id); db_query("UPDATE ?:payment_descriptions SET ?u WHERE payment_id = ?i AND lang_code = ?s", $payment_data, $payment_id, $lang_code); if ($arow === false) { fn_set_notification('E', __('error'), __('object_not_found', array('[object]' => __('payment'))), '', '404'); $payment_id = false; } } else { $payment_data['payment_id'] = $payment_id = db_query("INSERT INTO ?:payments ?e", $payment_data); foreach (fn_get_translation_languages() as $payment_data['lang_code'] => $_v) { db_query("INSERT INTO ?:payment_descriptions ?e", $payment_data); } /** * Update the certificate */ if ($certificate_file && $payment_id) { unset($payment_data['lang_code']); $payment_data['processor_params'] = $processor_params; fn_update_payment($payment_data, $payment_id, $lang_code); } } fn_attach_image_pairs('payment_image', 'payment', $payment_id, $lang_code); fn_set_hook('update_payment_post', $payment_data, $payment_id, $lang_code, $certificate_file, $certificates_dir, $processor_params); return $payment_id; }
if (!empty($_REQUEST['payment_id'])) { $result = fn_delete_payment($_REQUEST['payment_id']); if ($result) { fn_set_notification('N', __('notice'), __('text_payment_have_been_deleted')); } else { fn_set_notification('W', __('warning'), __('text_payment_have_not_been_deleted')); } } } if ($mode == 'delete_certificate') { if (!empty($_REQUEST['payment_id'])) { $payment_data = fn_get_payment_method_data($_REQUEST['payment_id']); if ($payment_data['processor_params']['certificate_filename']) { fn_rm(Registry::get('config.dir.certificates') . $_REQUEST['payment_id']); $payment_data['processor_params']['certificate_filename'] = ''; fn_update_payment($payment_data, $_REQUEST['payment_id']); } } return array(CONTROLLER_STATUS_REDIRECT, 'payments.processor?payment_id=' . $_REQUEST['payment_id']); } return array(CONTROLLER_STATUS_OK, 'payments.manage'); } // If any method is selected - show it's settings if ($mode == 'processor') { $processor_data = fn_get_processor_data($_REQUEST['payment_id']); // We're selecting new processor if (!empty($_REQUEST['processor_id']) && (empty($processor_data['processor_id']) || $processor_data['processor_id'] != $_REQUEST['processor_id'])) { $processor_data = db_get_row("SELECT * FROM ?:payment_processors WHERE processor_id = ?i", $_REQUEST['processor_id']); $processor_data['processor_params'] = array(); $processor_data['currencies'] = !empty($processor_data['currencies']) ? explode(',', $processor_data['currencies']) : array(); }