<?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'] = 11; $order = Db::name('Order')->where($where_order)->find(); if($order){ $up_order['status'] = 12; $up_order['update_time'] = time(); $res_order = Db::name('Order')->where($where_order)->update($up_order); if($res_order){ // 减少店铺金额 $where_store['id'] = $order['store_id']; $sall = Db::name('Store')->where($where_store)->setDec('money',$order['order_price']); if(!$sall){ Db::rollback(); $this->apiResponse('0','失败3'); } // 加入提现记录 $add_log['store_id'] = $order['store_id']; $add_log['order_id'] = $order['id']; $add_log['user_id'] = $order['user_id']; $add_log['money'] = $order['order_price']; $add_log['status'] = 3; $add_log['create_time'] = time(); $add_log['update_time'] = time(); $res_log = Db::name('GetMoney')->insertGetId($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','获取订单失败'); } } } }