$merchant_id ]; $config = $MerRemitModel->getFind($dataMap); if ($config && isset($config['id']) && $config['wx_state'] == 1) { // } else { $result['status'] = 0; $result['msg'] = '商家未配置企业付款,或者打款到零钱已关闭!'; return $result; } // 提现记录获取 $withdrawalWhere['id'] = $id; $withdrawalWhere['state'] = ['NEQ', 1]; $Withdrawal = $this->getFind($withdrawalWhere); if (!$Withdrawal) { $result['status'] = 0; $result['msg'] = '申请记录错误!'; return $result; } else if ($Withdrawal['state'] == 1) { $result['status'] = 0; $result['msg'] = '提现申请已到账!'; return $result; } else if ($Withdrawal['status'] == 0) { $result['status'] = 0; $result['msg'] = '提现请求审核中,请稍后!'; return $result; } if($Withdrawal['state'] == 2){ // 打款中,获取之前的订单号 $remitRes = $RemitRecordModel->getFind(['user_id' => $Withdrawal['id']], 'id, out_trade_no'); if(!$remitRes['id'] || !$remitRes['out_trade_no']){ $result['status'] = 0; $result['msg'] = '提现记录错误!'; return $result; } $remitRes = $remitRes['id']; $out_trade_no = $remitRes['out_trade_no']; } else { $out_trade_no = createOrderTradeNo($Withdrawal['id']); $RemitRecordData = [ 'record_id' => $Withdrawal['id'], 'merchant_id' => $merchant_id, 'user_id' => $Withdrawal['distributor_id'], 'money' => $Withdrawal['withdrawal_money'], 'remit_type' => 1, 'out_trade_no' => $out_trade_no, ]; $remitRes = $RemitRecordModel->addOrder($RemitRecordData); } // 申请人员uid获取 $uidInfo = $DistributorModel->getFind(['id' => $Withdrawal['distributor_id'] ], 'uid'); // 申请人员的openid 获取 $openid = $DistributorModel->getOpenidByDistributor($Withdrawal['distributor_id']); if(!$openid){ $result['status'] = 0; $result['msg'] = '用户关键信息缺失!'; return $result; } if($remitRes){ $id = $remitRes; $money = $Withdrawal['withdrawal_money'] * 100; $WxRemitPay = new WxRemitPay($config); $res = $WxRemitPay->remitPay($out_trade_no, $openid, $money, '分销员佣金'); $errmsg = $WxRemitPay->getMsg(); if ($res) { // 打款成功 $wxReturnData = $WxRemitPay->getReturnData(); // 更新--申请信息/分销员可提现金额 $this->updateOrder(['id' => $Withdrawal['id']], ['state' => 1, 'remit_record_id' => $id]); // 更新订单 $map = array( 'id' => $id, 'out_trade_no' => $out_trade_no, 'merchant_id' => $merchant_id ); $saveData = array( 'add_time' => strtotime($wxReturnData['payment_time']), 'trade_no' => $wxReturnData['payment_no'], 'order_state' => 'SUCCESS', 'other_info' => json_encode($wxReturnData) ); $res = $RemitRecordModel->updateOrder($map, $saveData); if ($res) { $result['status'] = 1; $result['msg'] = '微信打款到零钱成功!'; // 消息推送 $MessageData = [ 'type' => 6, 'uid' => $uidInfo['uid'], 'title' => '微信打款到零钱成功', 'content' => '恭喜您,微信打款到零钱成功.'.$Withdrawal['withdrawal_money'].'元', 'add_time' => time() ]; } else { $result['status'] = 1; $result['msg'] = '微信打款到零钱成功,但打款流水更新失败,建议记账,流水单号:' . $out_trade_no; // 消息推送 $MessageData = [ 'type' => 6, 'uid' => $uidInfo['uid'], 'title' => '微信打款到零钱成功', 'content' => '恭喜您,微信打款到零钱成功.'.$Withdrawal['withdrawal_money'].'元', 'add_time' => time() ]; } $MessageModel->addOrder($MessageData); return $result; } else if ($res === 0) { // 更新--申请信息/分销员可提现金额(冻结) $this->updateOrder(['id' => $Withdrawal['id']], ['state' => 2]); // 打款处理中 $map = array( 'id' => $id, 'out_trade_no' => $out_trade_no, 'merchant_id' => $merchant_id ); $saveData = array( 'order_state' => 'PROCESSING' ); $res = $RemitRecordModel->updateOrder($map, $saveData); if ($res) { $result['status'] = 0; $result['msg'] = $errmsg; return $result; } else { $result['status'] = 0; $result['msg'] = $errmsg . ' 打款处理中,但打款流水未正确修改状态,建议记账,流水单号:' . $out_trade_no; return $result; } } else { // 打款失败,用户资金返还 // $DistributorModel->toSetInc(['id' => $Withdrawal['distributor_id']], 'settable_amount', $Withdrawal['withdrawal_money']); $map = array( 'id' => $id, 'out_trade_no' => $out_trade_no, 'merchant_id' => $merchant_id ); $saveData = array( 'order_state' => 'FAILED' ); $res = $RemitRecordModel->updateOrder($map, $saveData); // 打款失败 $result['status'] = 0; $result['msg'] = $errmsg; return $result; } } else { $error = $RemitRecordModel->error; $error = $error ? $error : '打款流水添加失败'; $result['status'] = 0; $result['msg'] = $error; return $result; } } // 查询订单状态 public function getOrderStatus($id) { $MerRemitModel = new MerRemitModel(); $record_id = $this->getFind(['id' =>$id], 'remit_record_id, merchant_id'); $trade_no = $MerRemitModel->getFind(['id' =>$record_id['id']], 'trade_no'); if(!$trade_no){ return 0; } $dataMap = [ 'merchant_id' => $record_id['merchant_id'] ]; $config = $MerRemitModel->getFind($dataMap); if ($config && isset($config['id']) && $config['wx_state'] == 1) { // } else { $result['status'] = 0; $result['msg'] = '商家未配置企业付款,或者打款到零钱已关闭!'; return $result; } $WxRemitPay = new WxRemitPay($config); $res = $WxRemitPay->getPayState($trade_no['trade_no']); if($res){ return 1; } else if($res === 0) { return 2; } else { return 3; } } }