/** * Process logic by payment Type * * @return string $rc */ private function doProcessType() { $type = new Type($this->payment->type, $this->payment->toArray()); $paymentExist = self::findDouble($this->payment->id, $this->payment->term, $this->payment->order, $this->payment->amount, $type->sid(), array(Status::SUCCESS, Status::PROCESSED)); if ($paymentExist) { return '-3'; } switch ($type->sid()) { case Type::AUTH: case Type::SALE: case Type::PAYMENT: break; case Type::COMPLETE: // completing auth request $payment = self::find($this->payment->term, $this->payment->order, $this->payment->irn, $this->payment->rrn, Type::AUTH, Status::SUCCESS); if (!$payment) { return '-2'; } break; case Type::REFUND: // refund for finished processing: sale, complete, payment $payment = self::find($this->payment->term, $this->payment->order, $this->payment->irn, $this->payment->rrn, array(Type::SALE, Type::COMPLETE, Type::PAYMENT), Status::SUCCESS); if (!$payment) { // refund for not finishing processing: auth $payment = self::find($this->payment->term, $this->payment->order, $this->payment->irn, $this->payment->rrn, Type::AUTH, Status::SUCCESS); if (!$payment) { return '-2'; } } break; } return '00'; }