Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
366 views
in Technique[技术] by (71.8m points)

PHP接口,我需要提交的参数格式是怎样的。

我这里有一个接口,是添加购物车的。商品有属性,例如颜色 尺码 我提交参数的时候会提示选择规格。。不知道是不是提交的格式不对。请求帮助

    /**
     * 加入购物车接口
     * 
     * 输入: 
     * id:int 商品id
     * deal_attr: array 结构如下
     * Array
     * (
     *     [属性组ID] => 11 int 属性值ID
     * ) 
     
     * =======新增两个参数============
     * @param bool $outputReturn 是否以output返回
     * @param array $param 该值不为空,则加入购物车的id,attr以此为准,否则取$_REQUEST
     * @param
                 *$param = Array
                 * (
                        [id]      =>    商品id int
                 *     [attr] =>     Array(
                                        [属性组ID] => 11 int 属性值ID
                                    )
                 * )
     * =======//新增两个参数============ *
     
     * 
     * 输出:
     * status: int 状态 0错误 1加入成功 -1未登录需要登录
     * info: string 状态为1时该值为空,否则为出错的提示
     */
    public function addcart($outputReturn=true,$param=array())
    {
    
        $root = array();
        
        
        
        //========
        require_once APP_ROOT_PATH.'system/model/cart.php';
        require_once APP_ROOT_PATH.'system/model/deal.php';
        
        if( !empty($param)&&!empty($param['id']) ){
            $id = intval($param['id']);
            $deal_attr_req = $param['attr'];
        }else{
            $id = intval($GLOBALS['request']['id']);
            $deal_attr_req = $GLOBALS['request']['deal_attr'];
        }        
        $deal_attr = array();
        foreach ($deal_attr_req as $k=>$v)
        {
            $sv = intval($v);
            if($sv)
            $deal_attr[$k] = intval($sv);
        }
        
        $user_login_status = check_login();
        
        $deal_info = get_deal($id);
        if(!$deal_info||($deal_info['buyin_app']==1&&APP_INDEX=="wap"))
        {
            if($outputReturn){
                output("",0,"没有可以购买的产品");
            }else{
                return array('status'=>0,'info'=>'没有可以购买的产品');
            }
            
        }
        
        if(($deal_info['is_lottery']==1||$deal_info['buy_type']==1))
        {
            if($user_login_status==LOGIN_STATUS_NOLOGIN)
            {
                if($outputReturn){
                    output($root,-1,"请先登录");
                }else{
                    return array('status'=>-1,'info'=>'请先登录');
                }
            }
        }
            
        $check = check_deal_time($id);
        if($check['status'] == 0)
        {
            $res['info'] = $check['info']." ".$GLOBALS['lang']['DEAL_ERROR_'.$check['data']];
            if($outputReturn){
                output($root,0,$res['info']);
            }else{
                return array('status'=>0,'info'=>$res['info']);
            }
            
        }            
        
        if(count($deal_attr)!=count($deal_info['deal_attr']))
        {
            $res['info'] = "请选择商品规格1";
            if($outputReturn){
                output($root,0,$res['info']);
            }else{
                return array('status'=>0,'info'=>'请选择商品规格2');
            }
            
        }
        else
        {
            //加入购物车处理,有提交属性, 或无属性时
            $attr_str = '0';
            $attr_name = '';
            $attr_name_str = '';
            if($deal_attr)
            {                
                $attr_str = implode(",",$deal_attr);
                $attr_names = $GLOBALS['db']->getAll("select name from ".DB_PREFIX."deal_attr where id in(".$attr_str.")");
                $attr_name = '';
                foreach($attr_names as $attr)
                {
                    $attr_name .=$attr['name'].",";
                    $attr_name_str.=$attr['name'];
                }
                $attr_name = substr($attr_name,0,-1);
            }
            $verify_code = md5($id."_".$attr_str);
            $session_id = es_session::id();
        
            if(app_conf("CART_ON")==0)
            {
                $GLOBALS['db']->query("delete from ".DB_PREFIX."deal_cart where session_id = '".$session_id."'");
                load_cart_list(true);
            }
        
            $cart_result = load_cart_list();
            foreach($cart_result['cart_list'] as $k=>$v)
            {
                if($v['verify_code']==$verify_code)
                {
                    $cart_item = $v;
                }
            }
            $add_number = $number = 1; //只加一件
        
        
            //开始运算购物车的验证
            if($cart_item)
            {
        
//                 $check = check_deal_number($cart_item['deal_id'],$add_number);
//                 if($check['status']==0)
//                 {
//                     $res['info'] = $check['info']." ".$GLOBALS['lang']['DEAL_ERROR_'.$check['data']];                        
//                     output($root,0,$res['info']);
//                 }
        
                //属性库存的验证
                $attr_setting_str = '';
                if($cart_item['attr']!='')
                {
                    $attr_setting_str = $cart_item['attr_str'];
                }
        
        
                    
//                 if($attr_setting_str!='')
//                 {
//                     $check = check_deal_number_attr($cart_item['deal_id'],$attr_setting_str,$add_number);
//                     if($check['status']==0)
//                     {
//                         $res['info'] = $check['info']." ".$GLOBALS['lang']['DEAL_ERROR_'.$check['data']];
//                         output($root,0,$res['info']);
//                     }
//                 }
                //属性库存的验证
            }
            else //添加时的验证
            {
//                 $check = check_deal_number($deal_info['id'],$add_number);
//                 if($check['status']==0)
//                 {
//                     $res['info'] = $check['info']." ".$GLOBALS['lang']['DEAL_ERROR_'.$check['data']];
//                     output($root,0,$res['info']);
//                 }
        
                //属性库存的验证
                $attr_setting_str = '';
                if($attr_name_str!='')
                {
                    $attr_setting_str =$attr_name_str;
                }
        
        
                    
//                 if($attr_setting_str!='')
//                 {
//                     $check = check_deal_number_attr($deal_info['id'],$attr_setting_str,$add_number);
//                     if($check['status']==0)
//                     {
        
//                         $res['info'] = $check['info']." ".$GLOBALS['lang']['DEAL_ERROR_'.$check['data']];
//                         output("",0,$res['info']);
//                     }
//                 }
                //属性库存的验证
            }
        
            if($deal_info['return_score']<0)
            {
                //需要积分兑换
                $user_score = intval($GLOBALS['db']->getOne("select score from ".DB_PREFIX."user where id = ".intval($GLOBALS['user_info']['id'])));
                if($user_score < abs(intval($deal_info['return_score'])*$add_number))
                {        
                    $res['info'] = $check['info']." "."积分不足";
                    if($outputReturn){
                        output($root,0,$res['info']);
                    }else{
                        return array('status'=>0,'info'=>$res['info']);
                    }
                }
            }
        
            //验证over
        
            if(!$cart_item)
            {
                $attr_price = $GLOBALS['db']->getOne("select sum(price) from ".DB_PREFIX."deal_attr where id in($attr_str)");
                $add_balance_price = $GLOBALS['db']->getOne("select sum(add_balance_price) from ".DB_PREFIX."deal_attr where id in($attr_str)");
                $cart_item['session_id'] = $session_id;
                $cart_item['user_id'] = intval($GLOBALS['user_info']['id']);
                $cart_item['deal_id'] = $id;
                //属性
                // if($attr_name != '')
                // {
                //     $cart_item['name'] = $deal_info['name']." [".$attr_name."]";
                //     $cart_item['sub_name'] = $deal_info['sub_name']." [".$attr_name."]";
                // }
                if($attr_name != '')
                {
                    $cart_item['name'] = $deal_info['name'];
                    $cart_item['sub_name'] = $attr_name;
                }                
                else
                {
                    $cart_item['name'] = $deal_info['name'];
                    $cart_item['sub_name'] = $deal_info['sub_name'];
                }
                $cart_item['name'] = strim($cart_item['name']);
                $cart_item['sub_name'] = strim($cart_item['sub_name']);
                $cart_item['attr'] = $attr_str;
                $cart_item['add_balance_price'] = $add_balance_price;
                $cart_item['unit_price'] = $deal_info['current_price'] + $attr_price;
                $cart_item['number'] = $number;
                $cart_item['total_price'] = $cart_item['unit_price'] * $cart_item['number'];
                $cart_item['verify_code'] = $verify_code;
                $cart_item['create_time'] = NOW_TIME;
                $cart_item['update_time'] = NOW_TIME;
                $cart_item['return_score'] = $deal_info['return_score'];
                $cart_item['return_total_score'] = $deal_info['return_score'] * $cart_item['number'];
                $cart_item['return_money'] = $deal_info['return_money'];
                $cart_item['return_total_money'] = $deal_info['return_money'] * $cart_item['number'];
                $cart_item['buy_type']    =    $deal_info['buy_type'];
                $cart_item['supplier_id']    =    $deal_info['supplier_id'];
                $cart_item['attr_str'] = $attr_name_str;
                $cart_item['is_pick'] = $deal_info['is_pick'];
        
                $GLOBALS['db']->autoExecute(DB_PREFIX."deal_cart",$cart_item);
        
            }
            else
            {
                if($number>0)
                {
                    $cart_item['number'] += $number;
                    $cart_item['total_price'] = $cart_item['unit_price'] * $cart_item['number'];
                    $cart_item['return_total_score'] = $deal_info['return_score'] * $cart_item['number'];
                    $cart_item['return_total_money'] = $deal_info['return_money'] * $cart_item['number'];
                    $GLOBALS['db']->autoExecute(DB_PREFIX."deal_cart",$cart_item,"UPDATE","id=".$cart_item['id']);
                }
            }
                
        
                
            syn_cart(); //同步购物车中的状态 cart_type
            load_cart_list(true);
            if($outputReturn){
                output($root);
            }else{
                return $root;
            }
        }
        //========
        
        
    }
     

我提交的参数 url/index.php?c=cart&a=addcart&id=88&deal_attr=[{19:357},{20:359}]

但是提交后台会返回“请选择商品规格”,一头雾水,我应该提交怎样的参数结构


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

参数应该是在请求体里传吧,在服务端打印一下看看接收到数据了吗


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...