تالار گفتمان nCIS.ir

نسخه‌ی کامل: مشکل در بازگشت به فاکتور (حل شد)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
کدی رو که مینویسم دوباره برم میگردونه به صفحه خرید و فاکتور چاپ نمیشه
البته پول به حساب میره
ولی au برابر null هست
  public function actionFacture()
       {
     if(!isset($_GET['au'],$_GET['order_id']))
      {
      throw new HttpException('500','خطا در پارامترهای ورودی');
      }
      $au = Yii::$app->request->get('au');
      $orderId = Yii::$app->request->get('order_id');
      if(!$model = Orders::findOne($orderId))
      {
      throw new HttpException('404','فاکتور یافت نشد');
      }
      list($code , $message) = Yii::$app->pay->verify($model->amount , $au);
      if($code == 1 && $model->confirmed == 0)
      {
        $model->au = $au;
        $model->confirmed = 1;
        $model->save();
        Yii::$app->session->setFlash('success','خرید شما با موفقیت انجام شد');
        Yii::$app->session->set('cart',[]);
        return $this->render('facture',compact('model'));
      }
      else
      {
      Yii::$app->session->setFlash('failure',$message);
      $this->redirect(['/site/cart']);
      }
      }
چک کنید شاید confirmed مدل شما از قبل 1 بوده. کد اکشن Pay رو هم بگذارین بررسی کنیم.
 public function actionPay()
       {
      $cart = Yii::$app->session->get('cart');
      if(empty($cart))
      {
      $this->goHome();
      }
      $t = 0;
      foreach ($cart as $id => $q)
      {
      if($model = Products::findOne($id))
      {
      $t = ($model->price * $q);
      }
      }
      
      $order =  new Orders();
      $order->user_id = Yii::$app->user->id;
      $order->amount = $t;
      $order->ts = time();
      $order->confirmed = 1;
      if($order->save())
      {
      foreach ($cart as $id => $q)
      {
      if($model = Products::findOne($id)){
            $orderProduct = new Orderproducts();
            $orderProduct->order_id = $order->id;
            $orderProduct->product_id = $id;
            $orderProduct->quantity = $q;
            $orderProduct->save();
      }
      }
      Yii::$app->pay->request($order->amount , $order->id , date('Y/m/d - H:i:s' , $order->ts));
      }
      
      }
      
در phpmyadmin جدول orders تمام confiremd ها برابر 1 است
خوب همین دیگه. وقتی پرداخت انجام نشده نباید confirmed رو یک بگذارین. اول باید صفر باشه بعد از پرداخت 1 بشه.
والا من confirmed رو بولین گذاشتم همین
عین بقیه جدول ها
و هیچ مقدار پیش فرضی هم نداره
هر order میاد مقدارش طبق دستور 1 میشه
و نام userId اش هم ثبت میشه
ولی au درج نمیشه
مشکل از خط 21 بود
 $order->confirmed = 0;
این درست است