setName('ProfitSharingResult')->setDescription('自动分账'); $this->addArgument("order_id"); } protected function execute(Input $input, Output $output) { $order_id = $input->getArgument("order_id"); if ($order_id) { $where[] = ['order_id','=', $order_id]; } else { //查询已完成的订单,并且未分账的订单 $where[] = ['order_status','=', 30]; $where[] = ['pay_status','=', 20]; $where[] = ['is_refund','=', 10]; $where[] = ['is_delete','=', 0]; $where[] = ['profitsharing_status','=', 1]; $where[] = ['merchant_id','>', 0]; $where[] = ['method','=', PaymentMethodEnum::WECHAT]; } $orders = Order::where($where) ->field('order_id,total_price,order_price,pay_price,pay_method,cost_price,merchant_id,store_id,order_status,pay_status,delivery_status,receipt_status,delivery_type,delivery_time,create_time,out_order_no') ->select(); // var_dump($orders->toArray()); // exit(); if ($orders->isEmpty()) { echo $store['store_id']."没有已完成的订单要分账".PHP_EOL; return false; } //微信支付订单抽佣给平台、余额支付抽佣给平台,把订单金额记录到商户账上 foreach ($orders as $order) { //商户微信支付配置 $payment = Payment::where('store_id', $order->store_id)->where('merchant_id', $order->merchant_id)->where('method',PaymentMethodEnum::WECHAT)->where('is_enable', 1)->find(); if (!$payment) { echo $store['store_id']."微信支付方式没有配置".PHP_EOL; continue; } $payment_template = PaymentTemplate::where('template_id', $payment->template_id)->where('is_delete', 1)->find(); if (!$payment_template) { echo $store['store_id'].$payment->template_id."微信支付模版没有配置".PHP_EOL; continue; } $wechat_config = $payment_template['config'] ? json_decode($payment_template['config'], true) : []; if (!$wechat_config) { echo $store['store_id'].$payment->template_id."微信支付模版没有配置11".PHP_EOL; continue; } $wechat_config = $wechat_config['wechat']['normal'] ?? []; //小程序配置 $mini = Setting::where('store_id', $order->store_id)->find(); if (!$mini) { echo $store['store_id']."小程序配置没有".PHP_EOL; continue; } $mini_config = $mini['values'] ? json_decode($mini['config'], true) : []; if (!$mini_config) { echo $store['store_id'].$payment->template_id."微信支付模版没有配置11".PHP_EOL; continue; } //分账 $config = [ 'app_id' => $mini_config['app_id'], "secret" => $mini_config['app_secret'], 'mch_id' => $wechat_config['mchId'], 'key' => $wechat_config['apiKey'], 'cert_path' => PaymentTemplateModel::realPathCertFile(PaymentMethodEnum::WECHAT, $wechat_config['apiclientCert'], $order->store_id), 'key_path' => PaymentTemplateModel::realPathCertFile(PaymentMethodEnum::WECHAT, $wechat_config['apiclientKey'], $order->store_id), 'notify_url' => '', ]; $payment = Factory::payment($config); $payment_trade = PaymentTrade::where('trade_id', $order->trade_id)->field('trade_no')->find(); if (!$payment_trade) { echo $store['store_id']."没有交易流水号".PHP_EOL; continue; } $transaction_id = $payment_trade->trade_no; $sharing = $payment->profit_sharing->query($transaction_id,$order->out_order_no); var_dump($sharing); var_dump($sharing->return_code); var_dump($sharing->result_code); //更新 $ret = Order::where('order_id',$order->order_id)->update(['profitsharing_status' => 2, 'profitsharing_time' => time()]); echo "微信支付分账结果".PHP_EOL; var_dump($ret); } } }