提交 1aa2ae33 编写于 作者: R root

支付部分完善

上级 789039b2
......@@ -17,9 +17,25 @@ use fecshop\app\appfront\modules\AppfrontController;
*/
class PaymentController extends AppfrontController
{
protected $_increment_id;
protected $_order_model;
public function init(){
$homeUrl = Yii::$service->url->homeUrl();
$this->_increment_id = Yii::$service->order->getSessionIncrementId();
if(!$this->_increment_id){
Yii::$service->url->redirect($homeUrl);
exit;
}
$this->_order_model = Yii::$service->order->GetByIncrementId($this->_increment_id);
if(!isset($this->_order_model['increment_id'])){
Yii::$service->url->redirect($homeUrl);
exit;
}
parent::init();
}
......
......@@ -11,49 +11,55 @@ use Yii;
use fec\helpers\CModule;
use fec\helpers\CRequest;
use fecshop\app\appfront\modules\AppfrontController;
use fecshop\app\appfront\modules\Payment\PaymentController;
/**
* @author Terry Zhao <2358269014@qq.com>
* @since 1.0
*/
class CheckmoneyController extends AppfrontController
class CheckmoneyController extends PaymentController
{
public $enableCsrfValidation = true;
/**
* 支付开始页面
*/
public function actionStart(){
$increment_id = Yii::$service->order->getSessionIncrementId();
if($increment_id){
$orderModel = Yii::$service->order->GetByIncrementId($increment_id);
$payment_method = isset($orderModel['payment_method']) ? $orderModel['payment_method'] : '';
if($payment_method){
$complateUrl = Yii::$service->payment->getStandardSuccessRedirectUrl($payment_method);
if($complateUrl){
Yii::$service->url->redirect($complateUrl);
exit;
$payment_method = isset($this->_order_model['payment_method']) ? $this->_order_model['payment_method'] : '';
if($payment_method){
$complateUrl = Yii::$service->payment->getStandardSuccessRedirectUrl($payment_method);
if($complateUrl){
# 登录用户,在支付前清空购物车。
if(!Yii::$app->user->isGuest){
Yii::$service->cart->clearCart();
}
Yii::$service->url->redirect($complateUrl);
exit;
}
}
$homeUrl = Yii::$service->url->homeUrl();
Yii::$service->url->redirect($homeUrl);
}
/**
*
*
* 成功支付页面
*/
public function actionSuccess(){
$increment_id = Yii::$service->order->getSessionIncrementId();
if($increment_id){
$data = [
'increment_id' => $increment_id,
];
# 清理购物车中的产品。
$data = [
'increment_id' => $this->_increment_id,
];
# 清理购物车中的产品。(游客用户的购物车在成功页面清空)
if(Yii::$app->user->isGuest){
Yii::$service->cart->clearCart();
return $this->render('../../payment/checkmoney/success',$data);
}else{
$homeUrl = Yii::$service->url->homeUrl();
Yii::$service->url->redirect($homeUrl);
}
# 清理session中的当前的increment_id
Yii::$service->order->removeSessionIncrementId();
return $this->render('../../payment/checkmoney/success',$data);
}
/**
* IPN消息推送地址
* IPN过来后,不清除session中的 increment_id ,也不清除购物车
* 仅仅是更改订单支付状态。
*/
public function actionIpn(){
}
......
......@@ -282,6 +282,12 @@ class Order extends Service
protected function actionGetSessionIncrementId(){
return Yii::$app->session->get(self::CURRENT_ORDER_CREAMENT_ID);
}
/**
* 从session中销毁订单号
*/
protected function actionRemoveSessionIncrementId(){
return Yii::$app->session->remove(self::CURRENT_ORDER_CREAMENT_ID);
}
/**
* @property $items | Array , example:
* $itmes = [
......
......@@ -146,11 +146,16 @@ class Quote extends Service
return $items_count;
}
/**
* @property $item_qty | Int ,当$item_qty 不等于null时,代表
* 已经知道购物车中产品的个数,不需要去cart_item表中查询。
* 譬如清空购物车操作,直接就知道产品个数肯定为零。
* 当购物车的产品变动后,更新cart表的产品总数
*/
public function computeCartInfo(){
$item_qty = Yii::$service->cart->quoteItem->getItemQty();
$cart = $this->getCart();
public function computeCartInfo($item_qty = null){
if($item_qty === null){
$item_qty = Yii::$service->cart->quoteItem->getItemQty();
}
$cart = $this->getCart();
$cart->items_count = $item_qty;
$cart->save();
return true;
......
......@@ -286,6 +286,7 @@ class QuoteItem extends Service
/**
* @property $cart_id | int 购物车id
* 删除购物车中的所有产品。
* 注意:清空购物车并不是清空所有信息,仅仅是清空用户购物车中的产品。
*/
public function removeItemByCartId($cart_id=''){
if(!$cart_id){
......@@ -297,7 +298,7 @@ class QuoteItem extends Service
//'item_id' => $item_id,
]);
# 重新计算购物车的数量
Yii::$service->cart->quote->computeCartInfo();
Yii::$service->cart->quote->computeCartInfo(0);
}
return true;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册