<?php namespace app\service\byte_dance; use app\common\model\Mobile; use app\common\model\MobileOrder; use app\common\model\Payment; use app\common\model\User; class ByteDanceOrderPush implements ByteDanceInterface { /** @var MobileOrder */ protected $order; /** @var Payment */ protected $payment; /** * @param MobileOrder $order */ public function setOrder(MobileOrder $order): void { $this->order = $order; } /** * @param Payment $payment */ public function setPayment($payment): void { if(!$payment){ $payment=$this->order->payment; } if(!$payment){ $payment=$this->order->payment()->order('id','desc')->find(); } $this->payment = $payment; } public function get() { $openid=$this->getOpenid(); if(!$openid){ return false; } if(!$this->payment){ return false; } $params=[ 'access_token'=>(new ByteDanceAccessToken())->get(), 'app_name'=>'douyin', 'open_id'=>$openid, 'order_detail'=>json_encode([ 'order_id'=>$this->payment['order_no'], 'create_time'=>$this->order['create_time']*1000, 'status'=>$this->order->getOrderStatusText(), 'amount'=>1, 'total_price'=>$this->order['amount']*100, //'detail_url'=>"pages/payment/payment?id={$this->order->id}", 'detail_url'=>"pages/index/index", 'item_list'=>[ [ 'item_code'=>(string)$this->order['mobile_id'], 'img'=>$this->getImg(), 'title'=>$this->getTitle(), 'price'=>$this->order['amount']*100, ] ] ],256), 'order_status'=>$this->getOrderStatus(), 'order_type'=>0, 'update_time'=>time()*1000, ]; try { $data=ByteDance::httpPost('https://developer.toutiao.com/api/apps/order/v2/push',$params,[],false); if($data['err_code']!=0){ unset($params['access_token']); throw_user($data['err_msg'],$params); } }catch (\Exception $e){ user_log('ByteDanceOrderPush',[ 'e'=>$e->getMessage(), 'file'=>$e->getFile(), 'line'=>$e->getLine(), ]); } } public function getWangka() { $openid=$this->getOpenid(); if(!$openid){ return false; } if(!$this->payment){ return false; } $params=[ 'access_token'=>(new ByteDanceAccessToken())->getWangKa(), 'app_name'=>'douyin', 'open_id'=>$openid, 'order_detail'=>json_encode([ 'order_id'=>$this->payment['order_no'], 'create_time'=>$this->order['create_time']*1000, 'status'=>$this->order->getOrderStatusText(), 'amount'=>1, 'total_price'=>$this->order['amount']*100, //'detail_url'=>"pages/payment/payment?id={$this->order->id}", 'detail_url'=>"pages/index/index", 'item_list'=>[ [ 'item_code'=>(string)$this->order['mobile_id'], 'img'=>$this->getImg(), 'title'=>$this->getTitle(), 'price'=>$this->order['amount']*100, ] ] ],256), 'order_status'=>$this->getOrderStatus(), 'order_type'=>0, 'update_time'=>time()*1000, ]; try { $data=ByteDance::httpPost('https://developer.toutiao.com/api/apps/order/v2/push',$params,[],false); if($data['err_code']!=0){ unset($params['access_token']); throw_user($data['err_msg'],$params); } }catch (\Exception $e){ user_log('ByteDanceOrderPush',[ 'e'=>$e->getMessage(), 'file'=>$e->getFile(), 'line'=>$e->getLine(), ]); } } public function getHaoYuan() { $openid=$this->getOpenid(); if(!$openid){ return false; } if(!$this->payment){ return false; } $params=[ 'access_token'=>(new ByteDanceAccessToken())->getHaoYuan(), 'app_name'=>'douyin', 'open_id'=>$openid, 'order_detail'=>json_encode([ 'order_id'=>$this->payment['order_no'], 'create_time'=>$this->order['create_time']*1000, 'status'=>$this->order->getOrderStatusText(), 'amount'=>1, 'total_price'=>$this->order['amount']*100, //'detail_url'=>"pages/payment/payment?id={$this->order->id}", 'detail_url'=>"pages/index/index", 'item_list'=>[ [ 'item_code'=>(string)$this->order['mobile_id'], 'img'=>$this->getImg(), 'title'=>$this->getTitle(), 'price'=>$this->order['amount']*100, ] ] ],256), 'order_status'=>$this->getOrderStatus(), 'order_type'=>0, 'update_time'=>time()*1000, ]; try { $data=ByteDance::httpPost('https://developer.toutiao.com/api/apps/order/v2/push',$params,[],false); if($data['err_code']!=0){ unset($params['access_token']); throw_user($data['err_msg'],$params); } }catch (\Exception $e){ user_log('ByteDanceOrderPush',[ 'e'=>$e->getMessage(), 'file'=>$e->getFile(), 'line'=>$e->getLine(), ]); } } protected function getOpenid(){ $user_id=$this->order['user_id']; if($user_id){ return User::where('id',$user_id)->value('openid'); } return false; } protected function getImg(){ if($this->order['type']==Mobile::FLOW){ $info=$this->order->info; return $info['mobile']['logo']; } return request()->domain().'/assets/img/20220917163638.png'; } protected function getTitle(){ if($this->order['type']==Mobile::FLOW){ return $this->order['brand'].'流量卡'; } //return $this->order['brand']."【{$this->order['no']}】"; return "靓号【{$this->order['no']}】"; } protected function getOrderStatus(){ if($this->order['status']==0){ return 0; }elseif ($this->order['status']==50){ return 2; }else{ return 1; } } }