AD:靠谱的微信小程序外包开发

admin

admin

发表于 2017-07-26 21:05:02

摘要:微信小程序开发者社区(www.mntuku.cn)为您提供:微信小程序ThinkPHP发送模板消息
相关的资讯,希望对您有帮助。

微信小程序ThinkPHP发送模板消息

作者:超哥,来自原文地址在控制器定义两个函数: public function _initialize() { $wxapp_settings=sp_get_option(wxapp_settings); $this-appid=$wxapp_settings;//得到appid $this-appsecret=$wxapp_settings; ...

作者:超哥,来自原文地址

在控制器定义两个函数: 

  1. public function _initialize() {
  2. $wxapp_settings=sp_get_option(wxapp_settings);
  3. $this->appid=$wxapp_settings[appid];//得到appid
  4. $this->appsecret=$wxapp_settings[appsecret];//得到appsecret
  5. }
  6. //发送模板消息
  7. public function sendmessage(){
  8. $data=$_POST=json_decode(file_get_contents(php://input), TRUE);
  9. $access_token=$this->getAccessToken();
  10. $request_url=https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=.$access_token;
  11. $request_data=array(
  12. touser=>$data[touser],//接收者(用户)的 openid
  13. template_id=>$data[template_id],//所需下发的模板消息的id
  14. page=>$data[page],//点击模板卡片后的跳转页面
  15. form_id=>$data[form_id],//表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id
  16. data=>$data[data],//keyword1: {value: 339208499, color: #173177}
  17. emphasis_keyword=>$data[emphasis_keyword]//模板需要放大的关键词,不填则默认无放大
  18. );
  19. $return=json_decode(https_request($request_url,$request_data,json),true);
  20. $this->response($return,json);
  21. }
  22. //获取及更新AccessToken
  23. private function getAccessToken(){
  24. $access_token_Model=M(access_token,wei_);//数据库
  25. $access_token_Data=$access_token_Model->find();
  26. if($access_token_Data[access_token]&&time()<$access_token_Data[access_token_update_time]+$access_token_Data[access_token_expires_in]){
  27. $return=array(access_token=>$access_token_Data[access_token],expires_in=>$access_token_Data[access_token_expires_in]);
  28. }else{
  29. $url=https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=.$this->appid.&secret=.$this->appsecret;
  30. $return=json_decode(https_request($url),true);
  31. if($return[access_token]){
  32. $save=array(
  33. access_token=>$return[access_token],
  34. access_token_expires_in=>$return[expires_in],
  35. access_token_update_time=>time()
  36. );
  37. $access_token_Model->where(array(appid=>$this->appid))->data($save)->save();
  38. }
  39. }
  40. return $return[access_token];
  41. }

调用它: 

  1. //发送模板消息
  2. public function sendMessage(){
  3. $answers_Model=M(answers);
  4. $users_Model=M(users);
  5. $posts_Model=M(posts);
  6. $answers_Data=$answers_Model->where(array(id=>$_POST[id]))->find();
  7. $posts_Data=$posts_Model->where(array(id=>$answers_Data[qid]))->find();
  8. $users_question_Data=$users_Model->where(array(id=>$posts_Data[post_author]))->find();
  9. $users_answer_Data=$users_Model->where(array(id=>$answers_Data[uid]))->find();
  10. if($posts_Data[form_id]){
  11. //发送模板消息
  12. $request_url=https://.$_SERVER[HTTP_HOST]./Wxapp/Common/sendmessage;
  13. $request_data=array(
  14. touser=>$users_question_Data[wxapp_uid],
  15. template_id=>RQ0ORmThmkAAQSnuk1N5JVkh8C7Yx5vVrPTpbW44UMo,
  16. page=>pages/my/questionDetail?id=.$answers_Data[qid],
  17. form_id=>$posts_Data[form_id],
  18. data=>array(
  19. keyword1=>array(value=>$posts_Data[post_title],color=>),//咨询内容
  20. keyword2=>array(value=>strip_tags($answers_Data[ctn]),color=>#5cb85c),//咨询结果
  21. keyword3=>array(value=>$users_answer_Data[user_nicename],color=>),//答复人
  22. keyword4=>array(value=>$answers_Data[create_date],color=>)//答复时间
  23. ),
  24. emphasis_keyword=>
  25. );
  26. $return=https_request($request_url,$request_data,json);
  27. }
  28. }

在ThinkPHP公共函数定义请求函数:

  1. //发送请求
  2. function https_request($url,$data,$type){
  3. if($type==json){//json $_POST=json_decode(file_get_contents(php://input), TRUE);
  4. $headers = array(Content-type: application/json;charset=UTF-8,Accept: application/json,Cache-Control: no-cache, Pragma: no-cache);
  5. $data=json_encode($data);
  6. }
  7. $curl = curl_init();
  8. curl_setopt($curl, CURLOPT_URL, $url);
  9. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  10. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  11. if (!empty($data)){
  12. curl_setopt($curl, CURLOPT_POST, 1);
  13. curl_setopt($curl, CURLOPT_POSTFIELDS,$data);
  14. }
  15. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  16. curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
  17. $output = curl_exec($curl);
  18. curl_close($curl);
  19. return $output;
  20. }


17阅读 | 0评论
你的回应
写文章

8043