\beGateway\Settings::$shopKey = \Bitrix\Main\Config\Option::get($module_id, "shop_key");
\beGateway\Settings::$gatewayBase = "https://" . \Bitrix\Main\Config\Option::get($module_id, "domain_gateway");
\beGateway\Settings::$checkoutBase = "https://" . \Bitrix\Main\Config\Option::get($module_id, "domain_payment_page");
$out_summ = number_format(floatval($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"]), 2, ".", "");
$currency = $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"];
$order_id = IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ID"]);
$transaction = new \beGateway\GetPaymentToken();
$transaction->money->setCurrency($currency);
$transaction->money->setAmount($out_summ);
$transaction->setTrackingId(SITE_ID . "_" . $order_id);
$transaction->setDescription(Loc::getMessage("DEVTM_BEGATEWAY_ORDER_TITLE") . " #" . $order_id);
$transaction->setLanguage(LANGUAGE_ID);
if (\Bitrix\Main\Config\Option::get($module_id, "transaction_type") == "authorization") {
    $transaction->setAuthorizationTransactionType();
} else {
    $transaction->setPaymentTransactionType();
}
$notification_url = \Bitrix\Main\Config\Option::get($module_id, "notification_url");
$notification_url = str_replace('bitrix.local', 'bitrix.webhook.begateway.com:8443', $notification_url);
$transaction->setNotificationUrl($notification_url);
$transaction->setSuccessUrl(\Bitrix\Main\Config\Option::get($module_id, "success_url"));
$transaction->setFailUrl(\Bitrix\Main\Config\Option::get($module_id, "fail_url"));
$transaction->setDeclineUrl(\Bitrix\Main\Config\Option::get($module_id, "fail_url"));
$transaction->setCancelUrl(\Bitrix\Main\Config\Option::get($module_id, "cancel_url"));
//Получаем информацию о клиенте из профиля
$firstName = $_SESSION["SESS_AUTH"]["FIRST_NAME"];
$lastName = $_SESSION["SESS_AUTH"]["LAST_NAME"];
$email = $_SESSION["SESS_AUTH"]["EMAIL"];
if (\Bitrix\Main\Loader::includeModule("sale")) {
    $db_prop_order_vals = CSaleOrderPropsValue::GetList(array("SORT" => "ASC"), array("ORDER_ID" => $order_id, "CODE" => array("CITY", "ZIP", "PHONE", "ADDRESS")), false, false, array("CODE", "ID", "VALUE"));
    while ($val = $db_prop_order_vals->Fetch()) {
 public function hookPayment($params)
 {
     global $smarty, $cookie;
     if (!$this->active) {
         return;
     }
     $err_msg = '';
     $customer = new Customer((int) $params['cart']->id_customer);
     $address = new Address(intval($params['cart']->id_address_invoice));
     $country = Country::getIsoById((int) $address->id_country);
     $lang_iso_code = strtolower(Language::getIsoById((int) $cookie->id_lang));
     $sp_lang = \beGateway\Language::getSupportedLanguages();
     if (!in_array($lang_iso_code, $sp_lang)) {
         $lang_iso_code = 'en';
     }
     $shop_ptype = trim(Configuration::get('BEGATEWAY_SHOP_PAYTYPE'));
     $currency = new Currency((int) $params['cart']->id_currency);
     $currency_code = trim($currency->iso_code);
     $amount = $params['cart']->getOrderTotal(true, 3);
     $return_base_url = (Configuration::get('PS_SSL_ENABLED') ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . __PS_BASE_URI__ . 'modules/' . $this->name . '/validation.php?';
     $callbackurl = $return_base_url . 'action=callback';
     $callbackurl = str_replace('carts.local', 'webhook.begateway.com:8443', $callbackurl);
     $cancelurl = (Configuration::get('PS_SSL_ENABLED') ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . __PS_BASE_URI__;
     $successurl = $return_base_url . 'action=success&id_cart=' . (int) $params['cart']->id . '&id_module=' . (int) $this->id . '&key=' . $customer->secure_key;
     $failurl = $return_base_url . 'action=fail';
     $state_val = NULL;
     if (in_array($country, array('US', 'CA'))) {
         $state = new State((int) $address->id_state);
         if (Validate::isLoadedObject($state)) {
             $state_val = $state->iso_code;
         } else {
             $state_val = 'NA';
         }
     }
     $phone = $address->phone ? $address->phone : $address->phone_mobile;
     $transaction = new \beGateway\GetPaymentToken();
     if ($shop_ptype == 'authorization') {
         $transaction->setAuthorizationTransactionType();
     } else {
         $transaction->setPaymentTransactionType();
     }
     $transaction->money->setCurrency($currency_code);
     $transaction->money->setAmount($amount);
     $transaction->setDescription($this->l('Order No. ') . $params['cart']->id);
     $transaction->setTrackingId($params['cart']->id);
     $transaction->setLanguage($lang_iso_code);
     $transaction->setNotificationUrl($callbackurl);
     $transaction->setSuccessUrl($successurl);
     $transaction->setDeclineUrl($failurl);
     $transaction->setFailUrl($failurl);
     $transaction->setCancelUrl($cancelurl);
     $transaction->customer->setFirstName($address->firstname);
     $transaction->customer->setLastName($address->lastname);
     $transaction->customer->setCountry($country);
     $transaction->customer->setAddress($address->address1 . ' ' . $address->address2);
     $transaction->customer->setCity($address->city);
     $transaction->customer->setZip($address->postcode);
     $transaction->customer->setEmail($cookie->email);
     $transaction->customer->setPhone($phone);
     $transaction->customer->setState($state_val);
     $transaction->setAddressHidden();
     $paymentUrl = '';
     try {
         $response = $transaction->submit();
         if ($response->isError()) {
             $err_msg .= $response->getMessage();
         }
         if ($response->isSuccess()) {
             $paymentUrl = $response->getRedirectUrl();
         }
     } catch (Exception $e) {
         $err_msg .= $e->getMessage();
     }
     $smarty->assign(array('paymentUrl' => $paymentUrl, 'err_msg' => $err_msg, 'this_path' => $this->_path));
     $template = 'beGateway.tpl';
     if (_PS_VERSION_ < 1.6) {
         $template = 'beGateway_1_5.tpl';
     }
     return $this->display(__FILE__, $template);
 }