首先在微信公众号配置安全域名

还需在前端页面引入<script src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>,支持https

附上前端代码:

$.ajax({type: 'post',url: '{:U(\'Newsystem/represen\')}',data: {url:encodeURIComponent(location.href.split('#')[0])},async: true,success: function (res) {// console.log(res);wx.config({debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId: res.appid, // 必填,公众号的唯一标识timestamp: res.timestamp, // 必填,生成签名的时间戳nonceStr: res.noncestr, // 必填,生成签名的随机串signature: res.signature,// 必填,签名jsApiList: ['startRecord','stopRecord','onVoiceRecordEnd','playVoice','pauseVoice','stopVoice','onVoicePlayEnd','uploadVoice','downloadVoice','translateVoice'] // 必填,需要使用的JS接口列表});wx.ready(function () {// console.log('success');if (localStorage.allowRecord !== 'true') {wx.startRecord({success: function() {localStorage.allowRecord = 'true';// 仅仅为了授权,所以立刻停掉wx.stopRecord();},cancel: function() {alert('用户拒绝授权录音');}});}});wx.error(function (res) {// console.log(res);});},error: function (res) {alert('操作失败');}});var localId;var btnRecord = $('#voice');btnRecord.on('touchstart', function(event) {// console.log(event);event.preventDefault();btnRecord.addClass('hold');startTime = new Date().getTime();// 延时后录音,避免误操作recordTimer = setTimeout(function() {wx.startRecord({success: function() {},cancel: function() {alert('用户拒绝授权录音');}});}, 300);}).on('touchend', function(event) {event.preventDefault();btnRecord.removeClass('hold');// 间隔太短if (new Date().getTime() - startTime < 300) {startTime = 0;// 不录音clearTimeout(recordTimer);} else if(new Date().getTime() - startTime > 120000){alert('录音时间不得超过两分钟');startTime = 0;// 不录音clearTimeout(recordTimer);}else { // 松手结束录音wx.stopRecord({success: function(res) {localId = res.localId;wx.translateVoice({localId: localId, // 需要识别的音频的本地Id,由录音相关接口获得isShowProgressTips: 1, // 默认为1,显示进度提示success: function (res) {$('textarea[name=digest]').val(res.translateResult);// 语音识别的结果}});// 上传到服务器uploadVoice();},fail: function(res) {alert(JSON.stringify(res));}});}});//上传录音function uploadVoice(){//调用微信的上传录音接口把本地录音先上传到微信的服务器//不过,微信只保留3天,而我们需要长期保存,我们需要把资源从微信服务器下载到自己的服务器wx.uploadVoice({localId: localId, // 需要上传的音频的本地ID,由stopRecord接口获得isShowProgressTips: 1, // 默认为1,显示进度提示success: function (res) {//把录音在微信服务器上的id(res.serverId)发送到自己的服务器供下载。console.log(res);if(res.serverId === undefined){alert('上传失败');}else {$('#hidden').val(res.serverId);}}});}

附上后端代码:

//配置jssdkpublic function represen(){$wx['timestamp'] = time();$wx['noncestr'] = md5(time());$wx['jsapi_ticket'] = $this->actionTicket();$wx['url'] = urldecode(I('url','','trim'));$string = sprintf("jsapi_ticket=%s&noncestr=%s&timestamp=%s&url=%s", $wx['jsapi_ticket'], $wx['noncestr'], $wx['timestamp'], $wx['url']);//生成签名$wx['signature'] = sha1($string);$wx['appid'] = 你的appid;$this->ajaxReturn($wx);}public function actionAccessToken(){if (session('access_token') && session('time') > time()){return session('access_token');}$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid&secret=你的appsecret";$info = file_get_contents($url);$info = json_decode($info,1);if ($info){$info['time'] = time()+$info['expires_in']-200;session('time',$info['time']);session('access_token',$info['access_token']);return $info['access_token'];}else{return '失败';}}public function actionTicket(){if (session('ticket') && session('ticketTime') > time()){return session('ticket');}$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$this->actionAccessToken()."&type=jsapi";$info = file_get_contents($url);$info = json_decode($info,1);if ($info){$info['time'] = time()+$info['expires_in']-200;session('ticketTime',$info['time']);session('ticket',$info['ticket']);return $info['ticket'];}else{return '失败';}}

这里只有配置好jssdk并把音频上传到微信服务器上代码,后续思路是将前端上传到微信服务器上的serverId放到表单中,提交表单时把serverId提交到后端,在后端用该值在微信服务器上下载该音频,下载下来需要转格式(该步骤挺麻烦的,放弃做的原因)转好格式之后放在自己的服务器上,把该地址存到数据库中就好了。

微信公众号jssdk音频相关推荐

  1. 微信公众号js-sdk使用步骤总结

    微信公众号js-sdk使用步骤总结 1. 域名绑定 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". 可填写三 ...

  2. php企业微信号js-sdk,php微信公众号js-sdk开发应用

    这篇文章主要为大家详细介绍了php微信公众号js-sdk开发应用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 测试js的接口功能,我用的是BAE服务器不是SAE服务器.SAE服务器不能 ...

  3. vue前端实现微信支付-微信公众号JSSDK

    最近在做支付功能,微信支付准备工作之类的请参考官方说明,注意个人申请的测试号不支持,要申请企业号,还要商户号,开通支付权限,配置域名,JSSDK的权限问题,尽可能都开通吧! 官方地址可参考这里:接入准 ...

  4. jssdk 获取微信收货地址_微信公众号JSSDK 获取经纬度

    a代码如下: //重点 引入这句 //测试 引用 function jsSdk() { var baseUrl = '***********'; $.ajax({ cache: false, url: ...

  5. 微信公众号JS-SDK多图上传爬坑指南

    一.wx.chooseImage爬坑 出现的问题: 安卓将chooseImage 方法返回的 localId 放在img标签的src属性下能够显示图片 IOS将chooseImage 方法返回的 lo ...

  6. weixin公众号页面返回上一层_微信公众号jssdk打开内置地图点击返回会回到之前页面,怎么退出页面...

    问题描述 在使用公众号jssdk过程中,用户需求点击公众号菜单微信内置地图打开指定地点. 暂用实现过程为 用户打开空白页面 空白页面wx.config wx.openLocation打开内置地图 问题 ...

  7. 教你如何下载微信公众号的音频文件

    无意中在微信公众号里面听到了自己喜欢的原创音乐或者诗歌朗诵,想保存下来,但是微信却没有提供音频下载功能,这可怎么办,别着急,我来帮帮你. 工具/原料 ·         我以360和QQ浏览器为例,其 ...

  8. 微信公众号jssdk 分享/App原生应用接入分享开发及应用场景

    文章目录 前言 一.应用场景 二.Jssdk 接入准备工作 1.申请企业版微信公众号,并进行认证,并设置成为开发者 2.公众号配置 3.查看appid.设置密钥.并配置ip 白名单等 三.开发接入 1 ...

  9. Node Express微信公众号jssdk签名服务

    开发公众号的过程中,会使用jssdk提供的微信公众号原生功能,使用过程中微信需要确认使用者身份,所以使用前需要现通过config接口注入权限验证配置,这时就需要用到签名服务,根据微信官方要求 对于不会 ...

  10. 微信公众号分享jssdk.php,微信公众号JSSDK

    官方 文件 ### 分享自定义 ~~~ {php echo register_jssdk();} wx.ready(function () { sharedata = { title: '微信JS-S ...

最新文章

  1. 将Centos的yum源更换为国内的阿里云源
  2. a*算法迷宫 c++_算法竞赛专题解析(12):搜索基础
  3. 服务器邮箱群发,独立IP独立账号日发万封的邮件群发服务器
  4. USB2.0 设备类代码表
  5. dubbo provider异步_dubbo九连问你知道多少?
  6. CENTOS编译安装APACHE 2.4.6笔记
  7. [剑指offer]面试题第[65]题[JAVA][不用加减乘除做加法][位运算]
  8. 靠一个不存在的基因,写了学位论文顺利毕业的上交大硕士,被学校撤销了学位!...
  9. 写一函数,将两个字符串连接
  10. ActiveXObject文件读写
  11. 高并发架构系列:Redis缓存和MySQL数据一致性方案详解
  12. Thinkphp6 获取当前协议+域名
  13. 联想服务器光驱安装win7系统,联想光盘安装win7系统教程
  14. GCTF 2017 Web 补题 By Assassin [持续更新--抄大佬wp]
  15. Spring的配置项aspectj-autoproxy
  16. 判断数字的正则表达式
  17. Python 3.6以后版本的格式化输出
  18. 尿素和车用尿素的区别
  19. STEM教育-制作纸飞机游戏
  20. 黄斑水肿应及时打针+水肿损伤感光层

热门文章

  1. 跨语言词向量笔记2. 跨语言词向量表示简史
  2. zTree树形中的搜索定位
  3. 程序猿DD《Spring Boot基础教程》系列汇总
  4. win10企业版 微软商店安装
  5. tolua unity 报错_Unity手游开发札记——ToLua#集成内存泄露检查和性能检测工具
  6. 遥感数据产品分级体系
  7. python中function是什么意思_Python中的Function定义方法
  8. 牛头刨床设计matlab生成图片,牛头刨床matlab程序---机械原理课程设计
  9. OV5640摄像头驱动开发讲解
  10. 基于RGMII的FPGA千兆以太网设计