Pay.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace App\Http\Controllers\api;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Support\Facades\Log;
  5. use Illuminate\Http\Request;
  6. use App\Services\PaymentOrderService;
  7. use App\Services\Payment\NoPayService;
  8. use App\Services\Payment\ZimuPayService;
  9. class Pay extends Controller
  10. {
  11. // 同步通知
  12. public function returnHandle(Request $request)
  13. {
  14. }
  15. // 异步通知
  16. public function notifyHandle(Request $request)
  17. {
  18. $data = $request->all();
  19. $context = $this->callbackContext($request, $data);
  20. Log::error('支付提现回调收到', $context);
  21. try {
  22. $res = PaymentOrderService::receiveOrder($data);
  23. Log::error('支付提现回调处理结果', $context + ['success' => (bool)$res]);
  24. if (NoPayService::getWithdrawMerchantId() !== '' && ($data['appId'] ?? '') === NoPayService::getWithdrawMerchantId()) {
  25. return response($res ? 'SUCCESS' : 'fail');
  26. }
  27. if (ZimuPayService::getAppId() !== '' && ($data['appId'] ?? '') === ZimuPayService::getAppId()) {
  28. return response($res ? 'success' : 'fail');
  29. }
  30. return response('success');
  31. } catch (\Throwable $e) {
  32. Log::error('支付提现回调处理异常', $context + [
  33. 'error' => $e->getMessage(),
  34. 'exception' => get_class($e),
  35. ]);
  36. return response('fail', 500);
  37. }
  38. }
  39. // 用户支付异步通知
  40. public function harvestHandle(Request $request)
  41. {
  42. $data = $request->all();
  43. $context = $this->callbackContext($request, $data);
  44. Log::error('支付充值回调收到', $context);
  45. try {
  46. $res = PaymentOrderService::receivePay($data);
  47. Log::error('支付充值回调处理结果', $context + ['success' => (bool)$res]);
  48. if (NoPayService::getDepositMerchantId() !== '' && ($data['appId'] ?? '') === NoPayService::getDepositMerchantId()) {
  49. return response($res ? 'SUCCESS' : 'fail');
  50. }
  51. if (ZimuPayService::getAppId() !== '' && ($data['appId'] ?? '') === ZimuPayService::getAppId()) {
  52. return response($res ? 'success' : 'fail');
  53. }
  54. return response('success');
  55. } catch (\Throwable $e) {
  56. Log::error('支付充值回调处理异常', $context + [
  57. 'error' => $e->getMessage(),
  58. 'exception' => get_class($e),
  59. ]);
  60. return response('fail', 500);
  61. }
  62. }
  63. private function callbackContext(Request $request, array $data): array
  64. {
  65. if (isset($data['sign'])) {
  66. $data['sign'] = substr((string)$data['sign'], 0, 8) . '***';
  67. }
  68. return [
  69. 'ip' => $request->ip(),
  70. 'url' => $request->fullUrl(),
  71. 'content_type' => $request->header('Content-Type'),
  72. 'user_agent' => $request->userAgent(),
  73. 'data' => $data,
  74. 'raw_body' => $request->getContent(),
  75. ];
  76. }
  77. }