openid废弃 微信开发_微信web开发者工具 企业微信 openid - CSDN
  • 1、微信的各个平台微信开放平台,面向开发人员,为网站、App 提供微信第三方登录功能,为 App 提供支付功能(通过客户端 sdk 拉起微信客户端);微信公众平台,对应的是公众号,包括订阅号、服务号、企业号,面向...

    1、微信的各个平台

    微信开放平台,面向开发人员,为网站、App 提供微信第三方登录功能,为 App 提供支付功能(通过客户端 sdk 拉起微信客户端);
    微信公众平台,对应的是公众号,包括订阅号、服务号、企业号,面向运营人员和开发人员,运营可以直接登录公众号管理后台查看公众号的各种指标,开发则是通过调用微信提供的各种接口来增强公众号的功能;
    微信商户平台,用户通过微信支付的钱,最终到达商户账号。无论是开放平台还是公众平台,涉及到支付,都需要商户平台账号

    简单提一下订阅号与服务号的区别
    订阅号,主要用来发文章,微信的聊天列表中会有“订阅号”这一项,里面全都是订阅号的推送;正常情况下订阅号每天只能群发一条消息,但是媒体类的除外,比如人民日报、36 氪等,就是每天可以发多条,猜测应该是可以找微信申请的,只要资质够了,就可以一天发多条吧(未实际验证过,只是猜测)。
    服务号,顾名思义,主要是提供服务的,比如银行的服务号,你可以在服务号里面查询一些信息,看一下服务号的菜单大致就了解了服务号提供的哪些服务,服务号在微信聊天列表中是单独的一项,不会像订阅号那样合并起来。服务号其实也可以像订阅号那样群发消息,但是每个自然月只能发 4 次,可以看出是跟订阅号的侧重点完全不同的,两者没有包含被包含的关系,谁也没法取代谁,也不是简单的权限高级低级的区别。

    2、服务号账号介绍

    服务号是只能企业申请的,个人只能申请订阅号。服务号相比订阅号有更多的接口权限,这样服务号就能提供更多的自定义功能。
    服务号要能提供完整的功能,还需要进行“微信认证”,提交一些公司资质信息,认证费 300 元,微信认证成功之后,才能获得完整的服务号接口权限。
    服务号账号的登录还是比较严格的,每次登录都需要管理员扫码确认。当然,管理员可以绑定运营者微信号http://kf.qq.com/faq/120911VrYVrA141211FbEnq2.html),这样添加为运营者的人就可以自己扫码登录了,不需要每次都“惊动”管理员

    3、服务号管理后台介绍

    登录到管理后台,运营可以直接在管理后台进行一系列操作,例如:
    公众号设置:设置关注公众号后发送给用户的欢迎语,设置关键词回复规则和内容,设置收到消息自动回复内容,自定义菜单
    运营操作:群发消息,回复用户消息
    查询统计:用户分析、菜单分析、图文分析、消息分析

    4、服务号开发

    至此,开发终于登场了~~~
    先来看一下开发之前需要进行的一系列配置。
    服务号管理后台左边栏最下面有一项“开发”,我们来一次看一下各个子项
    基础配置
    公众号开发信息,AppID 和 AppSecret 是必需的,其中 AppID 是可以暴露的,但是 AppSecret 是绝对不能暴露的。在管理后台里面也是不显示的,设置是无法查看的,要是忘记了,那只能重置(初始化或重置的时候是可以看到的,如果错过了这个时机,那后面就看不到了)。如果重置,就会影响已有服务,所以一定要备份好 AppSecret,同时不要泄露。
    IP 白名单,需要填写开发环境、测试环境、正式环境的服务器 IP,只有白名单中的 IP 才允许请求微信获取 access_token,有了 access_token 才能有权限调用微信的各种接口。access_token 的具体介绍,参考公众平台文档--获取 access_token(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183),这里不再赘述。
    服务器配置,参考公众平台文档--接入指南(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319),这里不再赘述。注意,如果服务器配置开启,则相当于服务器完全接管服务号,甚至可以夸张的说,有了服务器接收微信服务端的所有推送事件,服务号管理后台就可以废弃了。服务器配置开始后,管理后台有一些配置就失效了,比如,自动回复功能,不能在后台配置了,只能通过程序回复;自定义菜单,也只能通过程序来设置,不能再页面上设置了。
    有了上面的这些配置,就可以开始开发、调试公众平台接口了。

    开发者工具
    开发者文档,文档对于开发者的重要性就不用说了,
    在线接口调试工具,方便直接调试公众平台接口,不用开发者自己写调试程序,
    web 开发者工具,相当于一个可以在 pc 上运行的微信浏览器,方便模拟手机微信,
    公众平台测试账号,这个是非常有帮助的,尤其是在服务号未进行微信认证的情况下(很多接口还没有开放)。在这个测试账号里面基本上所有的接口权限都开放,在开发测试阶段是非常有帮助的

    接口权限,可以查看所有接口是否有权限调用。部分接口还需要额外的配置,比如:网页授权获取用户信息,需要配置网页授权域名

    介绍到这里,之后的开发就需要结合公众平台文档,自力更生了。虽然微信的文档不是特别条理,但是只要耐心一点,仔细一点,基本还是比较顺利的。

    5、公众平台与开放平台打通(unionid 机制)

    公众号,可以拿到关注用户的信息,openid、昵称、头像;
    开放平台,第三方登录也可以拿到用户的信息,openid、昵称、头像;
    其中,昵称、头像是相同的,也都是用户自己随时可以修改的,如果要唯一确定一个微信用户,只能通过微信 id。
    但是,公众平台的 openid 是用户在公众号里面的唯一 id,换了公众号,openid 也会跟着变;开发平台的 openid 是用户在开发平台里面的唯一 id,与公众平台的 openid 是不同的。所以无法通过 openid 来唯一确定一个用户。
    微信为了解决这个问题,提供了 unionid,只要公众平台、开放平台是关联起来的,那么同一个微信用户即使是在不同平台里面也都是相同的 unionid

    平台之间打通,需要再开放平台中绑定公众号,绑定成功后,无论是在哪个平台获取用户信息,都会携带 unionid 字段,开发者可以根据 unionid 将不同平台下的同一个用户识别出来。

    ----------------------------------------------------------------------------------------------------------
    本文没有介绍相关代码,只是对整个开发过程的一个梳理和总结,如果能对大家,尤其是新手,有些许帮助,我也感到非常荣幸。
    欢迎大家批评指导,交流学习~~~



    展开全文
  • vue 微信公众号开发

    2018-08-30 08:56:31
    vue 微信公众号开发 开题 上个月初入职了一家新公司。来了新公司很忙。本来计划是在上个月底写一篇博客的,写一下关于新公司的事情。 几度思考之后还是没写。也许做程序员接手别人的项目,都会说别人的项目多么...

    vue 微信公众号开发

    开题

    上个月初入职了一家新公司。来了新公司很忙。本来计划是在上个月底写一篇博客的,写一下关于新公司的事情。
    几度思考之后还是没写。也许做程序员接手别人的项目,都会说别人的项目多么的坑吧。但是我接手的这个两个
    不是我一个人说坑。各种非人道的东西就不一一说了。整体开发效率降低。前几天前端来了一个同事,所以才有时间写这些。

    正题 – vue 微信公众号开发

    这个月帮一个朋友做一个微信公总号开发的项目。
    之前做这类项目都是一个页面一个html的形式,单位用的rem。这次采用的是vue做的SPA单页应用,单位是vw。
    这次在采坑的过程中有些需要总结一下的。

    坑一 – 联通广告植入

    应为需要给别人看效果,所以项目是部署在我的服务器上的。开始前一周还好,后面做到快要结束的时候,页面
    给联通植入的广告,没办法关闭。为这个问题花了一些时间。开始想到的是采用https。我阿里云的免费证书都申
    请好了,前端nginx也部署好了(可以看这里Nginx部署静态网页(2017.11.17添加https))。可是后台的接口是http的。前端部署为https之后没法访问http的后台接口。
    后台我也给他证书了,可是他Tomcat不会部署,阿里云有操作步骤,截图给他了还是不会。我的内心是崩溃的啊……
    没得法,后台不能配合。只能继续使用http的了。但是这里就有一个问题了,为什么前端是https的网页不能访问后台的http接口。
    目前还没答案。
    为了解决广告,打电话给联通了,回答的也是非常业余。也打电话了阿里云了,让我提工单,没时间。后来没管了。
    广告就偶尔才会出现。恶心的运营商,什么时候可以做一点好事。

    坑二 – vm兼容性问题

    之前做手机端一直使用rem,使用Flexible实现手淘H5页面的终端适配中介绍的。
    使用淘宝的lib-flexible。这个也是一直做项目使用了两年多了。现在想换一下。
    结果看见了如何在Vue项目中使用vw实现移动端适配这里作者介绍了详细的使用步骤和其他说明。
    由于鄙人短视,没有仔细把作者文章看完,导致了项目在快要做完的时候,用苹果手机和safari浏览器测试的时候发现
    img标签的图片显示不出来。我自己又之后安卓手机,一直到那个时候才发现这个问题。被这个问题困然了两三天。
    后来在网上看见了[New]Vue项目使用vw实现移动端适配教程这篇文章才解决的。
    实际在上面大漠的文章中就有,只是我没看见。
    关于为什么苹果手机和safari浏览器中img标签图片显示不出来,请仔细看如何在Vue项目中使用vw实现移动端适配
    解决办法也在里面。
    这个坑其实是自己挖的。

    获取openid

    其实这个过程去年初的时候做过微信网页开发–获取微信用户信息,只不过那时候是一个页面一个html这次是vue的SPA。
    原理都是一样的。这是微信的文档:微信网页授权。按照步骤做。
    首先是设置MP_verify_xxxx.txt文档再设置安全域名。
    这里写图片描述
    我的做法是:
    直接把MP_verify_xxxx.txt放在dist目录下面。nginx的部署好之后就可以访问了。
    这里写图片描述
    大家看见了也auth.html文件,这个里面只做了一件事:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
        <title>hxproject</title>
      </head>
      <body>
      </body>
      <script>
        window.onload = function(){
          var redirect_uri = encodeURIComponent('http://xxx.com/#/home');
          window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri='+ redirect_uri +'&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect';
        }
      </script>
    </html>

    之后在http://xxx.com/#/home页面的路径后面微信会给我们添加一个code参数,剩下的就是后台根据这个code参数去获取用户信息
    在写这篇博客的时候做的项目按照这种路由模式可以,但是到了8月份必须使用history模式了,也就是回调地址是:http://xxx.com/home
    返回给前端。其实做获取openid,一定要多看文档。剩下的没难度。

    微信公总号支付 – 微信内H5调起支付

    关于微信支付,可以看之前微信小程序开发(五)小程序支付-统一下单
    后台部分基本一样。
    就是前端部分有区别:
    微信公总号支付:

    function onBridgeReady(){
       WeixinJSBridge.invoke(
           'getBrandWCPayRequest', {
               "appId":"wx2421b1c4370ec43b",     //公众号名称,由商户传入     
               "timeStamp":"1395712654",         //时间戳,自1970年以来的秒数     
               "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串     
               "package":"prepay_id=u802345jgfjsdfgsdg888",     
               "signType":"MD5",         //微信签名方式:     
               "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 
           },
           function(res){     
               if(res.err_msg == "get_brand_wcpay_request:ok" ) {}     // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回    ok,但并不保证它绝对可靠。 
           }
       ); 
    }
    if (typeof WeixinJSBridge == "undefined"){
       if( document.addEventListener ){
           document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
       }else if (document.attachEvent){
           document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
           document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
       }
    }else{
       onBridgeReady();
    }

    上面这个方法 已经废弃了
    微信JSSDK-微信支付

    wx.chooseWXPay({
        timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
        nonceStr: '', // 支付签名随机串,不长于 32 位
        package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
        signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
        paySign: '', // 支付签名
        success: function (res) {
        // 支付成功后的回调函数
        }
    });

    微信小程序支付

    wx.requestPayment({
       'timeStamp': '',
       'nonceStr': '',
       'package': '',
       'signType': 'MD5',
       'paySign': '',
       'success':function(res){
       },
       'fail':function(res){
       }
    })

    其实支付前端需要的几个参数的名字和类型是一样的。只是后端有些差异。

    展开全文
  • vue微信网页开发自定义分享踩坑关于项目思路准备上代码微信网页开发的坑微信签名:微信授权分享页面的标题 关于项目 之前做的微信网页开发项目,用vue写的,前后端分离项目,使用vue-cli3搭建,路由模式history。...

    关于项目

    之前做的微信网页开发项目,用vue写的,前后端分离项目,使用vue-cli3搭建,路由模式history。客户要求销售员登录后可分享相关文章网页,并且分享标题内容自定,而客户需要授权登录,客户可以转发给客户,并且带上销售员信息。手机微信浏览器,电脑微信浏览器打开可以获取用户信息,记录用户行为等,非微信浏览器下打开,能正常访问网页内容。在手机微信浏览器下选用普通浏览器打开(即带上参数,用普通浏览器访问页面),再用普通浏览器分享给微信好用,打开后仍然可以获取用户信息,记录用户行为(即参数不丢失)。

    思路

    1. 由于销售员是直接输入用户名密码登录,因此在销售员登录后将销售员编号,以及文章编号存入本地;
    2. 在页面加载,即mounted中,取出本地的销售员编号、文章编号和路径的销售员编号、文章编号,如果本地存在销售员编号则为销售员,反之为客户;
    3. .用qs.parse()取出路径的参数,并且对浏览器进行判断,在本地没有销售员编号,网页路径没有code,微信浏览器情况下,进行微信授权登录;
    4. 微信浏览器时进行签名,如果是客户,记录客户行为;

    准备

    微信网页开发首先得配置,准备好相关的东西,不然根本没法开始,就算写了也没法测试,需要准备什么呢?

    1. 首先你得申请一个微信公众号,并且进行微信认证
    2. 一个https的域名,如果确实没有,那也可以先使用内网穿透。关于内网穿透,本人开始使用的是花生壳的内网穿透,坑爹啊,冲了6块钱不说,域名还不能固定。推荐使用sunny-ngrok内网穿透,真心比花生壳好用,而且可以免费用一个
    3. 微信公众号配置,到微信公众号设置——功能设置里面配置js安全域名,以及回调域名。到基本配置里面配置ip白名单(ip白名单如果不知道,可以先不配)。 在这里插入图片描述
      在这里插入图片描述
    4. 微信开发者工具,切换到微信网页开发模式,将项目部署域名粘贴到地址栏中,可以用来模拟微信浏览器调试微信签名,授权,分享等微信接口

    上代码

    这是分享授权的代码,其他省略,另外this.$globalMethods是本人的一个公用文件,一些公用的方法,url,数据等都存在这里面,为使代码更简洁,使用了async,await等ES6以上的语法,不熟悉ES6语法的可自行百度
    项目使用了vuex,并对ajax请求进行了封装,相关代码省略

     import {mapState} from 'vuex'
        import wx from 'weixin-js-sdk'
        import qs from 'qs'
        import {subNewsMyForwardsRecord,saveUserScanTime,getOpenid,reqNewsDetail,getConfigData,addUserScanTimeCount} from '../../api'
         data(){
                return{
                    newsList:{},
                    salesnum:'',//销售员编号
                    newsDetail:[],//新闻详情
                }
    
            },
    async mounted() {
                document.title='资讯详情'
                let cookiSalesnum = localStorage.getItem('salesnum')//获取本地缓存的销售员编号
                let cookiConnum=localStorage.getItem('connum')//获取本地缓存的文章编号
                let windowUrl=window.location.href
                windowUrl=decodeURIComponent(windowUrl)
                let paramsStr=windowUrl.split('?')[1]
                let paramsObj=qs.parse(paramsStr)//使用qs库解析路径
                let {connum,salesnum,code}=paramsObj
                salesnum=salesnum || cookiSalesnum
                connum=connum || cookiConnum
                let {appid,redirect_uri} = this.$globalMethods.wxPublicData()
                let iswx=this.isWeixin()
                if(!cookiSalesnum && !code && iswx){
                    /*没有销售员编号,没有code,微信浏览器,进入的是别人分享的页面需要授权登录*/
                    redirect_uri= `${redirect_uri}/newsdetail?connum=${connum}&salesnum=${salesnum}`
                    redirect_uri=encodeURIComponent(redirect_uri)//此处必须要转码
                    window.location.href=`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
                    return
                }
                let newsDetail=await reqNewsDetail(connum)//获取资讯详情
                this.newsDetail=newsDetail//将资讯详情渲染到页面
                iswx && this.wxSignFun({windowUrl,appid,salesnum,connum,newsDetail,cookiSalesnum})//微信浏览器下,签名
                cookiSalesnum &&  this.$store.dispatch('getMyCardInfo',{salesnum})//销售员,显示销售员信息
                if(!cookiSalesnum && iswx){
                    // 不是销售员,微信浏览器,获取用户信息,记录用户行为
                    let openidResult=await getOpenid(code,salesnum)
                    let openid=openidResult.openid
                    /*websocket计时*/
                    let websocketUrl=this.$globalMethods.getWbsocketUrl()
                    let ws = new WebSocket(websocketUrl)
                    ws.onopen = ()=> {
                        addUserScanTimeCount(salesnum,openid,connum)
                    }
                }
            },
            methods:{
             async wxSignFun(params){
                    let {windowUrl,appid,salesnum,connum,newsDetail,cookiSalesnum }=params
                    let congigResult=await getConfigData(windowUrl)
                    let {nonceStr,signature,timestamp}=congigResult
                    wx.config({
                        debug:false,
                        appId:appid,
                        nonceStr,
                        signature,
                        timestamp,
                        jsApiList: [
                            'onMenuShareAppMessage', //分享到朋友接口,旧接口,即将废弃
                            'updateTimelineShareData', //  分享到朋友接口,新接口
                            'checkJsApi',
                        ]
                    })
                    //处理验证失败的信息
                    wx.error(function (res) {
                        alert('微信签名失败')
                    })
                    let desc=this.ToText(newsDetail.context).substring(0,20)
                    let link=`${windowUrl}?connum=${connum}&salesnum=${salesnum}`
                    let shareData={
                        title: newsDetail.title, // 分享标题
                        desc, // 分享描述
                        link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                        imgUrl: this.$globalMethods.getBaseUrl_router() + '/logo.png', // 分享图标
                        type: 'link', // 分享类型,music、video或link,不填默认为link
                        dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
                        success: function (res) {
                            //签名成功,记录用户行为
                            ;( res.errMsg==='sendAppMessage:ok') && !cookiSalesnum && subNewsMyForwardsRecord(salesnum,connum)
                        },
                    }
                    wx.ready(result=>{
                        wx.onMenuShareAppMessage(shareData)
                        wx.updateTimelineShareData(shareData)
                        wx.checkJsApi({
                            jsApiList: [
                                'onMenuShareAppMessage',
                                'updateTimelineShareData',
                            ],
                            success: function (res) {
                                //alert('分享成功')
                                console.log(res)
                            }
                        })
                    })
                },
                //富文本数据转纯文本函数
                ToText(HTML){
                    var input = HTML;
                    return input.replace(/<(style|script|iframe)[^>]*?>[\s\S]+?<\/\1\s*>/gi,'').replace(/<[^>]+?>/g,'').replace(/\s+/g,' ').replace(/ /g,' ').replace(/>/g,' ');
                },
                 /*判断是否是微信浏览器*/
                isWeixin() {
                    //window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息,这个属性可以用来判断浏览器类型
                    var ua = window.navigator.userAgent.toLowerCase();
                    //通过正则表达式匹配ua中是否含有MicroMessenger字符串
                    console.log(ua.match())//micromessenger
                    return ua.match(/MicroMessenger/i) == 'micromessenger'
                },
            }
    

    微信网页开发的坑

    微信签名:

    微信签名可以说是微信网页开发中最繁琐的了。签名失败的原因有很多。签名成功不是指后端返回了签名信息就成功,而是后端返回了签名信息,并且前端的微信相关接口调用成功,即wx.ready执行,才算是成功

    1. 微信公众号没有做相关的配置或者配置出错
    2. ip白名单没有配置,如果在开发者调试工具中报错为某ip不在白名单内,那就把这个ip配到公众号后台白名单即可
    3. 后端签名算法错误,这里要注意,签名算法加密方式是MD5或HMAC-SHA256。另外排序规则等也容易出错,可仔细阅读微信开发文档。
    4. 前后端appid不一致,appid不是项目公众号的appid。这其实是一个低级错误,但是又是存在的,有些童鞋手里项目好多个,结果搞错了相关的appid,签名肯定失败
    5. 签名url错误。注意签名的url一定用window.location.href来取,另外,项目必须部署以后才能测试签名,不管域名是已经申请好的https域名,还是内网穿透的https域名都行,直接在开发工具地址栏输入localhost:8080,签名肯定失败.
    6. 如果用vue开发,路由模式一定选用history 模式,不可使用hash模式,用hash模式就算成功返回签名信息,分享的时候还是会失败,因为hash模式的地址里带有#号,而微信签名的url是不能有#号的,这会导致分享接口调用失败
    7. 子页面的签名。本人的项目里面,有多个签名页面,而且是从父级页面跳转到子级页面后才签名,这里有个地方要注意,跳转的时候请用window.location.href来进行子页面的跳转,用this.router.replacethis.router.replace或者this.router.push等vue的跳转方式,在安卓机签名可以成功,但是在苹果机ios系统下,就会失败,这和ios的路由缓存机制有关
     window.location.href=`${this.$globalMethods.getBaseUrl_router()}/newsdetail`//需要签名的子页面的正确跳转方式
    

    本人亦探索过用vue路由守卫解决ios的这个问题,但最终测试时发现无效,因此放弃

    微信授权

    微信授权相对来说简单很多,按照微信给定的链接拼接号参数,使用window.location.href跳转即可,需要携带的参数,拼接到rederect_uri上。

     redirect_uri= `${redirect_uri}/newsdetail?connum=${connum}&salesnum=${salesnum}`
                   redirect_uri=encodeURIComponent(redirect_uri)
                   window.location.href=`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
    

    这里要强调的一点是,如果想在分享是携带多个参数,那么redirect_uri必须转码,使用encodeURIComponent来进行转码,如果不转码,无论你在rederect_uri上拼接多少个参数,你会发现最终都只会剩下一个参数(这里容我吐槽下微信,是不是应该改成如果不转码,直接授权登录失败??)

    分享页面的标题

    由于vue开发是单页面应用,如果想让分享出去的页面单独显示自己的标题,最有效的办法就是在mounted里面写上这句

     document.title='你的自定义标题'//
    

    本人踩坑时亦尝试过路由守卫,但是在ios上还是不尽人意,而且还比较麻烦

    展开全文
  • 微信开发返回码说明

    2019-07-14 12:16:00
    返回码说明 -1 系统繁忙 0 请求成功 40001 获取access_token时Secret错误,或者access_token无效 40002 不合法的凭证类型 40003 不合法的UserID 40004 不合法的媒体文件类型 ......
    返回码说明
    -1 系统繁忙
    0 请求成功
    40001 获取access_token时Secret错误,或者access_token无效
    40002 不合法的凭证类型
    40003 不合法的UserID
    40004 不合法的媒体文件类型
    40005 不合法的文件类型
    40006 不合法的文件大小
    40007 不合法的媒体文件id
    40008 不合法的消息类型
    40013 不合法的corpid
    40014 不合法的access_token
    40015 不合法的菜单类型
    40016 不合法的按钮个数
    40017 不合法的按钮类型
    40018 不合法的按钮名字长度
    40019 不合法的按钮KEY长度
    40020 不合法的按钮URL长度
    40021 不合法的菜单版本号
    40022 不合法的子菜单级数
    40023 不合法的子菜单按钮个数
    40024 不合法的子菜单按钮类型
    40025 不合法的子菜单按钮名字长度
    40026 不合法的子菜单按钮KEY长度
    40027 不合法的子菜单按钮URL长度
    40028 不合法的自定义菜单使用成员
    40029 不合法的oauth_code
    40031 不合法的UserID列表
    40032 不合法的UserID列表长度
    40033 不合法的请求字符,不能包含\uxxxx格式的字符
    40035 不合法的参数
    40038 不合法的请求格式
    40039 不合法的URL长度
    40040 不合法的插件token
    40041 不合法的插件id
    40042 不合法的插件会话
    40048 url中包含不合法domain
    40054 不合法的子菜单url域名
    40055 不合法的按钮url域名
    40056 不合法的agentid
    40057 不合法的callbackurl或者callbackurl验证失败
    40058 不合法的红包参数
    40059 不合法的上报地理位置标志位
    40060 设置上报地理位置标志位时没有设置callbackurl
    40061 设置应用头像失败
    40062 不合法的应用模式
    40063 参数为空
    40064 管理组名字已存在
    40065 不合法的管理组名字长度
    40066 不合法的部门列表
    40067 标题长度不合法
    40068 不合法的标签ID
    40069 不合法的标签ID列表
    40070 列表中所有标签(成员)ID都不合法
    40071 不合法的标签名字,标签名字已经存在
    40072 不合法的标签名字长度
    40073 不合法的openid
    40074 news消息不支持指定为高保密消息
    40077 不合法的预授权码
    40078 不合法的临时授权码
    40079 不合法的授权信息
    40080 不合法的suitesecret
    40082 不合法的suitetoken
    40083 不合法的suiteid
    40084 不合法的永久授权码
    40085 不合法的suiteticket
    40086 不合法的第三方应用appid
    40092 导入文件存在不合法的内容
    40093 不合法的跳转target
    40094 不合法的URL
    40095 修改失败,并发冲突
    40155 请勿添加其他公众号的主页链接
    41001 缺少access_token参数
    41002 缺少corpid参数
    41003 缺少refresh_token参数
    41004 缺少secret参数
    41005 缺少多媒体文件数据
    41006 缺少media_id参数
    41007 缺少子菜单数据
    41008 缺少oauth code
    41009 缺少UserID
    41010 缺少url
    41011 缺少agentid
    41012 缺少应用头像mediaid
    41013 缺少应用名字
    41014 缺少应用描述
    41015 缺少Content
    41016 缺少标题
    41017 缺少标签ID
    41018 缺少标签名字
    41021 缺少suiteid
    41022 缺少suitetoken
    41023 缺少suiteticket
    41024 缺少suitesecret
    41025 缺少永久授权码
    41034 缺少login_ticket
    41035 缺少跳转target
    42001 access_token过期
    42002 refresh_token过期
    42003 oauth_code过期
    42004 插件token过期
    42007 预授权码失效
    42008 临时授权码失效
    42009 suitetoken失效
    43001 需要GET请求
    43002 需要POST请求
    43003 需要HTTPS
    43004 需要成员已关注
    43005 需要好友关系
    43006 需要订阅
    43007 需要授权
    43008 需要支付授权
    43010 需要处于回调模式
    43011 需要企业授权
    43013 应用对成员不可见
    44001 多媒体文件为空
    44002 POST的数据包为空
    44003 图文消息内容为空
    44004 文本消息内容为空
    45001 多媒体文件大小超过限制
    45002 消息内容大小超过限制
    45003 标题大小超过限制
    45004 描述大小超过限制
    45005 链接长度超过限制
    45006 图片链接长度超过限制
    45007 语音播放时间超过限制
    45008 图文消息的文章数量不能超过10条
    45009 接口调用超过限制
    45010 创建菜单个数超过限制
    45015 回复时间超过限制
    45016 系统分组,不允许修改
    45017 分组名字过长
    45018 分组数量超过上限
    45022 应用名字长度不合法,合法长度为2-16个字
    45024 帐号数量超过上限
    45025 同一个成员每周只能邀请一次
    45026 触发删除用户数的保护
    45027 mpnews每天只能发送100次
    45028 素材数量超过上限
    45029 media_id对该应用不可见
    45032 作者名字长度超过限制
    46001 不存在媒体数据
    46002 不存在的菜单版本
    46003 不存在的菜单数据
    46004 不存在的成员
    47001 解析JSON/XML内容错误
    48001 Api未授权
    48002 Api禁用(一般是管理组类型与Api不匹配,例如普通管理组调用会话服务的Api)
    48003 suitetoken无效
    48004 授权关系无效
    48005 Api已废弃
    50001 redirect_uri未授权
    50002 成员不在权限范围
    50003 应用已停用
    50004 成员状态不正确,需要成员为企业验证中状态
    50005 企业已禁用
    60001 部门长度不符合限制
    60002 部门层级深度超过限制
    60003 部门不存在
    60004 父亲部门不存在
    60005 不允许删除有成员的部门
    60006 不允许删除有子部门的部门
    60007 不允许删除根部门
    60008 部门ID或者部门名称已存在
    60009 部门名称含有非法字符
    60010 部门存在循环关系
    60011 管理组权限不足,(user/department/agent)无权限
    60012 不允许删除默认应用
    60013 不允许关闭应用
    60014 不允许开启应用
    60015 不允许修改默认应用可见范围
    60016 不允许删除存在成员的标签
    60017 不允许设置企业
    60019 不允许设置应用地理位置上报开关
    60020 访问ip不在白名单之中
    60023 已授权的应用不允许企业管理组调用接口修改菜单
    60025 主页型应用不支持的消息类型
    60027 不支持第三方修改主页型应用字段
    60028 应用已授权予第三方,不允许通过接口修改主页url
    60029 应用已授权予第三方,不允许通过接口修改可信域名
    60031 未设置管理组的登录授权域名
    60102 UserID已存在
    60103 手机号码不合法
    60104 手机号码已存在
    60105 邮箱不合法
    60106 邮箱已存在
    60107 微信号不合法
    60108 微信号已存在
    60109 QQ号已存在
    60110 用户同时归属部门超过20个
    60111 UserID不存在
    60112 成员姓名不合法
    60113 身份认证信息(微信号/手机/邮箱)不能同时为空
    60114 性别不合法
    60115 已关注成员微信不能修改
    60116 扩展属性已存在
    60118 成员无有效邀请字段
    60119 成员已关注
    60120 成员已禁用
    60121 找不到该成员
    60122 邮箱已被外部管理员使用
    60123 无效的部门id
    60124 无效的父部门id
    60125 非法部门名字,长度超过限制、重名等,重名包括与csv文件中同级部门重名或者与旧组织架构包含成员的同级部门重名
    60126 创建部门失败
    60127 缺少部门id
    60128 字段不合法,可能存在主键冲突或者格式错误
    60129 用户设置了拒绝邀请
    60131 不合法的职位长度
    80001 可信域名不匹配,或者可信域名没有IPC备案(后续将不能在该域名下正常使用jssdk)
    81003 邀请额度已用完
    81004 部门数量超过上限
    81011 无权限操作该标签
    82001 发送消息或者邀请的参数全部为空或者全部不合法
    82002 不合法的PartyID列表长度
    82003 不合法的TagID列表长度
    82004 微信版本号过低
    84013 企业会话、客服套件已下线
    85002 包含不合法的词语
    86001 不合法的会话ID
    86003 不存在的会话ID
    86004 不合法的会话名
    86005 不合法的会话管理员
    86006 不合法的成员列表大小
    86007 不存在的成员
    86101 需要会话管理员权限
    86201 缺少会话ID
    86202 缺少会话名
    86203 缺少会话管理员
    86204 缺少成员
    86205 非法的会话ID长度
    86206 非法的会话ID数值
    86207 会话管理员不在用户列表中
    86208 消息服务未开启
    86209 缺少操作者
    86210 缺少会话参数
    86211 缺少会话类型(单聊或者群聊)
    86213 缺少发件人
    86214 非法的会话类型
    86215 会话已存在
    86216 非法会话成员
    86217 会话操作者不在成员列表中
    86218 非法会话发件人
    86219 非法会话收件人
    86220 非法会话操作者
    86221 单聊模式下,发件人与收件人不能为同一人
    86222 不允许消息服务访问的API
    86304 不合法的消息类型
    86305 客服服务未启用
    86306 缺少发送人
    86307 缺少发送人类型
    86308 缺少发送人id
    86309 缺少接收人
    86310 缺少接收人类型
    86311 缺少接收人id
    86312 缺少消息类型
    86313 缺少客服,发送人或接收人类型,必须有一个为kf
    86314 客服不唯一,发送人或接收人类型,必须只有一个为kf
    86315 不合法的发送人类型
    86316 不合法的发送人id。Userid不存在、openid不存在、kf不存在
    86317 不合法的接收人类型
    86318 不合法的接收人id。Userid不存在、openid不存在、kf不存在
    86319 不合法的客服,kf不在客服列表中
    86320 不合法的客服类型
    88001 缺少seq参数
    88002 缺少offset参数
    88003 非法seq
    90001 未认证摇一摇周边
    90002 缺少摇一摇周边ticket参数
    90003 摇一摇周边ticket参数不合法
    90004 摇一摇周边ticket过期
    90005 未开启摇一摇周边服务
    91004 卡券已被核销
    91011 无效的code
    91014 缺少卡券详情
    91015 代金券缺少least_cost或者reduce_cost参数
    91016 折扣券缺少discount参数
    91017 礼品券缺少gift参数
    91019 缺少卡券sku参数
    91020 缺少卡券有效期
    91021 缺少卡券有效期类型
    91022 缺少卡券logo_url
    91023 缺少卡券code类型
    91025 缺少卡券title
    91026 缺少卡券color
    91027 缺少offset参数
    91028 缺少count参数
    91029 缺少card_id
    91030 缺少卡券code
    91031 缺少卡券notice
    91032 缺少卡券description
    91033 缺少ticket类型
    91036 不合法的有效期
    91038 变更库存值不合法
    91039 不合法的卡券id
    91040 不合法的ticket type
    91041 没有创建,上传卡券logo,以及核销卡券的权限
    91042 没有该卡券投放权限
    91043 没有修改或者删除该卡券的权限
    91044 不合法的卡券参数
    91045 缺少团购券groupon结构
    91046 缺少现金券cash结构
    91047 缺少折扣券discount 结构
    91048 缺少礼品券gift结构
    91049 缺少优惠券coupon结构
    91050 缺少卡券必填字段
    91051 商户名称超过12个汉字
    91052 卡券标题超过9个汉字
    91053 卡券提醒超过16个汉字
    91054 卡券描述超过1024个汉字
    91055 卡券副标题长度超过18个汉字
    91058 未开通卡券服务,不允许调用卡券接口

    原文链接:http://qydev.weixin.qq.com/wiki/index.php?title=%E5%85%A8%E5%B1%80%E8%BF%94%E5%9B%9E%E7%A0%81%E8%AF%B4%E6%98%8E

     

    转载于:https://www.cnblogs.com/bubuchu/p/7274627.html

    展开全文
  • 微信小程序后台开发 前言 开发环境 开发流程 项目整体结构 接口开发 项目部署 ip映射 Nginx反向代理 gunicorn+super多进程开启服务+进程监控 ssl证书 小程序常用功能 微信支付 生成二维码 推送消息 测试 黑盒...
  • 微信公众号开发-vue1

    2018-12-29 09:34:51
    微信公众号开发-vue 之前做这类项目都是一个页面一个html的形式,单位用的rem。这次采用的是vue做的SPA单页应用,单位是vw。 这次在采坑的过程中有些需要总结一下的。 坑– 联通广告植入 应为需要给别人看效果,...
  • 记一次基于公众号的微信H5开发项目(三)微信H5页面 中调用微信支付第一步 还是引入js-sdk第二步 在需要调用支付的页面中,先进行配置第三步 调用支付接口 微信H5页面 中调用微信支付 搞了很久才更新博客,因为我刚...
  • 微信小程序已经是家喻户晓了,最近和同学一起刚上线了一款应用校园懒人邦,感兴趣的朋友可以搜索一下,一款基于校园最后一百米的概念开发的快递&外卖配送平台,我是负责后台开发部分,这里给朋友们介绍下相关开发...
  • 因为这个jssdk被uni-app坑了好多天,作者说支持1.4版本,但是我用1.4的两个分享的新方法一直不支持。 最后只能放弃了,期待什么时候能更新上。 基本的使用方法: 第一步 - 下载使用方式 ...项目引用: ...
  • 小程序模板消息即将被废弃掉 订阅消息文档 步骤: 1、获取用户openid 、access_token(前面文章提到过) 2、获取模板 ID 3、获取下发权限(api) 4、发送订阅消息 (api) 模板id 小程序代码: 获取下发权限...
  • 1.)微信开发一般就是看文档,按部就班调用API就行,推荐一些SDK .NET ...
  • 说实话呢,这次微信会员卡的开发文档是真的乱,四分五裂,我也是东凑西拿的才完成会员卡的开发,把开发经验和踩坑给大家说一下,希望对大家有所帮助 JAVA微信会员卡接口踩坑详细 直接上我写的接口吧; /createCard ...
  • 1. 开发小程序时,每个页面一定要在app.json文件中注册,页面...3. 小程序可以进行组件化开发以及数据绑定,所有对于DOM的操作都是基于数据驱动的,并没有直接进行DOM操作的做法,换言之,小程序内没有document...
  • 微信公众平台php开发包,细化各项接口操作,支持链式调用,欢迎Fork此项目 weixin developer SDK. 项目地址:... ... 使用详解 ...使用前需先打开微信帐号的开发模式,详细步骤请查看微信公众
  • iOS微信授权登录集成

    2018-06-29 17:39:16
    iOS微信授权登录集成 ...开发者在微信开发平台,开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将获得AppID,可立即用于开发 2.下载载微信终端SDK文件 可在 iOS资源下载处下载 3....
  • 一、HTTP接收事件订阅... 无连接:当用户关注微信公众账号的时候 微信公众平台会向我们推送post请求 关注推送的并不是数组 而是XML 2. 接收数据包 $postArr = $GLOBALS['HTTP_RAW_POST_DATA'] ;a) $GLOBALS["...
  • -- 2018年10月12日 ,这时已经有官方的云函数来便捷地获取用户openId了,这个我以后再说下--&gt; 首先,你需要弹出授权弹窗,得到用户同意。由于5月getUserInfo接口废弃,如何获得请参考我的一篇博客: ...
  • 根据微信小程序最新机制:2019年10月份微信发布了最新模板消息整改公告,由模板消息更改为订阅消息,模板消息将于2020年1月10日下线,下线后这篇文章将失效。最新微信订阅消息文章已发布,请大家移步:...
1 2 3 4 5 ... 9
收藏数 175
精华内容 70
关键字:

openid废弃 微信开发