微信公众号sdk
微信公众号开发
能享用微信公众号的API,比如分享给好友,分享到朋友圈,禁止菜单功能,选择图片,获取地址,以及支付
微信的功能有两种执行方式
一种是 wx.xx
一种是 WeixinJSBridge.call()
WeixinJSBridge是很老的方式,在微信网页才能使用的全局变量,不需要引入js插件,现在都不用了,但是去查资料会有很多,看了没用的,但是有两个是可以用的
// 禁止菜单功能
WeixinJSBridge.call('hideOptionMenu');
// 关闭当前页面
WeixinJSBridge.call('closeWindow');
除了上面的这两个,其他的功能都要用下面的写法
而且需要前提条件有
- 公众号需要通过认证,认证之后才能在微信公众号后台的开发的接口权限里看到功能都是已获得,未获得就不配调用微信的API
- 需要有服务器域名,域名配置在公众号后台的JS接口安全域名名单里
- 需要引入wx的js插件,专业叫
wxsdk文件
js文件在微信公众号开发文档里下载,现在的版本是1.4
如果是vue使用,weixin-js-sdk
配置阶段
// 引入js之后需要配置
// 除了jsApiList这个数组,其他的值都来自后端,就是跟后端拿值就行
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的JS接口列表
});
// 跟config写在一起就行,如果config配置成功,就会执行这个
wx.ready(function(){
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});
// 跟config写在一起就行,如果config配置出错,就会执行这个
wx.error(function(res){
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});
// jsApiList需要传参需要的功能
// 内容在下载js的链接的最下面就能看到
分享功能
// 微信文档有两个分享
// 一个是onMenuShareTimeline 和 onMenuShareAppMessage (即将废弃)
// 一个是updateAppMessageShareData 和 updateTimelineShareData
// 用哪个,用废弃的那个,新的只能在苹果手机使用,废弃的苹果手机和安卓都没问题
// 先配置
jsApiList: ["onMenuShareTimeline","onMenuShareAppMessage"]
// ready是配置完成后会自动执行的
// 不是所有的方法都需要写在ready里的
// 但这两个需要
wx.ready(function(){
wx.onMenuShareTimeline({
title: '参数传标题',
imgUrl: '参数传图片',
success: function(){ ... }
});
wx.onMenuShareAppMessage({
title: '参数传标题',
imgUrl: '参数传图片',
desc: '参数传副标题',
success: function(){ ... }
});
});
选择图片
这个是完美了解决了画布的兼容和BUG
// 需要用到的配置
jsApiList: ["chooseImage","getLocalImgData"]
// 当用户点击上传图片的按钮后
function ImgUpload(){
// 打开微信相册的功能
wx.chooseImage({
count: 1, // 默认9,如果选多个是返回的数组
sizeType: ['compressed'], // 可以指定是原图'original'还是压缩图,默认二者都有,这里屏蔽了原图
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机'camera',默认二者都有,这里屏蔽了相机
success: function (res) {
//这意味着只有IOS8以上的手机才能用这个本地图片接口,而以下的版本如果使用JSSDK1.2.0版本会导致无法获取图片数据,或者使用1.1.0又无法预览图片的尴尬场面,另外用了1.2.0版本后uploadImage会出现file not exists的错误
var localIds = res.localIds; //这是数组
getImgData(localIds[0]); //但是这个程序只要一张图片,所以取值arr[0]
}
})
}
function getImgData(localIds){
// 选择图片后用微信的功能转成base64
wx.getLocalImgData({
localId:localIds,
success: function (res){
//base64
var localData = res.localData;
/*判断ios是不是用的 wkwebview 内核*/
if (window.__wxjs_is_wkwebview){
localData = localData.replace('data:image/jgp', 'data:image/jpeg');
}else{
if (localData.indexOf('data:image') != 0) {
//判断是否有这样的头部
localData = "data:image/jpeg;base64," + localData;
}
}
// 这个值就可以直接传给后端了
console.log(localData)
}
})
}
获取当前经纬度
这个配合腾讯地图使用,查看下一篇
支付
需要商家向微信申请开通支付
然后配置白名单,查看配置方式
WeixinJSBridge.invoke('getBrandWCPayRequest',{
"appId":appId, //公众号名称,由商户传入
"timeStamp":timeStamp, //时间戳,自1970年以来的秒数
"nonceStr":nonceStr, //随机串
"package":package,
"signType":signType, //微信签名方式:
"paySign":paySign //微信签名
},function(res){
methods.hideLoading();
if(res.err_msg == "get_brand_wcpay_request:ok" ) {
console.log('支付成功');
}else if(res.err_msg == "get_brand_wcpay_request:cancel"){
console.log('支付取消');
}else if(res.err_msg == "getBrandWCPayRequest:fail_nopermission"){
console.log('当前版本不支持,请检查升级或到微信中支付!');
}else if(res.err_msg == "get_brand_wcpay_request:fail_nopermission"){
console.log('当前版本不支持,请检查升级或到微信中支付!');
}else if(res.err_msg == "get_brand_wcpay_request:fail"){
console.log('支付失败');
}
});
微信公众号sdk的更多相关文章
- 微信公众号 SDK
<?php /* 方倍工作室 http://www.fangbei.org/ CopyRight 2015 All Rights Reserved */ define("TOKEN&q ...
- python开发微信公众号SDK选择
1.wechat-sdk sudo pip install wechat-sdk 文档地址: http://ww2.wechat-python-sdk.com/ 2.wechat sudo pip ...
- 使用开源库MAGICODES.WECHAT.SDK进行微信公众号支付开发
概要 博客使用Word发博,发布后,排版会出现很多问题,敬请谅解.可加群获取原始文档. 本篇主要讲解微信支付的开发流程,相关业务基于MAGICODES.WECHAT.SDK实现.通过本篇教程,您可以很 ...
- SAE微信公众号PHP SDK, token一直验证失败
用的是SAE,创建的是微信公众号PHP SDK框架,里面example文件夹下有server.php用来验证token的.但是问题来了,无论我怎么输入URL和token,一直告诉我token验证失败. ...
- VopSdk一个高逼格微信公众号开发SDK
一.我们的目标 分离基础参数和业务参数. 具有高重用和扩展性. 轻量级. 二.实现目标 (一)分离基础参数和业务参数 仔细分析所有接口,抽离出每个模块接口的公共参数. A.针对微信公众号所有接口分析( ...
- VopSdk一个高逼格微信公众号开发SDK(源码下载)
看之前回复很多说明大家很有热情&文章被误删掉了,不想让有的朋友错失这个高逼格的东西,现在重新发布,这次就直接放出源码,文章最末下载地址. 看之前回复很多说明大家很有热情&文章被误删掉了 ...
- VopSdk一个高逼格微信公众号开发SDK:自动化生产(装逼模式开启)
VopSdk一个高逼格微信公众号开发SDK(源码下载) VopSdk一个高逼格微信公众号开发SDK:自动化生产(装逼模式开启) 针对第一版,我们搞了第二版本,老规矩先定个目标. 一 我们的目标 a.移 ...
- Senparc.Weixin SDK 微信公众号 .NET 开发教程 索引
Senparc.WeixinSDK从一开始就坚持开源的状态,这个过程中得到了许多朋友的认可和支持. 目前SDK已经达到比较稳定的版本,这个过程中我觉得有必要整理一些思路和经验,和大家一起分享.也欢迎大 ...
- 微信开发(3):微信公众号发现金红包功能开发,利用第三方SDK实现(转)
最近需求是 用户兑换微信红包,需要一些验证,加密,以及证书: 工欲善其事必先利其器 感谢前辈的微信SDK 已经维护三年了,还在维护中! 官方文档走一波 文档还是一如既往的 坑人啊,写的很简单,对简单明 ...
随机推荐
- 设计模式01 创建型模式 - 原型模式(Protype Pattern)
参考 1. 设计模式:原型模式 | 博客园 2. Java clone深拷贝.浅拷贝 | CSDN 3. Cloneable接口和Object的clone()方法 | 博客园 原型模式(Prototy ...
- 电影推荐算法---HHR计划
1,先看FM部分. 2,看看冷启动. 0,热门召回源. 1,男女召回源,年龄召回源,职业召回源,score最高. 2,男女年龄职业相互组合: 3,存入redis.天级别更新. 3,召回+排序先搞懂. ...
- OA:办公自动化———笔记一
oa:办公自动化 1.对公司结构的管理 基础数据管理 部门进行管理 角色进行管理 权限进行管理 员工进行管理 2.流程管理 利用工作流技术对比较 ...
- Kali Linux RPi0w Nexmon操作笔记
Kali Linux RPi0w Nexmon镜像下载地址:https://www.offensive-security.com/kali-linux-arm-images/ 1.烧录系统 可参考:树 ...
- 借助工具解决DNS污染
我第一次接触到DNS污染,是在GitHub上面进行学习的时候,发现头像加载出问题,加载失败,而且文档里面的图片也无法显示...... 百度了很多内容,差不多都试了一下,最终选择了使用DNS工具去解决 ...
- python爬虫(二) urlparse和urlsplit函数
urlparse和urlsplit函数: urlparse: url='http://www.baidu.com/s?wd=python&username=abc#1' result=pars ...
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)D(树状数组)
//树状数组中数组的特性,有更巧妙的方法.//我们知道在树状数组中,对于数组tree[i],它所维护的区间为[i−lowbit(i)+1,i]//所以对于tree[2^i],它所维护的区间就为[1,2 ...
- 收藏 40 2 CPD (广告合作方式)
CPD,Cost per day的缩写,意思是按天收费,是一种广告合作方式. 在实际的广告合作中根据行业不同还包括Cost per Download的缩写含义,意思是依据实际下载量收费. “CPD ...
- ImageSwitcher和GridView的案例开发
(一)ImageSwitcher之手机相册的滑动查看 首先在布局文件上加一个ImageSwitcher,设置它的宽度和高度为match_parent. 在主程序中:首先设置一个存储照片资源的数组,在设 ...
- 「CH6801」棋盘覆盖
「CH6801」棋盘覆盖 传送门 考虑将棋盘黑白染色,两个都无障碍的相邻的点之间连边,边的容量都为1,然后就求一次最大匹配即可 参考代码: #include <cstring> #incl ...