false)); } } } exit; } else { die('Access denied'); } } if (defined('PAYMENT_NOTIFICATION')) { if ($mode == 'notify') { $order_id = (int) $_REQUEST['order_id']; $order_info = fn_get_order_info($order_id); $processor_data = $order_info['payment_method']; // We are trying to avoid mess with declined and success urls $sign = md5($processor_data['processor_params']['product_id'] . '-' . $order_info['total'] . '-' . $processor_data['processor_params']['sharedsec']); // Because the callback comes only after return we have to make sure that this redirect is successful if (in_array($order_info['status'], array('N', 'D')) || empty($_REQUEST['sign']) || $sign != $_REQUEST['sign']) { $pp_response['order_status'] = 'D'; $pp_response["reason_text"] = __('text_transaction_declined'); fn_finish_payment($order_id, $pp_response, false); } else { // Set open status until callback from chronopay service is recieved if (fn_check_payment_script('chronopay_form.php', $order_id)) { if (isset($order_info['payment_info']['awaiting_callback']) && $order_info['payment_info']['awaiting_callback'] == true) { fn_change_order_status($order_id, 'O', $order_info['status'], false); } } } fn_order_placement_routines('route', $order_id); } } else { if (!defined('BOOTSTRAP')) { die('Access denied'); } $post_url = fn_payment_url('current', 'chronopay_form.php'); $return_url = fn_url("payment_notification.notify?payment=chronopay_form&order_id=$order_id", AREA, 'current'); $country = db_get_field("SELECT code_A3 FROM ?:countries WHERE code = ?s", $order_info['b_country']); $product_name = ""; // Products if (!empty($order_info['products'])) { foreach ($order_info['products'] as $v) { $product_name = $product_name . str_replace(', ', ' ', $v['product']) . ",
\n "; } } // Certificates if (!empty($order_info['gift_certificates'])) { foreach ($order_info['gift_certificates'] as $v) { $product_name = $product_name . str_replace(', ', ' ', $v['gift_cert_code']) . ",
\n "; } } // Shippings if (floatval($order_info['shipping_cost'])) { foreach ($order_info['shipping'] as $v) { $product_name .= str_replace(', ', ' ', $v['shipping']) . ",
\n "; } } $sign = md5($processor_data['processor_params']['product_id'] . '-' . $order_info['total'] . '-' . $processor_data['processor_params']['sharedsec']); fn_update_order_payment_info($order_id, array('awaiting_callback' => true)); $post_data = array( 'product_id' => $processor_data['processor_params']['product_id'], 'product_name' => $product_name, 'product_price' => $order_info['total'], 'order_id' => $order_id, 'cs1' => $order_id, 'language' => CART_LANGUAGE, 'f_name' => $order_info['b_firstname'], 's_name' => $order_info['b_lastname'], 'street' => $order_info['b_address'], 'city' => $order_info['b_city'], 'state' => $order_info['b_state'], 'zip' => $order_info['b_zipcode'], 'country' => $country, 'phone' => $order_info['phone'], 'email' => $order_info['email'], 'cb_url' => $post_url, 'cb_type' => 'P', 'success_url' => fn_link_attach($return_url, "sign={$sign}"), 'decline_url' => $return_url, 'sign' => $sign ); fn_create_payment_form('https://payments.chronopay.com', $post_data, 'ChronoPay'); } exit;