| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | <?phpnamespace App\Jobs;use Aix\Pay\Data\PayOrder;use Illuminate\Bus\Queueable;use Illuminate\Queue\SerializesModels;use Illuminate\Queue\InteractsWithQueue;use Illuminate\Contracts\Queue\ShouldQueue;use Illuminate\Foundation\Bus\Dispatchable;use Illuminate\Support\Facades\Cache;class PayHookJob implements ShouldQueue{    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;    protected $platform;    protected $data;    /**     * PayHookJob constructor.     * @param $platform     * @param $data     */    public function __construct($platform, $data)    {        $this->platform = $platform;        $this->data = $data;        $this->queue='pay';    }    /**     * Execute the job.     *     * @return void     */    public function handle()    {        $platform=$this->platform;        $this->$platform($this->data);    }    protected function alipay($data)    {        if ($data['trade_status'] != 'TRADE_SUCCESS' && $data['trade_status'] != 'TRADE_FINISHED') {            return ;        }        $trade_no=substr($data['out_trade_no'], 0, strlen($data['out_trade_no'])-10);        $payOrder=PayOrder::where('trade_no', $trade_no)->first();        if (is_null($payOrder) || $payOrder->status != 0) {            return ;        }        $payOrder->status=1;        $payOrder->pay_platform_trade_no=$data['trade_no'];        $payOrder->pay_time=$data['gmt_payment'];        $payOrder->charge=$data;        $payOrder->save();        Cache::forget($payOrder->trade_no);        $callback=explode('.', $payOrder->callback);        $obj=app($callback[0]);        call_user_func_array([$obj, $callback[1]], [$payOrder]);    }    protected function wechat($data)    {        $trade_no=substr($data['out_trade_no'], 0, strlen($data['out_trade_no'])-10);        $payOrder=PayOrder::where('trade_no', $trade_no)->first();        if (is_null($payOrder) || $payOrder->status != 0) {            return ;        }        $payOrder->status=1;        $payOrder->pay_platform_trade_no=$data['transaction_id'];        $payOrder->pay_time=$data['time_end'];        $payOrder->charge=$data;        $payOrder->save();        Cache::forget($payOrder->trade_no);        $callback=explode('.', $payOrder->callback);        $obj=app($callback[0]);        call_user_func_array([$obj, $callback[1]], [$payOrder]);    }    protected function offline($data)    {        $payOrder=PayOrder::where('trade_no', $data['out_trade_no'])->first();        if (is_null($payOrder) || $payOrder->status != 0) {            return ;        }        $payOrder->status=1;        $payOrder->pay_platform_trade_no=$data['out_trade_no'];        $payOrder->pay_time=$data['operate_time'];        $payOrder->attch=$data['notes'];        $payOrder->charge=$data;        $payOrder->save();        $callback=explode('.', $payOrder->callback);        $obj=app($callback[0]);        call_user_func_array([$obj, $callback[1]], [$payOrder]);    }}
 |