Appearance
微信公众号简结
参考链接
微信公众号开发流程概述
参考链接
详解
前提配置
- 注册微信公众号 - 注册开发者账号(微信开放平台) - 在开发者账号内绑定自己的微信公众号 - 申请测试公众号 - 认证公众号
- 备案网站并且有服务器。
- 微信公众平台 - 登录微信公众号 - 设置 - 公众号设置 - 功能设置 - 添加JS接口安全域名,
- 微信公众平台 - 登录微信公众号 - 开发 - 基本配置 - 添加IP地址白名单(配置后才能获取 access_token )
在微信公众号平台获取基本参数
- token
- test_token
- appid
- appsecret
- mch_id //支付
- test_appid
- test_appsecret
- server_notify
- key
服务器基本参数
- 签名
- ACESS_TOKEN
- 配置JSSDK
- openid(oauth2.0)
其它注意事项
服务类型
公众号主要通过公众号消息会话和公众号内网页来为用户提供服务的
- 公众号消息会话
- 群发消息:订阅号为每天1次,服务号为每月4次,向用户群发消息,包括文字消息、图文消息、图片、视频、语音等
- 被动回复消息:用户给公众号发消息后,可以回复一个消息
- 客服消息:用户给公众号发消息后的48小时内,公众号可以给用户发送不限数量的消息
- 模板消息:对用户发送服务通知(如刷卡提醒、服务预约成功通知等)时,公众号可以用特定内容模板,主动向用户发送消息
- 公众号内网页
- 网页授权获取用户基本信息
- 微信JS-SDK:可以使用它在网页上录制和播放微信语音、监听微信分享、上传手机本地图片、拍照等许多能力
- 公众号消息会话
样例
html<!DOCTYPE html> <html lang="en"> <head> <title>弹窗</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> <style type="text/css"> .toast { padding: 10px 25px 10px 25px; background: rgba(0, 0, 0, .5); border-radius: 5px; color: #ffffff; text-align: center; position: fixed; left: 50%; top: 40%; transform: translate(-50%, -50%); z-index: 100; } </style> </head> <body> <div id="test"> <toast v-if='isShow' :message='isShowMsg'></toast> <div class="container" @click="showToast"> 点击显示 showToast </div> </div> <script> var that; Vue.component('toast', { props: [[message'], template: ` <div class="toast_bg_transparent"> <div class="toast"> <span>{{message}}</span> </div> </div> ` }) new Vue({ el: '#test', data() { return { isShow: false, isShowMsg: '', //弹窗提示 } }, methods: { getA() { var url = 'https://jayjing.wang/gongzhonghao_H5/getConfig.php'; $.ajax({ url: url, complete: res => { var config = JSON.parse(res.responseText) console.log('res-config', config) wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: config.appId, // 必填,公众号的唯一标识 timestamp: config.timestamp, // 必填,生成签名的时间戳 nonceStr: config.nonceStr, // 必填,生成签名的随机串 signature: config.signature, // 必填,签名 jsApiList: [] // 必填,需要使用的JS接口列表 }); } }) }, showToast() { console.log('点击了 showToast') this.isShow = true; this.isShowMsg = '错误提示'; setTimeout(() => { this.isShow = false; }, 1000); } }, mounted() { this.getA() wx.ready(function(res) { console.log('ready', res) // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 }); } }) </script> </body> </html>
php<?php header("Content-Type:text/html;charset=utf8"); header("Access-Control-Allow-Origin: *"); //解决跨域 header('Access-Control-Allow-Methods:GET');// 响应类型 header('Access-Control-Allow-Headers:*'); // 响应头设置 $appid = "wx9025b8efd---"; $secret = "3c242548fb56---"; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}"; $s = file_get_contents($url); $s = json_decode($s, true); $url_b = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$s[[access_token']}&type=jsapi"; $data = file_get_contents($url_b); $data = json_decode($data, true); $ticket = $data[[ticket']; //print(); //echo $ticket; // 进行sha1签名 $timestamp = time(); $nonceStr = createNonceStr(); // 注意 URL 建议动态获取(也可以写死). $protocol = (!empty($_SERVER[[HTTPS']) && $_SERVER[[HTTPS'] !== 'off' || $_SERVER[[SERVER_PORT'] == 443) ? "https://" : "http://"; $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; // 调用JSSDK的页面地址 //$url = $_SERVER[[HTTP_REFERER']; // 前后端分离的, 获取请求地址(此值不准确时可以通过其他方式解决) $str = "jsapi_ticket={$ticket}&noncestr={$nonceStr}×tamp={$timestamp}&url={$url}"; $sha_str = sha1($str); $signPackage = array( "appId" => $appid, "nonceStr" => $nonceStr, "timestamp" => $timestamp, "signature" => $sha_str, ); //echo $appid.'-----'.$nonceStr.'-----'.$timestamp.'-----'.$sha_str; echo urldecode(json_encode($signPackage)); //随机字符串 function createNonceStr($length = 16) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $str = ""; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $str; } ?>
微信公众号开发配置
接入微信公众平台开发
填写服务器配置
开发-基本设置-成为开发者-修改配置-填写:
- 开发者用来接收微信消息和事件的接口URL
- Token可由开发者可以任意填写,用作生成签名
- EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥
- 可选择消息加解密方式:明文模式、兼容模式和安全模式
验证消息的确来自微信服务器
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上
依据接口文档实现业务逻辑
公众平台接口域名
开发者可以根据自己的服务器部署情况,选择最佳的接入域名(延时更低,稳定性更高)。除此之外,可以将其他接入域名用作容灾用途。
- 通用域名(api.weixin.qq.com),使用该域名将访问官方指定就近的接入点;
- 通用异地容灾域名(api2.weixin.qq.com),当上述域名不可访问时可改访问此域名;
- 上海域名(sh.api.weixin.qq.com),使用该域名将访问上海的接入点;
- 深圳域名(sz.api.weixin.qq.com),使用该域名将访问深圳的接入点;
- 香港域名(hk.api.weixin.qq.com),使用该域名将访问香港的接入点。
Access token
access_token是公众号的全局唯一接口调用凭据,至少要保留512个字符空间,有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效
公众号和小程序均可以使用AppID和AppSecret调用本接口来获取access_token
调用:
https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
说明:
建议公众号开发者使用中控服务器统一获取和刷新access_token,不应该各自去刷新;
中控服务器需要在2h提前去刷新新access_token,在刷新过程中,中控服务器可对外继续输出的老access_token,此时公众平台后台会保证在5分钟内,新老access_token都可用,这保证了第三方业务的平滑过渡;
access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程
对于可能存在风险的调用,需要用户管理员确认后才可以成功获取:
- 开发者通过某IP发起调用->平台返回错误码[89503]并同时下发模板消息给公众号管理员->公众号管理员确认该IP可以调用->开发者使用该IP再次发起调用->调用成功
- 如公众号管理员第一次拒绝该IP调用,用户在1个小时内将无法使用该IP再次发起调用
- 公众号管理员多次拒绝该IP调用,该IP将可能长期无法发起调用
- 建议开发者在发起调用前主动与管理员沟通确认调用需求,或请求管理员开启IP白名单功能并将该IP加入IP白名单列表
接口报警
当微信服务器向开发者推送消息失败次数达到预定阈值时,会将报警消息发送到指定微信报警群中
设置方式:公众平台->开发-运维中心->接口报警
通用报警:
DNS失败
填写的url,域名是否有误;
- ping ip/域名
域名是否发生变化,如过期,更新
DNS超时5秒
- 目前不会有此错误
连接超时5秒
连接的IP是否有误
- 获取到微信回调服务器的IP,https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN
- ping ip
连接的IP是否过载,连接过多
查看接入层服务器连接数,负载,nginx的配置,允许的连接个数
查看nginx错误日志是否有“Connection reset by peer”或“Connection timed out”错误日志,如有说明nginx连接数过超负载。
一些重要配置参考例子
hamlworker_processes 16; //CPU核数 error_log logs/error.log info; //错误日志log worker_rlimit_nofile 102400; //打开最大句柄数 events { worker_connections 102400; //允许最大连接数 } //请求日志记录,关键字段:request_time-请求总时间,upstream_response_time后端处理时 间 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" "$host" "$cookie_ssl_edition" ' '"$upstream_addr" "$upstream_status" "$request_time" ' '"$upstream_response_time" '; access_log logs/access.log main;
托管商是否有故障
网络运营商是否有故障
是否设置了防火墙
是否网络不通
请求超时5秒
- 连接的IP是否有误
- 连接的IP是否接收到报警消息给出的该消息类型的请求
- 请求是否处理时间过长
- 机器负载太高,耗时增加
- 优化性能,扩容。
- 异步处理。
- 机器处理异常,消息丢失
- 机器负载太高,耗时增加
回应不合法
- 连接的IP是否有误
- 连接的IP是否发生网络错误
- 业务处理逻辑是否没有按照wiki规范回复消息,或是进入了异常逻辑
MarkFail(自动屏蔽,一分钟后解除屏蔽)
此报警是级别最高的报警,开发者在收到此报警前,必然会收到连接超时,请求超时或回应失败等报警
公众号第三方平台报警(公众号第三方平台的开发者,才需要关注):
- 推送component_verify_ticket超时5秒
- 推送component_verify_ticket失败
- 推送第三方平台消息超时5秒
- 推送第三方平台消息失败
获取微信服务器IP地址
获取微信API接口 IP地址
http请求方式: GET https://api.weixin.qq.com/cgi-bin/get_api_domain_ip?access_token=ACCESS_TOKEN
获取微信callback IP地址
http请求方式: GET https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN
网络检测
HTTP Post请求: https://api.weixin.qq.com/cgi-bin/callback/check?access_token=ACCESS_TOKEN
公众号登录
如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息
登录那里要静默登录的功能,前端只传code,后端通过code生成openId,然后去查询该用户有没有注册,有注册就走登录流程,没有注册就返回空。
Openid是用户在公众号内的身份标识,不同公众号拥有不同的openid。
支付
JSAPI网页支付,即日常所说的公众号支付,可在微信公众号、朋友圈、聊天会话中点击页面链接,或者用微信“扫一扫”扫描页面地址二维码在微信中打开商户HTML5页面,在页面内下单完成支付。
注意:
- 请确保实际支付时的请求目录与后台配置的目录一致(现在已经支持配置根目录,配置后有一定的生效时间,一般5分钟内生效),否则将无法成功唤起微信支付。配置方式详见支付授权目录
- WeixinJSBridge内置对象在其他浏览器中无效。
- JSSDK的wx.chooseWXPay唤起支付,唤起格式内容参考公众号开发指南
- JSSDK的JSSDK使用步骤说明链接地址,内容说明信息
- 唤起支付返回的res对象驼峰式是JSSDK返回的格式,而err_msg是WeixinJSBridge返回的格式,如商户使用不同的方式,此处响应的字符大小写、格式需注意。
微信支付请求
javascript
wx.chooseWXPay({
timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: '', // 支付签名随机串,不长于 32 位
package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
signType: '', // 微信支付V3的传入RSA,微信支付V2的传入格式与V2统一下单的签名格式保持一致
paySign: '', // 支付签名
success: function (res) {
// 支付成功后的回调函数
}
});
菜单配置
概述
- 自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
- 一级菜单最多4个汉字,二级菜单最多8个汉字,多出来的部分将会以“...”代替。
- 菜单的刷新策略:
- 如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单
- 如果菜单有更新,就会刷新客户端的菜单
- 测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
按钮类型
- click:带上key值,推送event给开发者
- view:打开预设URL
- scancode_push:点击按钮后,调起扫一扫,把结果推送给开发者
- scancode_waitmsg:弹出“消息接收中”提示框用户点击按钮后,调起扫一扫,把结果推送给开发者
- pic_sysphoto:弹出系统拍照发图用户点击按钮后,调起相机,把图片发送给开发者
- pic_photo_or_album:弹出拍照或者相册发图用户点击按钮后,弹出选择器供用户选择“拍照”或者“从手机相册选择”
- pic_weixin:弹出微信相册发图器用户点击按钮后,调起微信相册,将选择的相片发送给开发者的服务器
- location_select:弹出地理位置选择器用户点击按钮后,调起地理位置选择工具,发送地理位置给开发者
- media_id:用户点击media_id类型按钮后,预设素材下发给用户(图片、音频、视频、图文消息),永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。
- view_limited:点击view_limited类型按钮后,打开素材对应URL,素材类型只支持图文消息
3到8的所有事件,仅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用户
9和10,是专门给资质认证未通过的订阅号准备的事件类型
相关接口
创建菜单POST:https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
查询GET:https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=ACCESS_TOKEN
删除GET:https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN
事件推送:
- 点击菜单拉取消息时的事件推送
- 点击菜单跳转链接时的事件推送
- scancode_push:扫码推事件的事件推送
- scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框的事件推送
- pic_sysphoto:弹出系统拍照发图的事件推送
- pic_photo_or_album:弹出拍照或者相册发图的事件推送
- pic_weixin:弹出微信相册发图器的事件推送
- location_select:弹出地理位置选择器的事件推送
- 点击菜单跳转小程序的事件推送
个性化菜单:
- 创建个性化菜单
- 删除个性化菜单
- 测试个性化菜单匹配结果
- 查询个性化菜单
- 删除所有菜单
开发者可以通过以下条件来设置用户看到的菜单:
- 用户标签(开发者的业务需求可以借助用户标签来完成)
- 性别
- 手机操作系统
- 地区(用户在微信客户端设置的地区)
- 语言(用户在微信客户端设置的语言)
说明:
- 要求iPhone6.2.2,Android 6.2.4以上
- 普通公众号新增接口每日限制2000次,删除接口2000次,测试个性化菜单匹配结果接口20000次
- 一个公众号的所有个性化菜单,最多只能设置为跳转到3个域名下的链接
- 创建个性化菜单之前必须先创建默认菜单,如果删除默认菜单,个性化菜单也会全部删除
- 个性化菜单接口支持用户标签,当用户身上的标签超过1个时,以最后打上的标签为匹配
基础消息
普通消息
当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。
注意:
- 推荐使用msgid排重。
- 微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串
- 如果需要对用户消息在5秒内立即做出回应,使用“发送消息-被动回复消息”接口向用户被动回复消息时,可以在开发者中心处设置消息加密。
消息类型
- 文本
- 图片
- 语音
- 视频
- 小视频
- 地理位置
- 链接
接收事件推送
用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址
关注/取消关注事件
为保护用户数据隐私,开发者收到用户取消关注事件时需要删除该用户的所有信息
推荐使用FromUserName + CreateTime 排重
服务器无法保证在五秒内处理并回复,可以直接回复空串
扫描带参数二维码事件
如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者。
上报地理位置事件
用户同意上报地理位置后,每次进入公众号会话时,都会在进入时上报地理位置,或在进入会话后每5秒上报一次地理位置,公众号可以在公众平台网站中修改以上设置。
自定义菜单事件
用户点击自定义菜单后,微信会把点击事件推送给开发者,点击菜单弹出子菜单,不会产生上报。
点击菜单拉取消息时的事件推送
点击菜单跳转链接时的事件推送
被动回复用户消息
当用户发送消息给公众号时,会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。
推荐使用FromUserName + CreateTime 排重
同上有五秒机制
如果开发者希望增强安全性,可以在开发者中心处开启消息加密
一旦遇到以下情况,微信都会在公众号会话中,向用户下发系统提示“该公众号暂时无法提供服务,请稍后再试”:
- 开发者在5秒内未回复任何内容
- 开发者回复了异常数据,比如JSON数据等
可回复消息类型:
- 文本
- 图片
- 语音
- 视频
- 音乐
- 图文
模板消息
仅用于公众号向用户发送重要的服务通知,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。
使用规则
- 认证后的服务号->功能->添加功能插件处->申请模板消息
- 需要选择公众账号服务所处的2个行业,每月可更改1次所选行业
- 在所选择行业的模板库中选用已有的模板进行调用
- 每个账号可以同时使用25个模板
- 每个账号的模板消息的日调用上限为10万次,当账号粉丝数超过10W/100W/1000W时,模板消息的日调用上限会相应提升,以公众号MP后台开发者中心页面中标明的数字为准。
接口文档
- 模板消息调用时主要需要模板ID和模板中各参数的赋值内容
- 模板中参数内容必须以".DATA"结尾,否则视为保留字
- 模板保留符号""
可调用接口
- 设置所属行业
- 获取设置的行业信息
- 获得模板ID
- 获取模板列表
- 删除模板
- 发送模板消息
- 事件推送
运营规范
允许发的模板消息
服务即时通知类消息模板
资料变更类通知、政务服务即时类通知、物品(包含虚拟类)收取类通知、消费交易类通知、签到类通知、状态类通知、登录提醒类通知等一些用户触发后的即时通知。
服务后未即时通知类消息模板
每月推送频率固定的模板消息
经过用户同意,发话费通知,水电费通知,物业费通知等
推送频率不固定的模板消息
除故障类、灾害警示警告类允许特殊情况主动下发
经过用户同意,发到期提醒类通知、缴费提醒类通知、会议提醒类通知、赛事提醒类通知、发车提醒类通知、航班延误提醒类通知、待办任务提醒类通知等
一般延时性通知
审核结果类通知、退款结果类通知、投标结果类通知、订单受理结果类通知、报名结果类通知、反馈类通知等
不允许发的模板消息
模板内容与服务场景(含标题、关键词)不一致的模板
涉嫌广告营销类消息模板
消费优惠类通知、购物返利类通知、商品降价类通知、商品更新提醒类通知等
发送频率过高,有骚扰用户倾向类消息模板
一经发现频率过高骚扰到用户,或收到用户投诉,将会严厉惩处,轻则封接口处理,重则封号处理。
涉及红包、卡券、优惠券、代金券、会员卡、积分类消息模板
模板审核标准
属于允许发的模板
格式正确
内容
- 标题、关键词带有品牌或公司名等没有行业通用性的内容,不能通过,包括但不限于:某某公司服务通知、某某商品购买通知
- 标题不能带标点或其它特殊符号,且必须以“通知”或“提醒”结尾,否则不能通过 包括不限于:领取红包!、天气提醒!
- 易被用作群发,标题或关键词不能简要说明具体服务行为或使用场景的模板不能通过,包括但不限于:管理员类通知、公告类通知、系统通知
- 易对用户骚扰的,发送频率较高的模板不能通过,包括但不限于 :更新类通知、回复类通知、互动类通知
- 推广宣传、营销类的模板不能通过,包括但不限于 :红包类通知、优惠券类通知、活动类通知、积分类通知、奖励类通知
- 模板库里已存在类似的模板不通过
模板内容长度不能超过200个字符,且必须有至少10个固定文字或标点
模版内容中,参数是可以在发送时赋值的,参数必须以“{ {”开头,以“.DATA} }”结尾)
严格按模板填写
可以通过增加“\n”,来实现换行
模版内容中,第一句话需要为礼貌性、称谓性的用语,这句话统一用{ {first.DATA} }参数来概括
模版内容的中部必须为2到5个“关键词名称:关键词内容参数”(中文冒号)的组合排列
模版内容中,末尾必须有{ {remark.DATA} }参数
直接相连在一起的参数,应简化为一个
模板标题和模板内容中,不允许带有品牌等关键词
处罚规则
对于多次使用同一模板违规的,将回收违规模板,不允许再使用,违规处罚将通过微信公众平台站内信告知运营者。
- 主动下发给没有接受过服务的接收者(故障报警、灾害报警和不涉及营销推广的通知除外)
- 模板消息的发送频率太高
- 营销、推广、诱导分享及诱导下载APP
- 模板内容与模板标题或关键词无关联
- 模板内容是营销性质的群发活动公告通知
公众号一次性订阅消息
开发者可以授权让微信用户授权第三方移动应用或公众号,获得发送一次订阅消息给到授权微信用户的机会。授权微信用户可以不需要关注公众号。微信用户每授权一次,开发者可获得一次下发消息的权限。
对于已关注公众号的,消息将下发到公众号会话里;未关注公众号的,将下发到服务通知。
公众号或网页使用一次性订阅消息流程:
- 需要用户同意授权,获取一次给用户推送一条订阅模板消息的机会
- 通过API推送订阅模板消息给到授权微信用户
群发接口和原创校验
订阅号每天一条群发,服务号每月4条群发,某些具备开发能力的公众号运营者,可以通过高级群发接口,实现更灵活的群发能力。
注意
- 使用高级群发接口的每日调用限制为100次,但是用户每月只能接收4条
- 可以使用预览接口校对消息样式和排版
- 群发过程中,微信后台会自动进行图文消息原创校验,请提前设置好相关参数(send_ignore等)
- 开发者可以主动设置 clientmsgid 来避免重复推送
- 群发接口每分钟限制请求60次,超过限制的请求会被拒绝
- 图文消息正文中插入自己帐号和其他公众号已群发文章链接的能力
- 对于已开启API群发保护的账号,群发全部用户时需要等待管理员进行确认,如管理员拒绝或30分钟内没有确认,该次群发失败。用户可通过“设置-安全中心-风险操作保护”中关闭API群发保护功能。
群发图文消息的过程
- 预先将图文消息中需要用到的图片,使用上传图文消息内图片接口,上传成功并获得图片 URL;
- 上传图文消息素材,需要用到图片时,请使用上一步获取的图片 URL;
- 使用对用户标签的群发,或对 OpenID 列表的群发,将图文消息群发出去,群发时微信会进行原创校验,并返回群发操作结果;
- 在上述过程中,如果需要,还可以预览图文消息、查询群发状态,或删除已群发的消息等。
群发图片、文本等其他消息类型的过程
- 群发文本消息,则直接根据下面的接口说明进行群发即可;
- 群发图片、视频等消息,则需要预先通过素材管理接口准备好 mediaID。
关于群发时使用is_to_all为true使其进入公众号在微信客户端的历史消息列表:
- 使用is_to_all为true且成功群发,会使得此次群发进入历史消息列表。
- 为防止异常,认证订阅号在一天内,只能使用is_to_all为true进行群发一次,或者在公众平台官网群发(不管本次群发是对全体还是对某个分组)一次。以避免一天内有2条群发进入历史消息列表。
- 服务号在一个月内,使用is_to_all为true群发的次数,加上公众平台官网群发(不管本次群发是对全体还是对某个分组)的次数,最多只能是4次。
- 设置is_to_all为false时是可以多次群发的,但每个用户只会收到最多4条,且这些群发不会进入历史消息列表。
本接口中所有使用到media_id的地方,现在都可以使用素材管理中的永久素材media_id了。
但注意,使用同一个素材群发出去的链接是一样的,这意味着,删除某一次群发,会导致整个链接失效。
接口
上传图文消息内的图片获取URL【订阅号与服务号认证后均可用】
本接口所上传的图片不占用公众号的素材库中图片数量的5000个的限制。图片仅支持jpg/png格式,大小必须在1MB以下。
上传图文消息素材【订阅号与服务号认证后均可用】
含跳转小程序说明
- 原创校验流程
- 未命中原创库中的文章,则可以群发
- 命中原创库中的文章
允许转载该文章,则可以进行群发,会自动替换成原文的样式,且会自动将文章注明为转载并显示来源。
若希望修改原文内容或样式,或群发时不显示转载来源,可自行与原创公众号作者联系并获得授权之后再进行群发。
原创作者禁止转载该文章,则不能进行群发
若希望转载该篇文章,可自行与原创公众号作者联系并获得授权之后再进行群发。
- 原创校验流程
根据标签进行群发【订阅号与服务号认证后均可用】
根据OpenID列表群发【订阅号不可用,服务号认证后可用】
删除群发【订阅号与服务号认证后均可用】
群发之后,随时可以通过该接口删除群发。
- 只有已经发送成功的消息才能删除
- 删除消息是将消息的图文详情页失效,已经收到的用户,还是能在其本地看到消息卡片。
- 删除群发消息只能删除图文消息和视频消息,其他类型的消息一经发送,无法删除。
- 如果多次群发发送的是一个图文消息,那么删除其中一次群发,就会删除掉这个图文消息也,导致所有群发都失效
预览接口【订阅号与服务号认证后均可用】
开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版。为了满足第三方平台开发者的需求,在保留对openID预览能力的同时,增加了对指定微信号发送预览的能力,但该能力每日调用次数有限制(100次)。
查询群发消息发送状态【订阅号与服务号认证后均可用】
事件推送群发结果
若群发任务提交成功,则在群发任务结束时,会向开发者在公众平台填写的开发者URL(callback URL)推送事件
群发任务彻底完成需要较长时间,将会在群发任务即将完成的时候,就推送群发结果,此时的推送人数数据将会与实际情形存在一定误差
使用 clientmsgid 参数,避免重复推送
群发时,微信后台将对 24 小时内的群发记录进行检查,如果该 clientmsgid 已经存在一条群发记录,则会拒绝本次群发请求,返回已存在的群发msgid,开发者可以调用“查询群发消息发送状态”接口查看该条群发的状态。
控制群发速度
获取群发速度
接口调用频次限制说明
- 由于指标计算方法或统计时间差异,实时调用量数据可能会出现误差,一般在1%以内。
- 每个帐号每月共10次清零操作机会,清零生效一次即用掉一次机会(10次包括了平台上的清零和调用接口API的清零)。
- 第三方帮助公众号调用时,实际上是在消耗公众号自身的quota。
- 每个有接口调用限额的接口都可以进行清零操作。
公众号调用或第三方平台帮公众号调用对公众号的所有api调用(包括第三方帮其调用)次数进行清零:
POST: https://api.weixin.qq.com/cgi-bin/clear_quota?access_token=ACCESS_TOKEN
获取公众号的自动回复规则
- 第三方平台开发者可以通过本接口,在旗下公众号将业务授权给你后,立即通过本接口检测公众号的自动回复配置。
- 本接口仅能获取公众号在公众平台官网的自动回复功能中设置的自动回复规则,若公众号自行开发实现自动回复,或通过第三方平台开发者来实现,则无法获取。
- 认证/未认证的服务号/订阅号,以及接口测试号,均拥有该接口权限。
- 本接口中返回的图片/语音/视频为临时素材(临时素材每次获取都不同,3天内有效,通过素材管理-获取临时素材接口来获取这些素材),本接口返回的图文消息为永久素材素材(通过素材管理-获取永久素材接口来获取这些素材)。
GET: https://api.weixin.qq.com/cgi-bin/get_current_autoreply_info?access_token=ACCESS_TOKEN
订阅通知
订阅通知是一个用户主动订阅、服务号按需下发的通知能力。使用过程请遵守《微信公众平台服务协议》(参考链接3)《微信公众平台运营规范》(参考链接4)。
功能
设置订阅功能
服务号可以在图文消息、网页等场景设置订阅功能。
下发条件
用户在前述场景主动订阅后,服务号可通过接口向用户发送订阅通知,如信用卡动账提醒、物流到货通知等。
下发位置
对已关注服务号的用户,通知下发到号内,未关注的下发到服务通知。
跳转能力
可以跳转到公众号图文消息、网页和小程序。
通知类型
- 一次性订阅,指用户订阅一次,服务号可不限时间地下发一条对应的订阅通知;
- 长期订阅,指用户订阅一次,服务号可长期多次下发通知,长期订阅通知仅向政务民生、医疗等公共服务领域开放。
使用步骤
开通服务号订阅通知
添加功能插件->插件库->订阅通知开通
申请合适的行业类目,选用模板
在图文消息、网页设置订阅通知组件
通过图文编辑器,在文章中插入订阅通知组件。每篇文章最多插入10个订阅通知组件(每个组件至多包含5条通知,每个组件不能同时包含一次性订阅和长期订阅),文章推送后用户即可点击订阅。
也可以使用开放标签能力,在网页内设置订阅通知组件。
仅支持在 JS-安全域名 下的网页(已认证的服务号,最多 5 个安全域名)
图文:安卓7.0.15 & IOS 7.0.14及以上版本
服务号网页:安卓7.0.12 & IOS 7.0.12及以上版本
用户点击接收订阅通知
相关接口
- addTemplate选用模板:POST https://api.weixin.qq.com/wxaapi/newtmpl/addtemplate?access_token=ACCESS_TOKEN
- deleteTemplate删除模板:POST https://api.weixin.qq.com/wxaapi/newtmpl/deltemplate?access_token=ACCESS_TOKEN
- getCategory获取公众号类目:GET https://api.weixin.qq.com/wxaapi/newtmpl/getcategory?access_token=ACCESS_TOKEN
- getPubTemplateKeyWordsById获取模板中的关键词:GET https://api.weixin.qq.com/wxaapi/newtmpl/getpubtemplatekeywords?access_token=ACCESS_TOKEN
- getPubTemplateTitleList获取类目下的公共模板:GET https://api.weixin.qq.com/wxaapi/newtmpl/getpubtemplatetitles?access_token=ACCESS_TOKEN
- getTemplateList获取私有模板列表:GET https://api.weixin.qq.com/wxaapi/newtmpl/gettemplate?access_token=ACCESS_TOKEN
- send发送订阅通知:POST https://api.weixin.qq.com/cgi-bin/message/subscribe/bizsend?access_token=ACCESS_TOKEN
- 事件推送
- 用户在图文等场景内订阅通知的操作
- 用户在服务通知管理页面做通知管理时的操作
- 调用 bizsend 接口发送通知
服务类目
参考:https://developers.weixin.qq.com/doc/offiaccount/Subscription_Messages/category.html
客服消息
行为
微信用户向公众号发消息时,会先将消息POST到开发者填写的url上,如果希望将消息转发到客服系统,则需要开发者在响应包中返回MsgType为transfer_customer_service的消息,微信服务器收到响应后会把当次发送的消息转发至客服系统,多客服系统会将客户分配给其中一个客服人员。
也可以在返回transfer_customer_service消息时,在XML中附上TransInfo信息指定分配给某个客服帐号。如果指定的客服没有接入能力(不在线、没有开启自动接入或者自动接入已满),该用户会被直接接入到指定客服,不再通知其它客服,不会被其他客服接待。建议在指定客服时,先查询客服的接入能力(获取在线客服接待信息接口),指定到有能力接入的客服,保证客户能够及时得到服务。
用户接入客户后,会直接把消息发送给客服,会话超过30分钟客服没有关闭时,微信服务器会自动停止转发至客服,而将消息恢复发送至开发者填写的url上。
用户在等待队列中时,用户发送的消息仍然会被推送至开发者填写的url上。
客服管理接口
获取客服基本信息:GET https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token=ACCESS_TOKEN
添加客服帐号:POST https://api.weixin.qq.com/customservice/kfaccount/add?access_token=ACCESS_TOKEN
邀请绑定客服帐号:POST https://api.weixin.qq.com/customservice/kfaccount/inviteworker?access_token=ACCESS_TOKEN
新添加的客服帐号是不能直接使用的,只有客服人员用微信号绑定了客服账号后,方可登录Web客服进行操作。
此接口发起一个绑定邀请到客服人员微信号,客服人员需要在微信客户端上用该微信号确认后帐号才可用。
尚未绑定微信号的帐号可以进行绑定邀请操作,邀请未失效时不能对该帐号进行再次绑定微信号邀请。
设置客服信息:POST https://api.weixin.qq.com/customservice/kfaccount/update?access_token=ACCESS_TOKEN
上传客服头像:POST/FORM https://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token=ACCESS_TOKEN&kf_account=KFACCOUNT
删除客服帐号:GET https://api.weixin.qq.com/customservice/kfaccount/del?access_token=ACCESS_TOKEN&kf_account=KFACCOUNT
客服管理接口返回码说明:https://developers.weixin.qq.com/doc/offiaccount/Customer_Service/Customer_Service_Management.html#7
会话控制接口
- 创建会话:POST https://api.weixin.qq.com/customservice/kfsession/create?access_token=ACCESS_TOKEN
- 关闭会话:POST https: //api.weixin.qq.com/customservice/kfsession/close?access_token=ACCESS_TOKEN
- 获取客户会话状态:GET https://api.weixin.qq.com/customservice/kfsession/getsession?access_token=ACCESS_TOKEN&openid=OPENID
- 获取客服会话列表:GET https://api.weixin.qq.com/customservice/kfsession/getsessionlist?access_token=ACCESS_TOKEN&kf_account=KFACCOUNT
- 获取未接入会话列表:GET https://api.weixin.qq.com/customservice/kfsession/getwaitcase?access_token=ACCESS_TOKEN
- 获取聊天记录:POST https://api.weixin.qq.com/customservice/msgrecord/ getmsglist ?access_token=ACCESS_TOKEN
服务号对话
商户的服务人员可通过“服务号对话助手”小程序,主动发起 与服务号粉丝的一对一会话,提供个性化的信息和服务。
运作方式
- 商户: 在公众号后台开通“对话能力”,通过手工配置或开发配置顾问-客户的服务绑定关系。
- 服务人员: 可通过“服务号对话助手”小程序找到绑定的粉丝,主动发起并接收消息。
- 用户: 在商户的服务号发起并接收消息。
功能亮点
盘活公众号流量
能主动发起与服务号粉丝的一对一沟通,与服务号粉丝建立互动和信任,使其由粉丝转化为消费者。
服务质量可管理
事前,运营层可管理服务质量,比如设定敏感词,过滤顾问在沟通中可能出现的竞品词、政策词等敏感词汇;事后,服务指标、异常情况可上报,沟通记录可追溯可留存。
发起消息便捷
支持直接打开“服务号对话助手”小程序发起消息,同时支持通过外部APP/小程序/企业微信工作台等拉起“服务号对话助手”小程序发起沟通。
客户管理方便
顾问可以在“服务号对话助手”小程序上设置客户标签、昵称、备注,也可同步品牌CRM标签,方便用于搜索和群发筛选。
提升会话效率
支持由公司统一管理素材库,或顾问自助新建素材库,支持顾问编辑快捷回复和按用户标签群发消息,减少处理消息的时间成本。
开通条件
- 已认证的服务号
- 服务号一年内没有严重违规(欺诈、涉黄、涉政、恶意注册、多级分销、网赚等)
开通方式
左侧导航栏->功能->添加功能插件->对话能力->添加插件->开通
顾问管理
单个服务号支持绑定不超过20,000位顾问。支持编辑修改顾问的昵称和头像,昵称和头像将在服务号会话页外显。配置的顾问个人微信号需要先关注对应的公众号。
配置方式
公众号后台->顾问管理板块->添加顾问->输入顾问的个人微信号
也可通过接口配置
添加顾问会下发“顾问添加邀请”的服务通知,顾问需进入服务通知点击“接受”,成为该服务号的顾问。
点击“我知道了”可关注服务号小助手公众号,提升顾问对身份的认知。
顾问若超过24小时未确认,MP后台会显示“顾问24小时未确认”,需要重新邀请添加。
顾问二维码
平台自动生成带顾问参数的服务号二维码,服务号二维码与顾问码二合一,用户扫码直接跳转公众号的首页:
- 用户已经关注公众号,扫导购二维码直接绑定顾问关系。
- 用户未关注公众号,扫顾问二维码点击关注公众号,则关注公众号并绑定顾问关系。
顾问二维码生成方式:
- 通过“服务号对话助手”小程序-设置页-点击头像获取。
- 通过公众号MP后台-顾问人员下载二维码。
- 通过接口生成(支持添加额外参数)
顾问分组
顾问分组最多支持 200 个分组,每个分组最多 200 个顾问,每个顾问绑定分组不限制。
公众号后台->顾问管理->分组管理
也可通过接口配置
顾问消息通知
顾问关注“服务号小助手”公众号,可通过该公众号接收五类消息通知,提升顾问接收及处理消息效率。未关注状态下,顾问将通过“服务通知”接收相关消息。
- 当用户被服务号添加为顾问时,将触发该消息通知。
- 当顾问被服务号移除顾问身份时,将触发该消息通知。
- 当顾问通过顾问码、分组码、微信广告获得了新客户绑定时,将触发该通知。通过MP后台或者接口分配的粉丝,不会触发该通知。
- 当顾问未打开“服务号对话助手”小程序时,收到客户的咨询消息将触发该通知。若顾问在小程序内接收到客户的咨询消息,将不触发该通知。
- 当顾问收到公众号下发的群发任务时,将触发该通知。
顾问接收消息
顾问搜索打开“服务号对话助手”小程序,顾问可以主动触达已绑定的客户,可以接受客户咨询并回复。顾问也可以在小程序内添加快捷回复、小程序素材等,使用群发、标签、备注等功能,能提升顾问工作效率。
顾问发起消息
- 顾问可直接在“微信导购助手”小程序,选择客户,发起会话;
- 顾问可通过外部APP/小程序/企业微信环境内打开,拉起微信内“服务号对话助手”小程序,并发起与具体粉丝的对话。
顾问状态
顾问可在“服务号对话助手”小程序内选择在线/离线状态。顾问在线状态下,若顾问当前没有打开小程序,如有用户咨询,将收到服务通知提醒,点击服务通知可直接打开消息。
顾问回复消息
用户在48小时内发送信息、点击自定义菜单、关注公众号、扫描二维码、支付成功等主动触达的行为,顾问都可以在“服务号对话助手”小程序直接回复用户。
对话列表页“全部”下拉筛选,支持筛选48小时互动过的客户,支持筛选客户已回复消息等。
群发消息
顾问每次最多可向15,000位粉丝进行群发。支持使用公司素材/个人素材/即时编辑内容。
支持通过标签筛选粉丝,支持过滤掉 48 小时主动触达和有过回复的客户,避免重复触达客户造成骚扰。
敏感词过滤
支持设定敏感词,过滤顾问在沟通中可能出现的竞品词、政策词等敏感词汇,包含敏感词的消息无法发出。
平台另已接入微信珊瑚内容安全助手,自动检验过滤色情、政治敏感、违法、谩骂等恶意内容。
沟通记录
可通过接口获取顾问与粉丝近30天沟通记录。
相关接口
为服务号添加顾问:POST https://api.weixin.qq.com/cgi-bin/guide/addguideacct?access_token=ACCESS_TOKEN
获取顾问信息:POST https://api.weixin.qq.com/cgi-bin/guide/getguideacct?access_token=ACCESS_TOKEN
修改顾问的昵称或头像:POST https://api.weixin.qq.com/cgi-bin/guide/updateguideacct?access_token=ACCESS_TOKEN
删除顾问:POST https://api.weixin.qq.com/cgi-bin/guide/delguideacct?access_token=ACCESS_TOKEN
获取服务号顾问列表:POST https://api.weixin.qq.com/cgi-bin/guide/getguideacctlist?access_token=ACCESS_TOKEN
生成顾问二维码:POST https://api.weixin.qq.com/cgi-bin/guide/guidecreateqrcode?access_token=ACCESS_TOKEN
微信用户扫顾问二维码后会触发事件推送
获取顾问聊天记录。 支持拉取该顾问近 30 天的聊天记录。POST https://api.weixin.qq.com/cgi-bin/guide/getguidebuyerchatrecord?access_token=ACCESS_TOKEN
设置快捷回复与关注自动回复:POST https://api.weixin.qq.com/cgi-bin/guide/setguideconfig?access_token=ACCESS_TOKEN
获取快捷回复与关注自动回复:POST https://api.weixin.qq.com/cgi-bin/guide/getguideconfig?access_token=ACCESS_TOKEN
为服务号设置敏感词与离线自动回复:POST https://api.weixin.qq.com/cgi-bin/guide/setguideacctconfig?access_token=ACCESS_TOKEN
获取离线自动回复与敏感词:POST https://api.weixin.qq.com/cgi-bin/guide/getguideacctconfig?access_token=ACCESS_TOKEN
允许微信用户复制小程序页面路径:POST https://api.weixin.qq.com/cgi-bin/guide/pushshowwxapathmenu?access_token=ACCESS_TOKEN
新建顾问分组:POST https://api.weixin.qq.com/cgi-bin/guide/newguidegroup?access_token=ACCESS_TOKEN
获取服务号下所有顾问分组的列表:POST https://api.weixin.qq.com/cgi-bin/guide/getguidegrouplist?access_token=ACCESS_TOKEN
获取指定顾问分组信息,以及分组内顾问信息:POST https://api.weixin.qq.com/cgi-bin/guide/getgroupinfo?access_token=ACCESS_TOKEN
分组内添加顾问:POST https://api.weixin.qq.com/cgi-bin/guide/addguide2guidegroup?access_token=ACCESS_TOKEN
分组内删除顾问:POST https://api.weixin.qq.com/cgi-bin/guide/delguide2guidegroup?access_token=ACCESS_TOKEN
获取顾问所在分组:POST https://api.weixin.qq.com/cgi-bin/guide/getgroupbyguide?access_token=ACCESS_TOKEN
删除指定顾问分组:POST https://api.weixin.qq.com/cgi-bin/guide/delguidegroup?access_token=ACCESS_TOKEN
添加群发任务:POST https://api.weixin.qq.com/cgi-bin/guide/addguidemassendjob?access_token=ACCESS_TOKEN
获取群发任务列表:POST https://api.weixin.qq.com/cgi-bin/guide/getguidemassendjoblist?access_token=ACCESS_TOKEN
获取指定群发任务信息:POST https://api.weixin.qq.com/cgi-bin/guide/getguidemassendjob?access_token=ACCESS_TOKEN
修改群发任务:POST https://api.weixin.qq.com/cgi-bin/guide/updateguidemassendjob?access_token=ACCESS_TOKEN
取消群发任务:POST https://api.weixin.qq.com/cgi-bin/guide/cancelguidemassendjob?access_token=ACCESS_TOKEN
客户管理
单个顾问支持绑定不超过15,000位服务号粉丝。顾问和粉丝是一对一绑定关系,即只有对应的顾问可主动发起与粉丝的会话,粉丝的消息也只有对应的顾问可见。未绑定顾问的服务号粉丝不受影响。
绑定方法
- 分享/线上线下物料投放顾问二维码
- 分享/线上线下物料投放顾问分组码
- 商户后台绑定
- 调用接口绑定
- 微信广告投放支持实时分配顾问、
- 自动随机分配
客户列表
通过客户列表查看已分配顾问的客户,可以给客户打标签和筛选客户标签。
顾问人员可通过“服务号对话助手”小程序-客户管理查看绑定的粉丝,可选择客户发起会话。
新客户绑定顾问后,在“新的客户”列表展示最近新增的200位客户信息和来源。
快速绑定和换绑顾问/顾问组
支持一次性选择 500 个客户快速分配顾问/顾问组,支持解绑顾问或换绑顾问,支持迁移客户关系、客户标签等。解绑顾问的客户会进入未分配顾问列表。
- 迁移方式:
- 可通过后台客户管理快速分配顾问,支持解绑和换绑。
- 可通过接口快速分配顾问, 可通过接口换绑和解绑顾问。
- 迁移方式:
客户标签与筛选
支持设置客户昵称、客户标签、客户信息,便于顾问搜索客户和群发筛选。
配置方式:
顾问可以在“服务号对话助手“小程序上设置客户标签、客户昵称、客户信息,从客户管理页/对话页头像进入客户profile页修改。可通过接口获取顾问增删改的客户标签和客户信息。
mp后台-客户管理点击客户头像,可以设置客户昵称、客户信息、客户标签。
标签需先在标签库与素材设置,支持设置4个客户标签,每个客户标签可设置50个二级筛选项。可通过接口设置客户标签。
按地区筛选粉丝
支持按地区筛选不同省市的粉丝,通过客户管理-未分配顾问-地区筛选粉丝,绑定顾问。
相关接口
为顾问分配客户:POST https://api.weixin.qq.com/cgi-bin/guide/addguidebuyerrelation?access_token=ACCESS_TOKEN
为顾问移除客户:POST https://api.weixin.qq.com/cgi-bin/guide/delguidebuyerrelation?access_token=ACCESS_TOKEN
获取顾问的客户列表:POST https://api.weixin.qq.com/cgi-bin/guide/getguidebuyerrelationlist?access_token=ACCESS_TOKEN
为客户更换顾问:POST https://api.weixin.qq.com/cgi-bin/guide/rebindguideacctforbuyer?access_token=ACCESS_TOKEN
修改客户昵称:POST https://api.weixin.qq.com/cgi-bin/guide/updateguidebuyerrelation?access_token=ACCESS_TOKEN
查询客户所属顾问:POST https://api.weixin.qq.com/cgi-bin/guide/getguidebuyerrelationbybuyer?access_token=ACCESS_TOKEN
查询指定顾问和客户的关系:POST https://api.weixin.qq.com/cgi-bin/guide/getguidebuyerrelation?access_token=ACCESS_TOKEN
新建可查询的标签类型:POST https://api.weixin.qq.com/cgi-bin/guide/newguidetagoption?access_token=ACCESS_TOKEN
删除指定标签类型:POST https://api.weixin.qq.com/cgi-bin/guide/delguidetagoption?access_token=ACCESS_TOKEN
为标签添加可选值:POST https://api.weixin.qq.com/cgi-bin/guide/addguidetagoption?access_token=ACCESS_TOKEN
获取标签和可选值:POST https://api.weixin.qq.com/cgi-bin/guide/getguidetagoption?access_token=ACCESS_TOKEN
为客户设置标签:POST https://api.weixin.qq.com/cgi-bin/guide/addguidebuyertag?access_token=ACCESS_TOKEN
查询客户标签:POST https://api.weixin.qq.com/cgi-bin/guide/getguidebuyertag?access_token=ACCESS_TOKEN
根据标签值筛选客户:POST https://api.weixin.qq.com/cgi-bin/guide/queryguidebuyerbytag?access_token=ACCESS_TOKEN
删除客户标签:POST https://api.weixin.qq.com/cgi-bin/guide/delguidebuyertag?access_token=ACCESS_TOKEN
设置自定义客户信息:POST https://api.weixin.qq.com/cgi-bin/guide/addguidebuyerdisplaytag?access_token=ACCESS_TOKEN
获取自定义客户信息:POST https://api.weixin.qq.com/cgi-bin/guide/getguidebuyerdisplaytag?access_token=ACCESS_TOKEN
效率工具
公共素材库
支持在公众号MP后台或接口配置公共素材库,目前形式支持文字、图片、小程序卡片,最多添加各50条素材。
顾问可在“服务号对话助手”小程序中选用并发送给客户,顾问也可在“服务号对话助手”小程序内自行编辑个人素材。
个人素材库
顾问可以在“服务号对话助手”小程序内,编辑小程序素材。可添加50条小程序卡片素材。顾问可在会话页面右下角+中选择并发送给客户。
快捷回复
快捷回复:顾问可在“服务号对话助手”小程序内,编辑快捷回复,供会话时选用。
可支持设置10条快捷回复,顾问可在对话页左下角选择和管理快捷回复的内容。
关注自动回复:是指客户通过扫顾问码、扫顾问分组码、微信广告三种方式主动关注公众号并绑定顾问,顾问会下发的自动回复,即顾问欢迎语。
可在MP后台对话能力回复与敏感词中设置统一的顾问欢迎语,对所有顾问生效。可支持下发1-2条自动回复,支持配置公司素材里的文字、图片或小程序。支持同时下发公众号自动回复和顾问自动回复。
商户可以通过接口配置快捷回复与关注自动回复的内容。通过接口配置,可支持配置不同顾问的个性化欢迎语。
若MP后台和接口都配置了统一的顾问欢迎语,按最后更新的顾问欢迎语下发。
若接口配置了顾问个性化欢迎语,则下发顾问的个性化欢迎语。
离线自动回复
支持设置离线状态下的自动回复。当顾问离线状态时,用户发起咨询后将收到自动回复。
- 配置方式:
- 在公众号MP后台配置
- 通过接口配置
- 配置方式:
群发任务
支持通过调用接口创建群发任务。支持配置指定顾问、客户和素材,创建群发任务队列。可获取任务队列、任务详情,支持修改和取消任务。
顾问可在“服务号对话助手”小程序查看群发任务详情,包含群发客户、素材等内容。顾问点击“接受”,即可将素材群发给指定客户。
群发后顾问可在群发记录查看群发状态。也可通过接口获取指定群发任务信息。
数据分析
- 支持查看绑定客户的关键数据,如:累计添加顾问数、累计绑定客户数、累计绑定客户占比(绑定客户数/公众号粉丝数)等,
- 绑定渠道统计,可查看不同渠道的绑定客户数和渠道绑定占比等信息。
- 支持在公众号MP后台查看顾问和客户之间互动的关键数据,如:顾问发消息次数、客户发消息次数、顾问响应次数等;
- 顾问响应客户,可查看顾问响应次数、平均响应时长、顾问响应率。
相关接口
- 添加小程序卡片素材:POST https://api.weixin.qq.com/cgi-bin/guide/setguidecardmaterial?access_token=ACCESS_TOKEN
- 查询小程序卡片素材:POST https://api.weixin.qq.com/cgi-bin/guide/getguidecardmaterial?access_token=ACCESS_TOKEN
- 删除小程序卡片素材:POST https://api.weixin.qq.com/cgi-bin/guide/delguidecardmaterial?access_token=ACCESS_TOKEN
- 添加图片素材:POST https://api.weixin.qq.com/cgi-bin/guide/setguideimagematerial?access_token=ACCESS_TOKEN
- 查询图片素材:POST https://api.weixin.qq.com/cgi-bin/guide/getguideimagematerial?access_token=ACCESS_TOKEN
- 删除图片素材:POST https://api.weixin.qq.com/cgi-bin/guide/delguideimagematerial?access_token=ACCESS_TOKEN
- 添加文字素材:POST https://api.weixin.qq.com/cgi-bin/guide/setguidewordmaterial?access_token=ACCESS_TOKEN
- 查询文字素材:POST https://api.weixin.qq.com/cgi-bin/guide/getguidewordmaterial?access_token=ACCESS_TOKEN
- 删除文字素材:POST https://api.weixin.qq.com/cgi-bin/guide/delguidewordmaterial?access_token=ACCESS_TOKEN
网页开发
适配
微信中的WKWebview行为和Safari中保持高度一致,唯一的区别是微信Webview中会注入微信JSBridge相关的脚本。
首要原则
若不能区分是WKWebview的新特性新行为还是微信内部逻辑导致原有页面出现问题时,可使用测试页面分别在Safari和微信中的WKWebview内核分别测试,用以快速定位问题产生的原因。
关注重点
- 页面功能是否正常
- 页面屏幕适配是否正常
- 页面行为是否正常(例如用户在浏览页面时点击返回按钮返回上一个页面时的页面逻辑是否正常)
- 页面使用的语法是否兼容。
- JSSAPI是否正常完美的工作。
- 重点关注Cookie和LocalStorage等相关的逻辑是否正常。
- 若服务器有设置返回 Cache-Control缓存有效时间,则需要检查相关逻辑是否正常。
受影响的逻辑
在WKWebview中将暂不支持cache jsapi,使用此api的开发者可去掉页面相关逻辑
不再支持通过使用chooseImage api返回的localld
使用了wx.config进行权限授权需关注jsapi调用的失败问题
退出微信账号后,将会清空所有Cookie和LocalStorage
默认阻止cookie跨域,应通过Url中加入自己业务的access_token进行页面间信息传递,减少使用cookie
Webview默认支持小窗播放,需要完全按照以下代码设置video标签才可同时兼容不同的iOS版本
html<video webkit-playsinline playsinline> </video>
Safari或微信WKWebview中,页面A跳转到页面B再返回页面A后不会重新执行Script和Ajax(也不会触发页面reload),但会触发页面的pageshow pageHide等事件
Safari或微信WKWebview中,在页面弹出输入键盘后,会触发JQuery的resize事件,而在UIWebView下不会
Safari或微信WKWebview中,window unload 事件在只有刷新才能触发,退出页面或者跳转到其他页面都无法触发
不要在无法确保页面缓存策略和逻辑与服务器逻辑完全保持一致的情况下冒然设置相关的Cache-Control
授权
配置授权回调域名
开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息
授权回调域名配置规范为全域名,比如:www.qq.com
授权信息
- 以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页
- 以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的,但这种授权需要用户手动同意
- 用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号(需关注)产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息
- 同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的
网页授权流程
引导用户进入授权页面同意授权,获取code
scope为snsapi_base
scope为snsapi_userinfo
通过code换取网页授权access_token(与基础支持中的access_token不同)
如果需要,开发者可以刷新网页授权access_token,避免过期
通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)
http:GET https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
样式库(weUI)
JS-SDK
使用步骤
绑定域名:登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”
引入JS文件
通过config接口注入权限验证配置
javascriptwx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名 jsApiList: [] // 必填,需要使用的JS接口列表 });
通过ready接口处理成功验证
javascriptwx.ready(function(){ // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 });
通过error接口处理失败验证
javascriptwx.error(function(res){ // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 });
通用接口参数
- success:接口调用成功时执行的回调函数。
- fail:接口调用失败时执行的回调函数。
- complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。
- cancel:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。
- trigger: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。
备注:
不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回。
以上几个函数都带有一个参数,类型为对象,其中除了每个接口本身返回的数据之外,还有一个通用属性errMsg,其值格式如下:
调用成功时:"xxx:ok" ,其中xxx为调用的接口名
用户取消时:"xxx:cancel",其中xxx为调用的接口名
调用失败时:其值为具体错误信息
相关接口
- 分享:(朋友+QQ),(朋友圈+QQ空间),(腾讯微博)
- 图像图片相关
- 音频录音相关,语音识别
- 设备信息,网络状态
- 地理位置
- 摇一摇周边
- 界面操作:菜单,窗口,功能按钮
- 微信扫一扫
- 微信小店
- 卡券
- 支付
- 快速输入收货地址
- 签名算法
- 错误列表
- 样例代码
开放标签
跳转小程序:wx-open-launch-weapp
开放对象
- 已认证的服务号,服务号绑定“JS接口安全域名”下的网页可使用此标签跳转任意合法合规的小程序。
- 已认证的非个人主体的小程序,使用小程序云开发的静态网站托管绑定的域名下的网页,可以使用此标签跳转任意合法合规的小程序。
跳转APP:wx-open-launch-app
开放对象
仅开放给已认证的服务号
使用
在使用该标签之前,首先需要前往微信开放平台的管理中心-公众账号或小程序详情-接口信息-网页跳转移动应用-关联设置中绑定所需要跳转的App
服务号订阅通知按钮:wx-open-subscribe
开放对象
已认证的服务号
音频播放:wx-open-audio
开放对象
仅开放给已认证的服务号
使用
可在vue,react使用标签
深色模式
切换深色模式
- iOS:“设置”--“显示与亮度”--“外观”,选择“深色”
- Android(不同厂商可能略有差别,名字也不尽相同):“系统设置”--“显示”--“深色模式”。
适配
meta
在head中声明
html<meta name="color-scheme" content="light dark">
声明当前页面支持 light 和 dark 两种模式,系统切换到深色模式时,浏览器默认样式也会切换到深色;
css可以实现上面 meta 声明的效果
css:root { color-scheme: light dark; }
媒体查询
css:root { color-scheme: light dark; background: white; color: black; } @media (prefers-color-scheme: dark) { :root { background: black; color: white; } }
图片适配
html<picture> <!-- 深色模式下的图片 --> <source srcset="dark.jpg" media="(prefers-color-scheme: dark)" /> <!-- 默认模式下的图片 --> <img src="light.jpg"/> </picture>
JavaScript中判断当前模式&监听模式变化
javascriptconst mediaQuery = window.matchMedia('(prefers-color-scheme: dark)') function darkModeHandler() { if (mediaQuery.matches) { console.log('现在是深色模式') } else { console.log('现在是浅色模式') } } // 判断当前模式 darkModeHandler() // 监听模式变化 mediaQuery.addListener(darkModeHandler)
云开发
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/web.html
素材
临时素材
发送消息时,对多媒体文件、多媒体消息的获取和调用是通过media_id来进行的
临时素材media_id是可复用的。
媒体文件在微信后台保存时间为3天,即3天后media_id失效。
上传临时素材的格式、大小限制与公众平台官网一致:
图片(image): 10M,支持PNG\JPEG\JPG\GIF格式
语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
视频(video):10MB,支持MP4格式
缩略图(thumb):64KB,支持JPG格式
永久素材
对比临时素材的额外注意点:
图文消息的具体内容中,微信后台将过滤外部的图片链接,图片url需通过"上传图文消息内的图片获取URL"接口上传图片获取。
"上传图文消息内的图片获取URL"接口所上传的图片,不占用公众号的素材库中图片数量的100000个的限制,图片仅支持jpg/png格式,大小必须在1MB以下。
图文消息支持正文中插入自己帐号和其他公众号已群发文章链接的能力。
- 新增接口:POST https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN
- 获取接口:POST https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=ACCESS_TOKEN
- 删除接口:POST https://api.weixin.qq.com/cgi-bin/material/del_material?access_token=ACCESS_TOKEN
- 修改接口:POST https://api.weixin.qq.com/cgi-bin/material/update_news?access_token=ACCESS_TOKEN
- 获取素材总数:GET https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=ACCESS_TOKEN
- 获取素材列表:POST https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN
图文消息留言
评论
当公众号具备留言功能的权限时,可以指定 media_id 在群发时打开留言功能,并指定该 media_id 的评论范围(所有人都可以留言,或仅公众号粉丝可以留言)
- 素材
- 新增永久素材:POST https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN
- 获取永久素材:POST https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=ACCESS_TOKEN
- 修改永久图文素材:POST https://api.weixin.qq.com/cgi-bin/material/update_news?access_token=ACCESS_TOKEN
- 获取素材列表:POST https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN
- 评论数据
- 打开已群发文章评论:POST https://api.weixin.qq.com/cgi-bin/comment/open?access_token=ACCESS_TOKEN
- 关闭已群发文章评论:POST https://api.weixin.qq.com/cgi-bin/comment/close?access_token=ACCESS_TOKEN
- 查看指定文章的评论数据:POST https://api.weixin.qq.com/cgi-bin/comment/list?access_token=ACCESS_TOKEN
- 将评论标记精选:POST https://api.weixin.qq.com/cgi-bin/comment/markelect?access_token=ACCESS_TOKEN
- 将评论取消精选:POST https://api.weixin.qq.com/cgi-bin/comment/unmarkelect?access_token=ACCESS_TOKEN
- 删除评论:POST https://api.weixin.qq.com/cgi-bin/comment/delete?access_token=ACCESS_TOKEN
- 回复评论:POST https://api.weixin.qq.com/cgi-bin/comment/reply/add?access_token=ACCESS_TOKEN
- 删除回复:POST https://api.weixin.qq.com/cgi-bin/comment/reply/delete?access_token=ACCESS_TOKEN
- 素材
用户管理
- 创建标签(一个公众号,最多可以创建100个标签): POST https://api.weixin.qq.com/cgi-bin/tags/create?access_token=ACCESS_TOKEN
- 获取公众号已创建的标签: GET https://api.weixin.qq.com/cgi-bin/tags/get?access_token=ACCESS_TOKEN
- 编辑标签: POST https://api.weixin.qq.com/cgi-bin/tags/update?access_token=ACCESS_TOKEN
- 删除标签: POST https://api.weixin.qq.com/cgi-bin/tags/delete?access_token=ACCESS_TOKEN
- 获取标签下粉丝列表: POST https://api.weixin.qq.com/cgi-bin/user/tag/get?access_token=ACCESS_TOKEN
- 批量为用户打标签: POST https://api.weixin.qq.com/cgi-bin/tags/members/batchtagging?access_token=ACCESS_TOKEN
- 批量为用户取消标签: POST https://api.weixin.qq.com/cgi-bin/tags/members/batchuntagging?access_token=ACCESS_TOKEN
- 获取用户身上的标签列表: POST https://api.weixin.qq.com/cgi-bin/tags/getidlist?access_token=ACCESS_TOKEN
- 设置用户备注名: POST https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token=ACCESS_TOKEN
- 获取用户基本信息(包括UnionID机制): GET https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
- 取用户列表: GET https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID
- 获取用户地理位置
- 获取公众号的黑名单列表: POST https://api.weixin.qq.com/cgi-bin/tags/members/getblacklist?access_token=ACCESS_TOKEN
- 拉黑用户: POST https://api.weixin.qq.com/cgi-bin/tags/members/batchblacklist?access_token=ACCESS_TOKEN
- 取消拉黑用户: POST https://api.weixin.qq.com/cgi-bin/tags/members/batchunblacklist?access_token=ACCESS_TOKEN
帐号管理
二维码
临时二维码
最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。
临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景。
POST URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
永久二维码
是无过期时间的,但数量较少(目前为最多10万个)。
永久二维码主要用于适用于帐号绑定、用户来源统计等场景。
POST URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
通过ticket换取二维码
GET请求(请使用https协议)https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
TICKET记得进行UrlEncode
短key托管
微信认证事件推送
事件推送将会推送给公众号在公众平台官网开发者中心设置的服务地址中,如果公众号已将帐号管理权限集(因为该接口权限从属于帐号管理权限集)授权给第三方平台,那么将由第三方平台代公众号接收事件推送,具体是推送到第三方平台的公众号消息与事件接收URL
资质认证成功后,公众号就获得了认证相关接口权限,资质认证成功一定发生在名称认证成功之前
名称认证成功后,公众号才在微信客户端中获得打勾认证标识
相关接口:
- 资质认证成功(此时立即获得接口权限)
- 资质认证失败
- 名称认证成功(即命名成功)
- 名称认证失败(这时虽然客户端不打勾,但仍有接口权限
- 年审通知
- 认证过期失效通知
数据统计
用户分析
最多一次性获取7天的数据
图文分析
最多一次性获取7天的数据
最多一次性获取3天的数据
最多一次性获取1天的数据
- 获取图文群发每日数据:https://api.weixin.qq.com/datacube/getarticlesummary?access_token=ACCESS_TOKEN
- 获取图文群发总数据:https://api.weixin.qq.com/datacube/getarticletotal?access_token=ACCESS_TOKEN
- 获取图文统计分时数据:https://api.weixin.qq.com/datacube/getuserreadhour?access_token=ACCESS_TOKEN
- 获取图文分享转发分时数据:https://api.weixin.qq.com/datacube/getusersharehour?access_token=ACCESS_TOKEN
额外需要注意获取图文群发每日数据(getarticlesummary)和获取图文群发总数据(getarticletotal)的区别如下:
- 前者获取的是某天所有被阅读过的文章(仅包括群发的文章)在当天的阅读次数等数据。
- 后者获取的是,某天群发的文章,从群发日起到接口调用日(但最多统计发表日后7天数据),每天的到当天的总等数据。例如某篇文章是12月1日发出的,发出后在1日、2日、3日的阅读次数分别为1万,则getarticletotal获取到的数据为,距发出到12月1日24时的总阅读量为1万,距发出到12月2日24时的总阅读量为2万,距发出到12月3日24时的总阅读量为3万。
消息分析
最多一次性获取30天的数据
- 获取消息发送周数据:https://api.weixin.qq.com/datacube/getupstreammsgweek?access_token=ACCESS_TOKEN
- 获取消息发送月数据:https://api.weixin.qq.com/datacube/getupstreammsgmonth?access_token=ACCESS_TOKEN
- 获取消息发送分布周数据:https://api.weixin.qq.com/datacube/getupstreammsgdistweek?access_token=ACCESS_TOKEN
- 获取消息发送分布月数据:https://api.weixin.qq.com/datacube/getupstreammsgdistmonth?access_token=ACCESS_TOKEN
最多一次性获取15天的数据
最多一次性获取7天的数据
最多一次性获取1天的数据
广告数据分析
最多一次性获取90天的数据
- 获取公众号分广告位数据:https://api.weixin.qq.com/publisher/stat?action=publisher_adpos_general&access_token=ACCESS_TOKEN
最多一次性获取60天的数据
- 获取公众号返佣商品数据:https://api.weixin.qq.com/publisher/stat?action=publisher_cps_general&access_token=ACCESS_TOKEN
无最大时间跨度
接口分析
最多一次性获取30天的数据
最多一次性获取1天的数据
微信卡券
沙箱测试账号
登录接口测试号申请通过微信扫一扫获得一个全新的appid**(已拥有卡券创建权限,包括朋友的券和会员卡)**和appsecret用于卡券接口调用。
该appid创建的卡券不会被审核通过,仅白名单内用户可以领取,用于小范围测试,开发者不可用于其他用途。
流程
获取access_token
上传卡券logo
上传图片接口:POST https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN
设置卡券适用门店
选取卡券背景颜色
创建卡券
创建卡券:POST: https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN
卡券ID:一个卡券ID对应一类卡券,包含了相应库存数量的Code码。
卡券Code码:一张卡券的唯一标识,核销卡券时使用此串码,支持商户自定义。
自定义Code码
通常为商户在现有业 务已有一套Code码体系。
"use_custom_code":true ,仅支持API创建。
卡券投放接口中填入code字段值。
仅支持调用API接口核销。
非自定义Code码
可使用微信的Code码体 系完成投放、核销。
"use_custom_code":false ,支持API创建、公众平台创建 (默认为非自定义Code码)。
卡券投放接口中无需填写code字段,由微信后台分配。
支持卡券核销助手公众号核销、公众平台网页核销、API接口核销。
导入code模式
商户须用自己的code码体系 ,且要通过微信渠道下发卡券 (如:二维码/群发/货架等)
"use_custom_code":true且get_custom_code_mode: " GET_CUSTOM_CODE_MODE_DEPOSIT "
卡券侧随机在导入的code中下发,不可指定,投放接口不可传code字段
核销时需同时传入card_id和code,仅支持API
记录用户领券行为
用户领取卡券后会推送事件通知开发者,领取卡券事件中包含卡券ID、Code码、领取人OpenID、转赠人OpenID。卡券被核销时同样会推送事件
调用查询Code接口 获取该Code码的状态(是否被领取、核销、删除),若Code码被用户领取且处于有效状态,可获取领券人OpenID。
从卡券详情页跳转外部链接时,微信后台会自动带上卡券ID、Code码等信息
在卡券投放接口中加入场景字段outer_str,该字段值会在用户领取时伴随事件通知商户
自定义入口
使用场景入口,立即使用,仅卡券被用户领取且处于有效状态时显示(未到有效期、转赠中、核销后不显示)。
服务场景入口,在线商城,仅卡券被用户领取且处于有效状态时显示(转赠中、核销后不显示)。
营销场景入口,再次购买,卡券处于正常状态、转赠中、核销后等异常状态均显示该入口。
设置快速买单
微信买单的好处
- 无需商户具备微信支付开发能力,即可完成订单生成,与微信支付打通。
- 可以通过手机公众号、电脑商户后台,轻松操作收款并查看核销记录,交易对账,并支持离线下载。
- 支持会员营销,二次营销,如会员卡交易送积分,抵扣积分,买单后赠券等。
开通
- 申请开通内测白名单权限后,开发者可以登录微信公众平台mp.weixin.qq.com,进入【卡券功能】-【卡券概况】,点击查看资料和权限
- 在高级权限区,有标注微信买单的权限状态,商户先需要开通微信支付,并为收款门店配置核销员,才能激活申请权限。未获得权限时,点击“申请“,开通买单权限
- 为收款门店配置收款员“或直接点击”卡券核销“,可前往添加门店核销员,便于后续接收结算通知。
买单接口:POST:https://api.weixin.qq.com/card/paycell/set?access_token=TOKEN
创建二维码投放
- 创建二维码:POST:https://api.weixin.qq.com/card/qrcode/create?access_token=TOKEN
- HTML5线上发券(JS-SDK接口)
- 创建货架:POST:https://api.weixin.qq.com/card/landingpage/create?access_token=$TOKEN
- 导入code:POST:http://api.weixin.qq.com/card/code/deposit?access_token=ACCESS_TOKEN
- 查询导入code数目:POST:http://api.weixin.qq.com/card/code/getdepositcount?access_token=ACCESS_TOKEN
- 核查code:POST:http://api.weixin.qq.com/card/code/checkcode?access_token=ACCESS_TOKEN
- 图文消息群发卡券:POST:https://api.weixin.qq.com/card/mpnews/gethtml?access_token=TOKEN
显示二维码
设置测试白名单:POST:https://api.weixin.qq.com/card/testwhitelist/set?access_token=TOKEN
核销卡劵
自助核销:POST:https://api.weixin.qq.com/card/selfconsumecell/set?access_token=TOKEN
查询Code:POST:https://api.weixin.qq.com/card/code/get?access_token=TOKEN
核销Code:POST:https://api.weixin.qq.com/card/code/consume?access_token=TOKEN
拉取卡券列表接口(JS-SDK)
Code解码:POST:https://api.weixin.qq.com/card/code/decrypt?access_token=TOKEN
其它
卡券接口
- 获取用户已领取卡券接口:POST:https://api.weixin.qq.com/card/user/getcardlist?access_token=TOKEN
- 查看卡券详情:POST:https://api.weixin.qq.com/card/get?access_token=TOKEN
- 批量查询卡券列表:POST:https://api.weixin.qq.com/card/batchget?access_token=TOKEN
- 更改卡券信息接口:POST:https://api.weixin.qq.com/card/update?access_token=TOKEN
- 修改库存:POST:https://api.weixin.qq.com/card/modifystock?access_token=TOKEN
- 更改Code:POST:https://api.weixin.qq.com/card/code/update?access_token=TOKEN
- 删除卡券:POST:https://api.weixin.qq.com/card/delete?access_token=TOKEN
- 设置卡券失效:POST:https://api.weixin.qq.com/card/code/unavailable?access_token=TOKEN
- 拉取卡券概况数据:POST:https://api.weixin.qq.com/datacube/getcardbizuininfo?access_token=ACCESS_TOKEN
- 获取免费券数据:POST:https://api.weixin.qq.com/datacube/getcardcardinfo?access_token=ACCESS_TOKEN
- 拉取会员卡概况数据:POST:https://api.weixin.qq.com/datacube/getcardmembercardinfo?access_token=ACCESS_TOKEN
- 拉取单张会员卡数据:POST:https://api.weixin.qq.com/datacube/getcardmembercarddetail?access_token=ACCESS_TOKEN
事件推送
- 卡券事件推送:审核事件推送/领取事件推送
- 转赠事件推送
- 删除事件推送
- 核销事件推送
- 买单事件推送
- 进入会员卡事件推送
- 从卡券进入公众号会话事件推送
- 会员卡内容更新事件
- 库存报警事件
- 券点流水详情事件
- 会员卡激活事件推送
卡券-小程序打通
- 小程序内领取卡券
- 步骤
- 开发者须有一个有卡券权限的公众号和认证后的小程序账号
- 开发者须申请一个开放平台账号,并将小程序和公众号绑定在同一个开放平台账号下
- 创建卡券并获得card_id
- 在小程序内调用wx.addcard接口并处理领取成功的回调
- 在第3步中获取到的card_id、code(加密code)请求解码code接口获取真实的code
- 记录用户小程序内的openid、用户领取的code以及card_id
- 处理卡券领取事件,记录用户在公众号内的openid、以及用户领取的code以及card_id
- 步骤
- 小程序内查看卡券
- 步骤
- 开发者须在用户进入小程序时,获取用户已经领取到的卡券的card_id和code(真实code)
- 调用wx.openCard打开用户某张卡券供用户查看、使用
- 步骤
- 小程序开卡组件
- 跳转型步骤
- 创建一张会员卡会员卡,会员卡的激活方式选择“wx_activate":true,"wx_activate_after_submit" : true,并在activate_app_brand_user_name、activate_app_brand_pass传入激活小程序页面的相关信息,并获得card_id
- 设置用户开卡时填写的开卡字段,分必填和选填
- 获取开卡组件所需的参数
- 判断新老用户、客户端版本决定是否要调用开卡插件接口
- 调用开卡插件供用户开卡,并处理开卡插件的回调
- 获取用户开卡资料并激活用户的会员卡
- 非跳转型步骤
- 创建一张会员卡会员卡,会员卡的激活方式选择“wx_activate":true,"wx_activate_after_submit" : false,并获得card_id
- 设置用户开卡时填写的开卡字段,分必填和选填
- 获取开卡组件所需的参数
- 判断新老用户、客户端版本决定是否要调用开卡插件接口
- 调用开卡插件供用户开卡,并处理开卡插件的回调
- 获取用户开卡资料
- 跳转型步骤
- 卡券内跳转小程序
- 步骤
- 开发者须将小程序绑定在公众号下
- 创建卡券,并将卡内的cell设置小程序对应的path
- 处理跳转小程序时获取到的信息
- 步骤
- 接口
- 获取开卡插件参数:https://api.weixin.qq.com/card/membercard/activate/geturl?access_token= ACCESS_TOKEN
- 小程序内打开开卡插件javascript
wx.navigateToMiniProgram({ appId: ‘wxeb490c6f9b154ef9’, // 固定为此appid,不可改动 extraData: data, // 包括encrypt_card_id outer_str biz三个字段,须从step3中获得的链接中获取参数 success: function() { }, fail: function() { }, complete: function() { } })
- 获取用户开卡时提交的信息(跳转型开卡组件):https://api.weixin.qq.com/card/membercard/activatetempinfo/get?access_token=TOKEN
- 获取用户开卡时提交的信息(非跳转型开卡组件):https://api.weixin.qq.com/card/code/get?access_token=TOKEN
- 激活用户领取的会员卡(跳转型开卡组件):https://api.weixin.qq.com/card/membercard/activate?access_token=TOKEN
- 小程序内领取卡券
微信礼品卡
- 类目范围
- 购物:百货商场、购物中心/购物街、超市、便利店、普通食品、保健食品、酒类、副食品门市、服饰、鞋类箱包、珠宝配饰、化妆品、日护用品、钟表眼镜、鲜花礼品、母婴用品、运动户外、乐器、图书报刊杂志、药房/药店、数码家电、家纺家装、建材五金/机械仪表、综合电商
- 生活服务:汽车销售、加油站、家政服务、养生养护、婚庆服务、汽车维修
- 酒店:星级酒店、度假村、快捷酒店
- 美食:粤菜、茶餐厅、川菜、湘菜、东北菜、西北菜、火锅、自助餐、小吃、快餐、日本料理、韩国料理、东南亚菜、西餐、面包甜点、咖啡厅、江浙菜、其它美食、酒吧/俱乐部、外卖
- 休闲娱乐:美容美发、美甲、温泉洗浴、运动健身、足疗按摩
- 储值类型礼品卡:商户需具备单用途预付卡备案才可开展礼品卡业务
- 单品类型礼品卡:无需具备预付卡资质,平台视为普通兑换卡业务
- 接入步骤
- 新注册流程
- 若商户还未拥有开通卡券功能的公众号,商户可以登录【微信公众平台】进行公众号注册并进行认证
- 注册完成后,商户可以登录【微信公众平台】,并进入【添加插件】-【卡包功能】提交相应资料并开通卡券功能
- 非新注册流程
- 若商户已有开通卡券功能的公众号则可根据自身情况,决定是否直接复用
- 以上开通均需3-5工作日的审核时间,请根据项目进度提前申请操作
- 拥有一个认证小程序(礼品卡专用)用于上传礼品卡的代码以及资料。须商户申请或拥有一个礼品卡专用的小程序。
- 若商户还未拥有认证的小程序,商户可以登录【微信公众平台】进行小程序注册并进行认证
- 若商户已有认证公众账号,可以登录【微信公众平台】,进入【小程序管理】-【添加】-【快速注册并认证小程序】直接快速注册认证的小程序
- 使用用公众号申请商户号
- 新注册流程
- 类目范围
会员卡
- 门店扫码
- 功能:新用户可以完成领取会员卡动作;若顾客已经是微信会员,扫描二维码时会快速拉出本店的二维码,进行积分扣减、点餐、买单等动作
- 适用场景
- 餐饮行业,在餐桌上铺设会员卡二维码,用户扫码领会员卡,并实现在线点餐或者会员卡买单功能
- 酒店行业,在服务台摆设二维码,顾客扫码后领取会员卡,点击后快速定位到当前门店,快速订房
- 丽人行业,在每个店员携带一个带参数会员卡二维码,按照参数统计开卡数量,激励店员发展新卡
- 流程
- 开发者需要首先创建会员卡并通过审核,并通过“创建二维码”接口生成会员卡领取二维码
- 二维码用途三种模式
- 扫码打开会员卡,直接进行微信付款
- 开发者需要在创建会员卡后,调用“开通会员卡买单接口”为当前会员卡设置微信买单功能
- 商户须确认已经开通了微信支付
- 扫码打开会员卡,区分餐桌点菜/下单
- 扫码领卡区分领卡来源,进行开卡业绩统计
- 要完成领卡业绩统计,开发者须在“生成二维码接口”的字段中增加outer_id字段,用作二维码唯一标识
- 扫码打开会员卡,直接进行微信付款
- 会员卡快速买单
- 功能:用户点击微信上的“快速买单”按钮可以进入付款页面,系统会自动匹配到用户当前所在门店,用户输入金额后可以快速付款,同时该门店核销员会收到付款通知。
- 流程
- 使用微信快速买单流程,商户须先开通微信支付功能
- 开发者调用“创建会员卡接口”后可以得到card_id,之后开发者可以通过“开通快速买单接口”将当前card_id设置为支持快速买单
- 用户每完成一笔买单后,开发者将会接收到“买单事件推送”,告知开发者本次交易的门店、用户OpenID、交易金额以及交易订单号
- 微信会员卡与CRM打通
- 功能:卡号互通/权益互通/卡面互通/会员资料互通
- 适用场景:原有系统与微信系统打通
- 会员卡与支付系统打通
- 功能:领卡会员发起一笔支付时,商户的crm便可以根据“消费-积分”兑换比例为用户增减积分,持续维护老会员权益
- 适用场景:
- 支付即会员,利用微信支付作为触点,快速拉新
- 流程
- 设置支付即会员,商户须先确认已经开通微信支付功能和微信会员卡功能
- 创建一张新的会员卡,并获取card_id(已经创建了会员卡的可以跳过),并设计会员卡开卡流程
- 设置支付即会员规则
- 用户发起支付、接收消息并领取注册会员卡
- 开发者记录领卡用户OpenID、code等信息并为用户激活会员卡
- 用户再次支付时,商户调用“授权码查询OpneID接口”查询用户OpenID,并调用“更新会员信息接口”为用户增减积分
- 流程
- 会员卡拉出刷卡,会员卡支付自动变更积分
- 流程
- 创建/更新会员卡支持拉起微信支付付款码(设置会员卡拉出刷卡页面)
- 投放会员卡并引导用户使用会员卡
- 用户领取会员卡
- 开发者记录领卡用户OpenID、code等信息并为用户激活会员卡
- 用户到店在卡包内打开会员卡或者通过扫码打开会员卡,并点击“付款”,打开刷卡页面
- 商户扫码并调用“授权码查询OpneID接口”查询用户OpenID,并调用“更新会员信息接口”为用户增减积分
- 流程
- 从钱包刷卡入口刷卡,为用户增加积分
- 流程
- 创建/更新会员卡支持拉起微信支付付款码(设置会员卡拉出刷卡页面)
- 投放会员卡并引导用户使用会员卡
- 用户领取会员卡
- 开发者记录领卡用户OpenID、code等信息并为用户激活会员卡
- 用户到店,从钱包入口打开刷卡页面
- 商户扫码并调用“授权码查询OpneID接口”查询用户OpenID,并调用“更新会员信息接口”为用户增减积分
- 流程
- 会员卡二维码&微信支付入口
- 流程
- 创建/更新会员卡支持拉起微信支付付款码且支持会员卡页面出现微信支付入口
- 投放会员卡并引导用户使用会员卡
- 用户领取会员卡
- 开发者记录领卡用户OpenID、code等信息并为用户激活会员卡
- 用户到店在卡包内打开会员卡或者通过扫码打开会员卡,出示会员卡二维码后,出示微信支付二维码
- 商户扫码并调用“授权码查询OpneID接口”查询用户OpenID,并调用“更新会员信息接口”为用户增减积分
- 流程
- 支付即会员,利用微信支付作为触点,快速拉新
- 老会员绑定
- 功能:一键激活绑定老会员
- 流程
- 创建一张新的会员卡,并设置一键激活属性,获取card_id
- 设置该会员卡一键激活的激活项,设置service_statement字段的标题命名及跳转外链
- 在外链网页中设置老会员身份识别的选项,譬如手机号、会员号等唯一标识
- 接收到用户填写的会员信息后调用激活会员卡接口同步会员的积分、余额等权益信息
- 解绑会员卡:POST:https://api.weixin.qq.com/card/membercard/unactivate?access_token=ACCESS_TOKEN
- 会员卡储值
- 微信储值好处
- 会员粘性增加,复购频率提升,商家回头客越来越多
- 商户对储值的顾客给出更有竞争力的折扣,新储值会员增多
- 用户自助储值,减少门店内储值开卡的时间,提高了效率
- 优惠组合方案
- 充值返现,合理地设置返现比例,促进用户进行储值消费
- 储值折扣,对储值消费设置多档折扣,区分会员忠诚度进行优惠划分
- 储值消费多倍积分,鼓励用户使用储值
- demo
- 余额显示:商户可以通过调用会员卡信息更新接口,将会员的余额实时更新到会员卡中,并显示
- 储值充值:用户在会员卡内进入商户开发的充值页面可以通过微信支付进行储值码,商户收到支付成功的事件后,为用户的会员卡内增加余额
- 出示动态码消费:用户到店后点击卡面二维码区域出示动态二维码,商户扫码后可以调用查询code接口识别用户会员身份并进行储值扣减
- 记录和通知:用户点击“余额”后可以进入余额记录页面,可以看到历史的余额变更记录,同时用户的余额每次变化时,商户可以选择给用户发送专用的模板消息提醒用户
- 微信储值好处
- 开卡组件
- 功能:让网页会员卡的开发者通过使用开卡组件,可以开发出快捷、流畅的开卡流程
- 优势
- 节约成本,开发者无需校验手机号即可获得真实可信的手机号
- 开卡效率提高,微信会帮助用户填写之前在平台开卡时曾经填写过的字段
- 多种用途,既能作为开卡入口也能作为会员卡展示入口
- 丰富地自定义能力,多种形式的自定义字段和开卡后跳转商户网页的能力
- 使用流程
- 若为非跳转型的开卡组件,用户在开卡后会直接打开领取到的微信原生会员卡
- 若为跳转型开卡组件,用户开卡后会直接跳转至商户页面,同时其卡包内会被系统自动放入一张未激活状态原生会员卡,开发者需要在接下来的页面内调用激活接口将原生会员卡激活
- 接口
- 创建会员卡:POST:https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN
- 接口激活:POST:https://api.weixin.qq.com/card/membercard/activate?access_token=TOKEN
- 设置开卡字段:POST:https://api.weixin.qq.com/card/membercard/activateuserform/set?access_token=TOKEN
- 更新会员信息:POST:https://api.weixin.qq.com/card/membercard/updateuser?access_token=TOKEN
- 拉取会员信息(积分查询):POST:https://api.weixin.qq.com/card/membercard/userinfo/get?access_token=TOKEN
- 更改会员卡信息:POST:https://api.weixin.qq.com/card/update?access_token=TOKEN
- 设置跟随推荐:POST:https://api.weixin.qq.com/card/update?access_token=TOKEN
- 设置支付后投放卡券:POST:https://api.weixin.qq.com/card/paygiftcard/add?access_token=TOKEN
- 查询支付后投放卡券规则详情:POST:https://api.weixin.qq.com/card/paygiftcard/getbyid?access_token=TOKEN
- 批量查询支付后投放卡券规则:POST:https://api.weixin.qq.com/card/paygiftcard/batchget?access_token=TOKEN
- 特殊票券
- 创建会议门票:POST:https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN
- 更新会议门票:POST:https://api.weixin.qq.com/card/meetingticket/updateuser?access_token=TOKEN
- 创建景区门票:POST: https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN
- 创建电影票:POST:https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN
- 更新电影票:POST:https://api.weixin.qq.com/card/movieticket/updateuser?access_token=TOKEN
- 创建飞机票:POST:https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN
- 更新飞机票信息:POST:https://api.weixin.qq.com/card/boardingpass/checkin?access_token=TOKEN
- 第三方接入
- 创建子商户:POST:https://api.weixin.qq.com/card/submerchant/submit?access_token=TOKEN
- 子商户审核事件推送
- 卡券开放类目查询:GET:https://api.weixin.qq.com/card/getapplyprotocol?access_token=TOKEN
- 更新子商户:POST:https://api.weixin.qq.com/card/submerchant/update?access_token=TOKEN
- 拉取单个子商户信息:POST:https://api.weixin.qq.com/card/submerchant/get?access_token=TOKEN
- 批量拉取子商户信息:POST:https://api.weixin.qq.com/card/submerchant/batchget?access_token=TOKEN
- 创建子商户卡券:POST:https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN
- 门店扫码
开发资料包:https://mp.weixin.qq.com/zh_CN/htmledition/comm_htmledition/res/cardticket/wx_card_document.zip
微信门店
门店管理接口为商户提供门店批量导入、查询、修改、删除等主要功能,方便商户快速、高效进行门店管理和操作。
- 申请接入:登录微信公众平台—添加功能插件—选择门店功能
- 开发流程
- 创建门店前的准备:上传图片:上传商户新建门店时所使用的图片。上传的图片url必须为微信自己域名的url。
- 创建门店:调用创建门店接口,调用成功后返回errcode、errmsg,会返回最终poiid。
- 审核结果事件推送:新创建的门店在审核通过后,会以事件形式推送给商户填写的回调url(登录公众平台进入“开发者中心”设置)获取门店唯一id:poi_id。
- 查询门店信息:在审核通过并获取poi_id 后,商户可以利用poi_id,查询具体某条门店的信息。
- 查询门店列表:商户可以通过该接口,批量查询自己名下的门店list,并获取已审核通过的poi_id以及商户自身用于对应、商户名、分店名、地址字段的sid
- 修改门店服务信息:商户可以通过该接口,修改门店的服务信息,包括:图片列表、营业时间、推荐、特色服务、简介、人均价格、电话7 个字段(名称、坐标、地址等不可修改)修改后需要人工审核。
- 删除门店:商户可以通过该接口,删除已经成功创建的门店。
- 公众号门店接口
- 上传图片:POST/FORM:https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN
- 创建门店:POST:http://api.weixin.qq.com/cgi-bin/poi/addpoi?access_token=TOKEN
- 常见出错
- 门店名:不能为空,15个汉字或30个英文字符内,不能含有括号和特殊字符,不应包含地区、地址、分店名等信息
- 分店名:不超过20个字,不能含有括号和特殊字符,不应包含地区信息,不应与门店名有重复
- 准确填写门店所在地址和门牌号,务必至少包括“XX路XX号”
- 类目信息
- 填写的电话信息需要真实有效,审核过程会进行电话抽审,无人接听或电话无效会影响审核结果
- 经纬度坐标需要转换为腾讯地图坐标
- 常见出错
- 审核事件推送
- 查询门店信息:POST:http://api.weixin.qq.com/cgi-bin/poi/getpoi?access_token=TOKEN
- 查询门店列表:POST:https://api.weixin.qq.com/cgi-bin/poi/getpoilist?access_token=TOKEN
- 修改门店服务信息:POST/FORM:https://api.weixin.qq.com/cgi-bin/poi/updatepoi?access_token=TOKEN
- 删除门店:POST/FORM:https://api.weixin.qq.com/cgi-bin/poi/delpoi?access_token=TOKEN
- 门店类目表:GET:http://api.weixin.qq.com/cgi-bin/poi/getwxcategory?access_token=TOKEN
- 门店小程序接口
- 拉取门店小程序类目:GET:https://api.weixin.qq.com/wxa/get_merchant_category?access_token=TOKEN
- 创建门店小程序:POST:https://api.weixin.qq.com/wxa/apply_merchant?access_token=TOKEN
- 查询门店小程序审核结果:GET:https://api.weixin.qq.com/wxa/get_merchant_audit_info?access_token=TOKEN
- 修改门店小程序信息:POST:https://api.weixin.qq.com/wxa/modify_merchant?access_token=TOKEN
- 从腾讯地图拉取省市区信息:GET:https://api.weixin.qq.com/wxa/get_district?access_token=TOKEN
- 在腾讯地图中搜索门店:POST:https://api.weixin.qq.com/wxa/search_map_poi?access_token=TOKEN
- 在腾讯地图中创建门店:POST:https://api.weixin.qq.com/wxa/create_map_poi?access_token=TOKEN
- 添加门店:POST:https://api.weixin.qq.com/wxa/add_store?access_token=TOKEN
- 更新门店信息:POST:https://api.weixin.qq.com/wxa/update_store?access_token=TOKEN
- 获取单个门店信息:POST:https://api.weixin.qq.com/wxa/get_store_info?access_token=TOKEN
- 获取门店信息列表:POST:https://api.weixin.qq.com/wxa/get_store_list?access_token=TOKEN
- 删除门店:POST:https://api.weixin.qq.com/wxa/del_store?access_token=TOKEN
- 从门店管理迁移到门店小程序:https://api.weixin.qq.com/cgi-bin/poi/getpoilist?access_token=TOKEN
- 门店小程序卡券:https://api.weixin.qq.com/card/storewxa/set?access_token=ACCESS_TOKEN
智能接口
- 语义理解:POST:https://api.weixin.qq.com/semantic/semproxy/search?access_token=YOUR_ACCESS_TOKEN
- 提交语音:POST:http://api.weixin.qq.com/cgi-bin/media/voice/addvoicetorecofortext?access_token=ACCESS_TOKEN&format=&voice_id=xxxxxx&lang=zh_CN
- 获取语音识别结果:POST:http://api.weixin.qq.com/cgi-bin/media/voice/queryrecoresultfortext?access_token=ACCESS_TOKEN&voice_id=xxxxxx&lang=zh_CN
- 微信翻译:POST:http://api.weixin.qq.com/cgi-bin/media/voice/translatecontent?access_token=ACCESS_TOKEN&lfrom=xxx<o=xxx
- 身份证OCR识别:https://api.weixin.qq.com/cv/ocr/idcard?img_url=ENCODE_URL&access_token=ACCESS_TOCKEN
- 银行卡OCR识别:https://api.weixin.qq.com/cv/ocr/bankcard?img_url=ENCODE_URL&access_token=ACCESS_TOCKEN
- 驾驶证OCR识别:https://api.weixin.qq.com/cv/ocr/drivinglicense?img_url=ENCODE_URL&access_token=ACCESS_TOCKEN
- 营业执照OCR识别:https://api.weixin.qq.com/cv/ocr/bizlicense?img_url=ENCODE_URL&access_token=ACCESS_TOCKEN
- 通用印刷体OCR识别:https://api.weixin.qq.com/cv/ocr/comm?img_url=ENCODE_URL&access_token=ACCESS_TOCKEN
- 车牌识别:https://api.weixin.qq.com/cv/ocr/platenum?img_url=ENCODE_URL&access_token=ACCESS_TOCKEN
- 菜单识别:https://api.weixin.qq.com/cv/ocr/menu?img_url=ENCODE_URL&access_token=ACCESS_TOCKEN
- 二维码/条码识别:https://api.weixin.qq.com/cv/img/qrcode?img_url=ENCODE_URL&access_token=ACCESS_TOCKEN
- 图片高清化:https://api.weixin.qq.com/cv/img/superresolution?img_url=ENCODE_URL&access_token=ACCESS_TOCKEN
- 图片智能裁剪:http://api.weixin.qq.com/cv/img/aicrop?img_url=ENCODE_URL&access_token=ACCESS_TOCKEN
微信设备功能
目标用户
- 微信运动手环/记步器生产商
- 微信语音交互玩具生产商
- 微信照片输出设备生产商
- 随身打印设备生产商
- 智能家居生产商(除iBeacon设备生产商)
- 个人健康医疗设备生产商
- 智能路由器生产商
产品接入后能做什么
- 接入微信运动,设备可以向微信上报步数,厂商公众号可以拉入步数排行榜。
- 通过公众号常规接口向设备发送微信消息,语音,文字,图片等。
- 通过硬件设备数据接口向设备发送控制指令,获取设备状态等。
- 用户可以转发微信朋友圈,聊天界面的图片,文档,地图位置给设备。
- 访客加入家庭Wi-Fi时,如果与路由器主人是微信好友,即可快速加入。
- 通过公众号下发消息通知,提醒,告警等。
- 使用微信快速为Wi-Fi设备配置家庭网络。
- 在用户首次使用设备时提供引导说明。
设备如何与微信连接
- 蓝牙设备连接到微信客户端,通过微信客户端与生产商业务服务器通讯。
- 设备通过内嵌微信SDK,与微信服务器通讯。
- 设备连接生产商业务服务器,业务服务器再与微信服务器通讯。
开启设备功能条件
- 硬件生产制造商
- 服务号已经通过微信认证
步骤
- 开启设备功能插件:“添加功能插件”页面中选择开启“设备功能”插件
- 添加产品型号
- 测试账号添加产品
一物一码
- 申请条件
- 已认证的服务号
- 有明确的一物一码赋码场景,期望通过商品赋码实现防伪、溯源、营销、数字化经营等
- 申请渠道
- 从站内信等通知渠道进入申请页
- 从公众号菜单添加功能,进入一物一码,点击申请进入申请页。申请结果将通过预留的联系邮箱通知。
- 接口
- 申请二维码:https://api.weixin.qq.com/intp/marketcode/applycode?access_token=ACCESSTOKEN
- 查询二维码申请单:https://api.weixin.qq.com/intp/marketcode/applycodequery?access_token=ACCESSTOKEN
- 下载二维码包:https://api.weixin.qq.com/intp/marketcode/applycodedownload?access_token=ACCESSTOKE
- 激活二维码:https://api.weixin.qq.com/intp/marketcode/codeactive?access_token=ACCESSTOKEN
- 查询二维码激活状态:https://api.weixin.qq.com/intp/marketcode/codeactivequery?access_token=ACCESSTOKEN
- code_ticket换code接口:https://api.weixin.qq.com/intp/marketcode/tickettocode?access_token=ACCESSTOKEN
微信发票
电子发票
资源下载
微信电子发票方案的开票保存及发票提交能力均支持微信内调用及微信外独立App调用,独立App调用微信电子发票相关能力请下载微信电子发票SDK。
开发票
申请商户接口权限
- 登录公众号后台,在左侧【功能】菜单中找到【添加功能插件】按钮
- 在可添加的功能插件中找到【电子发票】,点击进入电子发票插件介绍页面
- 点击【开通】,激活电子发票功能插件。激活后左侧【功能】菜单中会出现【电子发票】菜单
- 从左侧【功能】菜单【电子发票】入口进入,点击【开通权限】
- 阅读使用协议,确认开通权限
- 权限开通成功,权限部分按钮变为“已开通”
商户+开票平台模式
需要进行的准备
- 前往微信公众平台申请公众号,获取appid和appsecret,用于调用接口。
- 问询开票平台,获取s_pappid
公众号开票
- 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。s_pappid由开票平台通过邮件线下方式提供
- 商户获取获取access_token。调用方法见获取Access token;
- 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
- 商户获取授权页ticket。调用方法见商户接口列表;
- 商户获取授权页url,上一步获取的授权页ticket将作为参数传入。另外,本环节里面作为参数传入的order_id要注意保留,传递给开票平台作为向用户提供电子发票的依据。调用方法见商户接口列表;
- 将授权页url添加到开票按钮上,供点击跳转;
- 商户在后台等待接收用户的授权完成事件,获取授权事件方法见商户接口列表;
- 根据开票平台提供的电子发票开票文档向开票平台发送开票请求,之前在第4步时传入的order_id需作为其中一个参数传递给开票平台,以便开票平台在电子发票开具成功后将发票插入用户微信卡包;
- 开票平台开具电子发票,插入用户卡包。(本步骤由开票平台完成,商户无需开发)
扫码开票
- 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。s_pappid由开票平台通过邮件线下方式提供
- 商家将订单信息按照自身业务逻辑生成二维码,印制到小票上供用户扫描,本步骤根据商户自身业务逻辑生成,不涉及调用微信接口
- 商户获取获取access_token。调用方法见获取Access token;
- 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
- 商户获取授权页ticket。调用方法见商户接口列表; 6 商户获取授权页url,上一步获取的授权页ticket将作为参数传入。另外,本环节里面作为参数传入的order_id要注意保留,传递给开票平台作为向用户提供电子发票的依据。调用方法见商户接口列表;
- 商户在后台等待接收用户的授权完成事件,获取授权事件方法见商户接口列表;
- 根据开票平台提供的电子发票开票文档向开票平台发送开票请求,之前在第4步时传入的order_id需作为其中一个参数传递给开票平台,以便开票平台在电子发票开具成功后将发票插入用户微信卡包;
- 开票平台开具电子发票,插入用户卡包。(本步骤由开票平台完成,商户无需开发)
App开票
- 确认App中已经安装最新版的微信SDK
- 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。s_pappid由开票平台通过邮件线下方式提供
- 商户使用开放平台(open账号)的appid,获取获取access_token。调用方法见获取Access token;
- 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
- 商户获取授权页ticket。调用方法见商户接口列表;
- 商户获取授权页url,上一步获取的授权页ticket将作为参数传入。另外,本环节里面作为参数传入的order_id要注意保留,传递给开票平台作为向用户提供电子发票的依据。调用方法见商户接口列表;
- 使用第5步获得的授权页url(auth_url)作为传入参数,拉起微信客户端打开授权页。iOS端拉起方法见iOS客户端打开授权页、Android拉起方法见Android客户端打开授权页
- 商户在后台等待接收用户的授权完成事件。注意:此阶段用的是公众号的 appid来接收,请不要与开放平台账号的appid混淆。获取授权事件方法见商户接口列表;
- 根据开票平台提供的电子发票开票文档向开票平台发送开票请求,之前在第4步时传入的order_id需作为其中一个参数传递给开票平台,以便开票平台在电子发票开具成功后将发票插入用户微信卡包;
- 开票平台开具电子发票,插入用户卡包。(本步骤由开票平台完成,商户无需开发)
小程序开票
- 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。s_pappid由开票平台通过邮件线下方式提供
- 商户获取获取access_token。调用方法见获取Access token;
- 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
- 商户获取授权页ticket。调用方法见商户接口列表;
- 商户获取授权页url,上一步获取的授权页ticket将作为参数传入。另外,本环节里面作为参数传入的order_id要注意保留,传递给开票平台作为向用户提供电子发票的依据。调用方法见商户接口列表;
- 在小程序开票按钮的点击事件上部署跳转到小程序授权页的逻辑。上一步获得的auth_url和开票小程序appid要作为参数传入。调用方法见商户接口列表;
- 商户在后台等待接收用户的授权完成事件,获取授权事件方法见商户接口列表;
- 根据开票平台提供的电子发票开票文档向开票平台发送开票请求,之前在第4步时传入的order_id需作为其中一个参数传递给开票平台,以便开票平台在电子发票开具成功后将发票插入用户微信卡包;
- 开票平台开具电子发票,插入用户卡包。(本步骤由开票平台完成,商户无需开发)
支付后开票
- 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。s_pappid由开票平台通过邮件线下方式提供
- 商户获取获取access_token。调用方法见获取Access token;
- 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
- 关联商户号和开票平台。本步骤为一次性设置,后续一般在遇到开票平台识别号变更,或者商户更换开票平台时才需要调用本接口重设对应关系。调用方法见商户接口列表;
- 查询关联状态,确认商户号已经和开票平台关联成功。调用方法见商户接口列表;
- 在发起支付请求的时候指定每一笔交易的支付后开票。在步骤3关联了商户号和开票平台后不代表每一笔支付都会出现开票入口,需要通过本步接口进一步制定才能让支付凭证上出现开票入口。调用方法见商户接口列表;
- 商户在后台等待接收用户的授权完成事件,接收授权完成事件所用的appid为商户号关联的appid。获取授权事件方法见商户接口列表;
- 根据开票平台提供的电子发票开票文档向开票平台发送开票请求,在第6步时收到的的SuccOrderId需作为其中一个参数传递给开票平台,以便开票平台在电子发票开具成功后将发票插入用户微信卡包;
- 开票平台开具电子发票,插入用户卡包。(本步骤由开票平台完成,商户无需开发)
自建平台模式
需要进行的准备
- 前往微信公众平台申请公众号,获取appid和appsecret,用于调用接口。
- 获取access_token,详情参考获取access_token。
- 获取ticket,详情参考获取ticket。
- 配置公众号callback,详情参考接收callback推送。
公众号开票
- 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。s_pappid通过调用调用开票平台接口列表接口获得
- 商户获取获取access_token。调用方法见获取Access token;
- 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
- 商户获取授权页ticket。调用方法见商户接口列表;
- 商户获取授权页url,上一步获取的授权页ticket将作为参数传入。另外,本环节里面作为参数传入的order_id要注意保留,传递给开票平台作为向用户提供电子发票的依据。调用方法见商户接口列表;
- 将授权页url添加到开票按钮上,供点击跳转;
- 商户在后台等待接收用户的授权完成事件,获取授权事件方法见商户接口列表;
- 创建发票卡券模板。发票卡券模板应和背后的开票主体构成一一对应关系,便于后续若开票主体发生变化时,可以便捷修改。调用方法见开票平台接口列表;
- 在自建发票平台开具电子发票;
- 上传发票PDF文件。此步骤获得的s_media_id起到关联PDF和发票卡券的作用,将作为参数在下一步的插卡接口中传入。调用方法见开票平台接口列表;
- 将电子发票添加到用户微信卡包。调用方法见将电子发票卡券插入用户卡包。
扫码开票
- 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。s_pappid通过调用调用开票平台接口列表接口获得
- 商家将订单信息按照自身业务逻辑生成二维码,印制到小票上供用户扫描,本步骤根据商户自身业务逻辑生成,不涉及调用微信接口
- 商户获取获取access_token。调用方法见获取获取Access token;
- 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
- 商户获取授权页ticket。调用方法见商户接口列表;
- 商户获取授权页url,上一步获取的授权页ticket将作为参数传入。另外,本环节里面作为参数传入的order_id要注意保留,传递给开票平台作为向用户提供电子发票的依据。调用方法见商户接口列表;
- 商户在后台等待接收用户的授权完成事件,获取授权事件方法见商户接口列表;
- 创建发票卡券模板。发票卡券模板应和背后的开票主体构成一一对应关系,便于后续若开票主体发生变化时,可以便捷修改。调用方法见开票平台接口列表;
- 在自建发票平台开具电子发票;
- 上传发票PDF文件。此步骤获得的s_media_id起到关联PDF和发票卡券的作用,将作为参数在下一步的插卡接口中传入。调用方法见开票平台接口列表;
- 将电子发票添加到用户微信卡包。调用方法见开票平台接口列表。
App开票
- 确认App中已经安装最新版的微信SDK
- 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。s_pappid通过调用调用开票平台接口列表接口获得
- 商户使用开放平台(open账号)的appid,获取获取access_token。调用方法见获取Access token;
- 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
- 商户获取授权页ticket。调用方法见开票平台接口列表;
- 商户获取授权页url,上一步获取的授权页ticket将作为参数传入。另外,本环节里面作为参数传入的order_id要注意保留,传递给开票平台作为向用户提供电子发票的依据。调用方法见商户接口列表;
- 使用第5步获得的授权页url(auth_url)作为传入参数,拉起微信客户端打开授权页。iOS端拉起方法见iOS客户端打开授权页、Android拉起方法见Android客户端打开授权页
- 商户在后台等待接收用户的授权完成事件。注意:此阶段用的是公众号的 appid来接收,请不要与开放平台账号的appid混淆。获取授权事件方法见商户接口列表;
- 创建发票卡券模板。发票卡券模板应和背后的开票主体构成一一对应关系,便于后续若开票主体发生变化时,可以便捷修改。调用方法见开票平台接口列表;
- 在自建发票平台开具电子发票;
- 上传发票PDF文件。此步骤获得的s_media_id起到关联PDF和发票卡券的作用,将作为参数在下一步的插卡接口中传入。调用方法见开票平台接口列表;
- 将电子发票添加到用户微信卡包。调用方法见开票平台接口列表。
小程序开票
- 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。s_pappid通过调用调用开票平台接口列表接口获得
- 商户获取获取access_token。调用方法见获取获取Access token;
- 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
- 商户获取授权页ticket。调用方法见商户接口列表;
- 商户获取授权页url,上一步获取的授权页ticket将作为参数传入。另外,本环节里面作为参数传入的order_id要注意保留,传递给开票平台作为向用户提供电子发票的依据。调用方法见商户接口列表;
- 在小程序开票按钮的点击事件上部署跳转到小程序授权页的逻辑。上一步获得的auth_url和开票小程序appid要作为参数传入。调用方法见商户接口列表;
- 商户在后台等待接收用户的授权完成事件,获取授权事件方法见商户接口列表;
- 创建发票卡券模板。发票卡券模板应和背后的开票主体构成一一对应关系,便于后续若开票主体发生变化时,可以便捷修改。调用方法见开票平台接口列表;
- 在自建发票平台开具电子发票;
- 上传发票PDF文件。此步骤获得的s_media_id起到关联PDF和发票卡券的作用,将作为参数在下一步的插卡接口中传入。调用方法见开票平台接口列表;
- 将电子发票添加到用户微信卡包。调用方法见开票平台接口列表。
支付后开票
- 提前获取开票平台标识s_pappid,因为同一个开票平台的s_pappid都相同,所以获取s_pappid的操作只需要进行一次。s_pappid通过调用调用开票平台接口列表接口获得
- 商户获取获取access_token。调用方法见获取Access token;
- 设置商户联系方式。调用方法见商户接口列表。注意,本步骤不能忽略,否则将造成下一步获取授权页报错;
- 关联商户号和开票平台。本步骤为一次性设置,后续一般在遇到开票平台识别号变更,或者商户更换开票平台时才需要调用本接口重设对应关系。调用方法见商户接口列表;
- 查询关联状态,确认商户号已经和开票平台关联成功。调用方法见商户接口列表;
- 在发起支付请求的时候指定每一笔交易的支付后开票。在步骤3关联了商户号和开票平台后不代表每一笔支付都会出现开票入口,需要通过本步接口进一步制定才能让支付凭证上出现开票入口。调用方法见商户接口列表;
- 商户在后台等待接收用户的授权完成事件,接收授权完成事件所用的appid为商户号关联的appid。获取授权事件方法见商户接口列表;
- 查询用户开票信息。根据用户授权完成事件中获得的order_id 与 s_pappid,查询用户开票信息。调用方法见商户接口列表;
- 创建发票卡券模板。发票卡券模板应和背后的开票主体构成一一对应关系,便于后续若开票主体发生变化时,可以便捷修改。调用方法见开票平台接口列表;
- 在自建发票平台开具电子发票;
- 上传发票PDF文件。此步骤获得的s_media_id起到关联PDF和发票卡券的作用,将作为参数在下一步的插卡接口中传入。调用方法见开票平台接口列表;
- 将电子发票添加到用户微信卡包。调用方法见将电子发票卡券插入用户卡包。
电子发票报销
在微信公众号/小程序提交电子发票报销
- 获取公众平台账号/企业微信账号的access_token,调用方法见获取access_token
- 拉起发票列表页,调用方法见微信公众号拉起发票列表 微信小程序拉起发票列表
- 待用户在发票列表页勾选发票,所选发票的card_id和encrypt_code会以js回调的形式返回;
- 根据card_id和encrypt_code查询发票信息,调用方法见查询报销发票信息;
- 根据企业自身报销流程将发票信息转换成报销单,本步骤不需要调用微信接口;
- 提交报销单,将发票状态更新为“已锁定”,避免发票被重复报销,调用方法见报销方更新发票状态,如果报销多张发票,可以调用报销方批量更新发票状态接口进行更新;
- 完成报销流程后,将发票状态更新为“已报销”。调用方法见报销方更新发票状态,如果报销多张发票,可以调用报销方批量更新发票状态接口进行更新
在企业微信/企业号提交电子发票报销
- 获取企业微信/企业号账号的access_token,调用方法见获取access_token
- 拉起发票列表页。企业微信2.1新增了选择电子发票的js-API接口,使用企业微信的企业将企业微信更新至2.1以上版本后,可快速实现在企业微信中选中电子发票的功能。调用方法见企业微信拉起发票列表
- 待用户在发票列表页勾选发票,所选发票的card_id和encrypt_code会以js回调的形式返回;
- 根据card_id和encrypt_code查询发票信息,调用方法见查询报销发票信息;
- 根据企业自身报销流程将发票信息转换成报销单,本步骤不需要调用微信接口;
- 提交报销单,将发票状态更新为“已锁定”,避免发票被重复报销,调用方法见报销方更新发票状态,如果报销多张发票,可以调用报销方批量更新发票状态接口进行更新;
- 完成报销流程后,将发票状态更新为“已报销”。调用方法见报销方更新发票状态,如果报销多张发票,可以调用报销方批量更新发票状态接口进行更新
在外部App提交电子发票报销
- 获取开放平台账号的access_token,调用方法见获取Access token
- 拉起发票列表页,调用方法见报销方接口列表
- 待用户在发票列表页勾选发票,所选发票的card_id和encrypt_code会以js回调的形式返回;
- 根据card_id和encrypt_code查询发票信息,调用方法见报销方接口列表;
- 根据企业自身报销流程将发票信息转换成报销单,本步骤不需要调用微信接口;
- 提交报销单,将发票状态更新为“已锁定”,避免发票被重复报销,调用方法见报销方接口列表接口进行更新;
- 完成报销流程后,将发票状态更新为“已报销”。调用方法见报销方接口列表接口进行更新
扫码提交电子发票报销
- 维护二维码,展示在报销系统PC端页面上,供用户使用使用微信、企业微信或独立报销APP扫码后,打开相应报销页面,向报销系统提交微信电子发票。报销系统获取到发票信息后,员工继续在PC端完成后续报销流程;
- 获取公众平台账号/企业微信账号的access_token,调用方法见获取Access token
- 拉起发票列表页,调用方法见报销方接口列表
- 待用户在发票列表页勾选发票,所选发票的card_id和encrypt_code会以js回调的形式返回;
- 根据card_id和encrypt_code查询发票信息,调用方法见报销方接口列表;
- 根据企业自身报销流程将发票信息转换成报销单,本步骤不需要调用微信接口;
- 提交报销单,将发票状态更新为“已锁定”,避免发票被重复报销,调用方法见报销方接口列表接口进行更新;
- 完成报销流程后,将发票状态更新为“已报销”。调用方法见报销方接口列表接口进行更新
商户接口
- 获取授权页ticket:GET:https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card
- 获取授权页链接:POST:https://api.weixin.qq.com/card/invoice/getauthurl?access_token={access_token}
- 小程序打开授权页:在小程序中调用wx.navigateToMiniProgram方法
- ios客户端打开授权页:调用sendReq接口
- android客户端打开授权页:调用sendReq接口
- 收取授权完成事件推送
- 查询授权完成状态:POST:https://api.weixin.qq.com/card/invoice/getauthdata?access_token={access_token}
- 拒绝开票:POST:https://api.weixin.qq.com/card/invoice/rejectinsert?access_token={access_token}
- 设置授权页字段信息:POST:https://api.weixin.qq.com/card/invoice/setbizattr?action=set_auth_field&access_token={access_token}
- 查询授权页字段信息:POST:https://api.weixin.qq.com/card/invoice/setbizattr?action=get_auth_field&access_token={access_token}
- 关联商户号与开票平台:POST:https://api.weixin.qq.com/card/invoice/setbizattr?action=set_pay_mch&access_token={access_token}
- 查询商户号与开票平台关联情况:POST:https://api.weixin.qq.com/card/invoice/setbizattr?action=get_pay_mch&access_token={access_token}
- 指定单笔交易支持支付后开票:商户在支付接口(统一下单/提交刷卡支付/委托代扣)中新增提交receipt字段作为标识需要开电子发票
- 统一开票接口-开具蓝票:POST:https://api.weixin.qq.com/card/invoice/makeoutinvoice?access_token={access_token}
- 统一开票接口-发票冲红:POST:https://api.weixin.qq.com/card/invoice/clearoutinvoice?access_token={access_token}
- 统一开票接口-查询已开发票:POST:https://api.weixin.qq.com/card/invoice/queryinvoceinfo?access_token={access_token}
- 设置商户联系方式:POST:https://api.weixin.qq.com/card/invoice/setbizattr?action=set_contact&access_token={access_token}
- 查询商户联系方式:POST:https://api.weixin.qq.com/card/invoice/setbizattr?action=get_contact&access_token={access_token}
- 统一开票接口-异步通知开票结果
开票平台接口
- 获取自身的开票平台识别码:POST:https://api.weixin.qq.com/card/invoice/seturl?access_token={access_token}
- 创建发票卡券模板:POST:https://api.weixin.qq.com/card/invoice/platform/createcard?access_token={access_token}
- 上传PDF:POST:https://api.weixin.qq.com/card/invoice/platform/setpdf?access_token={access_token}
- 查询已上传的PDF文件:POST:https://api.weixin.qq.com/card/invoice/platform/getpdf?action=get_url&access_token={access_token}
- 将电子发票卡券插入用户卡包:POST:https://api.weixin.qq.com/card/invoice/insert?access_token={access_token}
- 更新发票卡券状态:POST:https://api.weixin.qq.com/card/invoice/platform/updatestatus?access_token={access_token}
- 发票状态更新事件推送
- 解码code接口:POST:https://api.weixin.qq.com/card/code/decrypt?access_token={access_token}
报销方接口
- 微信公众号拉起发票列表:调用chooseInvoice接口
- 微信小程序拉起发票列表
- 企业微信拉起发票列表
- 外部App拉起发票列表
- 查询报销发票信息:POST:https://api.weixin.qq.com/card/invoice/reimburse/getinvoiceinfo?access_token={access_token}
- 批量查询报销发票信息:POST:https://api.weixin.qq.com/card/invoice/reimburse/getinvoicebatch?access_token={access_token}
- 报销方更新发票状态:POST:https://api.weixin.qq.com/card/invoice/reimburse/updateinvoicestatus?access_token={access_token}
- 报销方批量更新发票状态:POST:https://api.weixin.qq.com/card/invoice/reimburse/updatestatusbatch?access_token={access_token}
极速开发票接口
- 将发票抬头信息录入到用户微信中:POST:https://api.weixin.qq.com/card/invoice/biz/getusertitleurl?access_token={access_token}
- 获取用户抬头(方式一):获取商户专属二维码,立在收银台:POST:https://api.weixin.qq.com/card/invoice/biz/getselecttitleurl?access_token={access_token}
- 获取用户抬头(方式二):商户扫描用户的发票抬头二维码:POST:https://api.weixin.qq.com/card/invoice/scantitle?access_token={access_token}
- 获取用户抬头(方式三):通过jsapi接口,H5获取用户的已保存在微信的抬头信息
- wx.config 的时候传入参数 beta: true
- wx.invoke(name, args, callback),其中 name 是接口名,args 是参数对象,callback 是回调函数
- 接收用户提交的抬头
电子发票自助打印接口
开发准备
- 拥有微信服务号,并且已完成认证
- 拥有可以联网的打印机
- 拥有云端后台,可以对打印机发出指令
拉起发票列表(微信内):JS-SDK
拉起发票列表(外部App):APP-openSDK
查询发票信息并获取PDF文档:POST:https://api.weixin.qq.com/card/invoice/reimburse/getinvoiceinfo?access_token={access_token}
发票状态:POST:https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card
查询报销发票信息:POST:https://api.weixin.qq.com/card/invoice/reimburse/getinvoiceinfo?access_token={access_token}
查询报销发票信息:POST:https://api.weixin.qq.com/card/invoice/reimburse/getinvoiceinfo?access_token={access_token}
查询报销发票信息:POST:https://api.weixin.qq.com/card/invoice/reimburse/getinvoiceinfo?access_token={access_token}
查询报销发票信息:POST:https://api.weixin.qq.com/card/invoice/reimburse/getinvoiceinfo?access_token={access_token}
查询报销发票信息:POST:https://api.weixin.qq.com/card/invoice/reimburse/getinvoiceinfo?access_token={access_token}
查询报销发票信息:POST:https://api.weixin.qq.com/card/invoice/reimburse/getinvoiceinfo?access_token={access_token}
查询报销发票信息:POST:https://api.weixin.qq.com/card/invoice/reimburse/getinvoiceinfo?access_token={access_token}
非税票据
接入模式
执收单位+财政局模式
执收单位负责获取用户授权开票,财政局负责开财政电子票据,并且添加到用户卡包,适用于执收单位和财政局相互独立的场景。
自建平台模式
自建平台既负责执收单位的职责,也负责财政局的职责。适用于同一个角色负责获取用户授权和开票的场景。
执收单位接入需要准备的信息
- 前往微信公众平台申请公众号,获取appid和appsecret,用于调用接口。
- 获取access_token,详情参考接口列表。
- 获取ticket。
- 配置公众号callback,详情参考接口列表。
- 申请执收单位公众号接口权限: 执收单位申请微信财政电子票据权限,需发送以下信息至[email protected]进行申请。
- 如果是app开财政电子票据,需要先前往微信开放平台申请账号,创建应用,获取appid和appsecret。另外,需发送以下信息至[email protected]进行接口权限申请。
- 找财政局提供s_pappid
财政局接入需要准备的信息
- 前往微信公众平台申请公众号,获取appid和appsecret,用于调用接口。
- 获取access_token。
- 配置公众号callback。
- 申请财政局接口权限:
- 获取s_pappid,并提供给执收单位。同一个财政局的s_pappid是一样的,所以只需要调用一次接口,并保存起来。
- 创建财政电子票据模板card_id,同一个财政局可以对应多个执收单位,同一个执收单位,使用同一个card_id,不同的执收单位,使用不同的card_id
自建平台接入需要准备的信息
自建平台既负责执收单位的职责,也负责财政局的职责,所以需要准备以上执收单位和财政局需要准备的信息。参考执收单位接入需要准备的信息和财政局接入需要准备的信息。
公众号取票
- 财政局获取s_pappid,并提供给执收单位。同一个财政局的s_pappid是一样的,所以只需要调用一次接口,并保存起来。
- 执收单位获取access_token
- 执收单位获取ticket
- 执收单位获取授权页链接
- 执收单位将授权页链接提供给用户,用户点击授权,用户打开授权页面
- 执收单位接收用户授权的callback,得知用户授权领取财政电子票据,通知财政局领取财政电子票据。
- 财政局创建财政电子票据模板card_id,同一个财政局可以对应多个执收单位,同一个执收单位,使用同一个card_id,不同的执收单位,使用不同的card_id
- 财政局将财政电子票据pdf上传到微信财政电子票据平台
- 财政局检查上传到微信财政电子票据平台的pdf
- 财政局给用户添加财政电子票据
app取票
- 财政局获取s_pappid,并提供给执收单位。同一个财政局的s_pappid是一样的,所以只需要调用一次接口,并保存起来。
- 执收单位获取access_token
- 执收单位获取ticket
- 执收单位获取授权页链接
- 执收单位在app跳转到微信的授权页面,让用户点击授权
- 由于开放平台账号没有接受callback的能力,所以由执收单位的公众号接收用户授权的callback,得知用户授权领取财政电子票据,通知财政局领取财政电子票据
- 财政局创建财政电子票据模板card_id,同一个财政局可以对应多个执收单位,同一个执收单位,使用同一个card_id,不同的执收单位,使用不同的card_id
- 财政局将财政电子票据pdf上传到微信财政电子票据平台
- 财政局检查上传到微信财政电子票据平台的pdf
- 财政局给用户添加财政电子票据
接口
通用接口
执收单位接口
财政局接口
- 获取财政局s_pappid:POST:https://api.weixin.qq.com/card/invoice/seturl?access_token={access_token}
- 创建财政电子票据接口:POST:https://api.weixin.qq.com/nontax/createbillcard?access_token={access_token}
- 上传pdf:POST:https://api.weixin.qq.com/card/invoice/platform/setpdf?access_token={access_token}
- 获取pdf:POST:https://api.weixin.qq.com/card/invoice/platform/getpdf?access_token={access_token}
- 将财政电子票据添加到用户微信卡包:POST:https://api.weixin.qq.com/nontax/insertbill?access_token={access_token}
- 状态更新事件推送
- 更新电子票据状态:POST:https://api.weixin.qq.com/card/invoice/platform/updatestatus?access_token={access_token}
- 将财政电子票据添加到用户微信卡包:POST:https://api.weixin.qq.com/nontax/insertbill?access_token={access_token}
非税缴费
非税收入:除税收以外,由各级政府、事业单位提供公共服务取得的财政性资金。例如:出入境、身份证等办证费用,交警、工商、物价等罚没收入,市政公园、国家景区旅游门票等。
接入模式
- 银行直连模式
- 财政直连模式
- 业务直连模式
接入方需准备
- 公众号的 APPID 和APPSECRET主要用于获取 access_token。
- 开发者需要提供公众号的APPID给微信非税支付的对接人配置接口权限。
- 微信网页授权
- 设置网页授权回调域名:公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。
- 网页授权
- 引导用户进入授权页面同意授权,获取code
- 通过code换取网页授权access_token(与基础支持中的access_token不同)
- 如果需要,开发者可以刷新网页授权access_token,避免过期
- 通过网页授权access_token和openid获取用户基本信息
- 支付结果通知接口
- 查询应收信息接口
- 调用退款接口的 IP 地址
非微信浏览器上的 H5非税支付
在非微信浏览器上打开的 H5 无法获取用户 openid,下单时openid 不用传,trade_type 传 MWEB。
必须保证下单传入的用户IP和最终发起微信支付的用户IP是一致的
华为浏览器、UC浏览器会通过代理服务器访问互联网,每次请求IP可能会改变。因此不能通过安全检查
APP 发起非税支付
需要调用微信的SDK来拉起微信并在微信内打开支付链接
接口
- 查询应收信息(提供给委办局):https://api.weixin.qq.com/nontax/queryfee?access_token=$AccessToken
- 支付下单(提供给委办局):https://api.weixin.qq.com/nontax/unifiedorder?access_token=$AccessToken
- 查询订单(提供给委办局、银行、财政):https://api.weixin.qq.com/nontax/getorder?access_token=$AccessToken
- 申请退款(提供给银行):https://api.weixin.qq.com/nontax/refund?access_token=$AccessToken
- 下载对帐单(提供给银行):https://api.weixin.qq.com/nontax/downloadbill?access_token=$AccessToken
- 通知不一致订单(提供给财政):https://api.weixin.qq.com/nontax/notifyinconsistentorder?access_token=$AccessToken
- 测试支付结果通知:https://api.weixin.qq.com/nontax/mocknotification?access_token=$AccessToken
- 测试查询应收信息:https://api.weixin.qq.com/nontax/mockqueryfee?access_token=$AccessToken
- 提交刷卡支付请求后微信会同步返回支付结果。 接口返回系统失败时,等待5秒重新调用看返回码。 当结果返回用户支付中需要输入密码时,可每间隔一段时间(建议10秒)重新调用该接口,直到有明确成功、失败,或者超时(建议30秒):https://api.weixin.qq.com/nontax/micropay?access_token=$AccessToken
- 查询订单列表:https://api.weixin.qq.com/nontax/getorderlist?access_token=$AccessToken
- 获取用户IP:https://mp.weixin.qq.com/intp/getuserclientip
- 获取授权链接:POST:https://api.weixin.qq.com/intp/realname/getauthurl?access_token=ACCESS_TOKEN
- 获取实名信息:POST:https://api.weixin.qq.com/nontax/getrealname?access_token=ACCESS_TOKEN
- 微信非税平台提供的接口(车主服务后台)
- 用户状态查询:在停车场、高速、加油等场景下,商户需获取用户车主服务状态/需要关联车主服务。本接口,会查询用户是否开通、授权、有欠费或黑名单用户情况,并将对应的用户状态进行返回。https://api.weixin.qq.com/nontax/vehicle/querystate?access_token=$AccessToken
- 在停车场场景下,如用户已加入车主平台,则进行入场通知;如用户已经欠费,会发送用户欠费入场通知。https://api.weixin.qq.com/nontax/vehicle/entrancenotify?access_token=$AccessToken
- 例如高速,停车场等通过用户授权给商户,进行委托扣款的场景。https://api.weixin.qq.com/nontax/vehicle/payapply?access_token=$AccessToken
- 小程序跳转接口调用请求:wx.navigateToMiniProgram(OBJECT)
- APP跳转接口调用请求:使用用户状态查询接口返回的path和authorize_package参数拼接WXLaunchMiniProgram.Req的path参数