scan($trade); $codeUrl = null; if ($code) { $codeUrl = $this->url->get( ['for' => 'web.qrcode'], ['text' => urlencode($code)] ); } return $codeUrl ?: false; } public function status($tradeNo) { $alipayService = new AlipayService(); return $alipayService->status($tradeNo); } public function cancel($tradeNo) { $tradeRepo = new TradeRepo(); $trade = $tradeRepo->findBySn($tradeNo); $orderRepo = new OrderRepo(); $order = $orderRepo->findById($trade->order_id); $alipayService = new AlipayService(); $response = $alipayService->cancel($trade->sn); if ($response) { $trade->status = TradeModel::STATUS_CLOSED; $trade->update(); if ($order->status != OrderModel::STATUS_PENDING) { $order->status = OrderModel::STATUS_PENDING; $order->update(); } } } }