小程序支付(tp和laravel)

注意:

安装overtrue/wechat第三方类库,才能用此方法

****************************************添加视频订单**********************************
    public function video_order($id,$openid)
    {
//        获取openid
        $result=db('user')->where('openid',$openid)->find();
       //得到微信头像名称信息
            //生成订单
            $image=$result['img'];
            $name=$result['vxname'];
        $orders = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
            $time=date("Y-m-d",time());
            $re=db('video')->where('id',$id)->find();
//          得到视频的金额和名称
            $project=$re['title'];
            $money=$re['price'];
            $state=1;
            $cid=$id;

//                将订单添加到数据库
             if (is_empty_data($openid, $money,$name ,$project,$state,$image,$orders,$time,$cid)) {
                    $data = array(
                        'openid' => $openid,
                        'money' => $money,
                        'name' => $name,
                        'project' => $project,
                        'state' => $state,
                        'image' => $image,
                        'order' => $orders,
                        'time' => $time,
                        'cid'=>$cid
                    );
                //dump($data);die();
                //db('video_order')->insert($data);//生成订单
                $aid=db('video_order')->insertGetId($data);//生成订单

                $da= $this->payment($aid);//调用下方视屏支付函数
                    return $da ;
                }

    }
//   ****************************** 视频支付******************************
    public function payment($aid)
    {
        //进行查询数据库获得支付参数,
        header("Content-type:text/html;charset=utf-8"); //此处进行字符集初始化,
        $order_data=db('video_order')->where('id',$aid)->find();//得到订单信息
        //dump($order_data);
        /**
         * 第 1 步:定义商户
         */
        $appid = db('config')->where('name','cat_name4')->value('value');
        $secret = db('config')->where('name','cat_name1')->value('value');
        $mch_id = db('config')->where('name','cat_name2')->value('value');
        $shopsecret = db('config')->where('name','cat_name3')->value('value');
        $business = new Business(
            $appid,
            $secret,
            $mch_id,
            $shopsecret
        );
        /**
         * 第 2 步:定义订单(将订单信息对应到下面的内容中)
         */
        $order = new Order();
        $order->body = 'test body';
        $order->out_trade_no = $order_data['order'];
        //$order->total_fee = '1';    // 单位为 “分”, 字符串类型
        $order->total_fee = $order_data['money']*100;//订单总额
        // 单位为 “分”, 字符串类型
        $order->openid =$order_data['openid'];
        $notify_url = 'https://' . $_SERVER['HTTP_HOST'] . '/index.php/home/index/payok';
        $order->notify_url = $notify_url;
        /**
         * 第 3 步:统一下单
         */
        $unifiedOrder = new UnifiedOrder($business, $order);

        /**
         * 第 4 步:生成支付配置文件
         */
        $payment = new Payment($unifiedOrder);
        return $payment->getConfig() ;

    }
    //   ****************************** 支付通知******************************
    public function payok()
    {
        error_reporting(0);
        define('IN_MOBILE', true);
        libxml_disable_entity_loader(true);
        $xml = '<?xml version="1.0" encoding="utf-8"?>';
        $xml .= $GLOBALS['HTTP_RAW_POST_DATA'];
        $obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
        $arrayinfo = xmlToArray($obj);
        if (($arrayinfo['result_code'] = 'SUCCESS' || $arrayinfo['return_code'] = 'SUCCESS')) {
           $out_trade_no = $arrayinfo['out_trade_no']; //商户订单号
           // $transaction_id = $arrayinfo['transaction_id']; //微信订单支付订单号

            $result = db('video_order')->where('order', $out_trade_no)->find();
//修改订单的状态值
            if ($result->state != 2) {
                $res= db('video_order')
                    ->where('order', $out_trade_no)
                    ->update(['state' => 2,  'time' =>date("Y-m-d",time())]);
                if ($res) {
                    return '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
                } else {
                    return '<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[NO]]></return_msg></xml>';
                }
            } else {
                return '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
            }

        } else {
            return '<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[NO]]></return_msg></xml>';
        }

    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值