/** * Резервирование средств через яндекс кассу. * * @param type $type * @param type $data * * @return \xajaxResponse */ function quickPaymentReserveYandexKassa($type, $data) { $uid = get_uid(false); $objResponse =& new xajaxResponse(); $pay_methods = array(quickPaymentPopup::PAYMENT_TYPE_CARD => yandex_kassa::PAYMENT_AC, quickPaymentPopup::PAYMENT_TYPE_YA => yandex_kassa::PAYMENT_YD, quickPaymentPopup::PAYMENT_TYPE_WM => yandex_kassa::PAYMENT_WM, quickPaymentPopup::PAYMENT_TYPE_ALFACLICK => yandex_kassa::PAYMENT_AB, quickPaymentPopup::PAYMENT_TYPE_SBERBANK => yandex_kassa::PAYMENT_SB); if (!isset($pay_methods[$type])) { return $objResponse; } $reserve_id = intval(@$data['quick_payment_reserve_form']); $reserveInstance = ReservesModelFactory::getInstanceById($reserve_id); if (!$reserveInstance) { return $objResponse; } $reserve_data = $reserveInstance->getReserveData(); if ($reserve_data['emp_id'] != $uid || !$reserveInstance->isEmpAllowFinance()) { return $objResponse; } //Если уже был платеж то обновляем страницу if (!$reserveInstance->isStatusNew()) { $objResponse->script('window.location.reload()'); return $objResponse; } //Формируем заказ $bill = new billing($uid); $billReserveId = $bill->addServiceAndCheckout(ReservesModel::OPCODE_RESERVE, array('acc_sum' => $reserve_data['reserve_price'], 'reserve_data' => $reserve_data)); $payment = $pay_methods[$type]; $yandex_kassa = new yandex_kassa(); $yandex_kassa->setShop(yandex_kassa::SHOPID_SBR); $html_form = $yandex_kassa->render($bill->getOrderPayedSum(), $bill->getAccId(), $payment, $billReserveId); $objResponse->script("\n var qp_form_wrapper = \$\$('#quick_payment_reserve .__quick_payment_form');\n if(qp_form_wrapper){ \n qp_form_wrapper.set('html','{$html_form}');\n qp_form_wrapper.getElement('form')[0].submit();\n }\n "); $_SESSION[quickPaymentPopup::QPP_REDIRECT] = $reserveInstance->getTypeUrl(); return $objResponse; }