コード例 #1
0
ファイル: RefundController.php プロジェクト: shuangjie/galaxy
 /**
  * Updates an existing Refund model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     /** @var \star\refund\models\Refund $model */
     $model = $this->findModel($id);
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         /** @var \star\order\models\Order $orderModel */
         $order = Yii::createObject(Order::className());
         $orderModel = $order::find()->where(['order_id' => $model->order_id])->one();
         switch ($model->status) {
             case $model::STATUS_WAIT_CHECK:
                 $orderModel->status = $orderModel::STATUS_WAIT_REFUND_CHECK;
                 break;
             case $model::STATUS_PASS:
                 $orderModel->status = $orderModel::STATUS_REFUND_PASS;
                 break;
             case $model::STATUS_FAILED:
                 $orderModel->status = $orderModel::STATUS_REFUND_FAILED;
                 break;
         }
         $orderModel->save();
         return $this->redirect(['view', 'id' => $model->refund_id]);
     } else {
         return $this->render('update', ['model' => $model]);
     }
 }
コード例 #2
0
 /**
  * list orders in member center
  * @author cangzhou.wu(wucangzhou@gmail.com)
  * @return string
  */
 public function actionList()
 {
     $this->layout = '/member';
     //@todo add status
     $condition = '';
     $query = Order::find()->where($condition)->addOrderBy('create_at DESC');
     $countQuery = clone $query;
     $pages = new Pagination(['totalCount' => $countQuery->count()]);
     $orderModels = $query->offset($pages->offset)->limit($pages->limit)->all();
     return $this->render('list', ['orderModels' => $orderModels, 'pages' => $pages]);
 }
コード例 #3
0
ファイル: OrderSearch.php プロジェクト: shuangjie/galaxy
 /**
  * Creates data provider instance with search query applied
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Order::find()->orderBy(['create_at' => SORT_DESC]);
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['order_id' => $this->order_id, 'user_id' => $this->user_id, 'star_id' => $this->star_id, 'total_price' => $this->total_price, 'shipping_fee' => $this->shipping_fee, 'payment_fee' => $this->payment_fee, 'create_at' => $this->create_at, 'update_at' => $this->update_at, 'status' => $this->status]);
     $query->andFilterWhere(['like', 'order_no', $this->order_no])->andFilterWhere(['like', 'address', $this->address])->andFilterWhere(['like', 'memo', $this->memo]);
     return $dataProvider;
 }
コード例 #4
0
ファイル: RefundController.php プロジェクト: shuangjie/galaxy
 /**
  * Creates a new Refund model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $order_id = Yii::$app->request->get('order_id');
     $model = Yii::createObject(Refund::className());
     $model->order_id = $order_id;
     $refund = $model::find()->where(['order_id' => $order_id])->one();
     $order = Yii::createObject(Order::className());
     $order = $order::find()->where(['order_id' => $order_id, 'user_id' => Yii::$app->user->id])->one();
     if (isset($refund)) {
         if ($order->status != 7) {
             return $this->render('view', ['model' => $refund]);
         } else {
             $model = Yii::createObject(Refund::className());
             $model->order_id = $order_id;
         }
     }
     $file = UploadedFile::getInstance($model, 'image');
     if ($model->load(Yii::$app->request->post())) {
         if ($file) {
             $fileDir = \Yii::getAlias('@image/refund/');
             if (!file_exists($fileDir)) {
                 if (!mkdir($fileDir, 0777, true)) {
                     throw new Exception(404, Yii::t('app', 'Directory create error!'));
                 }
             }
             $file->saveAs($fileDir . $file->baseName . time() . '.' . $file->extension);
             $model->image = Yii::$app->params['imageDomain'] . '/refund/' . $file->baseName . time() . '.' . $file->extension;
         }
         if ($model->save()) {
             $order->status = $order::STATUS_WAIT_REFUND_CHECK;
             if (!$order->save()) {
                 throw new Exception(404, Yii::t('app', 'order create error!'));
             }
             return $this->redirect(['view', 'id' => $model->refund_id]);
         }
     }
     return $this->render('create', ['model' => $model, 'order_id' => $order_id]);
 }
コード例 #5
0
ファイル: ShoppingCoupon.php プロジェクト: shuangjie/galaxy
 /**
  * use coupon before create order
  * @param $event
  */
 public function useCoupon($event)
 {
     /** @var  $order Order */
     $order = $event->sender;
     /** @var  $couponModel  Coupon */
     $couponModel = Coupon::findOne(Yii::$app->getSession()->get(self::SESSION_COUPON_MODEL_KEY));
     if ($couponModel) {
         $couponRuleModel = $couponModel->couponRule;
         $result = Json::decode($couponRuleModel->result);
         if ($result['type']) {
             $order->total_price = $order->total_price * $result['number'];
         } else {
             $order->total_price = $order->total_price - $result['number'];
         }
         switch ($result['shipping']) {
             case 1:
                 $order->shipping_fee = $order->shipping_fee - $result['shippingFee'];
                 break;
             case 2:
                 $order->shipping_fee = 0;
         }
         Event::on(Order::className(), Order::EVENT_AFTER_INSERT, [ShoppingCoupon::className(), 'updateCouponStatus'], ['couponModel' => $couponModel]);
     }
 }
コード例 #6
0
ファイル: _form.php プロジェクト: shuangjie/galaxy
<?php

use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $this yii\web\View */
/* @var $model star\refund\models\Refund */
/* @var $form yii\widgets\ActiveForm */
/** @var \star\order\models\Order $order */
$order = Yii::createObject(\star\order\models\Order::className());
$order = $order::findOne(['order_id' => $order_id]);
?>

<div class="refund-form">

    <?php 
$form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]);
?>

    <?php 
echo $form->field($model, 'order_id')->textInput(['value' => $order_id, 'disabled' => 'disabled']);
?>

    <?php 
echo $form->field($model, 'refund_fee')->textInput(['maxlength' => 10, 'value' => $order->total_price]);
?>

    <?php 
echo $form->field($model, 'reason')->textInput(['maxlength' => 255]);
?>

    <?php 
コード例 #7
0
ファイル: index.php プロジェクト: zhaoyan158567/galaxy
<?php

use kartik\grid\GridView;
/* @var $this yii\web\View */
/* @var $searchModel star\order\models\OrderSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = Yii::t('order', 'Orders');
$this->params['breadcrumbs'][] = $this->title;
$this->params['title'] = $this->title;
$this->params['menu']['order'] = true;
?>
<div class="order-index">

    <?php 
echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [['class' => 'yii\\grid\\SerialColumn'], 'order_no', 'total_price', 'shipping_fee', 'payment_fee', 'create_at:datetime', 'update_at:datetime', ['attribute' => 'status', 'value' => function ($model) {
    $status = $model->getStatusArray();
    return $status[$model->status];
}, 'filterType' => GridView::FILTER_SELECT2, 'filter' => Yii::createObject(\star\order\models\Order::className())->getStatusArray(), 'filterWidgetOptions' => ['pluginOptions' => ['allowClear' => true]], 'filterInputOptions' => ['placeholder' => 'Status'], 'format' => 'raw'], ['class' => 'yii\\grid\\ActionColumn']], 'export' => false, 'responsive' => true, 'containerOptions' => ['style' => 'overflow: auto'], 'headerRowOptions' => ['class' => 'kartik-sheet-style'], 'filterRowOptions' => ['class' => 'kartik-sheet-style'], 'panel' => ['heading' => '<h3 class="panel-title"><i class="glyphicon glyphicon-globe"></i> ' . Yii::t('order', 'Orders') . '</h3>', 'type' => 'success', 'footer' => false, 'before' => false, 'after' => false], 'toolbar' => ['{export}', '{toggleData}'], 'toggleDataContainer' => ['class' => 'btn-group-sm'], 'exportContainer' => ['class' => 'btn-group-sm']]);
?>

</div>
コード例 #8
0
 /**
  * Finds the Order model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $id
  * @return Order the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($id)
 {
     if (($model = Order::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
コード例 #9
0
ファイル: Refund.php プロジェクト: shuangjie/galaxy
 public function getOrder()
 {
     return $this->hasOne(Order::className(), ['order_id' => 'order_id']);
 }
コード例 #10
0
ファイル: Events.php プロジェクト: shuangjie/galaxy
 public static function attachEvents()
 {
     self::frontendRegister();
     Event::on(Order::className(), Order::EVENT_CHANGE_PRICE, [ShoppingCoupon::className(), 'useCoupon']);
 }
コード例 #11
0
ファイル: PayPal.php プロジェクト: shuangjie/galaxy
 public function pay($id)
 {
     // ### Payer
     // A resource representing a Payer that funds a payment
     // For paypal account payments, set payment method
     // to 'paypal'.
     $payer = new Payer();
     $payer->setPaymentMethod("paypal");
     // ### Itemized information
     // (Optional) Lets you specify item wise
     // information
     $order = \Yii::createObject(Order::className())->findOne($id);
     $orderItems = $order->orderItem;
     $itemTmp = [];
     foreach ($orderItems as $orderItem) {
         $item = new Item();
         $item->setName($orderItem->name)->setCurrency($this->currency)->setQuantity($orderItem->qty)->setPrice($orderItem->price);
         $itemTmp[] = $item;
     }
     $itemList = new ItemList();
     $itemList->setItems($itemTmp);
     // ### Additional payment details
     // Use this optional field to set additional
     // payment information such as tax, shipping
     // charges etc.
     $details = new Details();
     $total = $order->total_price - $order->shipping_fee - $order->payment_fee;
     $details->setShipping($order->shipping_fee)->setTax($order->payment_fee)->setSubtotal($total);
     // ### Amount
     // Lets you specify a payment amount.
     // You can also specify additional details
     // such as shipping, tax.
     $amount = new Amount();
     $amount->setCurrency($this->currency)->setDetails($details)->setTotal($order->total_price);
     // ### Transaction
     // A transaction defines the contract of a
     // payment - what is the payment for and who
     // is fulfilling it.
     $transaction = new Transaction();
     $transaction->setAmount($amount)->setItemList($itemList)->setDescription("Payment description")->setInvoiceNumber($order->order_no);
     // ### Redirect urls
     // Set the urls that the buyer must be redirected to after
     // payment approval/ cancellation.
     $redirectUrls = new RedirectUrls();
     $redirectUrls->setReturnUrl(Url::to(['/Payment/home/payment/index'], true))->setCancelUrl(Url::to(['/Payment/home/payment/index'], true));
     // ### Payment
     // A Payment Resource; create one using
     // the above types and intent set to 'order'
     $payment = new Payment();
     $payment->setIntent("order")->setPayer($payer)->setRedirectUrls($redirectUrls)->setTransactions(array($transaction));
     // For Sample Purposes Only.
     $request = clone $payment;
     // ### Create Payment
     // Create a payment by calling the 'create' method
     // passing it a valid apiContext.
     // (See bootstrap.php for more on `ApiContext`)
     // The return object contains the state and the
     // url to which the buyer must be redirected to
     // for payment approval
     try {
         $payment->create($this->_apiContext);
     } catch (\Exception $ex) {
         // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
         //            ResultPrinter::printError("Created Payment Order Using PayPal. Please visit the URL to Approve.", "Payment", null, $request, $ex);
         var_dump($ex);
         exit;
         exit(1);
     }
     // ### Get redirect url
     // The API response provides the url that you must redirect
     // the buyer to. Retrieve the url from the $payment->getApprovalLink()
     // method
     $approvalUrl = $payment->getApprovalLink();
     // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
     //        ResultPrinter::printResult("Created Payment Order Using PayPal. Please visit the URL to Approve.", "Payment", "<a href='$approvalUrl' >$approvalUrl</a>", $request, $payment);
     return $approvalUrl;
 }
コード例 #12
0
ファイル: AliPayController.php プロジェクト: shuangjie/galaxy
 public function actionNotify()
 {
     //计算得出通知验证结果
     $alipayNotify = new AlipayNotify($this->config);
     $verify_result = $alipayNotify->verifyNotify();
     if ($verify_result) {
         //验证成功
         $order_id = \Yii::$app->request->post('out_trade_no');
         $order = \Yii::createObject(Order::className())->findOne($order_id);
         if ($_POST['trade_status'] == 'WAIT_BUYER_PAY') {
             //该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款
             //判断该笔订单是否在商户网站中已经做过处理
             //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
             //如果有做过处理,不执行商户的业务程序
             echo "success";
             //请不要修改或删除
             //调试用,写文本函数记录程序运行情况是否正常
             //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
         } else {
             if ($_POST['trade_status'] == 'WAIT_SELLER_SEND_GOODS') {
                 //该判断表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货
                 //判断该笔订单是否在商户网站中已经做过处理
                 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                 //如果有做过处理,不执行商户的业务程序
                 $payment = \Yii::createObject(Payment::className());
                 $payment->order_id = $order->order_id;
                 $payment->status = $payment::STATUS_BUYER_PAY;
                 $payment->payment_method = $payment::ALIPAY;
                 $payment->payment_fee = \Yii::$app->request->post('price');
                 $payment->transcation_no = \Yii::$app->request->post('subject');
                 $payment->save();
                 $order->status = $order::STATUS_WAIT_SHIPMENT;
                 $order->save();
                 echo "success";
                 //请不要修改或删除
                 //调试用,写文本函数记录程序运行情况是否正常
                 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
             } else {
                 if ($_POST['trade_status'] == 'WAIT_BUYER_CONFIRM_GOODS') {
                     //该判断表示卖家已经发了货,但买家还没有做确认收货的操作
                     //判断该笔订单是否在商户网站中已经做过处理
                     //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                     //如果有做过处理,不执行商户的业务程序
                     echo "success";
                     //请不要修改或删除
                     //调试用,写文本函数记录程序运行情况是否正常
                     //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
                 } else {
                     if ($_POST['trade_status'] == 'TRADE_FINISHED') {
                         //该判断表示买家已经确认收货,这笔交易完成
                         //判断该笔订单是否在商户网站中已经做过处理
                         //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                         //如果有做过处理,不执行商户的业务程序
                         echo "success";
                         //请不要修改或删除
                         //调试用,写文本函数记录程序运行情况是否正常
                         //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
                     } else {
                         //其他状态判断
                         echo "success";
                         //调试用,写文本函数记录程序运行情况是否正常
                         //logResult ("这里写入想要调试的代码变量值,或其他运行的结果记录");
                     }
                 }
             }
         }
         //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
         /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     } else {
         //验证失败
         echo "fail";
         //调试用,写文本函数记录程序运行情况是否正常
         //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
     }
 }