PayHookJob.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace App\Jobs;
  3. use Aix\Pay\Data\PayOrder;
  4. use Illuminate\Bus\Queueable;
  5. use Illuminate\Queue\SerializesModels;
  6. use Illuminate\Queue\InteractsWithQueue;
  7. use Illuminate\Contracts\Queue\ShouldQueue;
  8. use Illuminate\Foundation\Bus\Dispatchable;
  9. use Illuminate\Support\Facades\Cache;
  10. class PayHookJob implements ShouldQueue
  11. {
  12. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  13. protected $platform;
  14. protected $data;
  15. /**
  16. * PayHookJob constructor.
  17. * @param $platform
  18. * @param $data
  19. */
  20. public function __construct($platform, $data)
  21. {
  22. $this->platform = $platform;
  23. $this->data = $data;
  24. $this->queue='pay';
  25. }
  26. /**
  27. * Execute the job.
  28. *
  29. * @return void
  30. */
  31. public function handle()
  32. {
  33. $platform=$this->platform;
  34. $this->$platform($this->data);
  35. }
  36. protected function alipay($data)
  37. {
  38. if ($data['trade_status'] != 'TRADE_SUCCESS' && $data['trade_status'] != 'TRADE_FINISHED') {
  39. return ;
  40. }
  41. $trade_no=substr($data['out_trade_no'], 0, strlen($data['out_trade_no'])-10);
  42. $payOrder=PayOrder::where('trade_no', $trade_no)->first();
  43. if (is_null($payOrder) || $payOrder->status != 0) {
  44. return ;
  45. }
  46. $payOrder->status=1;
  47. $payOrder->pay_platform_trade_no=$data['trade_no'];
  48. $payOrder->pay_time=$data['gmt_payment'];
  49. $payOrder->charge=$data;
  50. $payOrder->save();
  51. Cache::forget($payOrder->trade_no);
  52. $callback=explode('.', $payOrder->callback);
  53. $obj=app($callback[0]);
  54. call_user_func_array([$obj, $callback[1]], [$payOrder]);
  55. }
  56. protected function wechat($data)
  57. {
  58. $trade_no=substr($data['out_trade_no'], 0, strlen($data['out_trade_no'])-10);
  59. $payOrder=PayOrder::where('trade_no', $trade_no)->first();
  60. if (is_null($payOrder) || $payOrder->status != 0) {
  61. return ;
  62. }
  63. $payOrder->status=1;
  64. $payOrder->pay_platform_trade_no=$data['transaction_id'];
  65. $payOrder->pay_time=$data['time_end'];
  66. $payOrder->charge=$data;
  67. $payOrder->save();
  68. Cache::forget($payOrder->trade_no);
  69. $callback=explode('.', $payOrder->callback);
  70. $obj=app($callback[0]);
  71. call_user_func_array([$obj, $callback[1]], [$payOrder]);
  72. }
  73. protected function offline($data)
  74. {
  75. $payOrder=PayOrder::where('trade_no', $data['out_trade_no'])->first();
  76. if (is_null($payOrder) || $payOrder->status != 0) {
  77. return ;
  78. }
  79. $payOrder->status=1;
  80. $payOrder->pay_platform_trade_no=$data['out_trade_no'];
  81. $payOrder->pay_time=$data['operate_time'];
  82. $payOrder->attch=$data['notes'];
  83. $payOrder->charge=$data;
  84. $payOrder->save();
  85. $callback=explode('.', $payOrder->callback);
  86. $obj=app($callback[0]);
  87. call_user_func_array([$obj, $callback[1]], [$payOrder]);
  88. }
  89. }