public function testCheck() { $input = $this->doPrepareCheckInput(); // check $processor = $this->makeProcessor($input, 'check'); $processor->response(); $paymentCheck = $processor->item(); $this->assertEquals(Status::ENABLED, $paymentCheck->status); $this->assertEmpty($paymentCheck->code); // pay $processor = $this->makeProcessor($input, 'pay'); $processor->response(); $paymentPay = $processor->item(); $this->assertNotEmpty($paymentPay->code); // 'check' changed to 'pay' $paymentCheck = Payment::find($paymentCheck->id); $this->assertEquals(Status::PAY, $paymentCheck->status); // status $input = array('term' => $paymentPay->term, 'code' => $paymentPay->code, 'to' => $paymentPay->to, 'time' => Time::ts()); Secure::sign($input, 'status', 'secret'); $processor = $this->makeProcessor($input, 'status'); $processor->response(); $paymentStatus = $processor->item(); // 'status' == data from 'pay' $this->assertEquals($paymentPay->id, $paymentStatus->id); $this->assertEquals(Status::PROCESSED, $paymentStatus->status); // cancel $processor = $this->makeProcessor($input, 'cancel'); $response = $processor->response(); $this->assertEmpty($response->error()); }
/** * Approve one payment */ public function approve() { $id = Input::get('id'); $terminal = Terminal::whereUserId($this->userId())->first(); $payment = Payment::find($id); if ($payment->term == $terminal->id) { $status = $payment->getPossibleStatus(); if ($status) { $payment->status = $status; $payment->save(); if ($payment->getPossibleStatus()) { return array('next' => true, 'value' => 'Move to [' . $payment->getPossibleStatus() . ']', 'status' => $payment->status); } } } return array('next' => false, 'status' => $payment ? $payment->status : null); }