微信公众号开发

在这里插入图片描述

微信公众号开发

概述

OpenID

  • 识别用户
  • 一个用户对多个公众号和应用有多个不同的OpenID

UnionID

  • 需要在多公众号、移动应用之间做用户共通
  • 一个用户对所有这些同一开放平台账号下的公众号和应用,只有一个UnionID

微信公众平台

  • 是指为微信公众号进行业务开发的平台

  • 微信开放平台

    • 为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发平台

access_token

  • 公众平台的接口调用凭据
  • 2小时内有效,过期需要重新获取,但1天内获取次数有限
  • 开发者需自行存储

接口调用

  • 仅支持80端口

服务场景

  • 公众号消息会话

    • 群发消息

      • 公众号可以以一定频次(订阅号为每天1次,服务号为每月4次),向用户群发消息,包括文字消息、图文消息、图片、视频、语音等。
    • 被动回复消息

      • 预先在开发者中心设置的服务器地址
    • 客服消息

      • 发消息/触发特定行为
    • 模板消息

      • 在需要对用户发送服务通知(如刷卡提醒、服务预约成功通知等)时,公众号可以用特定内容模板,主动向用户发送消息。
  • 公众号内网页

    • 网页授权获取用户基本信息

      • 需用户同意
      • 获取用户的OpenID是无需用户同意的
    • 微信JS-SDK

      • 是开发者在网页上通过JavaScript代码使用微信原生功能的工具包

入门指引

  • 1 申请服务器

  • 2 搭建服务

  • 3 申请公众号

  • 4 开发者基本配置-服务器配置

    • 仅支持80端口
    • Token:自主设置,这个token与公众平台wiki中常提的access_token不是一回事。这个token只用于验证开发者服务器。
    • 提交服务器配置
    • 启动配置
  • 实现“你问我答”

    • 被动回复消息

      • 粉丝给公众号一条文本消息,公众号立马回复一条文本消息给粉丝,不需要通过公众平台网页操作。
  • 实现“图尚往来”

    • 素材管理
  • 素材管理

    • 临时素材
    • 永久素材
  • 自定义菜单

  • 怎样反馈问题?

    • https://developers.weixin.qq.com/community/minihome/question/1277775808983138305?mockCommonUse=1
    • 1)简明扼要的描述清楚场景以及遇见问题,描述过程中尽可能使用wiki上的名称,譬如自定义菜单,素材管理等专有名词,不然开发根本不知道你在说什么。
    • 2)提供账号信息:AppID(登录公众平台官网->基本配置),若牵扯粉丝提供粉丝的OpenID。
    • 3)提供bug的发生时间,至少要以小时为单位(年-月-日-小时),当然越具体越容易查明问题。

开始开发

接入步骤

  • 1、填写服务器配置

  • 2、验证服务器地址的有效性

    • 开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上
  • 3、依据接口文档实现业务逻辑

    • 验证URL有效性成功后即接入生效,成为开发者。
    • 微信公众号接口必须以http://或https://开头,分别支持80端口和443端口。

获取access token

  • 定义

    • 公众号的全局唯一接口调用凭据
    • access_token的存储至少要保留512个字符空间
    • access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
  • 使用及生成方式

    • 建议公众号开发者使用中控服务器统一获取和主动刷新access_token

      • 其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致access_token覆盖而影响业务;
    • 中控服务器需要根据expire_in提前去刷新新access_token

      • 目前是7200秒之内的值
      • 在刷新过程中,中控服务器可对外继续输出的老access_token,此时公众平台后台会保证在5分钟内,新老access_token都可用,这保证了第三方业务的平滑过渡;
    • 中控服务器需要提供被动刷新access_token的接口

    • 可能存在风险的调用

      • 开发者通过某IP发起调用->平台返回错误码[89503]并同时下发模板消息给公众号管理员->公众号管理员确认该IP可以调用->开发者使用该IP再次发起调用->调用成功。
      • 平台建议开发者在发起调用前主动与管理员沟通确认调用需求,或请求管理员开启IP白名单功能并将该IP加入IP白名单列表。
    • 公众号和小程序均可以使用AppID和AppSecret调用本接口来获取access_token。

      • https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
  • 一个较为简单的access_token 存储和使用方案

    • 1)中控服务器定时(建议1小时)调用微信api,刷新access_token,将新的access_token 存入mysql(或其他存储), 2)其他工作服务器每次调用微信api时从mysql(或其他存储)获取access_token,并可在内存缓存一段时间(建议1分钟)。

自定义菜单

创建接口

  • 注意事项

    • 一级菜单数组,个数应为1~3个

    • 二级菜单数组,个数应为1~5个

    • 一级菜单最多4个汉字,二级菜单最多8个汉字,多出来的部分将会以“…”代替。

    • 菜单的刷新策略

      • 如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单
      • 测试:取消关注公众账号后再次关注,则可以看到创建后的效果。​
  • 按钮类型

    • click

      • 推送消息类型为event的结构给开发者
    • view

      • 跳转URL
      • 可与网页授权获取用户基本信息接口结合,获得用户基本信息。
    • ———————以下事件有微信版本限制

    • scancode_push

      • 微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息。
    • scancode_waitmsg

      • 微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者。
      • 同时收起扫一扫工具,然后弹出“消息接收中”提示框,随后可能会收到开发者下发的消息。
    • pic_sysphoto

      • 微信客户端将调起系统相机,完成拍照操作后,会将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。
    • pic_photo_or_album

      • 微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。
    • pic_weixin

      • 微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。
    • location_select

      • 微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。
    • ————————以下专门提供给未认证订阅号

    • media_id

      • 微信服务器会将开发者填写的永久素材id对应的素材下发给用户,永久素材类型可以是图片、音频、视频、图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。
    • view_limited

      • 微信客户端将打开开发者在按钮中填写的永久素材id对应的图文消息URL,永久素材类型只支持图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。​

个性化菜单接口

  • 仅开放给已认证订阅号和已认证服务号。

  • 开发者可以通过以下条件来设置用户看到的菜单

    • 用户标签(开发者的业务需求可以借助用户标签来完成)
    • 性别
    • 手机操作系统
    • 地区(用户在微信客户端设置的地区)
    • 语言(用户在微信客户端设置的语言)
  • 个性化菜单要求用户的微信客户端版本在iPhone6.2.2,Android 6.2.4以上,暂时不支持其他版本微信

  • 一个公众号的所有个性化菜单,最多只能设置为跳转到3个域名下的链接

微信网页开发

网页授权

  • 回调域名

    • 域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头
    • 公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。
    • 如果公众号登录授权给了第三方开发者来进行管理,则不必做任何设置,由第三方代替公众号实现网页授权即可
  • 两种scope的区别

    • snsapi_base

      • 用来获取进入页面的用户的openid
      • 用户感知的就是直接进入了回调页(往往是业务页面)
      • 静默授权的,用户无感知
    • snsapi_userinfo

      • 用来获取用户的基本信息

      • 这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

      • 对于已关注公众号的用户,静默授权的,用户无感知

      • 用户管理类接口中的“获取用户基本信息接口”

        • 在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。
  • 网页授权access_token和普通access_token的区别

    • 通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息;
    • 其他微信接口,需要通过基础支持中的“获取access_token”接口来获取到的普通access_token调用。
  • 网页授权流程

    • 1、引导用户进入授权页面同意授权,获取code

    • 2、通过code换取网页授权access_token(与基础支持中的access_token不同)

      • 由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。
    • 3、如果需要,开发者可以刷新网页授权access_token,避免过期

      • 当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天
    • 4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)

js-sdk说明文档

  • 定义

    • 面向网页开发者提供的基于微信内的网页开发工具包。
  • 作用

    • 使用手机系统能力

      • 拍照、选图、语音、位置等
    • 使用微信特有能力

      • 微信分享、扫一扫、卡券、支付等
  • 步骤

    • 绑定域名

      • 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
    • 引入JS文件

      • 在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.6.0.js
      • 如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://res2.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)
    • 通过config接口注入权限验证配置

      • 所有需要使用JS-SDK的页面必须先注入配置信息
    • 通过ready接口处理成功验证

      • config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
    • 通过error接口处理失败验证

      • config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
  • 接口调用说明

    • 所有接口通过wx对象(也可使用jWeixin对象)来调用
    • success:接口调用成功时执行的回调函数。
    • fail:接口调用失败时执行的回调函数。
    • complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。
    • cancel:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。
    • trigger: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。
  • 基础接口

    • wx.checkJsApi

      • 判断当前客户端版本是否支持指定JS接口
  • 分享接口

    • wx.updateAppMessageShareData

      • 自定义“分享给朋友”及“分享到QQ”按钮的分享内容
    • updateTimelineShareData

      • 自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容
    • 原有的 wx.onMenuShareTimeline、wx.onMenuShareAppMessage、wx.onMenuShareQQ、wx.onMenuShareQZone 接口,即将废弃。

  • 图像接口

    • wx.chooseImage

      • 拍照或从手机相册中选图接口
    • wx.previewImage

      • 预览图片接口
    • wx.uploadImage

      • 上传图片接口
      • 备注:上传图片有效期3天,可用微信多媒体接口下载图片到自己的服务器,此处获得的 serverId 即 media_id。
    • wx.downloadImage

      • 下载图片接口
    • wx.getLocalImgData

      • 获取本地图片接口
      • 备注:此接口仅在 iOS WKWebview 下提供,用于兼容 iOS WKWebview 不支持 localId 直接显示图片的问题。具体可参考《iOS WKWebview网页开发适配指南》
  • 音频接口

    • wx.startRecord()

      • 开始录音接口
    • wx.stopRecord

      • 停止录音接口
    • wx.onVoiceRecordEnd

      • 监听录音自动停止接口
    • wx.playVoice

      • 播放语音接口
    • wx.pauseVoice

      • 暂停播放接口
    • wx.stopVoice

      • 停止播放接口
    • wx.onVoicePlayEnd

      • 监听语音播放完毕接口
    • wx.uploadVoice

      • 上传语音接口
    • wx.downloadVoice

      • 下载语音接口
  • 智能接口

    • wx.translateVoice

      • 识别音频并返回识别结果接口
  • 设备信息

    • wx.getNetworkType

      • 获取网络状态接口
  • 地理位置

    • wx.openLocation

      • 使用微信内置地图查看位置接口
    • wx.getLocation

      • 获取地理位置接口
  • 摇一摇周边

    • wx.startSearchBeacons

      • 开启查找周边ibeacon设备接口
    • 备注:如需接入摇一摇周边功能,请参考:申请开通摇一摇周边

    • wx.stopSearchBeacons

      • 关闭查找周边ibeacon设备接口
    • wx.onSearchBeacons

      • 监听周边ibeacon设备接口
  • 界面操作

    • wx.closeWindow()

      • 关闭当前网页窗口接口
    • wx.hideMenuItems

      • 批量隐藏功能按钮接口
      • 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3
    • wx.showMenuItems

      • 批量显示功能按钮接口
    • wx.hideAllNonBaseMenuItem

      • 隐藏所有非基础按钮接口
    • wx.showAllNonBaseMenuItem

      • 显示所有功能按钮接口
  • 微信扫一扫

    • wx.scanQRCode

      • 调起微信扫一扫接口
  • 微信小店

    • wx.openProductSpecificView

      • 跳转微信商品页接口
  • 微信卡券

    • 获取api_ticket

      • 用于调用微信卡券JS API的临时票据,有效期为7200 秒,通过access_token 来获取。
    • 拉取适用卡券列表并获取用户选择信息

      • wx.chooseCard
    • 批量添加卡券接口

      • wx.addCard
    • 查看微信卡包中的卡券接口

      • wx.openCard
  • 微信支付

    • wx.chooseWXPay

      • 发起一个微信支付请求
      • prepay_id 通过微信支付统一下单接口拿到,paySign 采用统一的微信支付 Sign 签名生成方法,注意这里 appId 也要参与签名,appId 与 config 中传入的 appId 一致,签名格式要求以微信支付文档为准
    • native支付

      • https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_7_0.shtml
  • 快速输入

    • wx.openAddress

      • 共享收货地址接口

开放标签

XMind - Trial Version

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信公众号开发源码Java是用Java语言编写的用于开发微信公众号的源代码。微信公众号开发是指通过开发者账号申请成为微信公众号开发者,利用微信提供的开发接口和SDK来开发和管理公众号。 Java作为一种广泛应用于企业级开发的编程语言,在微信公众号开发中也得到了广泛应用。通过使用Java开发微信公众号,可以实现公众号的业务逻辑,包括用户管理、消息推送、菜单设置、素材管理等功能,以及与其他系统的对接、数据的处理和存储等。 对于开发微信公众号的源码来说,Java源码通常包括了处理微信服务器与开发者服务器之间的消息通信和交互的代码,以及各类功能模块的实现代码。开发者可以根据自己的需求和业务逻辑,使用Java语言编写各种业务逻辑代码,并通过开发工具集成微信提供的SDK库来实现与微信服务器之间的交互。 在Java源码的基础上,开发者还可以根据需要进行定制和扩展,以满足更具体的业务需求。可以添加自定义的功能模块或者对现有功能进行修改和优化,以适应不同的应用场景和业务要求。 总之,微信公众号开发源码Java是用于开发微信公众号的源代码,通过使用Java语言和相应的开发工具,开发者可以自定义和实现具体的业务功能,满足不同用户的需求,并与微信服务器进行消息交互,为用户提供更好的微信公众号服务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值