<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Http\model\Sms;use App\Wechat\Autoloader;
class WechatController extends BaseController
{
public function WeiXinAppPay(Request $request){
ini_set('date.timezone','Asia/Shanghai');
require_once "../app/Wechat/Autoloader.php";
if($request){
$money = $request['money'] ? $request['money'] : 0.01;
if($money == ''){
return ['code'=>1002,'message'=>'请传入充值金额'];
}else{
if(!$request->get('id')){
return ['code'=>1003,'message'=>'请传入用户信息'];
}else{
$uid = $request->get('id') ? $request->get('id') : '';
$user = Db::table('social_user')->where('id',$uid)->first();
$user = json_decode(json_encode($user),true);
$notify = new \AppPay();
$input = new \WxPayUnifiedOrder();
$input->SetBody("账户余额充值") $input->SetOut_trade_no(\WxPayConfig::MCHID.date("YmdHis")) $input->SetTotal_fee($money) $input->SetNotify_url("https://b.shidaichuxing.com/api/wechat/wxpayNotify") $input->SetTrade_type("APP") $order = \WxPayApi::unifiedOrder($input) dump($order);exit;
$appApiParameters = $notify->GetAppApiParameters($order) $list = $input->GetValues();
$data['money'] = $money;
$data['source_id'] = $user['id'];
$data['source'] = 0;
$data['pay_way'] = 1;
$data['status'] = 1;
$data['out_trade_no'] = $list['out_trade_no'];
$add = Db::table('social_recharge_log')->insertGetId($data);
return ['code'=>1000,'message'=>'生成订单成功!','appApiParameters'=>$list,'payorder'=>$add,'out_trade_no'=>$list['out_trade_no']];
}
}
}else{
return ['code'=>1001,'message'=>'获取数据失败,未接收到充值信息!'];
}
}
public function orderselect(Request $request)
{
require_once "../app/Wechat/Autoloader.php";
$input = new \WxPayOrderQuery();
$out_trade_no = $request['out_trade_no'];
$input->SetOut_trade_no($out_trade_no);
$list = \WxPayApi::orderQuery($input);
return $list;
}
public function ordersave(Request $request){
$num = $request['wxorder_num'] ? $request['wxorder_num'] : '';
$data['status'] = 0;
$data['created_at'] = date("Y-m-d H:i:s",time());
$res = Db::table('social_recharge_log')->where('out_trade_no',$num)->update($data);
$list = Db::table('social_recharge_log')->select('money','source_id')->where('out_trade_no',$num)->first();
$list = json_decode(json_encode($list),true);
$money = floatval($list['money']);
$uid = $list['source_id'];
$user = Db::table('social_user')->where('id',$list['source_id'])->increment('sum_money',$money);
if($res && $user){
return ['code'=>1000,'message'=>'充值成功!'];
}else{
return ['code'=>1001,'message'=>'充值失败!'];
}
}
public function wxpayNotify(Request $Request) {
ini_set('date.timezone', 'Asia/Shanghai');
require_once "../app/Wechat/lib/WxPay.Api.php";
require_once "../app/Wechat/example/WxPay.AppPay.php";
error_reporting(E_ERROR);
$logHandler = new \CLogFileHandler("../logs/" . date('Y-m-d') . '.log');
Log::Init($logHandler, 15);
Log::DEBUG("begin notify");
$notify = new \WxPayNotify();
$notify = new \PayNotifyCallBack();
$list = file_get_contents("php://input");
$result = $notify->GetValues();
$mes = [];
if ($result['trade_state'] == 'SUCCESS') {
$num = $request['out_trade_no'] ? $request['out_trade_no'] : '';
$data['status'] = 0;
$data['created_at'] = date("Y-m-d H:i:s",time());
$res = Db::table('social_recharge_log')->where('out_trade_no',$num)->update($data);
$list = Db::table('social_recharge_log')->select('money','source_id')->where('out_trade_no',$num)->first();
$list = json_decode(json_encode($list),true);
$money = $list['money'];
$uid = $list['source_id'];
$user = Db::table('social_user')->where('id',$list['source_id'])->increment('sum_money',$money);
if($res && $user){
return ['code'=>1000,'message'=>'充值成功!'];
}else{
return ['code'=>1001,'message'=>'充值失败!'];
}
}else{
$mes = [
'message'=> '参数错误',
'code'=>'1003',
];
}
return json_encode($mes);
Log::DEBUG("end notify");
Log::INFO(str_repeat("=", 20));
}
}