E企盈营销工具技术服务商 热线:4006-838-530

微信分享接口,微信分享接口开发

E企盈直播平台营销卖货系统

先说句题外话:微信已经不支持自定义按钮调用微信分享了,只能自定义分享内容,然后使用官方的按钮来进行分享操作,。。。微信分享接口开发核心使用的是微信的js-sdk,下面是官网文档上的使用步骤1.1JSSDK使用步骤1.1.1步骤一:绑定域名1.1.2步骤二:引入JS文件1.1.3步骤三:通过config接口注入权限验证配置1.1.4步骤四:通过ready接口处理成功验证1.1.5步骤五:通过error接口处理失败验证其中绑定域名和引入js文件都没什么好说的,安装官方文档来即可。关键的是第三步:通过config接口注入权限验证配置。官网上对于这一步骤讲述的十分简单,我在这里详细阐述一番。wx.config({debug:true,//开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId:”,//必填,公众号的唯一标识timestamp:,//必填,生成签名的时间戳nonceStr:”,//必填,生成签名的随机串signature:”,//必填,签名,见附录1jsApiList:[]//必填,需要使用的JS接口列表,所有JS接口列表见附录2});对于上述参数,appId我就不用讲了,从微信公众号后台上可以拿到。timestamp和nonceStr是我们自己生成的,也很简单。唯一麻烦得是signature签名的生成。生成signature需要两个步骤,下面是这两个步骤1、我们需要从微信获取jsapi_ticketjsapi_ticket是公众号用于调用微信JS接口的临时票据,需要通过access_token来获取。注:jsapi_ticket和access_token有效时间都为7200秒,即两个小时。。需要服务器存储且定时刷新的。。如有不懂,可参看我的这篇博客。2、对于生成的jsapi_ticket,我们需要和timestamp、nonceStr和当前页面的url通过签名算法生成signature现在我们来一一讲述上面的两个步骤,首先,第一步获取jsapi_ticket代码如下://此处的token指的是access_tokenpublicstaticStringgetJsApiTicket(Stringtoken)throwsException{if(token==null||token==””){return””;}Stringurl=”https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=”+token+”&type=jsapi”;Stringresult=HttpsRequestUtil.doGet(url);ObjectMappermapper=newObjectMapper();JsonNodenode=mapper.readTree(result);returnnode.get(“ticket”).textValue();}什么??不知道access_token怎么获取???好吧,我顺便讲一下。publicstaticStringinitToken()throwsException{StringtokenUrl=”https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=”+APPID+”&secret=”+SECRET;Stringresult=HttpsRequestUtil.doGet(tokenUrl);ObjectMappermapper=newObjectMapper();returnmapper.readTree(result).get(“access_token”).textValue();}顺便给一下核心类HttpsRequestUtil和依赖类MyX509TrustManager。。这两个类的核心代码是从网上百度来的,,感谢贡献的大神!!代码见下:packagecom.wx.jlyc.wx.util;importjavax.net.ssl.X509TrustManager;importjava.security.cert.CertificateException;importjava.security.cert.X509Certificate;/@Author:Yun@Description:证书信任管理器,为了能够发送https请求@Date:Createdin2017-11-2914:51/publicclassMyX509TrustManagerimplementsX509TrustManager{//检查客户端证书publicvoidcheckClientTrusted(X509Certificate[]chain,StringauthType)throwsCertificateException{}//检查服务器端证书publicvoidcheckServerTrusted(X509Certificate[]chain,StringauthType)throwsCertificateException{}//返回受信任的X509证书数组publicX509Certificate[]getAcceptedIssuers(){returnnull;}}packagecom.wx.jlyc.wx.util;importjavax.net.ssl.HttpsURLConnection;importjavax.net.ssl.SSLContext;importjavax.net.ssl.SSLSocketFactory;importjavax.net.ssl.TrustManager;importjava.io.;importjava.net.URL;/@Author:Yun@Description:HTTPS请求工具@Date:Createdin2017-12-2616:03/publicclassHttpsRequestUtil{/发送get请求@paramhref请求的url@return/publicstaticStringdoGet(Stringhref){//建立连接URLurl;HttpsURLConnectionhttpUrlConn=null;InputStreaminputStream=null;BufferedReaderbufferedReader=null;InputStreamReaderinputStreamReader=null;try{url=newURL(href);httpUrlConn=(HttpsURLConnection)url.openConnection();//创建SSLContext对象,并使用我们指定的信任管理器初始化TrustManager[]tm={newMyX509TrustManager()};SSLContextsslContext=SSLContext.getInstance(“SSL”,”SunJSSE”);sslContext.init(null,tm,newjava.security.SecureRandom());//从上述SSLContext对象中得到SSLSocketFactory对象SSLSocketFactoryssf=sslContext.getSocketFactory();httpUrlConn.setSSLSocketFactory(ssf);httpUrlConn.setDoOutput(true);httpUrlConn.setDoInput(true);//设置请求方式(GET/POST)httpUrlConn.setRequestMethod(“GET”);//取得输入流inputStream=httpUrlConn.getInputStream();inputStreamReader=newInputStreamReader(inputStream,”utf-8″);bufferedReader=newBufferedReader(inputStreamReader);//读取响应内容StringBufferbuffer=newStringBuffer();Stringstr;while((str=bufferedReader.readLine())!=null){buffer.append(str);}returnbuffer.toString();}catch(Exceptione){e.printStackTrace();}finally{try{bufferedReader.close();}catch(IOExceptione){e.printStackTrace();}try{inputStreamReader.close();}catch(IOExceptione){e.printStackTrace();}//释放资源try{inputStream.close();}catch(IOExceptione){e.printStackTrace();}httpUrlConn.disconnect();}returnnull;}/发送post请求@paramhref请求的url@paramjson请求的参数(json格式)@return/publicstaticStringdoPost(Stringhref,Stringjson){URLurl;HttpsURLConnectionhttpUrlConn=null;InputStreaminputStream=null;BufferedReaderbufferedReader=null;InputStreamReaderinputStreamReader=null;try{url=newURL(href);httpUrlConn=(HttpsURLConnection)url.openConnection();//创建SSLContext对象,并使用我们指定的信任管理器初始化TrustManager[]tm={newMyX509TrustManager()};SSLContextsslContext=SSLContext.getInstance(“SSL”,”SunJSSE”);sslContext.init(null,tm,newjava.security.SecureRandom());//从上述SSLContext对象中得到SSLSocketFactory对象SSLSocketFactoryssf=sslContext.getSocketFactory();httpUrlConn.setSSLSocketFactory(ssf);httpUrlConn.setDoOutput(true);httpUrlConn.setDoInput(true);httpUrlConn.setUseCaches(false);//设置请求方式(GET/POST)httpUrlConn.setRequestMethod(“POST”);//将menu数据作为请求参数OutputStreamoutputStream=httpUrlConn.getOutputStream();//注意编码格式,防止中文乱码outputStream.write(json.getBytes(“UTF-8″));outputStream.close();//取得输入流inputStream=httpUrlConn.getInputStream();inputStreamReader=newInputStreamReader(inputStream,”utf-8”);bufferedReader=newBufferedReader(inputStreamReader);//读取响应内容StringBufferbuffer=newStringBuffer();Stringstr;while((str=bufferedReader.readLine())!=null){buffer.append(str);}returnbuffer.toString();}catch(Exceptione){e.printStackTrace();}finally{try{bufferedReader.close();}catch(IOExceptione){e.printStackTrace();}try{inputStreamReader.close();}catch(IOExceptione){e.printStackTrace();}//释放资源try{inputStream.close();}catch(IOExceptione){e.printStackTrace();}httpUrlConn.disconnect();}returnnull;}}这样一来,微信的jsapi_ticket我们已经获取到了。。接下来就是将各个参数通过签名算法生成signature签名了。代码见下:/获取微信的jsconfig接口需要的参数@paramurl页面的url@return@throwsException/@PostMapping(“/config”)@ResponseBodypublicMsggetWxJsConfig(Stringurl)throwsException{WxTokenwx_token=tokenService.getToken();//生成随机串StringnonceStr=UUID.randomUUID().toString().replace(“-“,””).substring(0,16);//生成时间戳Stringtimestamp=String.valueOf(System.currentTimeMillis()/1000);//使用url键值对的方式拼接字符串Stringstr=”jsapi_ticket=”+wx_token.getJsapiTicket()+”&noncestr=”+nonceStr+”×tamp=”+timestamp+”&url=”+url;//对字符串进行SHA-1方式加密MessageDigestmd=MessageDigest.getInstance(“SHA-1”);byte[]digest=md.digest(str.getBytes());Stringsignature=byteToStr(digest);returnMsg.success().add(“appId”,TokenUtils.APPID).add(“timestamp”,timestamp).add(“nonceStr”,nonceStr).add(“signature”,signature);}privatestaticStringbyteToStr(byte[]byteArray){StringstrDigest=””;for(inti=0;ibyteArray.length;i++){strDigest+=byteToHexStr(byteArray[i]);}returnstrDigest;}privatestaticStringbyteToHexStr(bytemByte){char[]Digit={‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’A’,’B’,’C’,’D’,’E’,’F’};char[]tempArr=newchar[2];tempArr[0]=Digit[(mByte4)&0X0F];tempArr[1]=Digit[mByte&0X0F];Strings=newString(tempArr);returns;}安装上述做法,我们就可以获取到config接口的需要的所有参数了。。。一般来说,我们可以通过ajax请求后台,将appId、timestamp、nonceStr、signature获取到。。然后在回调函数中进行微信分享内容的设置了,,,js代码见下。。。$.ajax({url:ip+’/wx/config’,type:’post’,data:{url:location.href},success:function(res){console.log(res);if(res.code==200){wx.config({debug:false,//开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId:res.extend.appId,//必填,公众号的唯一标识timestamp:res.extend.timestamp,//必填,生成签名的时间戳nonceStr:res.extend.nonceStr,//必填,生成签名的随机串signature:res.extend.signature,//必填,签名,见附录1jsApiList:[‘onMenuShareTimeline’,’onMenuShareAppMessage’]//必填,需要使用的JS接口列表,所有JS接口列表见附录2});wx.ready(function(){wx.onMenuShareAppMessage({title:$(“#showName”).text(),//分享标题link:location.href,//分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致imgUrl:$(“#video”).attr(“poster”),//分享图标success:function(){alert(“分享到朋友成功”);},cancel:function(){alert(“取消分享”);}});wx.onMenuShareTimeline({title:$(“#showName”).text(),//分享标题link:location.href,//分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致imgUrl:$(“#video”).attr(“poster”),//分享图标success:function(){alert(“分享到朋友圈成功”);},cancel:function(){alert(“取消分享”);}});});}}});

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信分享接口,微信分享接口开发
分享到: 更多 (0)
E企盈小程序直播营销卖货系统
E企盈直播平台营销卖货系统

评论 抢沙发

E企盈小程序开发

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏