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}&timestamp={$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接口调用语音,图片,分享等功能相关推荐

  1. 微信开发 php 下载图片不显示,微信jssdk接口得到的图片显示问题

    这几天研究了一下这个微信公众平台的开发的问题 在使用chooseImage接口调用获取到了图片的时候一直显示不出来,百度了一些帖子结果都不是很好,后来终于研究出来怎么显示出来了,现在写出来做一个备份 ...

  2. 使用微信js-sdk上传语音并将语音下载到服务器

    JSSDK使用步骤 步骤一:绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". 备注:登录后可在&qu ...

  3. 微信sdk上传录音php,HTML5实现微信jssdk录音播放语音的实例

    HTML5微信jssdk录音播放语音的方法 需要注意的2个问题 1 就是一定要判断1秒内 录音都不算 ps:太短不能录音 2 录音超过1分钟 会发现正在录音突然消失 所以要写wx.onVoiceRec ...

  4. 微信api接口调用-发朋友圈

    微信api接口调用-发朋友圈 /*** 发微信朋友圈* @author wechatno:tangjinjinwx* @blog http://www.wlkankan.cn*/@Asyncpubli ...

  5. 个人微信api接口调用-微信群管理

    个人微信api接口调用-微信群管理 /*** 微信群聊管理* @author wechatno:tangjinjinwx* @blog http://www.wlkankan.cn*/@Asyncpu ...

  6. 个人微信api接口调用-给微信好友或群聊发消息

    个人微信api接口调用-给微信好友或群聊发消息 /*** 给微信好友发消息* @author wechatno:tangjinjinwx* @blog http://www.wlkankan.cn*/ ...

  7. 微信api接口调用-触发推送微信好友列表

    微信api接口调用-触发推送微信好友列表 /*** 触发推送微信好友列表任务* @author wechatno:tangjinjinwx* @blog http://www.wlkankan.cn* ...

  8. 个人微信api接口调用,推送微信好友群聊列表及返回

    个人微信api接口调用,推送微信好友群聊列表及返回 触发手机推送微信好友列表及返回/*** 触发手机推送微信好友列表* @author wechatno:tangjinjinwx* @blog htt ...

  9. 微信小程序开发(3) - 微信小程序调用摄像头静默隐藏拍照功能实现方式

    微信小程序最近非常火热,小编最近做了一个微信小程序开发新项目,使用小程序开发考试系统,在使用App参加考试的时候调用摄像头抓拍用户是否作弊,在开发过程中遇到点问题,下面小编把问题描述和解决方法分享给大 ...

最新文章

  1. 小程序点击按钮 关闭小程序
  2. Spring data redis 异常
  3. Git cherry-pick 使用总结
  4. STL源码剖析——P142关于list::sort函数
  5. vue - blog开发学习3
  6. 数据结构之二叉树的逻辑结构和遍历
  7. censtos6.5安装java 8_Centos6.5 安装JDK
  8. ApacheCN 活动汇总 2019.7.27
  9. vmware win7 iso 镜像文件下载
  10. 〖2023·新星计划·第四季〗开启,Python赛道火爆预热中~ 欢迎小伙伴们报名~
  11. 打包部署后无法读取jar包里的文件(实测可行,Java中读取jar包中的文件)
  12. Android Studio中arr包的引用
  13. java 小偷_浅谈小偷程序之Java
  14. 使用 satis 搭建一个私有的 Composer 包仓库 在我们的日常php开发中可能需要使用大量的composer包,大部份都可以直接使用,但在公司内部总有一小部份包是不能公开的,这时候我们就需
  15. Psins代码解析之静基座仿真(test_SINS_static.m)傅科、修拉周期水平通道误差传播(test_SINS_static_verify.m)
  16. let 连续复制_【进阶4-4期】Lodash是如何实现深拷贝的
  17. 预告片下载网站_如何在预告片电影中添加预告片以获得真实的电影院体验
  18. PHP中使用ZipArchive扩展压缩整个文件夹和过滤指定文件
  19. 制作QQ2011绿色版不求人
  20. lync 2010 批量启用用户

热门文章

  1. 线上服务器CPU负载过高的问题解决过程
  2. 使用Disk Genius进行Ext3分区
  3. 千兆网络变压器原理图及网络变压器线圈各磁环定义(含PDF工程文档)
  4. iOS 笔记 【经典】
  5. Web前端系列技术之Web APIs基础(从基础开始)⑥
  6. 国内申请NewBing账号【不排队】
  7. 数据挖掘项目的特征和关键环节
  8. ubuntu16.04如何通过adb连接miui系统手机
  9. week1-Python学习总结
  10. ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)