PaymentController.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace App\Http\Controllers\Guest;
  3. use App\Models\Order;
  4. use App\Services\OrderService;
  5. use App\Services\PaymentService;
  6. use App\Services\TelegramService;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. class PaymentController extends Controller
  10. {
  11. public function notify($method, Request $request)
  12. {
  13. $paymentService = new PaymentService($method);
  14. $verify = $paymentService->notify($request->input());
  15. if ($verify) abort(500, 'verify error');
  16. if (!$this->handle($verify['trade_no'], $verify['callback_no'])) {
  17. abort(500, 'handle error');
  18. }
  19. die('success');
  20. }
  21. private function handle($tradeNo, $callbackNo)
  22. {
  23. $order = Order::where('trade_no', $tradeNo)->first();
  24. if ($order->status === 1) return true;
  25. if (!$order) {
  26. abort(500, 'order is not found');
  27. }
  28. $orderService = new OrderService($order);
  29. if (!$orderService->success($callbackNo)) {
  30. return false;
  31. }
  32. $telegramService = new TelegramService();
  33. $message = sprintf(
  34. "💰成功收款%s元\n———————————————\n订单号:%s",
  35. $order->total_amount / 100,
  36. $order->trade_no
  37. );
  38. $telegramService->sendMessageWithAdmin($message);
  39. return true;
  40. }
  41. }