cid], ['paid', 1], ['category_id', 0], ['order', ''], ['key', ''], ], $request ); $this->success('获取成功', LaveModel::lst($where)); } public function ify() { $this->success('获取成功', Category::getCategoryArray('lave', null, $this->cid)); } public function create(Request $request) { $where = UtilService::postMore( [ ['cid', $this->cid], ['user_id', $this->auth->getUserinfo()['id']], ['order_name', ''], ['category_id', 0], ['amount', 0], ['name', ''], ['contact', ''], ['tel', 0], ['address', ''], ['is_open', '0'], ['is_ticket', '0'], ['pay_type', '0'], ['type', '0'], ['help_id', 0], ['from', 'weixin'], ], $request ); $where1 = $where; unset($where1['from']); $where1['order_id'] = LaveModel::getNewOrderId(); if (cache('lave_' . $where['user_id'])) $this->error('正在处理中'); @file_put_contents("lave.txt", json_encode($where1)); $order = LaveModel::create($where1); cache('lave_' . $where['user_id'], '1', 10); if (!$order) $this->error(LaveModel::getErrorInfo()); $orderId = $order['order_id']; $info = compact('orderId'); if ($orderId) { $orderInfo = LaveModel::where('order_id', $orderId)->find(); if (!$orderInfo || !isset($orderInfo['paid'])) $this->error('支付订单不存在!'); if ($orderInfo['paid']) $this->error('支付已支付!'); try { if ($where['from'] == 'routine') { $jsConfig = LaveRepository::jsPay($this->cid, $orderId); //创建订单jspay } else if ($where['from'] == 'weixinh5') { $jsConfig = LaveRepository::h5Pay($this->cid, $orderId); } else { $jsConfig = LaveRepository::wxPay($this->cid, $orderId); } } catch (\Exception $e) { return $this->error($e->getMessage()); } $info['jsConfig'] = $jsConfig; return $this->success('订单创建成功', $info); } else $this->error(LaveModel::getErrorInfo()); } public function mylst(Request $request) { $where = UtilService::getMore( [ ['page', 1], ['limit', 10], ['cid', $this->cid], ['user_id', $this->auth->getUserinfo()['id']], ['paid', -1], ['category_id', 0], ], $request ); $this->success('获取成功', LaveModel::lst($where)); } /** * 订单支付 * @param Request $request * @return mixed */ public function pay(Request $request) { list($uni, $paytype, $from) = UtilService::postMore([ ['uni', ''], ['paytype', '0'], ['from', 'weixin'] ], $request, true); if (!$uni) $this->error('参数错误!'); $order = LaveModel::where('cid', $this->cid)->where('order_id', $uni)->find(); if (!$order) $this->error('订单不存在!'); if ($order['paid']) $this->error('该订单已支付!'); $order['pay_type'] = $paytype; //重新支付选择支付方式 switch ($order['pay_type']) { case '0': try { if ($from == 'routine') { $jsConfig = LaveRepository::jsPay($this->cid, $order); //订单列表发起支付 } else if ($from == 'weixinh5') { $jsConfig = LaveRepository::h5Pay($this->cid, $order); } else { $jsConfig = LaveRepository::wxPay($this->cid, $order); } } catch (\Exception $e) { $this->error($e->getMessage()); } $this->success('获取成功', $jsConfig); break; } return $this->error('支付方式错误'); } // 支付中签约 public function createSign(Request $request) { // var_dump(123);die(); $where = UtilService::postMore( [ ['cid', $this->cid], ['user_id', $this->auth->getUserinfo()['id']], // ['user_id', 0], ['order_name', ''], ['category_id', 0], ['amount', 0], ['name', ''], ['contact', ''], ['tel', 0], ['address', ''], ['is_open', '0'], ['is_ticket', '0'], ['pay_type', '0'], ['type', '0'], ['help_id', 0], ['plan_id', 0], ['from', 'weixin'], ], $request ); $where1 = $where; unset($where1['from']); $where1['order_id'] = LaveModel::getNewOrderId(); $contract_display_account = User::where('id', $where1['user_id'])->value('nickname'); if (empty($contract_display_account)){ $this->error('用户不存在!'); } if (cache('lave_' . $where['user_id'])) $this->error('正在处理中'); @file_put_contents("lave.txt", json_encode($where1)); $plan_id=$where1['plan_id']; unset($where1['plan_id']); $order = LaveModel::create($where1); $where1['contract_code'] = WechatPlanRecord::getNewCode(); $where1['contract_display_account']=$contract_display_account; cache('lave_' . $where['user_id'], '1', 10); if (!$order) $this->error(LaveModel::getErrorInfo()); $orderId = $order['order_id']; $info = compact('orderId'); $order['plan_id'] = $plan_id; if ($orderId) { $orderInfo = LaveModel::where('order_id', $orderId)->find(); if (!$orderInfo || !isset($orderInfo['paid'])) $this->error('支付订单不存在!'); if ($orderInfo['paid']) $this->error('支付已支付!'); // 创建签约 $plan_record=[ 'plan_id'=>$plan_id, 'cid'=>$where['cid'], 'uid'=>$where['user_id'], 'price'=>$where['amount'], 'is_signing'=>0, 'contract_code'=>$where1['contract_code'], 'contract_display_account'=>$where1['contract_display_account'], 'is_open'=>$where1['is_open'], 'tel'=>$where1['tel'], ]; $record=WechatPlanRecord::create($plan_record); $plan_record['spbill_create_ip']=User::where('id', $where1['user_id'])->value('loginip'); $plan_record['contract_notify_url']=Request::instance()->domain() . "/api/wechat/notify/" . $where['cid']; try { if ($where['from'] == 'routine') { $jsConfig = LaveRepository::jsPaySign($this->cid, $orderId,$plan_record); //创建订单jspay } else if ($where['from'] == 'weixinh5') { $jsConfig = LaveRepository::h5PaySign($this->cid, $orderId,$plan_record); } else { $jsConfig = LaveRepository::wxPaySign($this->cid, $orderId,$plan_record); } } catch (\Exception $e) { return $this->error($e->getMessage()); } $info['jsConfig'] = $jsConfig; // 增加参与人数 $count=WechatPlanRecord::where('uid', $where1['user_id'])->count(); if ($count==0){ $num=WechatPlan::where('id', $plan_id)->value('num'); WechatPlan::where('id', $plan_id)->update(['num' => $num+1]); } return $this->success('订单创建成功', $info); } else $this->error(LaveModel::getErrorInfo()); } /** * 签约订单支付 * @param Request $request * @return mixed */ public function paySign(Request $request) { // var_dump(456);die(); list($uni, $paytype, $from) = UtilService::postMore([ ['uni', ''], ['paytype', '0'], ['from', 'weixin'] ], $request, true); if (!$uni) $this->error('参数错误!'); $order = LaveModel::where('cid', $this->cid)->where('order_id', $uni)->find(); if (!$order) $this->error('订单不存在!'); if ($order['paid']) $this->error('该订单已支付!'); $order['pay_type'] = $paytype; //重新支付选择支付方式 switch ($order['pay_type']) { case '0': try { if ($from == 'routine') { $jsConfig = LaveRepository::jsPaySign($this->cid, $order); //订单列表发起支付 } else if ($from == 'weixinh5') { $jsConfig = LaveRepository::h5PaySign($this->cid, $order); } else { $jsConfig = LaveRepository::wxPaySign($this->cid, $order); } } catch (\Exception $e) { $this->error($e->getMessage()); } $this->success('获取成功', $jsConfig); break; } return $this->error('支付方式错误'); } // 申请扣款 public function payPap(Request $request) { @file_put_contents("quanju.txt", "测试申请扣款-\r\n", 8); die(); $list=WechatPlanRecord::where('is_signing',0)->select(); $cid=$this->cid; $arr=[]; $arr['body']='月捐款'; foreach ($list as $k => $v){ $cid=$v['cid']; // if ($this->querySign($cid,$v['uid'],$v['plan_id'],$v['contract_code'])){ $arr['mch_id'] =Company::where('id', $cid)->value('pay_weixin_mchid'); $arr['out_trade_no']=LaveModel::getNewOrderId(); $arr['total_fee'] = $v['price']; // $arr['trade_type'] = 'PAP'; $arr['contract_id'] = Company::where('id', $cid)->value('contract_id'); // $rs = WechatService::paymentOrder($openid, $orderInfo['order_id'], $orderInfo['amount'], "lave", $orderInfo['order_name'], '', 'JSAPI', [], $cid); $rs = WechatService::papPayApply($arr['out_trade_no'], $arr['total_fee'], "lave", '月捐款', 'PAP', [], $cid,$arr['mch_id'],$arr['contract_id']); $where1['cid']=$cid; $where1['user_id']=$this->auth->getUserinfo()['id']; $where1['order_name']='月捐款'; $where1['category_id']=81; $where1['amount']=$arr['total_fee']; $where1['name']=$this->auth->getUserinfo()['username']; $where1['contact']=''; $where1['tel']=$this->auth->getUserinfo()['mobile']; $where1['address']='用户未填写联系地址'; $where1['is_open']=$v['is_open']; $where1['is_ticket']='0'; $where1['type']='0'; $where1['help_id']='0'; $order = LaveModel::create($where1); // } } } // 解除签约 public function deleteSign(Request $request){ $where = UtilService::postMore( [ ['cid', $this->cid], ['user_id', $this->auth->getUserinfo()['id']], ], $request ); $sign_info=WechatPlanRecord::where('cid', $where['cid'])->where('uid', $where['user_id'])->where('is_signing',1)->find(); if (!$sign_info){ $this->error('未找到签约信息!'); } $mch_id =Company::where('id', $where['cid'])->value('pay_weixin_mchid'); $plan_id=$sign_info['plan_id']; $contract_code=$sign_info['contract_code']; // $mch_id,$contract_code,$pan_id,$version='1.0',$options=[],$cid=0) $rs=WechatService::deleteSign($mch_id,$contract_code,$plan_id,'1.0',[],$where['cid']); @file_put_contents("quanju.txt", json_encode($rs)."-解除签约返回结果\r\n", 8); if ($rs){ WechatPlanRecord::where('cid', $where['cid'])->where('uid', $where['user_id'])->where('is_signing',0)->update(['is_signing'=>1]); $this->success('解除签约成功!'); }else{ $this->error('解除签约失败!'); } } // 查询签约状态 // public function querySign(int $cid,int $uid,int $plan_id,string $contract_code) // { //// $where = UtilService::postMore( //// [ //// ['cid', $this->cid], //// ['user_id', $this->auth->getUserinfo()['id']], //// ], $request //// ); // $sign_info = WechatPlanRecord::where('cid', $cid)->where('uid', $uid)->where('is_signing', 1)->find(); // if (!$sign_info) { // $this->error('未找到签约信息!'); // } // $mch_id = Company::where('id', $cid)->value('pay_weixin_mchid'); //// $plan_id = $sign_info['plan_id']; //// $contract_code = $sign_info['contract_code']; // $rs = WechatService::querySign($mch_id, $contract_code, $plan_id); // @file_put_contents("quanju.txt", json_encode($rs) . "-查询签约状态返回结果\r\n", 8); // if ($rs['return_code'] == 'SUCCESS') { // if ($rs['contract_state'] == 1) { // WechatPlanRecord::where('cid',$cid)->where('uid', $uid)->where('is_signing', 1)->update(['is_signing' => 0]); // return false; // }else{ // WechatPlanRecord::where('cid',$cid)->where('uid', $uid)->where('is_signing', 1)->update(['contract_id' => $rs['contract_id']]); // return true; // } // } else { // $this->error('查询签约状态失败!'); // } // } // 测试查询签约状态 public function csquerySign(Request $request) { $where = UtilService::postMore( [ ['cid', ''], ['user_id', ''], ['contract_code',''], ['plan_id', ''], ], $request ); // $sign_info = WechatPlanRecord::where('cid', $cid)->where('uid', $uid)->where('is_signing', 1)->find(); // if (!$sign_info) { // $this->error('未找到签约信息!'); // } $mch_id = Company::where('id', $where['cid'])->value('pay_weixin_mchid'); // $plan_id = $sign_info['plan_id']; // $contract_code = $sign_info['contract_code']; $rs = WechatService::querySign($mch_id, $where['contract_code'], $where['plan_id']); // if ($rs['return_code'] == 'SUCCESS') { // if ($rs['contract_state'] == 1) { // WechatPlanRecord::where('cid',$cid)->where('uid', $uid)->where('is_signing', 1)->update(['is_signing' => 0]); // return false; // }else{ // WechatPlanRecord::where('cid',$cid)->where('uid', $uid)->where('is_signing', 1)->update(['contract_id' => $rs['contract_id']]); // return true; // } // } else { // $this->error('查询签约状态失败!'); // } } public function plan_lst(Request $request) { $where = UtilService::getMore( [ ['page', 1], ['limit', 10], ['cid', $this->cid], // ['paid', 1], // ['category_id', 0], // ['order', ''], // ['key', ''], ], $request ); $this->success('获取成功', WechatPlan::lst($where)); } public function plan_read(Request $request) { $where = UtilService::getMore( [ ['id', 0], ['cid', $this->cid], ], $request ); $this->success('获取成功', WechatPlan::read($where)); } // 签约列表 public function user_plan_lst(Request $request) { $where = UtilService::getMore( [ ['cid', 0], // ['cid', $this->cid], // ['uid', $this->auth->getUserinfo()['id']], ['uid', 0], ], $request ); if (isset($where['uid'])) $this->error('用户不存在'); if (isset($where['cid'])) $this->error('请选择正确的城市的红十字会'); $this->success('获取成功', WechatPlanRecord::plan_lst($where)); } // 签约记录列表 public function user_record_lst(Request $request) { $where = UtilService::getMore( [ ['category_id', 0], //捐款意愿 ['cid', 0], // ['cid', $this->cid], // ['user_id', $this->auth->getUserinfo()['id']], ['user_id', 0], ], $request ); if (isset($where['uid'])) $this->error('用户不存在'); if (isset($where['cid'])) $this->error('请选择正确的城市的红十字会'); if (isset($where['category_id'])) $this->error('请选择捐款项目'); $this->success('获取成功', WechatPlanRecord::record_lst($where)); } } ?>