SomepayController.php 5.6 KB
<?php
// +----------------------------------------------------------------------
// | bronet [ 以客户为中心 以奋斗者为本 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013-2017 http://www.bronet.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
namespace app\portal\controller;

use cmf\controller\HomeBaseController;
use think\Db;



class SomepayController extends HomeBaseController
{
    public function _initialize()
    {
        parent::_initialize();
//        微信
        require_once EXTEND_PATH . "WxpayAPI/lib/WxPay.Api.php";
        require_once EXTEND_PATH . "WxpayAPI/example/WxPay.JsApiPay.php";
        require_once EXTEND_PATH . "WxpayAPI/lib/WxPay.Notify.php";
        require_once EXTEND_PATH . 'WxpayAPI/example/log.php';
    }

//    微信支付
    public function pay($openId , $price , $order_sn , $url,$content)
    {
        $price = intval($price * 100);
        $tools = new \JsApiPay();
        $input = new \WxPayUnifiedOrder();
        $input->SetBody($content);
        $input->SetAttach($content);
        $input->SetOut_trade_no($order_sn);
        $input->SetTotal_fee($price);
        $input->SetTime_start(date("YmdHis"));
        $input->SetTime_expire(date("YmdHis", time() + 600));
        $input->SetGoods_tag($content);
        $input->SetNotify_url($url);
        $input->SetTrade_type("JSAPI");
        $input->SetOpenid($openId);
        $config = new \WxPayConfig();
        $order = \WxPayApi::unifiedOrder($config, $input);
        $jsApiParameters = $tools->GetJsApiParameters($order);
        return json_decode($jsApiParameters);
    }


    //微信回调
    public function pay_notify()
    {
        $config = new \WxPayConfig();
        $notify = new \WxPayNotify();
        $notify->Handle($config, false);
        $xml = file_get_contents("php://input");
        $base = new \WxPayResults();
        $data = $base->FromXml($xml);
        //验签
        if ($base->CheckSign($config)) {
            if ($data["return_code"] == "SUCCESS") {
//                支付成功
//                Db::startTrans();
////                更新主表状态
                $where_orderN['order_sn'] = $data['out_trade_no'];
                $where_orderN['status'] = 3;
                $order = Db::name('Order')->where($where_orderN)->find();
                if($order){
                    $up_order['status'] = 10;
                    $up_order['update_time'] = time();
                    $up_order['pay_time'] = time();
                    $up_order['trans_id'] = $data['transaction_id'];
                    $res_order = Db::name('Order')->where($where_orderN)->update($up_order);

                    if($res_order){
//                        更新雇人表
                        $where_hire['id'] = $order['hire_id'];
                        $where_hire['status'] = 3;
                        $up_hire['status'] = 10;
                        $up_hire['update_time'] = time();
                        $res_hire = Db::name('Hire')->where($where_hire)->update($up_hire);
                        if($res_hire){
                            Db::commit();
                            return true;
                        }else{
                            Db::rollback();
                            return false;
                        }
                    }else{
                        Db::rollback();
                        return false;
                    }
                }

            }
        }
    }

//    微信提现
    public function getWxpay($openid,$order_sn,$money){
        require_once EXTEND_PATH . 'WxpayAPI/WxPay.Merch.php';
        $desc = '青云职上提现';
        $MerchPay = new \MerchPay();
        $money = 1;
        $result = $MerchPay->pay($openid, $order_sn, $money, $desc);
        if($result['result_code'] == "SUCCESS"){
            Db::startTrans();
            $where_order['order_sn'] = $result['partner_trade_no'];
            $where_order['status'] = 15;
            $order = Db::name('Order')->where($where_order)->find();
            if($order){
                $up_order['status'] = 16;
                $up_order['update_time'] = time();
                $res_order = Db::name('Order')->where($where_order)->update($up_order);
                if($res_order){-
//                    减少店铺金额
                    $where_store['id'] = $order['user_id'];
                    $sall = Db::name('Member')->where($where_store)->setDec('money',$order['money']);
                    if(!$sall){
                        Db::rollback();
                        $this->apiResponse('0','失败3');
                    }
//                    加入提现记录
                    $where_log['order_id'] = $order['id'];
                    $add_log['status'] = 3;
                    $add_log['update_time'] = time();
                    $res_log = Db::name('GetMoney')->where($where_log)->update($add_log);
                    if($res_log){
                        Db::commit();
                        $this->apiResponse('1','提现成功');
                    }else{
                        Db::rollback();
                        $this->apiResponse('0','提现失败');
                    }
                }else{
                    Db::rollback();
                    $this->apiResponse('0','获取订单失败2');
                }
            }else{
                Db::rollback();
                $this->apiResponse('0','获取订单失败');
            }
        }

    }

}