微信邮件地址怎么绑定是什么

邮件沟通最终会不会被微信这样的工具代替?
【AkiraZhang的回答(100票)】:
不会的,否则电邮早应该被类似 QQ 这样的即时通信工具取代了。
首先,电邮与大多数即时通讯工具有一个很大的区别:电邮是按话题组织的,不像大多数即时通讯工具那样是按时间组织的。这样特别适合于多人就某一个主题进行讨论。如果要是用即时通信工具的话,在一个群里同时讨论多个主题,就很容易讨论乱掉。电邮就不会出现这样的问题,如果一个团队需要同时讨论多件事务,那么给不同的人发送不同主题的邮件,再由相关的人通过转发、抄送等方式跟进,即可做到有条不紊。
再有,电邮的所有邮件是保存到云端(邮件服务器)非本地。意味着如果希望查找从前的某个邮件主题,无论是用邮件客户端、手机、网页版界面都可以轻松完成,不像微信、QQ 这样的通信工具不方便在不同设备上同步、查找历史信息。
电邮相对于 IM 类工具来说,虽然即时性不强,不过正是由于即时性不强,所以相对于 IM 类工具,更适合用于严肃讨论。一般来说,撰写电邮的过程会强迫发件人对邮件的主题进行深入的思考。
还有,电邮是最早应用的互联网服务,现在早已成为一种基础服务。由于电邮所用的协议并不是专有协议,因此在不同的平台有多种多样的客户端。电邮使用者因此不会被某种平台、某种软件所限制住。
还有就是安全性问题。一些邮件服务,如 Gmail 是可以保证全程加密通信,用户所发送的邮件不会被轻易截获。如果不信任邮件服务商,企业可以自行搭建邮件服务器,使企业的所有邮件全部保存在企业自己的服务器上。以及,如果玩过企业邮箱的都知道,对于很多企业邮箱来讲,管理员可以看到所有员工所发送、接收的邮件,便于管理。这些同样都是即时通信工具无法做到的。
对于类似 Gmail 这样的邮件服务,带有「归档」功能,能够将已处理的邮件从收件箱移出但不删除,这样能让电邮化身为一个够用的,类似于 todo list 一样的任务管理工具,更适合用于工作用途。另外,Gmail 这样的邮件服务带有类似打标签功能和强大的搜索功能,便于组织、搜索邮件。这些同样微信等 IM 工具都不能够提供。
所以说,邮件和 IM 虽然都是沟通工具,但是有很大的差别,适用于不同的场景,因此无论是哪一方都不能完全代替另一方。
【JimmyZhang的回答(13票)】:
诚然,很多原来由 Email 来进行的沟通,现在会使用类似微信的软件来替代。但是 Email 作为一种交流形式来说,不太可能被任何其他交流方式完全替代。
Email 是一种 De-centralized (去中央化)的交流技术,是基于一系列开放的标准的。虽然这些标准现在看来很不新鲜,甚至不是那么安全,但是存在了几十年了,还一直在被使用,很大的原因就是因为它的这些属性。
Email 作为老大哥,先后早到过太多挑战。先是短信,彩信,再是 QQ 这类即使通讯软件,现在在移动互联网时代又有 微信 WhatsApp 这些的挑战。但是这些竞争者,无一例外,都是 Centralized(中央化)的(即这些服务都有一个中央节点,例如QQ 微信的中央节点就是腾讯的服务器,短信,彩信也得依赖运营商,跨国就比较麻烦)。
因为如果你不是一个开放的标准,去中央化的话,就会存在不信任你这个服务提供商,或者不想用你这个产品的情况,一定做不到100%的覆盖率的。
而 Email ,只要你想要,你就可以架个服务器,设置个域名,就开始收发了,到处都遵守这个规范,除了得连上网,几乎没有限制,你也可以控制收发的一切。Email 这整个沟通系统的这些特点太重要,很难想象以后有什么能使之无效。
【吴诚林的回答(3票)】:
对于个人来说,Email确实可以算是石器时代的工具了。面对微信、QQ等即时通信软件,Email给人的感觉就像是面对机枪大炮的一把石斧,没范围、没速度。
但是对于企业,Email实在是不可缺少的,因为Email最大的特点就是“有痕迹”,而企业管理最在乎的就是“有迹可查”。以现在使用的即时通信软件来说,除非使用云储存技术,在频繁切换客户端的情况下,所有的信息都“有迹可查”几乎是不可能的。
所以,Email最终的归宿只可能是企业,个人用户。。。。我能说“呵呵”吗?
【知乎用户的回答(4票)】:
顶楼答案已经回答的很好了。我再补充几点。
学生时代,我也觉得邮件是老年人的东西,重,复杂。不像IM,点开即聊。但工作以后用到邮件,才知道它的好。斗胆说一句,当前还没有任何IM可以替代邮件的作用。
讲一些邮件比IM优秀的地方吧。
我打开一个网址就能使用邮件,IM可以吗?我知道有人会举Web QQ的例子,但是Web QQ是不能接收附件的,而邮件通信中,附件的使用太频繁了。同时,这个特性注定了全平台制霸。私以为当前IM里面做的最好的就是Imessage,可惜却不能用在Ios以外的平台。
而且,工作讨论很多时候并非是两个人的事情。你和客户在工作上的往来很可能领导也想要了解掌握,假如你使用的是IM,只能发截屏给领导,或者索性把你的帐号给领导。可是在邮件里,一个抄送@ 领导即可解决。
一种可能的情况:前任辞职了,我来接手。这时候,对方客户可能还不知道,会把信息发到老帐号。这时候就需要多账号。你们想象一下IM里要使用多账号只能双开,像微信这种,用起来多账号更痛苦。
与日历绑定:
工作的事情非常繁忙,为图方便,通常会在日历里写好,防止遗忘。想象一下谷歌日历和Gmail的配合,现在的IM,在这方面我还没看到很大的突破。
重装一下微信,假如忘记备份的话,那就什么都没了,QQ也是类似问题。邮件则不同,哪怕你把电脑砸了,换台电脑照样可以同步进行工作。
IM谈到工作要紧的地方想保存的话,可能要一连收藏N条对话,最后全部乱套。而邮件即使无数次回复,依旧有完整工作交流的流程,想收藏哪个,直接点星标即可。
想一想当你用微信交流工作时,对方的名字都是“小星星★☆”,“残阳如血”之类的,一阵蛋疼袭来。相较之下,邮件都有相应单位名后缀,正式很多。哪封邮件来自哪个单位,一眼明了,省去了备注的功夫。
【陈晓旭的回答(1票)】:
作为一种效率工具,微信和邮件是两个全然不同的概念。
使用场景不同:邮件是一种没有废话且可执行的沟通方式,更适合正式的办公和办事场合;微信会因为终端信息不连续,无法形成像邮件一样有效和可追溯可存档的沟通,微信使得沟通更松散和随机,看起来更适合个人社交或者聊天。
终端到达率不同:上班工作时间使用电脑,邮件是能最快到达桌面的,基本0未读;微信不会持续关注,经常是手机拉在包里或者没有电,漏读信息很多。权重高的事件,一般不会采用微信处理。免得影响效率。
作为一种沟通方式,微信和邮件可能融合
不知道张小龙做不做邮件,如果在微信的功能里加上邮件,微信在发挥移动社交的即时性同时,又增添了邮件的协同性和可追溯力,邮件这个古老的工具,很可能淹没在微信的电光石火里。
作为一种沟通方式,邮件也可能派生出更多的即时社交属性,以一种全新的姿态凤凰涅磐。
保持自己独立性的同时,邮件客户端,会迎来更多移动社交的挑战,未来会不会出现一种基于邮件的微信呢?如果微信玩的是朋友圈,邮件能否在办公圈做做文章?国外有个molto,社交化做了不错的尝试,国内好像有个轻邮,在邮件里加了语音回复,显然是IM的样子,体验还好。
【王子亭的回答(2票)】:
个人认为其他大部分答案都没有抓住重点,我认为原因只有一个,即邮件是互联网的基础设施,不受某个公司控制,任何人都可以架设自己的邮件服务器,因此邮件总是最正统,最严肃的沟通方式。至于其他答案中所列出的其他原因,我认为都不是重点,微信或QQ所确实的功能可以添加,但是添加之后一样无法取代邮件的地位。
【知乎用户的回答(0票)】:
应用场景不同。
Email比较正式
微信用于聊天比较合适
------------
xx我安排你的活你咋不干啊?
啥活不知道啊
我给你发微信了啊
我没看到啊(其实看到了就说没看到)
【施懿民的回答(0票)】:
不会的,道理很简单,邮件是全球开放标准,任何公司都可以实现,而微信、QQ是私有协议,只有腾讯才知道细节,如果腾讯没了呢 - 不是不可能。邮件的生命力应该要比即时通讯工具长。即时通讯工具现在很有生命力说白了就是在于即时,其实如果限制邮件大小,邮件客户端同样可以做到即时,以后网速快了以后,这一点邮件也可以轻松实现。而且邮件本来就有不断重发的功能,很多即时通讯做不到这一点,我觉得以后的趋势应该是邮件客户端微信化,而不是微信代替邮件。
【陈玖龄的回答(0票)】:
Low B外贸业务一枚,说说我的看法。
不会被某个工具代替,但是会被一系列工具代替。
邮件的优点:历史记录详细,很少丢失,易于查找。
各种附件都在服务器有保存, 本地删除之后也可到服务器上去翻。
能留下证据。
缺点:到达率差,有些人一辈子都不查收邮件,有些人邮件服务商防火墙太变态,随便放个附件,即使联系过很多次了还是照样当垃圾邮件处理(你不能体会,作为一个外贸业务员,对于第一封邮件要不要插图片,要不要放附件的纠结)
如你所知,做外贸的大部分都是靠邮件交流,口语好一点的就直接电话,但涉及到一些文件时还是要用到电邮。
但是趋势是现在能勾搭上的客户我们一般都要他们的Skype,WhatsApp之类的。混熟了之后就Google Hangout. 大客户的话就建一个公共Dropbox账户。邮件用得越来越少了。有一天,如果出现这样一个工具,可以实时达到对方,又能云端存储所有发送过的附件,而且使用范围足够广的话,邮件可能就真被淘汰了。
【未知的回答(0票)】:
今天才去给笔友寄了封信
【陈辞的回答(0票)】:
有些话不能当面说。所以发微信给你。
有些话不能立刻说,不知怎么说,想要多说些。所以发邮件给你。
每天检查邮箱成了习惯。因为里面有几百封来自过去的爱人,如今的挚友,或者未曾谋面的陌生人的字字句句。可以永远静静躺在那里。
微信好友可以删除拉黑,一下子所有的通讯都可以没了痕迹。可你给我的邮件就在收件箱里,我不动它也不动。
微信是约你喝一壶好酒,邮件是告诉你一份心事。本就是一为乘兴,一为尽兴。
具体功能之前知友回答真好,不再多说。
【陶勉的回答(0票)】:
现在上个TAOBAO不用旺旺用电邮?P2P传个几GB文件电邮可以?大趋势必然淘汰传统电邮。
但是电邮相对感觉正式。而且更重要的是,很多人用电邮,是因为高层用电邮才被迫用的。高层一般年纪大,使用软件的粘性也大,一时半会改不了而已。现在QQ上就有许多很专业的Q群。
微信QQ的问题是产品形象太娱乐了。君不见原来的facebook原来也是娱乐为主的,看看现在的Linkedin!
【谢一橙的回答(1票)】:
我个人认为会。之所以有「若会,QQ早就把Mail干掉了」的假象,是因为Mail如今横跨在一个通信变革的年代,这个年代里,Mail逐渐淡出,新的通讯工具飞入。现在15岁的孩子,如果不需要邮箱去接收论坛账号注册验证码,估计连电子邮箱是什么都不知道吧?我们的下一代,就是「变革成果」的受众。
&&&&&本文固定链接:
【上一篇】
【下一篇】
您可能还会对这些文章感兴趣!
最新日志热评日志随机日志开发者必读
开发者工具
获取接口调用凭据
消息加解密
自定义菜单管理
数据统计接口
微信JS-SDK
微信小店接口
微信卡券接口
微信门店接口
微信智能接口
设备功能介绍
多客服功能
摇一摇周边
微信连Wi-Fi
出自微信公众平台开发者文档
微信JS-SDK说明文档
微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。
通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。
此文档面向网页开发者介绍微信JS-SDK如何使用及相关注意事项。
先登录进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
备注:登录后可在“开发者中心”查看对应的接口权限。
在需要调用JS接口的页面引入如下JS文件,(支持https):
请注意,如果你的页面启用了https,务必引入
,否则将无法在iOS9.0以上系统中成功使用JSSDK
如需使用摇一摇周边功能,请引入 jweixin-1.1.0.js
备注:支持使用 AMD/CMD 标准模块加载方法加载
所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名,见附录1
jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
wx.ready(function(){
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
wx.error(function(res){
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数:
success:接口调用成功时执行的回调函数。
fail:接口调用失败时执行的回调函数。
complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。
cancel:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。
trigger: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。
备注:不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回。
以上几个函数都带有一个参数,类型为对象,其中除了每个接口本身返回的数据之外,还有一个通用属性errMsg,其值格式如下:
调用成功时:"xxx:ok" ,其中xxx为调用的接口名
用户取消时:"xxx:cancel",其中xxx为调用的接口名
调用失败时:其值为具体错误信息
wx.checkJsApi({
jsApiList: ['chooseImage'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
success: function(res) {
// 以键值对的形式返回,可用的api值true,不可用为false
// 如:{&checkResult&:{&chooseImage&:true},&errMsg&:&checkJsApi:ok&}
备注:checkJsApi接口是客户端6.0.2新引入的一个预留接口,第一期开放的接口均可不使用checkJsApi来检测。
请注意不要有诱导分享等违规行为,对于诱导分享行为将永久回收公众号接口权限,详细规则请查看: 。
wx.onMenuShareTimeline({
title: '', // 分享标题
link: '', // 分享链接
imgUrl: '', // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
wx.onMenuShareAppMessage({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接
imgUrl: '', // 分享图标
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
wx.onMenuShareQQ({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接
imgUrl: '', // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
wx.onMenuShareWeibo({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接
imgUrl: '', // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
wx.onMenuShareQZone({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接
imgUrl: '', // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
var localIds = res.localI // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
wx.previewImage({
current: '', // 当前显示图片的http链接
urls: [] // 需要预览的图片http链接列表
wx.uploadImage({
localId: '', // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
var serverId = res.serverId; // 返回图片的服务器端ID
备注:上传图片有效期3天,可用微信多媒体接口下载图片到自己的服务器,此处获得的 serverId 即 media_id,参考文档
目前多媒体文件下载接口的频率限制为10000次/天,如需要调高频率,请邮件weixin-,邮件主题为【申请多媒体接口调用量】,请对你的项目进行简单描述,附上产品体验链接,并对用户量和使用量进行说明。
wx.downloadImage({
serverId: '', // 需要下载的图片的服务器端ID,由uploadImage接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
var localId = res.localId; // 返回图片下载后的本地ID
wx.startRecord();
wx.stopRecord({
success: function (res) {
var localId = res.localId;
wx.onVoiceRecordEnd({
// 录音时间超过一分钟没有停止的时候会执行 complete 回调
complete: function (res) {
var localId = res.localId;
wx.playVoice({
localId: '' // 需要播放的音频的本地ID,由stopRecord接口获得
wx.pauseVoice({
localId: '' // 需要暂停的音频的本地ID,由stopRecord接口获得
wx.stopVoice({
localId: '' // 需要停止的音频的本地ID,由stopRecord接口获得
wx.onVoicePlayEnd({
success: function (res) {
var localId = res.localId; // 返回音频的本地ID
wx.uploadVoice({
localId: '', // 需要上传的音频的本地ID,由stopRecord接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
var serverId = res.serverId; // 返回音频的服务器端ID
备注:上传语音有效期3天,可用微信多媒体接口下载语音到自己的服务器,此处获得的 serverId 即 media_id,参考文档
目前多媒体文件下载接口的频率限制为10000次/天,如需要调高频率,请邮件weixin-,邮件主题为【申请多媒体接口调用量】,请对你的项目进行简单描述,附上产品体验链接,并对用户量和使用量进行说明。
wx.downloadVoice({
serverId: '', // 需要下载的音频的服务器端ID,由uploadVoice接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
var localId = res.localId; // 返回音频的本地ID
wx.translateVoice({
localId: '', // 需要识别的音频的本地Id,由录音相关接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
alert(res.translateResult); // 语音识别的结果
wx.getNetworkType({
success: function (res) {
var networkType = res.networkT // 返回网络类型2g,3g,4g,wifi
wx.openLocation({
latitude: 0, // 纬度,浮点数,范围为90 ~ -90
longitude: 0, // 经度,浮点数,范围为180 ~ -180。
name: '', // 位置名
address: '', // 地址详情说明
scale: 1, // 地图缩放级别,整形值,范围从1~28。默认为最大
infoUrl: '' // 在查看位置界面底部显示的超链接,可点击跳转
wx.getLocation({
type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
success: function (res) {
var latitude = res. // 纬度,浮点数,范围为90 ~ -90
var longitude = res. // 经度,浮点数,范围为180 ~ -180。
var speed = res. // 速度,以米/每秒计
var accuracy = res. // 位置精度
wx.startSearchBeacons({
ticket:&&,
//摇周边的业务ticket, 系统自动添加在摇出来的页面链接后面
complete:function(argv){
//开启查找完成后的回调函数
备注:如需接入摇一摇周边功能,请参考:
wx.stopSearchBeacons({
complete:function(res){
//关闭查找完成后的回调函数
wx.onSearchBeacons({
complete:function(argv){
//回调函数,可以数组形式取得该商家注册的在周边的相关设备列表
备注:上述摇一摇周边接口使用注意事项及更多返回结果说明,请参考:
wx.hideOptionMenu();
wx.showOptionMenu();
wx.closeWindow();
wx.hideMenuItems({
menuList: [] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3
wx.showMenuItems({
menuList: [] // 要显示的菜单项,所有menu项见附录3
wx.hideAllNonBaseMenuItem();
// “基本类”按钮详见附录3
wx.showAllNonBaseMenuItem();
wx.scanQRCode({
needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: [&qrCode&,&barCode&], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) {
var result = res.resultS // 当needResult 为 1 时,扫码返回的结果
wx.openProductSpecificView({
productId: '', // 商品id
viewType: '' // 0.默认值,普通商品详情页1.扫一扫商品详情页2.小店商品详情页
微信卡券接口中使用的签名凭证api_ticket,与步骤三中config使用的签名凭证jsapi_ticket不同,开发者在调用微信卡券JS-SDK的过程中需依次完成两次不同的签名,并确保凭证的缓存。
api_ticket 是用于调用微信卡券JS API的临时票据,有效期为7200 秒,通过access_token
开发者注意事项:
1.此用于卡券接口签名的api_ticket与步骤三中使用的jsapi_ticket不同。
2.由于获取api_ticket 的api 调用次数非常有限,频繁刷新api_ticket 会导致api调用受限,影响自身业务,开发者需在自己的服务存储与更新api_ticket。
接口调用请求说明
http请求方式: GET
access_token
调用接口凭证
数据示例:
"errcode":0,
"errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKdvsdshFKA",
"expires_in":7200
api_ticket,卡券接口中签名所需凭证
expires_in
wx.chooseCard({
shopId: '', // 门店Id
cardType: '', // 卡券类型
cardId: '', // 卡券Id
timestamp: 0, // 卡券签名时间戳
nonceStr: '', // 卡券签名随机串
signType: '', // 签名方式,默认'SHA1'
cardSign: '', // 卡券签名
success: function (res) {
var cardList= res.cardL // 用户选中的卡券列表信息
string(24)
门店ID。shopID用于筛选出拉起带有指定location_list(shopID)的卡券列表,非必填。
string(24)
卡券类型,用于拉起指定卡券类型的卡券列表。当cardType为空时,默认拉起所有卡券的列表,非必填。
string(32)
p1Pj9jr90_SQRaVqYI239Ka1erk
卡券ID,用于拉起指定cardId的卡券列表,当cardId为空时,默认拉起所有卡券的列表,非必填。
string(32)
string(32)
随机字符串。
string(32)
签名方式,目前仅支持SHA1
string(64)
abcsdijcous123
cardSign详见。开发者特别注意:签名错误会导致拉取卡券列表异常为空,请仔细检查参与签名的参数有效性。
拉取列表仅与用户本地卡券有关,拉起列表异常为空的情况通常有三种:签名错误、时间戳无效、筛选机制有误。请开发者依次排查定位原因。
wx.addCard({
cardList: [{
cardId: '',
cardExt: ''
}], // 需要添加的卡券列表
success: function (res) {
var cardList = res.cardL // 添加的卡券列表信息
cardExt详见,值得注意的是,这里的card_ext参数必须与参与签名的参数一致,格式为字符串而不是Object,否则会报签名错误。
wx.openCard({
cardList: [{
cardId: '',
}]// 需要打开的卡券列表
wx.chooseWXPay({
timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: '', // 支付签名随机串,不长于 32 位
package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: '', // 支付签名
success: function (res) {
// 支付成功后的回调函数
备注:prepay_id 通过微信支付统一下单接口拿到,paySign 采用统一的微信支付 Sign 签名生成方法,注意这里 appId 也要参与签名,appId 与 config 中传入的 appId 一致,即最后参与签名的参数有appId, timeStamp, nonceStr, package, signType。
微信支付开发文档:
jsapi_ticket
生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。
参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):
用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):
成功返回如下JSON:
&errcode&:0,
&errmsg&:&ok&,
&ticket&:&bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA&,
&expires_in&:7200
获得jsapi_ticket之后,就可以生成JS-SDK权限验证的签名了。
签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。
即signature=sha1(string1)。
noncestr=Wm3WZYTPz0wzccnW
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg
timestamp=
步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1:
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=&url=http://mp.?params=value
步骤2. 对string1进行sha1签名,得到signature:
0f9de62fce790f9a083d5c99e95740ceb90c27ed
签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。
签名用的url必须是调用JS接口页面的完整URL。
出于安全考虑,开发者必须在服务器端实现签名的逻辑。
如出现invalid signature 等错误详见附录5常见错误及解决办法。
版本1.0.0接口
onMenuShareTimeline
onMenuShareAppMessage
onMenuShareQQ
onMenuShareWeibo
onMenuShareQZone
startRecord
stopRecord
onVoiceRecordEnd
pauseVoice
onVoicePlayEnd
uploadVoice
downloadVoice
chooseImage
previewImage
uploadImage
downloadImage
translateVoice
getNetworkType
openLocation
getLocation
hideOptionMenu
showOptionMenu
hideMenuItems
showMenuItems
hideAllNonBaseMenuItem
showAllNonBaseMenuItem
closeWindow
scanQRCode
chooseWXPay
openProductSpecificView
chooseCard
举报: "menuItem:exposeArticle"
调整字体: "menuItem:setFont"
日间模式: "menuItem:dayMode"
夜间模式: "menuItem:nightMode"
刷新: "menuItem:refresh"
查看公众号(已添加): "menuItem:profile"
查看公众号(未添加): "menuItem:addContact"
发送给朋友: "menuItem:share:appMessage"
分享到朋友圈: "menuItem:share:timeline"
分享到QQ: "menuItem:share:qq"
分享到Weibo: "menuItem:share:weiboApp"
收藏: "menuItem:favorite"
分享到FB: "menuItem:share:facebook"
分享到 QQ 空间/menuItem:share:QZone
编辑标签: "menuItem:editTag"
删除: "menuItem:delete"
复制链接: "menuItem:copyUrl"
原网页: "menuItem:originPage"
阅读模式: "menuItem:readMode"
在QQ浏览器中打开: "menuItem:openWithQQBrowser"
在Safari中打开: "menuItem:openWithSafari"
邮件: "menuItem:share:email"
一些特殊公众号: "menuItem:share:brand"
JSSDK使用者请读这里,JSAPI用户可以跳过
卡券签名和JSSDK的签名完全独立,两者的算法和意义完全不同,请不要混淆。JSSDK的签名是使用所有JS接口都需要走的一层鉴权,用以标识调用者的身份,和卡券本身并无关系。其次,卡券的签名考虑到协议的扩展性和简单的防数据擅改,设计了一套独立的签名协议。另外由于历史原因,卡券的JS接口先于JSSDK出现,当时的JSAPI并没有鉴权体系,所以在卡券的签名里也加上了appsecret/api_ticket这些身份信息,希望开发者理解。
卡券 api_ticket
卡券 api_ticket 是用于调用卡券相关接口的临时票据,有效期为 7200 秒,通过 access_token 来获取。这里要注意与 jsapi_ticket 区分开来。由于获取卡券 api_ticket 的 api 调用次数非常有限,频繁刷新卡券 api_ticket 会导致 api 调用受限,影响自身业务,开发者必须在自己的服务全局缓存卡券 api_ticket 。
参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):
用第一步拿到的access_token 采用http GET方式请求获得卡券 api_ticket(有效期7200秒,开发者必须在自己的服务全局缓存卡券 api_ticket):
卡券扩展字段cardExt说明
cardExt本身是一个JSON字符串,是商户为该张卡券分配的唯一性信息,包含以下字段:
指定的卡券code码,只能被领一次。use_custom_code字段为true的卡券必须填写,非自定义code不必填写。
指定领取者的openid,只有该用户能领取。bind_openid字段为true的卡券必须填写,bind_openid字段为false不必填写。
时间戳,商户生成从日00:00:00至今的秒数,即当前的时间,且最终需要转换为字符串形式;由商户生成后传入,不同添加请求的时间戳须动态生成,若重复将会导致领取失败!。
随机字符串,由开发者设置传入,加强签名的安全性。随机字符串,不长于32位。推荐使用大小写字母和数字,不同添加请求的nonce须动态生成,若重复将会导致领取失败!。
签名,商户将接口列表中的参数按照指定方式进行签名,签名方式使用SHA1,具体签名方案参见下文;由商户按照规范签名后传入。
将 api_ticket(特别说明:api_ticket 相较 appsecret 安全性更高,同时兼容老版本文档中使用的 appsecret 作为签名凭证。)、timestamp、card_id、code、openid、nonce_str的value值进行字符串的字典序排序。
将所有参数字符串拼接成一个字符串进行sha1加密,得到signature。
signature中的timestamp,nonce字段和card_ext中的timestamp,nonce_str字段必须保持一致。
code=jonyqin_,timestamp=,card_id=pjZ8Yt1XGILfi-FUsewpnnolGgZk, api_ticket=ojZ8YtyVyr30HheH3CM73y7h4jJE ,nonce_str=jonyqin 则signature=sha1(jonyqinjonyqin_ojZ8YtyVyr30HheH3CM73y7h4jJE pjZ8Yt1XGILfi-FUsewpnnolGgZk)=6b81fbf6af16e689。
强烈建议开发者使用卡券资料包中的签名工具SDK进行签名或使用debug工具进行校验:
卡券签名cardSign说明
将 api_ticket(特别说明:api_ticket 相较 appsecret 安全性更高,同时兼容老版本文档中使用的 appsecret 作为签名凭证。)、app_id、location_id、timestamp、nonce_str、card_id、card_type的value值进行字符串的字典序排序。
将所有参数字符串拼接成一个字符串进行sha1加密,得到cardSign。
调用config 接口的时候传入参数 debug: true 可以开启debug模式,页面会alert出错误信息。以下为常见错误及解决方法:
invalid url domain当前页面所在域名与使用的appid没有绑定,请确认正确填写绑定的域名,如果使用了端口号,则配置的绑定域名也要加上端口号(一个appid可以绑定三个有效域名,见)。
invalid signature签名错误。建议按如下顺序检查:
确认签名算法正确,可用
页面工具进行校验。
确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。
确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。
确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
确保一定缓存access_token和jsapi_ticket。
确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。
the permission value is offline verifying这个错误是因为config没有正确执行,或者是调用的JSAPI没有传入config的jsApiList参数中。建议按如下顺序检查:
确认config正确通过。
如果是在页面加载好时就调用了JSAPI,则必须写在wx.ready的回调中。
确认config的jsApiList参数包含了这个JSAPI。
permission denied该公众号没有权限使用这个JSAPI,或者是调用的JSAPI没有传入config的jsApiList参数中(部分接口需要认证之后才能使用)。
function not exist当前客户端版本不支持该接口,请升级到新版体验。
为什么6.0.1版本config:ok,但是6.0.2版本之后不ok(因为6.0.2版本之前没有做权限验证,所以config都是ok,但这并不意味着你config中的签名是OK的,请在6.0.2检验是否生成正确的签名以保证config在高版本中也ok。)
在iOS和Android都无法分享(请确认公众号已经认证,只有认证的公众号才具有分享相关接口权限,如果确实已经认证,则要检查监听接口是否在wx.ready回调函数中触发)
服务上线之后无法获取jsapi_ticket,自己测试时没问题。(因为access_token和jsapi_ticket必须要在自己的服务器缓存,否则上线后会触发频率限制。请确保一定对token和ticket做缓存以减少2次服务器请求,不仅可以避免触发频率限制,还加快你们自己的服务速度。目前为了方便测试提供了1w的获取量,超过阀值后,服务将不再可用,请确保在服务上线前一定全局缓存access_token和jsapi_ticket,两者有效期均为7200秒,否则一旦上线触发频率限制,服务将不再可用)。
uploadImage怎么传多图(目前只支持一次上传一张,多张图片需等前一张图片上传之后再调用该接口)
没法对本地选择的图片进行预览(chooseImage接口本身就支持预览,不需要额外支持)
通过a链接(例如先通过微信授权登录)跳转到b链接,invalid signature签名失败(后台生成签名的链接为使用jssdk的当前链接,也就是跳转后的b链接,请不要用微信登录的授权链接进行签名计算,后台签名的url一定是使用jssdk的当前页面的完整url除去'#'部分)
出现config:fail错误(这是由于传入的config参数不全导致,请确保传入正确的appId、timestamp、nonceStr、signature和需要使用的jsApiList)
如何把jsapi上传到微信的多媒体资源下载到自己的服务器(请参见文档中uploadVoice和uploadImage接口的备注说明)
Android通过jssdk上传到微信服务器,第三方再从微信下载到自己的服务器,会出现杂音(微信团队已经修复此问题,目前后台已优化上线)
绑定父级域名,是否其子域名也是可用的(是的,合法的子域名在绑定父域名之后是完全支持的)
在iOS微信6.1版本中,分享的图片外链不显示,只能显示公众号页面内链的图片或者微信服务器的图片,已在6.2中修复
是否需要对低版本自己做兼容(jssdk都是兼容低版本的,不需要第三方自己额外做更多工作,但有的接口是6.0.2新引入的,只有新版才可调用)
该公众号支付签名无效,无法发起该笔交易(请确保你使用的jweixin.js是官方线上版本,不仅可以减少用户流量,还有可能对某些bug进行修复,拷贝到第三方服务器中使用,官方将不对其出现的任何问题提供保障,具体支付签名算法可参考)
目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题已在Android6.2中修复
uploadImage在chooseImage的回调中有时候Android会不执行,Android6.2会解决此问题,若需支持低版本可以把调用uploadImage放在setTimeout中延迟100ms解决
require subscribe错误说明你没有订阅该测试号,该错误仅测试号会出现
getLocation返回的坐标在openLocation有偏差,因为getLocation返回的是gps坐标,openLocation打开的腾讯地图为火星坐标,需要第三方自己做转换,6.2版本开始已经支持直接获取火星坐标
查看公众号(未添加): "menuItem:addContact"不显示,目前仅有从公众号传播出去的链接才能显示,来源必须是公众号
ICP备案数据同步有一天延迟,所以请在第二日绑定
DEMO页面:
示例代码:
备注:链接中包含php、java、nodejs以及python的示例代码供第三方参考,第三方切记要对获取的accesstoken以及jsapi_ticket进行缓存以确保不会触发频率限制。
邮箱地址:weixin-
邮件主题:【微信JS-SDK反馈】
邮件内容说明:
用简明的语言描述问题所在,并交代清楚遇到该问题的场景,可附上截屏图片,微信团队会尽快处理你的反馈。}

我要回帖

更多关于 微信邮件地址绑定 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信