'微信支付', '2' => '余额支付', '3' => '积分支付', '4' => '货到付款']; $address_store = $order['address'] . ';' .$order['name']. ';'. substr_replace($order['tel'],'****',3,4); $address = $order['address'] . ';' .$order['name']. ';'. $order['tel']; // 查询子订单,用于发消息给商户 $order_children = Order::query()->select(['id', 'order_num', 'store_id', 'money', 'time']) ->where(['order_main_id' => $order_main_id]) ->get() ->toArray(); $goods_temp_all = []; foreach ($order_children as $key => &$item) { $item = (array)$item; // 订单商品 $order_goods = OrderGoods::query()->select(['name', 'number', 'spec', 'good_unit']) ->where(['order_id' => $item['id']]) ->get() ->toArray(); $goods_temp = []; foreach ($order_goods as $k => &$goods) { array_push($goods_temp, $goods['name']."*".$goods['number']."/".($goods['spec']?:$goods['good_unit'])); array_push($goods_temp_all, $goods['name']."*".$goods['number']."/".($goods['spec']?:$goods['good_unit'])); } // 商户/门店的openid $store = Store::query()->select(['id', 'name', 'user_id']) ->where(['id' => $item['store_id']]) ->first()->toArray(); $store['openid'] = Users::query() ->where(['id' => $store['user_id']]) ->value('openid'); // 模板数据 $data_store = [ 'first' => ['您有新的外卖订单!订单编号:'.$item['order_num'], '#ff0000'], 'keyword' => [ ["您的外卖订单详情:\r\n".implode(";\r\n",$goods_temp), '#ff0000'], $item['money'], $payTypes[$order['pay_type']], $item['time']?:'', $address_store, ], 'remark' => [$order['note'], '#4e6ef2'] ]; $ret_store = $this->sendTempMsg($store['openid'], '-M7DG_ACwJxqdAvyvJuAnPpx4xaLf3VkkN0fckno71c',$data_store); } // 模板数据发送消息给用户 $data_user = [ 'first' => '您好,下单成功!订单编号:'.$order['order_num'], 'keyword' => [ implode(";\r\n", $goods_temp_all), $order['money'], $payTypes[$order['pay_type']], date('Y-m-d H:i:s', $order['time_add']), $address, ], 'remark' => '感谢您的光临,欢迎下次再来!' ]; // 获取用户openid,发送给用户 $user_openid = Users::query()->where(['id' => $order['user_id']])->value('openid'); $ret_user = $this->sendTempMsg($user_openid,'-M7DG_ACwJxqdAvyvJuAnPpx4xaLf3VkkN0fckno71c', $data_user); } public function sendTempMsg($openid, $template_id, $data, $redirect_url = '', $applet_config = ['appid' => '', 'pagepath' => '']) { // 先拼个基础的 $template = [ 'touser' => $openid, 'mp_template_msg' => [ 'appid' => env('OFFICIAL_APP_ID'), 'template_id' => $template_id, 'url' => $redirect_url, ] ]; // 看看有没有小程序跳转的要求 if ( is_array($applet_config)&&!empty($applet_config)&&!empty($applet_config['appid']) ) { $template['mp_template_msg']['miniprogram'] = $applet_config; } // 重点来了,拼接关键数据data if (!is_array($data)) { # 数组都不是,请回去 return false; } if (is_array($data['first'])) { $template['mp_template_msg']['data']['first']['value'] = $data['first'][0] ?? ''; $template['mp_template_msg']['data']['first']['color'] = $data['first'][1] ?? ''; } else { $template['mp_template_msg']['data']['first']['value'] = $data['first']; } if (isset($data['keyword'])&&is_array($data['keyword'])) { foreach ($data['keyword'] as $key => &$keyword) { $index = $key+1; if (is_array($keyword)) { $template['mp_template_msg']['data']['keyword'.$index]['value'] = $keyword[0] ?? ''; $template['mp_template_msg']['data']['keyword'.$index]['color'] = $keyword[1] ?? ''; } else { $template['mp_template_msg']['data']['keyword'.$index]['value'] = $keyword; } } } if (is_array($data['remark'])) { $template['mp_template_msg']['data']['remark']['value'] = $data['remark'][0] ?? ''; $template['mp_template_msg']['data']['remark']['color'] = $data['remark'][1] ?? ''; } else { $template['mp_template_msg']['data']['remark']['value'] = $data['remark']; } $app = Factory::miniProgram(config('wxtempmsg')); $app['guzzle_handler'] = CoroutineHandler::class; $app->uniform_message->send($template); } }