thinkphp6 支付

这段代码展示了如何在PHP中实现支付功能和短信验证码发送。首先开启事务,获取并检查订单号和用户金额,然后尝试减扣用户金额。如果操作成功,使用Redis存储电话号码并发送短信验证码。短信发送成功后更新订单状态。如果过程中发生错误,事务将被回滚,并返回相应的错误信息。
摘要由CSDN通过智能技术生成
//支付
    static public function pay(){

        //开启事务
        Db::startTrans();
        try {
            //获取订单号
            $order_id=input('order_id');
            //接受参数
            $price=input('price');
            //查询这个用户的金额
            $res=User::where('phone','13233252914')->find()->toArray();
            //取出金额
            $monty=$res['money'];
            Db::commit();
            //减钱
            $res=User::where('phone','13233252914')->update(['money'=>$monty-$price]);
            if($res){
                //接受参数
                $tel = input('phone');
                //实例化redis
                $redis=new Redis();
                //存到redis
                $res=$redis->lpush('phone',$tel);
                //弹出取值
                $result= $redis->rpop('phone');
                $statusStr = array(
                    "0" => "短信发送成功",
                    "-1" => "参数不全",
                    "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
                    "30" => "密码错误",
                    "40" => "账号不存在",
                    "41" => "余额不足",
                    "42" => "帐户已过期",
                    "43" => "IP地址限制",
                    "50" => "内容含有敏感词"
                );
                $code = rand(1111,9999);
                $smsapi = "http://api.smsbao.com/";
                $user = "1048551941"; //短信平台帐号
                $pass = md5("1048551941"); //短信平台密码
                $content="梦开始的地方:您的短信验证码为$code,请不要告诉其他人";//要发送的短信内容
                $phone = $result; //要发送短信的手机号码
//            $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);
//            $result =file_get_contents($sendurl) ;


                    //短信发送成功 更改订单状态
                $result=OrderModel::where('order_id',$order_id)->update(['status'=>1]);

                return json(['code'=>200,'data'=>$code,'msg'=>'发送验证码成功']);
            }else{
                return json(['code'=>400,'msg'=>'余额不足','data'=>null]);
            }

        }catch (ErrorException $errorException){
            //如果出现错误回滚
            Db::rollback();
            print_r($errorException->getMessage());
            return json(['code'=>400,'msg'=>'支付失败','data'=>null]);
        }

    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值