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());
 }
Example #2
0
 /**
  * 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();
 }