DgPayController.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Services\DgPayService;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Log;
  7. /**
  8. * 大观支付回调控制器
  9. */
  10. class DgPayController extends Controller
  11. {
  12. /**
  13. * @var DgPayService
  14. */
  15. protected DgPayService $payService;
  16. /**
  17. * 构造函数
  18. */
  19. public function __construct(DgPayService $payService)
  20. {
  21. $this->payService = $payService;
  22. }
  23. /**
  24. * 支付异步通知
  25. *
  26. * @param Request $request
  27. * @return \Illuminate\Http\Response
  28. */
  29. public function notify(Request $request)
  30. {
  31. // 记录通知数据
  32. $data = $request->all();
  33. Log::info('DgPay notify:', $data);
  34. // 验证签名
  35. if (!$this->payService->verifySign($data)) {
  36. Log::error('DgPay notify sign verify failed');
  37. return response('sign error');
  38. }
  39. // 处理支付结果
  40. try {
  41. // 支付成功
  42. if ($data['trade_status'] === 'SUCCESS') {
  43. // TODO: 在这里处理您的业务逻辑
  44. // 1. 验证订单金额是否正确
  45. // 2. 修改订单状态
  46. // 3. 发送通知等
  47. // 处理成功后返回成功标识
  48. return response('success');
  49. }
  50. // 其他状态直接返回成功
  51. return response('success');
  52. } catch (\Exception $e) {
  53. Log::error('DgPay notify process error: ' . $e->getMessage());
  54. return response('fail');
  55. }
  56. }
  57. /**
  58. * 支付同步跳转
  59. *
  60. * @param Request $request
  61. * @return \Illuminate\Http\Response
  62. */
  63. public function return(Request $request)
  64. {
  65. // 记录跳转数据
  66. $data = $request->all();
  67. Log::info('DgPay return:', $data);
  68. // 验证签名
  69. if (!$this->payService->verifySign($data)) {
  70. Log::error('DgPay return sign verify failed');
  71. return response('签名验证失败');
  72. }
  73. // TODO: 在这里处理跳转逻辑
  74. // 1. 可以跳转到订单详情页
  75. // 2. 可以跳转到支付成功页
  76. // 3. 可以根据业务需求自定义跳转
  77. return response()->json([
  78. 'message' => '支付成功'
  79. ]);
  80. }
  81. }