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, ( ) !