微信小店开发之跳转微信商品页接口(第十一课)

微信小店接口必须经过微信认证的服务号才可以有权限调用,订阅号无权限。

微信小店

跳转微信商品页接口

wx.openProductSpecificView({
     productId:  '' // 商品id
     viewType:  ''  // 0.默认值,普通商品详情页1.扫一扫商品详情页2.小店商品详情页
});


第一、新建jsp页面,并引入js库

<script src= "http://res.wx.qq.com/open/js/jweixin-1.1.0.js" > </script> 
<script src= "http://libs.baidu.com/jquery/2.0.0/jquery.js" ></script>

jweixin-1.1.0.js是调用微信jsapi的库,所以必须引入,第二行是本案例使用了jquery,所以引入的是jquery库
第二、引入界面样式,由于几节界面案例样式太难看,所以这次案例美化了一下界面。

<link rel= "stylesheet"  href= "http://203.195.235.76/jssdk/css/style.css" />

第三、<body></body>之间的html代码

< center >< h3 >欢迎来到微信jsapi测试界面-V型知识库</ h3 ></ center >
     < div  class = "lbox_close wxapi_form" >
      < h3  id = "menu-shopping" >微信小店接口</ h3 >
       < span  class = "desc" >跳转微信商品页接口</ span >
       < button  class = "btn btn_primary"  id = "openProductSpecificView" >openProductSpecificView</ button >
      </ div >

第四、<script></script>之间初始化微信jsapi库添加接口函数

wx.config({  
     debug:  true // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。  
     appId:  '${appId}' // 必填,公众号的唯一标识  
     timestamp:  '${ timestamp}'  // 必填,生成签名的时间戳  
     nonceStr:  '${ nonceStr}' // 必填,生成签名的随机串  
     signature:  '${ signature}' , // 必填,签名,见附录1  
     jsApiList: [ 'checkJsApi' ,
                 'chooseImage' ,
                 'previewImage' ,
                  'uploadImage' ,
                  'downloadImage' ,
                   'getNetworkType' , //网络状态接口
                   'openLocation' , //使用微信内置地图查看地理位置接口
                   'getLocation' //获取地理位置接口
                   'hideOptionMenu' , //界面操作接口1
                   'showOptionMenu' , //界面操作接口2
                   'closeWindow'  ,   界面操作接口3
                   'hideMenuItems' , 界面操作接口4
                   'showMenuItems' , 界面操作接口5
                   'hideAllNonBaseMenuItem' , 界面操作接口6
                   'showAllNonBaseMenuItem' , 界面操作接口7
                   'scanQRCode' , // 微信扫一扫接口
                   'openProductSpecificView' //微信小店
                // 必填,需要使用的JS接口列表,所有JS接口列表见附录2  
});

jsApiList数组中,最后一项就是我们调用微信小店接口的函数,此函数必须在jsapi库中初始化,否则微信小店跳转微信商品页功能无法调起。

第六、完整的jsp页面代码,读者可直接复制运行

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html >
   < head >
     < base  href="<%=basePath%>">
     <!-- www.vxzsk.com原创 -->
     < title >微信jsapi测试-V型知识库</ title >
     < meta  name = "viewport"  content = "width=320.1,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" >
     < link  rel = "stylesheet"  href = "http://203.195.235.76/jssdk/css/style.css" />
    < script  src = "http://res.wx.qq.com/open/js/jweixin-1.1.0.js" > </ script
    < script  src = "http://libs.baidu.com/jquery/2.0.0/jquery.js" ></ script >
     < style  type = "text/css" >
     .desc{
     color: red;
     }
     </ style >
   </ head >
   
   < body >
    < center >< h3 >欢迎来到微信jsapi测试界面-V型知识库</ h3 ></ center >
     < div  class = "lbox_close wxapi_form" >
      < h3  id = "menu-shopping" >微信小店接口</ h3 >
       < span  class = "desc" >跳转微信商品页接口</ span >
       < button  class = "btn btn_primary"  id = "openProductSpecificView" >openProductSpecificView</ button >
      </ div >
       
      
      < div  style = "display: none;" >
      < h3  id = "menu-scan" >微信扫一扫</ h3 >
       < span  class = "desc" >调起微信扫一扫接口</ span >
       < button  class = "btn btn_primary"  id = "scanQRCode0" >scanQRCode(微信处理结果)</ button >
       < button  class = "btn btn_primary"  id = "scanQRCode1" >scanQRCode(直接返回结果)</ button >
       
      < h3  id = "menu-webview" >界面操作接口</ h3 >< br >
       < span  class = "desc"   >隐藏右上角菜单接口</ span >< br >
       < button  class = "btn btn_primary"  id = "hideOptionMenu" >hideOptionMenu</ button >< br >
       < span  class = "desc" >显示右上角菜单接口</ span >< br >
       < button  class = "btn btn_primary"  id = "showOptionMenu" >showOptionMenu</ button >< br >
       < span  class = "desc" >关闭当前网页窗口接口</ span >< br >
       < button  class = "btn btn_primary"  id = "closeWindow" >closeWindow</ button >< br >
       < span  class = "desc" >批量隐藏功能按钮接口</ span >< br >
       < button  class = "btn btn_primary"  id = "hideMenuItems" >hideMenuItems</ button >< br >
       < span  class = "desc" >批量显示功能按钮接口</ span >< br >
       < button  class = "btn btn_primary"  id = "showMenuItems" >showMenuItems</ button >< br >
       < span  class = "desc" >隐藏所有非基础按钮接口</ span >< br >
       < button  class = "btn btn_primary"  id = "hideAllNonBaseMenuItem" >hideAllNonBaseMenuItem</ button >< br >
       < span  class = "desc" >显示所有功能按钮接口</ span >< br >
       < button  class = "btn btn_primary"  id = "showAllNonBaseMenuItem" >showAllNonBaseMenuItem</ button >< br >
       < p >基础接口之判断当前客户端是否支持指定的js接口</ p >   
      < input  type = "button"  value = "checkJSAPI"  id = "checkJsApi" >< br >
      < span  class = "desc"  style = "color: red" >地理位置接口-使用微信内置地图查看位置接口</ span >< br >
       < button  class = "btn btn_primary"  id = "openLocation" >openLocation</ button >< br >
       < span  class = "desc"  style = "color: red" >地理位置接口-获取地理位置接口</ span >< br >
       < button  class = "btn btn_primary"  id = "getLocation" >getLocation</ button >< br >
      < span  class = "desc"  style = "color: red" >获取网络状态接口</ span >< br >
       < button  class = "btn btn_primary"  id = "getNetworkType" >getNetworkType</ button >< br >
       < h3  id = "menu-image" >图像接口</ h3 >
       < span  class = "desc" >拍照或从手机相册中选图接口</ span >< br >
       < button  class = "btn btn_primary"  id = "chooseImage" >chooseImage</ button >< br >
       < span  class = "desc" >预览图片接口</ span >< br >
       < button  class = "btn btn_primary"  id = "previewImage" >previewImage</ button >< br >
       < span  class = "desc" >上传图片接口</ span >< br >
       < button  class = "btn btn_primary"  id = "uploadImage" >uploadImage</ button >< br >
       < span  class = "desc" >下载图片接口</ span >< br >
       < button  class = "btn btn_primary"  id = "downloadImage" >downloadImage</ button >< br >
     
   < br >
   显示图片< img  alt = ""  src = ""  id = "faceImg" >
   </ div >
   
   
   < script  type = "text/javascript" >
   wx.config({  
     debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。  
     appId: '${appId}', // 必填,公众号的唯一标识  
     timestamp: '${ timestamp}' , // 必填,生成签名的时间戳  
     nonceStr: '${ nonceStr}', // 必填,生成签名的随机串  
     signature: '${ signature}',// 必填,签名,见附录1  
     jsApiList: ['checkJsApi',
                 'chooseImage',
                 'previewImage',
                  'uploadImage',
                  'downloadImage',
                   'getNetworkType',//网络状态接口
                   'openLocation',//使用微信内置地图查看地理位置接口
                   'getLocation', //获取地理位置接口
                   'hideOptionMenu',//界面操作接口1
                   'showOptionMenu',//界面操作接口2
                   'closeWindow' ,  界面操作接口3
                   'hideMenuItems',界面操作接口4
                   'showMenuItems',界面操作接口5
                   'hideAllNonBaseMenuItem',界面操作接口6
                   'showAllNonBaseMenuItem',界面操作接口7
                   'scanQRCode',// 微信扫一扫接口
                   'openProductSpecificView'//微信小店
                ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2  
});  
   
wx.ready(function(){  
     // 5 图片接口
   // 5.1 拍照、本地选图
   var images = {
     localId: [],
     serverId: []
   };
   document.querySelector('#chooseImage').onclick = function () {
     wx.chooseImage({
       success: function (res) {
         images.localId = res.localIds;
         alert('已选择 ' + res.localIds.length + ' 张图片');
          $("#faceImg").attr("src", res.localIds[0]);//显示图片到页面上
       }
     });
   };
 
   // 5.2 图片预览
   document.querySelector('#previewImage').onclick = function () {
     wx.previewImage({
       current: 'http://www.vxzsk.com/upload//bf04c9b5-5699-421d-900e-3b68bbe58a8920160816.jpg',
       urls: [
         'http://www.vxzsk.com/upload//bf04c9b5-5699-421d-900e-3b68bbe58a8920160816.jpg',
         'http://www.vxzsk.com/upload//bf04c9b5-5699-421d-900e-3b68bbe58a8920160816.jpg',
         'http://www.vxzsk.com/upload//bf04c9b5-5699-421d-900e-3b68bbe58a8920160816.jpg'
       ]
     });
   };
 
   // 5.3 上传图片
   document.querySelector('#uploadImage').onclick = function () {
     if (images.localId.length == 0) {
       alert('请先使用 chooseImage 接口选择图片');
       return;
     }
     var i = 0, length = images.localId.length;
     images.serverId = [];
     function upload() {
       wx.uploadImage({
         localId: images.localId[i],
         success: function (res) {
           i++;
           //alert('已上传:' + i + '/' + length);
           images.serverId.push(res.serverId);
           if (i < length) {
             upload();
           }
         },
         fail: function (res) {
           alert(JSON.stringify(res));
         }
       });
     }
     upload();
   };
 
   // 5.4 下载图片
   document.querySelector('#downloadImage').onclick = function () {
     if (images.serverId.length === 0) {
       alert('请先使用 uploadImage 上传图片');
       return;
     }
     var i = 0, length = images.serverId.length;
     images.localId = [];
     function download() {
       wx.downloadImage({
         serverId: images.serverId[i],
         success: function (res) {
           i++;
           alert('已下载:' + i + '/' + length);
           images.localId.push(res.localId);
           if (i < length) {
             download();
           }
         }
       });
     }
     download();
   };
   
   // 6 设备信息接口
   // 6.1 获取当前网络状态
   document.querySelector('#getNetworkType').onclick = function () {
     wx.getNetworkType({
       success: function (res) {
         alert(res.networkType);
       },
       fail: function (res) {
         alert(JSON.stringify(res));
       }
     });
   };
   //网络接口结束
   
   // 7 地理位置接口 开始
   // 7.1 查看地理位置
   document.querySelector('#openLocation').onclick = function () {
     wx.openLocation({
       latitude: 23.099994,
       longitude: 113.324520,
       name: 'TIT 创意园',
       address: '广州市海珠区新港中路 397 号',
       scale: 14,
       infoUrl: 'http://weixin.qq.com'
     });
   };
 
   // 7.2 获取当前地理位置
   document.querySelector('#getLocation').onclick = function () {
     wx.getLocation({
       success: function (res) {
         alert(JSON.stringify(res));
       },
       cancel: function (res) {
         alert('用户拒绝授权获取地理位置');
       }
     });
   };
   // 7 地理位置接口 结束 
   
   // 8 界面操作接口 开始-----------
   // 8.1 隐藏右上角菜单
   document.querySelector('#hideOptionMenu').onclick = function () {
     wx.hideOptionMenu();
   };
 
   // 8.2 显示右上角菜单
   document.querySelector('#showOptionMenu').onclick = function () {
     wx.showOptionMenu();
   };
 
   // 8.3 批量隐藏菜单项
   document.querySelector('#hideMenuItems').onclick = function () {
     wx.hideMenuItems({
       menuList: [
         'menuItem:readMode', // 阅读模式
         'menuItem:share:timeline', // 分享到朋友圈
         'menuItem:copyUrl' // 复制链接
       ],
       success: function (res) {
         alert('已隐藏“阅读模式”,“分享到朋友圈”,“复制链接”等按钮');
       },
       fail: function (res) {
         alert(JSON.stringify(res));
       }
     });
   };
 
   // 8.4 批量显示菜单项
   document.querySelector('#showMenuItems').onclick = function () {
     wx.showMenuItems({
       menuList: [
         'menuItem:readMode', // 阅读模式
         'menuItem:share:timeline', // 分享到朋友圈
         'menuItem:copyUrl' // 复制链接
       ],
       success: function (res) {
         alert('已显示“阅读模式”,“分享到朋友圈”,“复制链接”等按钮');
       },
       fail: function (res) {
         alert(JSON.stringify(res));
       }
     });
   };
 
   // 8.5 隐藏所有非基本菜单项
   document.querySelector('#hideAllNonBaseMenuItem').onclick = function () {
     wx.hideAllNonBaseMenuItem({
       success: function () {
         alert('已隐藏所有非基本菜单项');
       }
     });
   };
 
   // 8.6 显示所有被隐藏的非基本菜单项
   document.querySelector('#showAllNonBaseMenuItem').onclick = function () {
     wx.showAllNonBaseMenuItem({
       success: function () {
         alert('已显示所有非基本菜单项');
       }
     });
   };
 
   // 8.7 关闭当前窗口
   document.querySelector('#closeWindow').onclick = function () {
     wx.closeWindow();
   };
  // 8 界面操作接口  结束------------------------------------------
  
  // 9 微信原生接口 开始---------------------
   // 9.1.1 扫描二维码并返回结果
   document.querySelector('#scanQRCode0').onclick = function () {
     wx.scanQRCode();
   };
   // 9.1.2 扫描二维码并返回结果
   document.querySelector('#scanQRCode1').onclick = function () {
     wx.scanQRCode({
       needResult: 1,
       desc: 'scanQRCode desc',
       success: function (res) {
         alert(JSON.stringify(res));
       }
     });
   };
  // 9 微信原生接口 结束---------------------
  // 11.3  跳转微信商品页 开始--------------
   document.querySelector('#openProductSpecificView').onclick = function () {
     wx.openProductSpecificView({
       productId: 'pDF3iY_m2M7EQ5EKKKWd95kAxfNw',
       extInfo: '123'
     });
   };
    // 11.3  跳转微信商品页 结束--------------
});  
  //初始化jsapi接口 状态
wx.error(function (res) {
   alert("调用微信jsapi返回的状态:"+res.errMsg);
});
   
  </ script >
    
   </ body >
</ html >

上述jsp代码中有四个参数,这四个参数是成功调用微信jsapi的凭证,分别为appId(必填,公众号的唯一标识),timestamp(必填,生成签名的时间戳), nonceStr(必填,生成签名的随机串) ,signature(必填,签名),关于如何生成这四个参数,如果不知道的读者,请查看本页面左上角的菜单,里面有详细介绍,在这里不在累述。


转自:http://www.vxzsk.com/124.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值