request->post(); switch ($post['from']) { case 'order': $order = Order::get($post['order_id']); if ($order['order_status'] == CommonOrder::STATUS_CLOSE || $order['del'] == 1) { $this->_error('订单已关闭'); } break; case 'recharge': $order = Db::name('recharge_order')->where(['id' => $post['order_id']])->find(); break; } //找不到订单 if (empty($order)) { $this->_error('订单不存在'); } //已支付 if ($order['pay_status'] == Pay::ISPAID || $order['order_amount'] == 0) { $this->_success('支付成功', ['order_id' => $order['id']], 10001); } $result = PaymentLogic::pay($post['from'], $order, $post['order_source']); if (false === $result) { $this->_error(PaymentLogic::getError(), ['order_id' => $order['id']], PaymentLogic::getReturnCode()); } if (PaymentLogic::getReturnCode() != 0) { $this->_success('', $result, PaymentLogic::getReturnCode()); } $this->_success('', $result); } /** * Notes: pc端预支付 NATIVE * @author kiki * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException * @throws \GuzzleHttp\Exception\GuzzleException */ public function pcPrepay() { $post = $this->request->post(); $pay_way = $post['pay_way']; $order = Order::get($post['order_id']); $return_msg = ['order_id' => $order['id'], 'order_amount' => $order['order_amount']]; //找不到订单 if (empty($order)) { $this->_error('订单不存在'); } if ($order['order_status'] == CommonOrder::STATUS_CLOSE || $order['del'] == 1) { $this->_error('订单已关闭'); } //已支付 if ($order['pay_status'] == Pay::ISPAID || $order['order_amount'] == 0) { $this->_success('支付成功', $return_msg, 10001); } $result = PaymentLogic::pcPay($order, $pay_way, $post['order_source']); if (false === $result) { $this->_error(PaymentLogic::getError(), $return_msg, PaymentLogic::getReturnCode()); } if ($pay_way == Pay::BALANCE_PAY) { $this->_success('余额支付成功', $return_msg, PaymentLogic::getReturnCode()); } $return_msg['data'] = $result; if (PaymentLogic::getReturnCode() != 0) { $this->_success('', $return_msg, PaymentLogic::getReturnCode()); } $this->_success('', $return_msg); } /** * Notes: 小程序回调 * @author kiki */ public function notifyMnp() { $config = WeChatServer::getPayConfig(Client_::mnp); return WeChatPayServer::notify($config); } /** * Notes: 公众号回调 * @author kiki */ public function notifyOa() { $config = WeChatServer::getPayConfig(Client_::oa); return WeChatPayServer::notify($config); } /** * Notes: APP回调 * @author kiki */ public function notifyApp() { $config = WeChatServer::getPayConfig(Client_::ios); return WeChatPayServer::notify($config); } /** * Notes: 支付宝回调 * @author kiki */ public function aliNotify() { $data = $this->request->post(); return (new AliPayServer())->verifyNotify($data); } /** * Notes: * @author kiki * @return \think\Model[] */ public function payway() { $payModel = new Pay(); $pay = $payModel->where(['status' => 1])->order('sort')->hidden(['config'])->select()->toArray(); foreach ($pay as $k => &$item) { if ($item['code'] == 'wechat') { $item['extra'] = '微信快捷支付'; $item['pay_way'] = Pay::WECHAT_PAY; } if ($item['code'] == 'balance') { $user_money = Db::name('user')->where(['id' => $this->user_id])->value('user_money'); $item['extra'] = '可用余额:'.$user_money; $item['pay_way'] = Pay::BALANCE_PAY; } if ($item['code'] == 'alipay') { $item['extra'] = ''; $item['pay_way'] = Pay::ALI_PAY; } if (in_array($this->client, [Client_::mnp, Client_::oa]) && $item['code'] == 'alipay') { unset($pay[$k]); } } $this->_success('', array_values($pay)); } }