PHPの「微信テンプレートメッセージプッシュ」に関するコード

4782 ワード

お知らせ:
        ,      ,      ,          id,       ,       ,     ,  !~

第一部:本体部分コード、業務モジュールを担当し、微信端に必要なパラメータを準備する
/**
 *              【    】    
 * @param int $orderid   id
 * @return mixed
 */
public function order_complete_wx_notice($orderid)
{
    //$this->write_log(['order_cmp'=>1,'$orderid'=>$orderid]);
    if($orderid){
        //   orderid           
        $order_info = $this->get_template_info($orderid, 3);
        //$this->write_log(['order_cmp'=>2,'order_info'=>$order_info]);
        if($order_info){
            //     
            $request = [];
            $request['touser'] = $order_info['openid'];
            $request['template_id'] = '84Muc5Er_gyddmU1sdfdXSssssdAvW93kI'; //         id
            $request['page'] = 'pages/near/index'; //           
            $request['form_id'] = $order_info['prepay_id']; //      id
            $request['data'] = [
                'keyword1'=>['value'=>$order_info['course_name']], //     
                'keyword2'=>['value'=>$order_info['order_complete_time']], //     
                'keyword3'=>['value'=>$order_info['gym_name']], //     
                'keyword4'=>['value'=>$order_info['address']], //     
                'keyword5'=>['value'=>'   '], //     
                'keyword6'=>['value'=>'400-010-88888'], //     
                'keyword7'=>['value'=>'         ,      ,       !'], //     
            ];
            //$request['emphasis_keyword'] = 'keyword5.DATA'; //        
            //$this->write_log(['order_cmp'=>3,'request'=>$request]);
            //     
            $this->wx_show_template($request);
        }
    }
}

/**
 *     id         
 * @param int $id   id($type=2) ||   id($type=3 or $type=1)
 * @param int $type 2,    ;3,    。
 * @return array
 */
public function get_template_info($id, $type)
{
    if($id && $type){
        $this->load->dao('order_dao');
        return $this->order_dao->get_template_info($id, $type);
    }
}

第二部分:準備したデータを微信側に伝送し、微信はユーザーの微信にテンプレートメッセージをプッシュする.
/**
 *         ,      
 * @param array $request
 */
public function wx_show_template($request)
{
    //    redis   redis_access_token  
    $access_token = $this->get_redis_access_token();
    if(!$access_token){
        //       
        $access_token = $this->get_access_token();
        //     redis
        $this->load->library('dbredis');
        $this->dbredis->set('redis_access_token', $access_token);
    }
    if(!$access_token){
        exit('access_token  !');
    }
    //     
    $url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='.$access_token;
    //     ,       
    $this->curl_post_weixin($url, $request);
}

/**
 * cURL  POST     
 * @param string $url     
 * @param array $data     
 */
public function curl_post_weixin($url, $data)
{
    if($url && count($data)){
        $headers = ['Content-Type:application/json'];
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //    
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        curl_exec($ch);
        curl_close($ch);
    }
}

/**
 *   access_token 
 * @return string $access_token
 */
public function get_access_token()
{
    $appConfig = [
        'app_id' => 'wxsdd9asdfghe5efc',
        'secret' => 'ec1879wiujhyytbdt786ddb7d29106'
    ];
    $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appConfig['app_id'].'&secret='.$appConfig['secret'];
    $ch = curl_init(); //     
    curl_setopt($ch, CURLOPT_URL, $url); //   url    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //               
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//       
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //       SSL     
    $output = json_decode(curl_exec($ch));
    $access_token = $output->access_token;
    curl_close($ch);
    return $access_token;
}

最後にまとめます.
        ,    ,                 ,     id,  ,      ,  curl       ,        ,   openID,            (  )   !