使用微信jssdk接口调用语音,图片,分享等功能
1.在js接口安全域名中明设置你的业务域名
2.获取access_token以及jsticket
public function getvAssaceTokena(){$appId = config('post_house.wx_appid');$secret = config('post_house.wx_appsecret');$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appId}&secret={$secret}";return json_decode( https_request($url) )->access_token;} public function getvTicketa($token){$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$token."&type=jsapi";return json_decode(https_request($url))->ticket;}
3.生成随机数
public function createNonceStra($length = 16) {$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";$str = "";for ($i = 0; $i < $length; $i++) {$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);}return $str;}
4.生成签名
public function sdksign($url){$time =time();if(Cache::get('post_token')){$token = Cache::get('post_token');}else{$token = $this->getvAssaceTokena();Cache::set('post_token',$token,7100);}if(Cache::get('post_ticket')){$ticket = Cache::get('post1_ticket');}else{$ticket = $this->getvTicketa($token);Cache::set('post_ticket',$ticket,7100);}$nonceStr = $this->createNonceStra();// Cache::clear(); $url = $url;$str = "jsapi_ticket={$ticket}&noncestr={$nonceStr}×tamp={$time}&url={$url}";$signature = sha1($str);$appid = config('post_house.wx_appid');return array('nonceStr' =>$nonceStr ,'timestamp'=>$time,'signature' =>$signature,'appid'=>$appid );}
5.前端页面引入微信js
<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
6.将需要引入的功写在wx.config里
$(function(){wx.config({debug: false,appId: '{$appId}',timestamp: '{$timestamp}',nonceStr: '{$nonceStr}',signature: '{$signature}',jsApiList: [// 所有要调用的 API 都要加到这个列表中'startRecord','stopRecord','onVoiceRecordEnd','playVoice','pauseVoice','stopVoice','onVoicePlayEnd','uploadVoice','chooseImage','uploadImage','downloadImage','uploadVoice','onMenuShareAppMessage']});
我使用了微信语音接口及有图片上传接口 并且将语音文件以及图片上传到微信服务器因为微信服务器有限制仅保存三天,所以需要将文件西再到自己的服务器上
(function(){$("input[type='button']").click(function(e){wx.chooseImage({count: 1, // 默认9sizeType: ['original','compressed'], // 可以指定是原图还是压缩图,默认二者都有sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有success: function (res) {var localIds = res.localIds; $('#localIds').attr('value',localIds)uploadImageurl();}});});var uploadImageurl = function(){var localIds = $('#localIds').val();wx.uploadImage({localId: localIds, // 需要上传的图片的本地ID,由chooseImage接口获得isShowProgressTips: 1, // 默认为1,显示进度提示success: function (res) {serverId = res.serverId; // 返回图片的服务器端ID$('#serverId').attr('value',serverId)qiniu();}});} var qiniu = function(){$.ajax({'url':"{:url('qiniu')}",'data':{serverId},'type':'post','dataType':'json',success:function(res){var url = res.substr(7,61)var img_url = res.substr(30,64)$('#img_url').attr('value',img_url);$('.addPic .add_btn').css('display','none');$('.addPic .int_img').attr("src",url);console.log(res)}})}})();
下载方式
public function qiniu(){$serverId = $_POST['serverId'];$new_url = "/public/uploads/posthouse_img/".date('YmdHis').rand(100,999).".jpg";if(Cache::get('post1_token')){$token = Cache::get('post1_token');}else{$token = $this->getvAssaceTokena();Cache::set('post1_token',$token,7200);}$url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=".$token."&media_id=".$serverId;$a = file_get_contents($url);// $new_url = "/public/uploads/posthouse_img/posthouse_".date('YmdHis').rand().".jpg";$fileurl =ROOT_PATH .$new_url;$resource = fopen($fileurl , 'w+');fwrite($resource, $a);fclose($resource);echo json_encode($new_url);exit;}
使用上传后返回的服务端id请求接口将文件写入自己到服务器上
语音接口与图像接口下载方式相似 需要注意的是 微信下载的语音个事是amr格式的 在页面audio标签无法使用 所以需要将amr格式的转化成MP3格式的音频 需要在服务器配置一个插件ffmpeg
参考文档:
ffmpeg安装指南:https://trac.ffmpeg.org/wiki/CompilationGuide
ffmpeg git地址:https://github.com/FFmpeg/FFmpeg
public function qiniu_voice(){ $serverId = $_POST['voice_serverId'];$voice_url = "/public/uploads/posthouse_voice/".date('YmdHis').rand(100,999); if(Cache::get('post1_token')){$token = Cache::get('post1_token');}else{$token = $this->getvAssaceTokena();Cache::set('post1_token',$token,7200);} $url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=".$token."&media_id=".$serverId;$a = file_get_contents($url);// $new_url = "/public/uploads/posthouse_img/posthouse_".date('YmdHis').rand().".jpg";$fileurl =ROOT_PATH .$voice_url;$resource = fopen($fileurl , 'w+');fwrite($resource,$a);fclose($resource);$amr = '/data/wwwroot/qqcardcs.10088.cn'.$voice_url;$mp3 = $amr.'.mp3';$error = null; if(file_exists($mp3) == true){ // exit('无需转换'); }else{ $command = "/usr/local/bin/ffmpeg -i $amr $mp3";$a = exec($command,$error);unlink($amr);} echo json_encode($mp3);exit;}
使用微信jssdk接口调用语音,图片,分享等功能相关推荐
- 微信开发 php 下载图片不显示,微信jssdk接口得到的图片显示问题
这几天研究了一下这个微信公众平台的开发的问题 在使用chooseImage接口调用获取到了图片的时候一直显示不出来,百度了一些帖子结果都不是很好,后来终于研究出来怎么显示出来了,现在写出来做一个备份 ...
- 使用微信js-sdk上传语音并将语音下载到服务器
JSSDK使用步骤 步骤一:绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". 备注:登录后可在&qu ...
- 微信sdk上传录音php,HTML5实现微信jssdk录音播放语音的实例
HTML5微信jssdk录音播放语音的方法 需要注意的2个问题 1 就是一定要判断1秒内 录音都不算 ps:太短不能录音 2 录音超过1分钟 会发现正在录音突然消失 所以要写wx.onVoiceRec ...
- 微信api接口调用-发朋友圈
微信api接口调用-发朋友圈 /*** 发微信朋友圈* @author wechatno:tangjinjinwx* @blog http://www.wlkankan.cn*/@Asyncpubli ...
- 个人微信api接口调用-微信群管理
个人微信api接口调用-微信群管理 /*** 微信群聊管理* @author wechatno:tangjinjinwx* @blog http://www.wlkankan.cn*/@Asyncpu ...
- 个人微信api接口调用-给微信好友或群聊发消息
个人微信api接口调用-给微信好友或群聊发消息 /*** 给微信好友发消息* @author wechatno:tangjinjinwx* @blog http://www.wlkankan.cn*/ ...
- 微信api接口调用-触发推送微信好友列表
微信api接口调用-触发推送微信好友列表 /*** 触发推送微信好友列表任务* @author wechatno:tangjinjinwx* @blog http://www.wlkankan.cn* ...
- 个人微信api接口调用,推送微信好友群聊列表及返回
个人微信api接口调用,推送微信好友群聊列表及返回 触发手机推送微信好友列表及返回/*** 触发手机推送微信好友列表* @author wechatno:tangjinjinwx* @blog htt ...
- 微信小程序开发(3) - 微信小程序调用摄像头静默隐藏拍照功能实现方式
微信小程序最近非常火热,小编最近做了一个微信小程序开发新项目,使用小程序开发考试系统,在使用App参加考试的时候调用摄像头抓拍用户是否作弊,在开发过程中遇到点问题,下面小编把问题描述和解决方法分享给大 ...
最新文章
- 传真休眠怎么取消_C盘满了怎么办——系统瘦身
- python生成一个窗口_PyQt5创建一个新窗口的实例
- Android教程之使用LiveAndroid来测试应用
- Decorator pattern
- linux ssh互免密配置
- 一步一步部署微软工作流解决方案(MWMS)到生产环境
- Python求找出1000以内所有的“完数”
- php接收dup,TCP与DUP简单对比
- 面向对象三大特性 -- 继承,封装,多态
- 帝国cms 打开打开转换表文件失败!
- C++标准库 第七章 STL迭代器
- 即将发版!Apache Flink 1.9 版本有哪些新特性?
- 基于相干解调法和基于相位比较法的2DPSK数字通信系统 MATLAB Simulink仿真
- Php二叉树对称,PHP如何实现判断二叉树是否对称
- 阿里技术参考图册-研发篇
- python调用soap_如何在python zeep中调用soap api而不使用wsdl(非wsdl模式)?使用用户和密码身份验证调用位置URL...
- 危机中转型,如何获得领导的支持?
- PHPStorm 设置背景图片
- 小智双核浏览器下载安装配置教程
- Oblog最新注入漏洞分析