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: 小程序回调 * @author 段誉(2021/2/23 14:34) */ public function notifyMnp() { $config = WeChatServer::getPayConfig(Client_::mnp); return WeChatPayServer::notify($config); } /** * Notes: 公众号回调 * @author 段誉(2021/2/23 14:34) */ public function notifyOa() { $config = WeChatServer::getPayConfig(Client_::oa); return WeChatPayServer::notify($config); } /** * Notes: APP回调 * @author 段誉(2021/2/23 14:34) */ public function notifyApp() { $config = WeChatServer::getPayConfig(Client_::ios); return WeChatPayServer::notify($config); } /** * Notes: 支付宝回调 * @author 段誉(2021/3/23 11:37) */ public function aliNotify() { $data = $this->request->post(); $result = (new AliPayServer())->verifyNotify($data); if (true === $result) { echo 'success'; } else { echo 'fail'; } } /** * Notes: * @author 段誉(2021/3/23 11:36) * @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)); } }