/** * Принимает от assist результаты платежа, производит зачисление. * * @param array $req массив $_POST с данными. */ function checkdeposit($req) { $this->log->writeln('Поступление платежа.'); $this->log->writevar($req); if ($req['merchant_id'] != self::MERCHANT_ID) { $this->fail(self::ERR_MERCHANT_ID); } $hash_x = $req['merchant_id'] . $req['ordernumber'] . $req['amount'] . $req['currency'] . $req['orderstate']; $hash = strtoupper(md5(strtoupper(md5($this->_secret) . md5($hash_x)))); if ($hash != $req['checkvalue']) { $this->fail(self::ERR_HASH); } if ($req['responsecode'] == 'AS000' && $req['orderstate'] == 'Approved') { $card_account = new card_account(); $billing_no = $card_account->checkPayment($req['ordernumber']); if (!$billing_no) { $this->fail(self::ERR_ORDERNUM); } $amm = $req['orderamount']; $descr = "CARD номер счета в ассисте {$req['billnumber']} с карты {$req['meantypename']} {$req['meannumber']} " . "сумма - {$req['orderamount']} {$req['ordercurrency']}, " . "обработан {$req['packetdate']}, номер покупки - {$req['ordernumber']}"; if ($error = $this->deposit($op_id, $billing_no, $amm, $descr, 6, $req['orderamount'])) { $this->fail(self::ERR_DEPOSIT, $error); } } $this->success($req['billnumber'], $req['packetdate']); }
public function handleRequest($src = null, $req = array()) { $this->_action = $src; $this->_request = $req; switch ($this->_action) { case self::DO_REQUEST_CHECKIN: $this->_log('response')->writeln('CHECKIN'); $this->_log('response')->writevar($req); if (!$this->_validate()) { echo $this->_response('NO', 'Ошибка проверки подлинности запроса.'); exit; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $uid = intval($req['userid']); $user = new users(); $user->GetUserByUID($uid); if ($user->uid > 0) { echo $this->_response('YES', 'Пользователь существует.'); exit; } else { echo $this->_response('NO', 'Пользователь не существует.'); exit; } break; case self::DO_REQUEST_PAYMENT: $this->_log('response')->writeln('PAYMENT'); $this->_log('response')->writevar($req); if (!$this->_validate()) { echo $this->_response('NO', 'Ошибка проверки подлинности запроса.'); exit; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/card_account.php'; $card_account = new card_account(); $billing_no = $card_account->checkPayment($req['orderid']); if (!$billing_no) { $this->_log('response')->writeln('Платеж не найден.'); echo $this->_response('NO', 'Номер платежа не найден.'); exit; } $req['date'] = date('Y-m-d H:i:s'); $amm = $req['amount']; $descr = "CARD номер платежа в системе ДеньгиОнлайн {$req['paymentid']} " . "сумма - {$req['amount']} руб., " . "обработан {$req['date']}"; if ($error = $this->deposit($op_id, $billing_no, $amm, $descr, 6, $req['amount'])) { $this->_log('response')->writeln('Ошибка проведения платежа.'); echo $this->_response('NO', $error); exit; } $this->_log('response')->writeln('Платеж принят.'); echo $this->_response('YES'); break; case self::DO_REQUEST_SUCCESS: $this->_log('response')->writeln('SUCCESS'); header_location_exit('/bill/cardsuccess/'); break; case self::DO_REQUEST_FAILURE: $this->_log('response')->writeln('FAILURE'); $_SESSION['bill.GET']['error'] = ''; header_location_exit('/bill/fail/'); break; default: break; } }