Notify.php 3.9 KB
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2020/4/22
 * Time: 16:37
 */

namespace app\api\controller;

use app\common\controller\Api;
use app\common\controller\Frontend;
use app\index\model\OrderDetail;
use app\index\model\Viporder;
use think\Db;

class Notify extends Frontend
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];

    /**
     * 购买会员
     * @return bool
     */
    public function index1(){
        $param = $this->request->param();
        if(empty($param)){
            $this->error('缺少必要参数');
        }
        cache('param',$param);
        $result = \alipay\Notify::check($param);
        cache('result',$result);
        $out_trade_no = $param['out_trade_no'];
        $vipOrderModel = new Viporder();
        $data = $vipOrderModel->findData(['num'=>$out_trade_no]);
        if (empty($data)) { // 如果订单不存在
            return false;
        }
        // 如果订单存在
        if (!empty($data['paytime'])) {
            return true;
        }
        $userModel = new \app\index\model\User();
        $user = $userModel->findData(['id'=>$data['user_id']]);
        // 用户是否支付成功
        if(!empty($result)){
            if($data['vip_type'] == '1'){
                //普通会员
                if($user['is_vip'] == '1'){
                    $vip_passtime = $user['vip_passttime'] + 365*24*60*60;
                }else{
                    $vip_passtime = time() + 365*24*60*60;
                }
                $userModel->updateData(['vip_passtime'=>$vip_passtime]);
            }else if($data['vip_type'] == '2'){
                //超级会员
                if($user['is_svip'] == '1'){
                    $svip_passtime = $user['svip_passttime'] + 365*24*60*60;
                }else{
                    $svip_passtime = time() + 365*24*60*60;
                }
                $userModel->updateData(['svip_passtime'=>$svip_passtime]);
            }
            $arr['status'] = "2";
            $arr['paytime'] = time();
            $vipOrderModel->updateData(['id'=>$data['id']],$arr);
        }
        return true; // 返回处理完成
    }

    /**
     * 购买商品
     * @return bool
     */
    public function index2(){
        $param = $this->request->param();
        if(empty($param)){
            $this->error('缺少必要参数');
        }
        cache('param',$param);
        $result = \alipay\Notify::check($param);
        cache('result',$result);
        $out_trade_no = $param['out_trade_no'];
        $identification = substr($out_trade_no, -1);
        $orderModel = new \app\index\model\Order();
        $orderDetailModel = new OrderDetail();
        if($identification == 1){
            $data = $orderModel->findData(['num'=>$out_trade_no]);
        }else{
            $data = $orderDetailModel->findData(['num'=>$out_trade_no]);
        }
        if (empty($data)) { // 如果订单不存在
            return false;
        }
        // 如果订单存在
        if (!empty($data['paytime'])) {
            return true;
        }
        $userModel = new \app\index\model\User();
        $user = $userModel->findData(['id'=>$data['user_id']]);
        // 用户是否支付成功
        if(!empty($result)){
            if($identification == 1){
                $orderModel->updateData(['id'=>$data['id']],['paytime'=>time(),'status'=>'2']);
                $orderDetailModel->updateData(['order_id'=>$data['id']],['paytime'=>time(),'status'=>'2']);
            }else{
                $orderDetailModel->updateData(['id'=>$data['id']],['paytime'=>time(),'status'=>'2']);
                $order_detail_status1_count = $orderDetailModel->findData(['order_id'=>$data['order_id'],'status'=>'1']);
                if($order_detail_status1_count == 0){
                    $orderModel->updateData(['id'=>$data['order_id']],['paytime'=>time(),'status'=>'2']);
                }
            }
        }
        return true; // 返回处理完成
    }
}