public function testCorrect() { // auth $input = $this->doPrepareAuthInput(); $input['pan'] = BankCard::getValidCustomPan(); $data = $this->callGateway(Type::AUTH, $input); $this->assertEquals('00', $data->rc, print_r($data, true)); // double $dataError = $this->callGateway(Type::AUTH, $input); $this->assertEquals('-3', $dataError->rc, print_r($dataError, true)); // complete $input = array('term' => $data->term, 'order' => $data->order, 'amount' => $data->amount, 'cur' => $data->cur, 'rrn' => $data->rrn, 'irn' => $data->irn, 'time' => Time::ts()); $data = $this->callGateway(Type::COMPLETE, $input); $this->assertEquals('00', $data->rc, print_r($data, true)); $count = Payment::count(); // double complete $dataError = $this->callGateway(Type::COMPLETE, $input); $this->assertEquals('00', $dataError->rc, print_r($dataError, true)); $this->assertEquals($count, Payment::count()); // refund $data = $this->callGateway(Type::REFUND, $input); $this->assertEquals('00', $data->rc, print_r($data, true)); $count = Payment::count(); // double refund $data = $this->callGateway(Type::REFUND, $input); $this->assertEquals('00', $data->rc, print_r($data, true)); $this->assertEquals($count, Payment::count()); }
/** * search double payment * * @param int $id current payment id * @param string $term * @param string $order * @param string $amount * @param string|array $type * @param string|array $status * * @return PaymentModel|null */ public static function findDouble($id, $term, $order, $amount, $type = null, $status = null) { $payment = PaymentModel::whereTerm($term)->whereOrder($order)->whereAmount($amount)->where('id', '!=', $id); if (!is_array($type)) { $type = (array) $type; } if (!is_array($status)) { $status = (array) $status; } if ($status) { $payment->whereIn('status', $status); } if ($type) { $payment->whereIn('type', $type); } // last hour $payment->whereRaw('created_at >= DATE_SUB(NOW(), INTERVAL 1 HOUR)'); $payment = $payment->first(); return $payment; }
/** * Payments log */ public function payments() { $terminal = Terminal::whereUserId($this->userId())->first(); $payments = Payment::orderBy('id', 'desc')->whereTerm($terminal->id)->paginate(50); $this->make('payments', compact('payments')); }
public function setUp() { parent::setUp(); $this->mockTerminal(); Payment::truncate(); }