function fn_paypal_complete_checkout($token, $processor_data, $order_info) { $pp_response['order_status'] = 'F'; $reason_text = ''; $paypal_checkout_details = fn_paypal_get_express_checkout_details($processor_data, $token); if (fn_paypal_ack_success($paypal_checkout_details)) { $result = fn_paypal_do_express_checkout($processor_data, $paypal_checkout_details, $order_info); if (fn_paypal_ack_success($result)) { $status = $result['PAYMENTINFO_0_PAYMENTSTATUS']; $pp_response['transaction_id'] = $result['PAYMENTINFO_0_TRANSACTIONID']; if ($status == 'Completed' || $status == 'Processed') { $pp_response['order_status'] = 'O'; $reason_text = 'Accepted, awaiting ipn for processing '; } elseif ($status == 'Pending') { $pp_response['order_status'] = 'O'; $reason_text = 'Pending '; } else { $reason_text = 'Declined '; } $reason_text = fn_paypal_process_add_fields($result, $reason_text); if (!empty($result['L_ERRORCODE0'])) { $reason_text .= ', ' . fn_paypal_get_error($result); } } else { $reason_text = fn_paypal_get_error($result); } } else { $reason_text = fn_paypal_get_error($paypal_checkout_details); } $pp_response['reason_text'] = $reason_text; if (fn_check_payment_script($processor_data['processor_script'], $order_info['order_id'])) { unset($_SESSION['pp_express_details']); fn_finish_payment($order_info['order_id'], $pp_response); fn_order_placement_routines('route', $order_info['order_id'], false); } }
$pp_response['reason_text'] = __('payments.realex.bank_error'); } elseif (floor($realex_response_code / 100) == 3) { // Error with Realex Payments systems – generally you can tell the customer to try again later. // The resolution time depends on the issue. $pp_response['order_status'] = $realex_statuses['realex_error']; $pp_response['reason_text'] = __('payments.realex.realex_error'); } elseif (floor($realex_response_code / 100) == 5) { // Incorrect XML message formation or content. These are either development errors, // configuration errors or customer errors $pp_response['order_status'] = $realex_statuses['incorrect_request']; $pp_response['reason_text'] = __('payments.realex.incorrect_request'); } elseif (floor($realex_response_code / 100) == 6) { // Client deactivated – your Realex account has been suspended. Contact Realex support for further information. $pp_response['order_status'] = $realex_statuses['connector_error']; $pp_response['reason_text'] = __('payments.realex.connector_error'); } fn_finish_payment($_REQUEST['order_id'], $pp_response); if ($realex_response_code == '00') { $result = "<strong>Your transaction was successful</strong><br>To complete your order you must follow the link below.<br> Click <a href='" . fn_url("payment_notification.notify&payment=realex_redirect&order_id={$_REQUEST['order_id']}", AREA, 'current') . "'>here</a> to complete checkout"; } else { $result = "<strong>Your transaction was unsuccessful.</strong><br> There was a problem with your order, please return to the checkout and try again.<br>Click <a href='" . fn_url("payment_notification.cancel&payment=realex_redirect&order_id={$_REQUEST['order_id']}", AREA, 'current') . "'>here</a> to return"; } echo $result; exit; } } elseif ($mode == 'notify') { fn_order_placement_routines('route', $_REQUEST['order_id'], false); } elseif ($mode == 'cancel') { fn_order_placement_routines('checkout_redirect', $_REQUEST['order_id'], false); } }
die('Access denied'); } fn_set_notification('W', __('important'), __('text_transaction_cancelled')); fn_order_placement_routines('route', Tygh::$app['session']['order_id'], false); } elseif ($mode == 'decline') { if (!isset(Tygh::$app['session']['order_id'])) { die('Access denied'); } fn_set_notification('E', '', __('text_order_placed_error')); fn_order_placement_routines('route', Tygh::$app['session']['order_id'], false); } elseif ($mode == 'refer') { if (!isset(Tygh::$app['session']['order_id'])) { die('Access denied'); } fn_set_notification('W', __('important'), $processor_response['REFER']); fn_order_placement_routines('route', Tygh::$app['session']['order_id'], false); } } else { $post_url = $processor_data['processor_params']['mode'] == 'test' ? 'https://test.pay4later.com/credit_app/' : 'https://secure.pay4later.com/credit_app/'; $_order_id = $order_info['repaid'] ? $order_id . '_' . $order_info['repaid'] : $order_id; $order_description = __('order') . " #{$order_id}"; Tygh::$app['session']['order_id'] = $order_id; $post_data = array('Identification[api_key]' => $processor_data['processor_params']['merchant_key'], 'Identification[RetailerUniqueRef]' => $_order_id, 'Identification[InstallationID]' => $processor_data['processor_params']['installation_id'], 'Goods[0][Description]' => $order_description, 'Goods[0][Quantity]' => '1', 'Goods[0][Price]' => $order_info['total'], 'Finance[Code]' => $processor_data['processor_params']['finance_product_code'], 'Finance[Deposit]' => $processor_data['processor_params']['deposit_amount']); fn_create_payment_form($post_url, $post_data, 'Pay4Later'); } exit; function fn_pay4later_order_placement_routines() { Tygh::$app['session']['cart'] = array('user_data' => !empty(Tygh::$app['session']['cart']['user_data']) ? Tygh::$app['session']['cart']['user_data'] : array(), 'profile_id' => !empty(Tygh::$app['session']['cart']['profile_id']) ? Tygh::$app['session']['cart']['profile_id'] : 0, 'user_id' => !empty(Tygh::$app['session']['cart']['user_id']) ? Tygh::$app['session']['cart']['user_id'] : 0); Tygh::$app['session']['shipping_rates'] = array(); unset(Tygh::$app['session']['shipping_hash']);
* * * This is commercial software, only users who have purchased a valid * * license and accept to the terms of the License Agreement can install * * and use this program. * * * **************************************************************************** * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE * * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. * ****************************************************************************/ use Tygh\Registry; if (!defined('BOOTSTRAP')) { die('Access denied'); } if (defined('PAYMENT_NOTIFICATION')) { if ($mode == 'notify') { fn_order_placement_routines('route', $_REQUEST['order_id']); } elseif ($mode == 'process') { $pp_response = array('order_status' => 'F', 'pp_response' => '', 'reason_text' => ''); $order_id = $_REQUEST['order_id']; if (!empty($_REQUEST['payment_number'])) { $pp_response['transaction_id'] = $_REQUEST['payment_number']; $conf_key = db_get_field("SELECT data FROM ?:order_data WHERE type = 'E' AND order_id = ?i", $order_id); if (empty($conf_key) || $conf_key != $_REQUEST['conf_key']) { $pp_response['reason_text'] .= 'Confirmation key does not match; '; } else { db_query("DELETE FROM ?:order_data WHERE type = 'E' AND order_id = ?i", $order_id); $pp_response['order_status'] = 'P'; } } else { $pp_response['reason_text'] .= 'Payment number is empty; '; }
exit; } } elseif (defined('PAYMENT_NOTIFICATION')) { if (!defined('BOOTSTRAP')) { die('Access denied'); } if ($mode == 'process') { $order_id = intval($_REQUEST['ref']); fn_order_placement_routines('route', $order_id, false); } elseif ($mode == 'cancel') { $params = array(); parse_str(base64_decode($_REQUEST['divers']), $params); $pp_response['order_status'] = 'N'; $pp_response['reason_text'] = __('text_transaction_cancelled'); fn_finish_payment($params['order_id'], $pp_response, false); fn_order_placement_routines('route', $params['order_id'], false); } } else { if (!defined('BOOTSTRAP')) { die('Access denied'); } // Params $url = array('psc' => 'https://billing.paysite-cash.biz', 'ep' => 'https://secure.easy-pay.net'); $site_id = $processor_data['processor_params']['site_id']; $currency = $processor_data['processor_params']['currency']; $processor = $processor_data['processor_params']['processor']; $test = $processor_data['processor_params']['mode']; $debug = $processor_data['processor_params']['debug']; $nocurrencies = $processor_data['processor_params']['nocurrencies']; $order_id = $order_info['order_id']; $email = $order_info['email'];
exit; } elseif ($mode == 'auth' && !empty(Tygh::$app['session']['cmpi']['order_id'])) { $view = Tygh::$app['view']; $view->assign('order_action', __('placing_order')); $view->display('views/orders/components/placing_order.tpl'); fn_flush(); fn_cmpi_authenticate(); if (Tygh::$app['session']['cmpi']['signature'] == 'Y' && in_array(Tygh::$app['session']['cmpi']['pares'], array('Y', 'A', 'U'))) { define('DO_DIRECT_PAYMENT', true); } else { Tygh::$app['session']['cmpi']['auth_error'] = true; fn_set_notification('E', __('authentication_failed'), __('text_authentication_failed_message')); } define('CMPI_PROCESSED', true); fn_start_payment(Tygh::$app['session']['cmpi']['order_id']); fn_order_placement_routines('route', Tygh::$app['session']['cmpi']['order_id']); exit; } } /** * Make cmpi_lookup request to 3-D Secure sevice provider * * @param array $processor_data Payment processor data * @param array $order_info Order information * @return boolean true */ function fn_cmpi_lookup($processor_data, $order_info, $mode = '') { unset(Tygh::$app['session']['cmpi']); $amount = preg_replace('/\\D/', '', $order_info['total']); // array with ISO codes of currencies. //TODO: move to database.
} } else { $pp_response['order_status'] = 'P'; } fn_finish_payment($order_id, $pp_response); exit; } elseif ($mode == 'finish') { $order_info = fn_get_order_info($order_id); if ($order_info['status'] == 'O') { $pp_response = array(); $pp_response['order_status'] = 'F'; $pp_response['reason_text'] = fn_get_lang_var('merchant_response_was_not_received'); $pp_response['transaction_id'] = ''; fn_finish_payment($order_id, $pp_response); } fn_order_placement_routines($order_id, false); } } } else { $current_location = Registry::get('config.current_location'); $lang_code = CART_LANGUAGE == 'TH' ? 'TH' : 'EN'; $sess = '&' . SESS_NAME . '=' . Session::get_id(); $_SESSION['thaiepay_refno'] = $order_id; echo <<<EOT <html> <body onLoad="document.process.submit();"> <form method="post" action="https://www.thaiepay.com/epaylink/payment.aspx" name="process"> \t<input type="hidden" name="refno" value="{$order_id}"> \t<input type="hidden" name="merchantid" value="{$processor_data['params']['merchantid']}"> \t<input type="hidden" name="customeremail" value="{$order_info['email']}"> \t<input type="hidden" name="productdetail" value="{$processor_data['params']['details']}">
exit; } elseif ($mode == 'auth' && !empty($_SESSION['cmpi']['order_id'])) { $view = Tygh::$app['view']; $view->assign('order_action', __('placing_order')); $view->display('views/orders/components/placing_order.tpl'); fn_flush(); fn_cmpi_authenticate(); if ($_SESSION['cmpi']['signature'] == 'Y' && in_array($_SESSION['cmpi']['pares'], array('Y', 'A', 'U'))) { define('DO_DIRECT_PAYMENT', true); } else { $_SESSION['cmpi']['auth_error'] = true; fn_set_notification('E', __('authentication_failed'), __('text_authentication_failed_message')); } define('CMPI_PROCESSED', true); fn_start_payment($_SESSION['cmpi']['order_id']); fn_order_placement_routines('route', $_SESSION['cmpi']['order_id']); exit; } } /** * Make cmpi_lookup request to 3-D Secure sevice provider * * @param array $processor_data Payment processor data * @param array $order_info Order information * @return boolean true */ function fn_cmpi_lookup($processor_data, $order_info, $mode = '') { unset($_SESSION['cmpi']); $amount = preg_replace('/\\D/', '', $order_info['total']); // array with ISO codes of currencies. //TODO: move to database.
break; } } } else { $error = true; } } else { $error = true; } if ($error) { fn_set_notification('E', __('error'), __('error_status_not_changed')); } } } } fn_order_placement_routines($action, $order_id, $notification_rules, true); } else { return array(CONTROLLER_STATUS_REDIRECT, "order_management.{$_suffix}"); } } return array(CONTROLLER_STATUS_OK, "order_management.{$_suffix}"); } if ($mode == 'customer_info') { if (!empty($_REQUEST['profile_id'])) { $user_data = fn_get_user_info($customer_auth['user_id'], true, $_REQUEST['profile_id']); Registry::get('view')->assign('user_data', $user_data); } return array(CONTROLLER_STATUS_OK, "order_management.{$_suffix}"); } // Delete discount coupon if ($mode == 'delete_coupon') {
$pp_response['order_status'] = 'P'; $pp_response['transaction_id'] = $process->getPaymentId(); $pp_response['reason_text'] = __("rus_payments.yandex_money_payer") . ": " . $process->getPayer() . "; " . __("rus_payments.yandex_money_payee") . ": " . $process->getPayee(); } else { $pp_response['reason_text'] = __("rus_payments.yandex_money_" . $process->getError()); } } else { if ($request->getError() == 'ext_action_required') { $pp_response['reason_text'] = __("rus_payments.yandex_money_" . $request->getError(), array("[ext_action_uri]" => $request->getExtActionUri())); } else { $pp_response['reason_text'] = __("rus_payments.yandex_money_" . $request->getError()); } } } else { $pp_response['reason_text'] = __("rus_payments.yandex_money_" . $receiveTokenResp->getError()); } fn_finish_payment($order_info['order_id'], $pp_response); } fn_order_placement_routines('route', $order_info['order_id'], false); } } else { $scope = "payment.to-account(\"" . $processor_data['processor_params']['payee_id'] . "\",\"account\").limit(," . $order_info['total'] . ")"; $redirect_url = fn_url("payment_notification.process?payment=yandex_p2p&order_id=" . $order_info['order_id']); $authUri = Client::authorizeUri($processor_data['processor_params']['client_id'], $redirect_url, $scope); fn_create_payment_form($authUri, array(), 'Yandex.P2P', false); } function fn_yandex_money_is_test_mode($processor_data) { return !empty($processor_data['processor_params']['test_mode']) && $processor_data['processor_params']['test_mode'] == 'Y'; } exit;
exit; } elseif ($mode == 'result') { if (fn_check_payment_script('ogone_web.php', $_REQUEST['order_id'])) { $order_info = fn_get_order_info($_REQUEST['order_id'], true); if ($order_info['status'] == 'N') { fn_change_order_status($_REQUEST['order_id'], 'O', '', false); } } fn_order_placement_routines($_REQUEST['order_id'], false); } elseif ($mode == 'cancel') { if (fn_check_payment_script('ogone_web.php', $_REQUEST['order_id'])) { $pp_response = array(); $pp_response['order_status'] = 'N'; $pp_response['reason_text'] = fn_get_lang_var('text_transaction_cancelled'); fn_finish_payment($_REQUEST['order_id'], $pp_response); fn_order_placement_routines($_REQUEST['order_id'], false); } } } else { $pp_merch = $processor_data['params']['pspid']; $pp_secret = $processor_data['params']['sha_sign']; $pp_curr = $processor_data['params']['currency']; $pp_test = $processor_data['params']['mode'] == 'test' ? "https://secure.ogone.com:443/ncol/test/orderstandard.asp" : "https://secure.ogone.com:443/ncol/prod/orderstandard.asp"; $ordr = $order_id . '_' . fn_date_format(time(), '%H:%M:%S'); $ordr = $order_info['repaid'] ? $ordr . '_' . $order_info['repaid'] : $ordr; $langs = array("EN" => "en_US", "FR" => "fr_FR", "NL" => "nl_NL", "IT" => "it_IT", "DE" => "de_DE", "ES" => "es_ES", "NO" => "no_NO"); $post = array(); $post["amount"] = 100 * $order_info["total"]; $post["email"] = trim(substr($order_info['email'], 0, 50)); $post["owneraddress"] = trim(substr(trim($order_info['b_address'] . (!empty($order_info['b_address_2']) ? " ; " . $order_info['b_address_2'] : '')), 0, 35)); $post["ownertown"] = trim(substr($order_info['b_city'], 0, 25));
* and use this program. * * * **************************************************************************** * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE * * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. * ****************************************************************************/ // // $Id: google_checkout.php 10329 2010-08-03 14:46:04Z klerik $ // if (!defined('AREA')) { die('Access denied'); } $index_script = Registry::get('customer_index'); if (defined('PAYMENT_NOTIFICATION')) { if (!empty($_SESSION['order_id'])) { fn_order_placement_routines($_SESSION['order_id']); } else { fn_set_notification('E', fn_get_lang_var('error'), fn_get_lang_var('order_was_not_placed')); fn_redirect(Registry::get('config.http_location') . "/{$index_script}?dispatch=checkout.cart"); } } elseif (!empty($_payment_id) && !fn_cart_is_empty($cart) && $processor_data['params']['policy_agreement'] == 'Y') { $return_url = Registry::get('config.current_location') . "/{$index_script}?dispatch=payment_notification.notify&payment=google_checkout&" . SESS_NAME . '=' . Session::get_id(); $edit_cart_url = Registry::get('config.current_location') . "/{$index_script}?dispatch=checkout.cart"; $calculation_url = ($processor_data["params"]["test"] == 'N' ? Registry::get('config.https_location') : Registry::get('config.current_location')) . "/payments/google_calculations.php"; $_currency = $processor_data['params']['currency']; $base_domain = 'https://' . ($processor_data['params']['test'] == 'N' ? 'checkout.google.com' : 'sandbox.google.com/checkout'); $base_url = $base_domain . '/cws/v2/Merchant/' . $processor_data['params']['merchant_id']; $checkout_url = $base_url . '/checkout'; $request_url = $base_url . '/request'; // Form XML array with cart items $_items = '';
$params = fn_payway_decrypt_parameters($processor_data['params']['encryption_key'], $_REQUEST['EncryptedParameters'], $_REQUEST['Signature']); if (!empty($params)) { $status = db_get_field("SELECT status FROM ?:orders WHERE order_id = ?i", $params['payment_reference']); if ($status == 'O') { if (!empty($params['bank_reference'])) { $pp_response["order_status"] = 'P'; $pp_response["reason_text"] = "Authorization code: " . $params['bank_reference']; } else { $pp_response["order_status"] = 'F'; } $pp_response['transaction_id'] = $params['payment_number']; if (fn_check_payment_script('westpac.php', $params['payment_reference'])) { fn_finish_payment($params['payment_reference'], $pp_response, false); } } fn_order_placement_routines($params['payment_reference']); } } exit; } else { $merchant_id = $processor_data['params']['mode'] == 'test' ? 'TEST' : $processor_data['params']['merchant_id']; $biller_code = $processor_data['params']['biller_code']; echo <<<EOT <html> <body onLoad="javascript: document.process.submit();"> <form method="post" action="https://www.payway.com.au/MakePayment" name="process"> \t<input type="hidden" name="merchant_id" value="{$merchant_id}"> \t<input type="hidden" name="biller_code" value="{$biller_code}"> EOT; // Products
function fn_manageState($state, $idstate, $mode, $orderId, $payNLTransactionID, $processor_data) { switch ($state) { case 'PENDING': if ($mode == 'exchange') { echo 'TRUE| state:PENDING, orderId:' . $orderId . ', transactionId:' . $payNLTransactionID . ',idState:' . $idstate . ', service_id:' . $processor_data['processor_params']['service_id'] . ',token_api:' . $processor_data['processor_params']['token_api'] . ',statuses:' . print_r($processor_data['processor_params']['statuses'], true); } else { fn_order_placement_routines('route', $orderId); } die; break; case 'PAID': $payData = fn_paynl_getInfo($payNLTransactionID, $processor_data); $pp_response = array('order_status' => $idstate, 'naam' => $payData['paymentDetails']['identifierName'], 'rekening' => $payData['paymentDetails']['identifierPublic']); if ($mode == 'exchange') { echo 'TRUE| orderId=' . $orderId . ', transactionId=' . $payNLTransactionID . ',idState:' . $idstate . ', service_id:' . $processor_data['processor_params']['service_id'] . ',token_api:' . $processor_data['processor_params']['token_api'] . ',statuses:' . print_r($processor_data['processor_params']['statuses'], true); fn_finish_payment($orderId, $pp_response, true); fn_updatePayTransaction($payNLTransactionID, 'PAID'); die; } else { fn_order_placement_routines('route', $orderId); } break; case 'CANCEL': if ($mode == 'exchange') { echo 'TRUE| CANCEL orderId=' . $orderId . ', transactionId=' . $payNLTransactionID . ',idState:' . $idstate . ', service_id:' . $processor_data['processor_params']['service_id'] . ',token_api:' . $processor_data['processor_params']['token_api'] . ',statuses:' . print_r($processor_data['processor_params']['statuses'], true); fn_updatePayTransaction($payNLTransactionID, 'CANCEL'); die; } else { fn_updatePayTransaction($payNLTransactionID, 'CANCEL'); fn_change_order_status($orderId, $idstate, '', false); fn_order_placement_routines('route', $orderId); } break; case 'CHECKAMOUNT': if ($mode == 'exchange') { echo 'TRUE| CHECKAMOUNT orderId=' . $orderId . ', transactionId=' . $payNLTransactionID . ',idState:' . $idstate . ', service_id:' . $processor_data['processor_params']['service_id'] . ',token_api:' . $processor_data['processor_params']['token_api'] . ',statuses:' . print_r($processor_data['processor_params']['statuses'], true); fn_updatePayTransaction($payNLTransactionID, 'CHECKAMOUNT'); die; } else { fn_updatePayTransaction($payNLTransactionID, 'CHECKAMOUNT'); fn_change_order_status($orderId, $idstate, '', false); fn_order_placement_routines('route', $orderId, false); } break; default: $pp_response['order_status'] = $processor_data['processor_params']['statuses'][$state]; fn_updatePayTransaction($payNLTransactionID, 'PENDING'); fn_change_order_status($orderId, $pp_response['order_status'], '', false); break; } }
/** * Ends 3DSecure transaction. * This method is called after bank ACS redirects user back to merchant site. * * @return array Payment processor response */ protected function end3DSecureTransaction() { $verifysig_response = simplexml_load_string($this->send3DSecureVerifySignatureRequest($_REQUEST['PaRes'])); $verifysig_result = (string) $verifysig_response->result; $verifysig_3dsecure_status = (string) $verifysig_response->threedsecure->status; $success_payment = false; $mpi_data = array('cavv' => (string) $verifysig_response->threedsecure->cavv, 'xid' => (string) $verifysig_response->threedsecure->xid, 'eci' => (string) $verifysig_response->threedsecure->eci); // Successful authentication if ($verifysig_result == '00' && $verifysig_3dsecure_status == 'Y') { $this->response['payments.realex.3d_secure_message'] = '3DS Verifysig request: Authentication successful'; $success_payment = $this->authorizeTransaction(self::TRANSACTION_FULL_3DSECURE, $mpi_data); } elseif ($verifysig_result == '00' && $verifysig_3dsecure_status == 'A') { $this->response['payments.realex.3d_secure_message'] = '3DS Verifysig request: Cardholder not Enrolled or Authentication Attempt Acknowledged'; $success_payment = $this->authorizeTransaction(self::TRANSACTION_MERCHANT_3DSECURE, $mpi_data); } elseif ($verifysig_result == '00' && $verifysig_3dsecure_status == 'U' && ($this->response['payments.realex.3d_secure_message'] = '3DS Verifysig request: Authentication Unavailable') || $verifysig_result == '00' && $verifysig_3dsecure_status == 'N' && ($this->response['payments.realex.3d_secure_message'] = '3DS Verifysig request: Incorrect Password') || $verifysig_result >= 500 && $verifysig_result < 600 && ($this->response['payments.realex.3d_secure_message'] = '3DS Verifysig request: Invalid response from ACS')) { if (!$this->getIsLiabilityShiftRequired()) { $success_payment = $this->authorizeTransaction(self::TRANSACTION_NON_3DSECURE, $mpi_data); } } elseif ($verifysig_result == '110') { $this->response['payments.realex.3d_secure_message'] = '3DS Verifysig request: Enrolled but Invalid Response from ACS'; } fn_finish_payment($this->order_info['order_id'], $this->response); if ($success_payment) { fn_order_placement_routines('route', $this->order_info['order_id'], false); } else { fn_set_notification('E', false, "Your transaction was unsuccessful. There was a problem with your order, please try again or contact the store administrator."); fn_order_placement_routines('checkout_redirect', $this->order_info['order_id'], false); } }
die('Access denied'); } fn_set_notification('W', __('important'), __('text_transaction_cancelled')); fn_order_placement_routines('route', $_SESSION['order_id'], false); } elseif ($mode == 'decline') { if (!isset($_SESSION['order_id'])) { die('Access denied'); } fn_set_notification('E', '', __('text_order_placed_error')); fn_order_placement_routines('route', $_SESSION['order_id'], false); } elseif ($mode == 'refer') { if (!isset($_SESSION['order_id'])) { die('Access denied'); } fn_set_notification('W', __('important'), $processor_response['REFER']); fn_order_placement_routines('route', $_SESSION['order_id'], false); } } else { $post_url = $processor_data['processor_params']['mode'] == 'test' ? 'https://test.pay4later.com/credit_app/' : 'https://secure.pay4later.com/credit_app/'; $_order_id = $order_info['repaid'] ? $order_id . '_' . $order_info['repaid'] : $order_id; $order_description = __('order') . " #{$order_id}"; $_SESSION['order_id'] = $order_id; $post_data = array('Identification[api_key]' => $processor_data['processor_params']['merchant_key'], 'Identification[RetailerUniqueRef]' => $_order_id, 'Identification[InstallationID]' => $processor_data['processor_params']['installation_id'], 'Goods[0][Description]' => $order_description, 'Goods[0][Quantity]' => '1', 'Goods[0][Price]' => $order_info['total'], 'Finance[Code]' => $processor_data['processor_params']['finance_product_code'], 'Finance[Deposit]' => $processor_data['processor_params']['deposit_amount']); fn_create_payment_form($post_url, $post_data, 'Pay4Later'); } exit; function fn_pay4later_order_placement_routines() { $_SESSION['cart'] = array('user_data' => !empty($_SESSION['cart']['user_data']) ? $_SESSION['cart']['user_data'] : array(), 'profile_id' => !empty($_SESSION['cart']['profile_id']) ? $_SESSION['cart']['profile_id'] : 0, 'user_id' => !empty($_SESSION['cart']['user_id']) ? $_SESSION['cart']['user_id'] : 0); $_SESSION['shipping_rates'] = array(); unset($_SESSION['shipping_hash']);
fn_paypal_get_error($paypal_checkout_details); } fn_order_placement_routines('checkout_redirect'); } elseif ($mode == 'express') { Tygh::$app['session']['cart'] = empty(Tygh::$app['session']['cart']) ? array() : Tygh::$app['session']['cart']; $payment_id = empty($_REQUEST['payment_id']) ? Tygh::$app['session']['cart']['payment_id'] : $_REQUEST['payment_id']; $is_in_context_order = isset($_REQUEST['in_context_order']) && isset($_REQUEST['in_context']); $result = fn_paypal_set_express_checkout($payment_id, 0, array(), Tygh::$app['session']['cart'], AREA, $is_in_context_order); $useraction = 'continue'; $processor_data = fn_get_payment_method_data($payment_id); $in_context_checkout = $processor_data['processor_params']['in_context'] == 'Y'; if (fn_paypal_ack_success($result) && !empty($result['TOKEN'])) { if ($in_context_checkout && isset($_REQUEST['in_context'])) { header('Content-type: application/json'); echo json_encode(array('token' => $result['TOKEN'])); exit; } else { fn_paypal_payment_form($processor_data, $result['TOKEN']); } } else { // create notification fn_paypal_get_error($result); if ($in_context_checkout && isset($_REQUEST['in_context'])) { header('Content-type: application/json'); echo json_encode(array('error' => true)); exit; } else { fn_order_placement_routines('checkout.cart'); } } }
$processor_data = fn_get_payment_method_data($order_info['payment_id']); $pp_response["transaction_id"] = $_REQUEST['brq_transactions']; $pp_response["reason_text"] = urldecode($_REQUEST['brq_statusmessage']); $_REQUEST['brq_websitekey'] = $processor_data['processor_params']['merchant_id']; $_signature = fn_buckaroo_calculate_signature($_REQUEST, $processor_data["processor_params"]["merchant_key"]); if (in_array($_REQUEST['brq_statuscode'], array('190')) && $_REQUEST['brq_signature'] == $_signature) { $pp_response['order_status'] = 'P'; } elseif (in_array($_REQUEST['brq_statuscode'], array('791', '492'))) { $pp_response['order_status'] = 'O'; // still waiting for the response } else { $pp_response['order_status'] = 'F'; } fn_finish_payment($_REQUEST['brq_invoicenumber'], $pp_response, false); $route = $order_info['repaid'] ? 'repay' : 'route'; fn_order_placement_routines($route, $_REQUEST['brq_invoicenumber']); } } else { $currency_coefficient = Registry::get('currencies.' . CART_SECONDARY_CURRENCY . '.coefficient'); $_order_total = !empty($currency_coefficient) ? $order_info['total'] / floatval($currency_coefficient) : $order_info['total']; $return_url = fn_url("payment_notification.notify?payment=ideal_xml", AREA, 'current'); $params = array('brq_websitekey' => $processor_data['processor_params']['merchant_id'], 'brq_amount' => $_order_total, 'brq_culture' => CART_LANGUAGE, 'brq_currency' => CART_SECONDARY_CURRENCY, 'brq_invoicenumber' => $order_id, 'brq_description' => $processor_data['processor_params']['description'], 'brq_return' => $return_url, 'brq_returnreject' => $return_url, 'brq_returnerror' => $return_url, 'brq_returncancel' => $return_url); $params['brq_signature'] = fn_buckaroo_calculate_signature($params, $processor_data['processor_params']['merchant_key']); $post_url = empty($processor_data['processor_params']['test']) ? "https://checkout.buckaroo.nl/html/" : "https://testcheckout.buckaroo.nl/html/"; fn_create_payment_form($post_url, $params, 'Buckaroo server', false); exit; } function fn_buckaroo_calculate_signature($params, $secret_key) { unset($params['brq_signature']); unset($params['dispatch']);
$avs = $processor_data['params']['avs'] == '1' ? true : false; $cvv = $order_info['payment_info']['cvv2']; require_once 'worldnettps_files/worldnet_tps_xml.php'; $sale = new XmlAuthRequest($processor_data['params']['terminal_id'], $_order_id, $processor_data['params']['currency'], $order_info['total'], $order_info['email'] . " " . $_order_id, $order_info['email'], $order_info['payment_info']['card_number'], $card_type, $expiry_date, $order_info['payment_info']['cardholder_name']); if ($cvv != "") { $sale->SetCvv($cvv); } if ($avs) { $address1 = $order_info['b_address']; $address2 = $order_info['b_city'] . $order_info['b_state']; $postcode = $order_info['b_zipcode']; $sale->SetAvs($address1, $address2, $postcode); } // Perform Auth $response = $sale->ProcessRequest($processor_data['params']['shared_secret'], false, true); // Verify response hash $hash = md5($processor_data['params']['terminal_id'] . $_order_id . $order_info['total'] . $response->DateTime() . $response->ResponseCode() . $response->ResponseText() . $processor_data['params']['shared_secret']); $pp_response = array(); if ($response->Hash() != $hash) { $pp_response['order_status'] = "D"; $pp_response["reason_text"] = fn_get_lang_var('worldnettps_hash_error'); } elseif ($response->IsError()) { $pp_response['order_status'] = "D"; $pp_response["reason_text"] = $response->ErrorString(); } else { $pp_response['order_status'] = $response->ResponseCode() == "A" ? "P" : "D"; $pp_response["reason_text"] = $response->ResponseText(); } fn_finish_payment($order_id, $pp_response, false); fn_order_placement_routines($order_info['order_id']);
} } else { $pp_response['order_status'] = 'P'; } fn_finish_payment($order_id, $pp_response); exit; } elseif ($mode == 'finish') { $order_info = fn_get_order_info($order_id); if ($order_info['status'] == 'O') { $pp_response = array(); $pp_response['order_status'] = 'F'; $pp_response['reason_text'] = __('merchant_response_was_not_received'); $pp_response['transaction_id'] = ''; fn_finish_payment($order_id, $pp_response); } fn_order_placement_routines('route', $order_id, false); } } } else { $current_location = Registry::get('config.current_location'); $lang_code = CART_LANGUAGE == 'th' ? 'TH' : 'EN'; $sess = '&' . Session::getName() . '=' . Session::getId(); $_SESSION['thaiepay_refno'] = $order_id; $return_url = fn_url("payment_notification.finish?payment=thaiepay&refno={$order_id}{$sess}", AREA, 'current'); echo <<<EOT <form method="post" action="https://www.thaiepay.com/epaylink/payment.aspx" name="process"> <input type="hidden" name="refno" value="{$order_id}"> <input type="hidden" name="merchantid" value="{$processor_data['processor_params']['merchantid']}"> <input type="hidden" name="customeremail" value="{$order_info['email']}"> <input type="hidden" name="productdetail" value="{$processor_data['processor_params']['details']}"> <input type="hidden" name="total" value="{$order_info['total']}">
} else { if (fn_allowed_for('MULTIVENDOR') && fn_take_payment_surcharge_from_vendor($order_info['products'])) { $update_order['total'] = fn_format_price($order_info['total']); } else { $update_order['total'] = fn_format_price($order_info['total'] - $order_info['payment_surcharge']); } $update_order['payment_surcharge'] = 0; } fn_set_hook('repay_order', $order_info, $update_order, $payment, $payment_info); db_query('UPDATE ?:orders SET ?u WHERE order_id = ?i', $update_order, $_REQUEST['order_id']); // Change order status back to Open and restore amount. fn_change_order_status($order_info['order_id'], STATUSES_ORDER, $order_info['status'], fn_get_notification_rules(array(), false)); $_SESSION['cart']['placement_action'] = 'repay'; // Process order (payment) fn_start_payment($order_info['order_id'], array(), $payment_info); fn_order_placement_routines('repay', $order_info['order_id'], array(), true); } return array(CONTROLLER_STATUS_OK, 'orders.details?order_id=' . $_REQUEST['order_id']); } fn_add_breadcrumb(__('orders'), $mode == 'search' ? '' : "orders.search"); // // Show invoice // if ($mode == 'invoice') { fn_add_breadcrumb(__('order') . ' #' . $_REQUEST['order_id'], "orders.details?order_id={$_REQUEST['order_id']}"); fn_add_breadcrumb(__('invoice')); Registry::get('view')->assign('order_info', fn_get_order_info($_REQUEST['order_id'])); // // Show invoice on separate page // } elseif ($mode == 'print_invoice') {
if (!fn_check_payment_script('itransact_split_form.php', $order_id, $processor_data)) { exit; } $order_info = fn_get_order_info($order_id); $pp_response = array(); $check_cntrl = md5('CNTRL_VALUE' . $order_id . $processor_data['params']['merchant_name'] . $order_info['total'] . $processor_data['params']['secret_key']); if (!empty($_REQUEST['xid']) && preg_match("/\\d+/", $_REQUEST['xid']) && $check_cntrl == $_REQUEST['cntrl']) { $pp_response['order_status'] = 'P'; $pp_response['reason_text'] = fn_get_lang_var('transaction_approved'); $pp_response['transaction_id'] = $_REQUEST['xid']; } else { $pp_response['order_status'] = 'F'; $pp_response['reason_text'] = fn_get_lang_var('transaction_declined'); } fn_finish_payment($order_id, $pp_response); fn_order_placement_routines($order_id); exit; } else { $post = array(); $post['vendor_id'] = $processor_data['params']['vendor_id']; $post['mername'] = $processor_data['params']['merchant_name']; $post['cntrl'] = md5('CNTRL_VALUE' . $order_id . $post['mername'] . $order_info['total'] . $processor_data['params']['secret_key']); $images = array('visaimage', 'mcimage', 'ameximage', 'discimage', 'dinerimage'); foreach ($images as $im) { $post[$im] = 1; } $current_location = Registry::get('config.current_location'); $post['ret_addr'] = "{$current_location}/{$index_script}?dispatch=payment_notification.notify&payment=itransact_split_form&order_id={$order_id}"; // filling order cost $post['item_1_desc'] = fn_get_lang_var('order_id') . ': ' . $processor_data['params']['order_prefix'] . $order_id . ($order_info['repaid'] ? "_{$order_info['repaid']}" : ''); $post['item_1_cost'] = $order_info['total'];
* * **************************************************************************** * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE * * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. * ****************************************************************************/ if (!defined('BOOTSTRAP')) { die('Access denied'); } if ($_SERVER['REQUEST_METHOD'] == 'POST') { if ($mode == 'process_embedded') { if (!empty($_REQUEST['data'])) { $data = json_decode($_REQUEST['data'], true); if (!empty($data)) { fn_create_payment_form($data['submit_url'], $data['data'], $data['payment_name'], $data['exclude_empty_values'], $data['method']); } } exit; } } if (!empty($_REQUEST['payment'])) { define('PAYMENT_NOTIFICATION', true); $payment = fn_basename($_REQUEST['payment']); if (fn_check_prosessor_status($payment)) { $payment_script = fn_get_processor_script_path($payment . '.php'); if (in_array($mode, array('checkout_redirect', 'index_redirect'))) { fn_order_placement_routines($mode); } elseif (is_file($payment_script)) { include $payment_script; } } }
} fn_order_placement_routines('checkout_redirect'); } elseif ($mode == 'place_order' && !empty($_SESSION['pp_express_details'])) { fn_pp_save_mode($order_info); $token = $_SESSION['pp_express_details']['token']; fn_paypal_complete_checkout($token, $processor_data, $order_info); } elseif ($mode == 'place_order' || $mode == 'express' || $mode == 'repay') { if (!defined('BOOTSTRAP')) { require './init_payment.php'; $_SESSION['cart'] = empty($_SESSION['cart']) ? array() : $_SESSION['cart']; } $payment_id = empty($_REQUEST['payment_id']) ? $_SESSION['cart']['payment_id'] : $_REQUEST['payment_id']; if ($mode == 'express') { $result = fn_paypal_set_express_checkout($payment_id, 0, array(), $_SESSION['cart']); $useraction = 'continue'; } else { $result = fn_paypal_set_express_checkout($payment_id, $order_id, $order_info); $useraction = "commit"; } if (fn_paypal_ack_success($result) && !empty($result['TOKEN'])) { $processor_data = fn_get_payment_method_data($payment_id); fn_paypal_payment_form($processor_data, $result['TOKEN']); } else { fn_paypal_get_error($result); if ($mode == 'express') { fn_order_placement_routines('checkout.cart'); } else { fn_order_placement_routines('checkout_redirect'); } } }
/** * Place order handler * * @param array $cart Cart * @param array $auth Auth * @param array $params Params * @return str */ function fn_checkout_place_order(&$cart, &$auth, $params) { // Prevent unauthorized access if (empty($cart['user_data']['email'])) { return PLACE_ORDER_STATUS_DENIED; } // Prevent using disabled payment method by challenging HTTP data if (!empty($params['payment_id'])) { $cart['payment_id'] = $params['payment_id']; } if (isset($cart['payment_id'])) { $payment_method_data = fn_get_payment_method_data($cart['payment_id']); if (!empty($payment_method_data['status']) && $payment_method_data['status'] != 'A') { return PLACE_ORDER_STATUS_DENIED; } } // Remove previous failed order if (!empty($cart['failed_order_id']) || !empty($cart['processed_order_id'])) { $_order_ids = !empty($cart['failed_order_id']) ? $cart['failed_order_id'] : $cart['processed_order_id']; foreach ($_order_ids as $_order_id) { fn_delete_order($_order_id); } $cart['rewrite_order_id'] = $_order_ids; unset($cart['failed_order_id'], $cart['processed_order_id']); } if (!empty($params['payment_info'])) { $cart['payment_info'] = $params['payment_info']; } else { $cart['payment_info'] = array(); } if (empty($params['payment_info']) && !empty($cart['extra_payment_info'])) { $cart['payment_info'] = empty($cart['payment_info']) ? array() : $cart['payment_info']; $cart['payment_info'] = array_merge($cart['extra_payment_info'], $cart['payment_info']); } unset($cart['payment_info']['secure_card_number']); if (!empty($cart['products'])) { foreach ($cart['products'] as $cart_id => $product) { $_is_edp = db_get_field("SELECT is_edp FROM ?:products WHERE product_id = ?i", $product['product_id']); if (fn_check_amount_in_stock($product['product_id'], $product['amount'], empty($product['product_options']) ? array() : $product['product_options'], $cart_id, $_is_edp, 0, $cart) == false) { fn_delete_cart_product($cart, $cart_id); return PLACE_ORDER_STATUS_TO_CART; } if (!fn_allowed_for('ULTIMATE:FREE')) { $exceptions = fn_get_product_exceptions($product['product_id'], true); if (!isset($product['options_type']) || !isset($product['exceptions_type'])) { $product = array_merge($product, db_get_row('SELECT options_type, exceptions_type FROM ?:products WHERE product_id = ?i', $product['product_id'])); } if (!fn_is_allowed_options_exceptions($exceptions, $product['product_options'], $product['options_type'], $product['exceptions_type'])) { fn_set_notification('E', __('notice'), __('product_options_forbidden_combination', array('[product]' => $product['product']))); fn_delete_cart_product($cart, $cart_id); return PLACE_ORDER_STATUS_TO_CART; } if (!fn_is_allowed_options($product)) { fn_set_notification('E', __('notice'), __('product_disabled_options', array('[product]' => $product['product']))); fn_delete_cart_product($cart, $cart_id); return PLACE_ORDER_STATUS_TO_CART; } } } } list($order_id, $process_payment) = fn_place_order($cart, $auth); // Clean up saved shipping rates unset($_SESSION['product_groups']); if (!empty($order_id)) { if (empty($params['skip_payment']) && $process_payment == true || !empty($params['skip_payment']) && empty($auth['act_as_user'])) { // administrator, logged in as customer can skip payment $payment_info = !empty($cart['payment_info']) ? $cart['payment_info'] : array(); fn_start_payment($order_id, array(), $payment_info); } fn_order_placement_routines('route', $order_id); return PLACE_ORDER_STATUS_OK; } else { return PLACE_ORDER_STATUS_TO_CART; } }
exit; } else { Tygh::$app['session']['reference_id'] = $reference_id; } $_order_id = db_get_field('SELECT order_id FROM ?:order_data WHERE type = ?s AND data = ?s', 'E', $transaction_id); if (!empty($_order_id)) { exit; } Tygh::$app['session']['order_id'] = empty(Tygh::$app['session']['order_id']) ? array() : Tygh::$app['session']['order_id']; $order_id =& Tygh::$app['session']['order_id']; $order_id = fn_prepare_to_place_order($xml, $cart, $auth); $pp_response = array('transaction_id' => $transaction_id); $data = array('order_id' => $order_id, 'type' => 'E', 'data' => $transaction_id); db_query("REPLACE INTO ?:order_data ?e", $data); fn_update_order_payment_info($order_id, $pp_response); fn_order_placement_routines('route', $order_id); } elseif ($message_recognizer == 'OrderCancelledNotification') { // Customer cancel this order on the Amazon side. We need to cancel the order in the shop list($amazon_sess_id, $payment_id) = explode(';', base64_decode((string) $xml->ProcessedOrder->ProcessedOrderItems->ProcessedOrderItem->CartCustomData->ClientRequestId)); $processor_data = fn_get_payment_method_data($payment_id); // If we use the signed cart, validate the request if (!fn_amazon_validate_request($processor_data, $_POST)) { die('Access denied'); } $transaction_id = (string) $xml->ProcessedOrder->AmazonOrderID; $order_id = db_get_field('SELECT order_id FROM ?:order_data WHERE type = ?s AND data = ?s', 'E', $transaction_id); if (!empty($order_id)) { fn_change_order_status($order_id, 'I'); } } elseif ($message_recognizer == 'OrderReadyToShipNotification') { // Order was processed by Amazon. We need to process the order in the shop
/*получаем время */ $delivery_time = db_get_field("SELECT time_to_delivery FROM `cscart_orders` WHERE `order_id` ='{$dev_o_id}' LIMIT 0 , 30"); list($order_id, $process_payment) = fn_place_order($cart, $customer_auth, $action); //апдейтим с помощью функции db_query("UPDATE `korzin_db`.`cscart_orders` SET `date_to_delivery` = '{$delivery_date}',\n\t\t\t\t\t\t\t`time_to_delivery` = '{$delivery_time}' WHERE `cscart_orders`.`order_id` ='{$dev_o_id}' LIMIT 1"); //апдейтим поля в ручную if (!empty($order_id)) { if ($action != 'save') { $view->assign('order_action', fn_get_lang_var('placing_order')); $view->display('views/orders/components/placing_order.tpl'); fn_flush(); } if ($process_payment == true) { fn_start_payment($order_id, fn_get_notification_rules($_REQUEST)); } fn_order_placement_routines($order_id, fn_get_notification_rules($_REQUEST), true, $action); } else { return array(CONTROLLER_STATUS_REDIRECT, "order_management.summary"); } } return array(CONTROLLER_STATUS_OK, "order_management{$_suffix}"); } // Delete discount coupon if ($mode == 'delete_coupon') { unset($cart['coupons'][$_REQUEST['c_id']], $cart['pending_coupon']); return array(CONTROLLER_STATUS_REDIRECT, "order_management.totals"); } // // Edit order // if ($mode == 'edit' && !empty($_REQUEST['order_id'])) {