Q:用户扫描带参数的二维码后,公众号如何知道用户是关注还是已关注?
A:这取决于扫描时用户与公众号的关系。如果用户还未关注,扫描后关注公众号,微信服务器会向你的公众号后端发送一个带有 Event 为 subscribe(关注)的事件推送,并且 EventKey 字段会包含特定的场景值(格式如 qrscene_123)。如果用户已经关注了公众号,扫描后则会触发 Event 为 SCAN 的事件推送,此时的 EventKey 字段直接就是对应的场景值(如 123)。你的服务器接收到这些XML数据包后,解析 Event 和 EventKey 字段即可做出不同响应,比如向新关注用户发送欢迎语,向已关注用户推送特定内容。

——

Q:生成临时二维码和永久二维码,在技术和应用上有什么主要区别?
A:主要区别在于有效期和生成数量。临时二维码设有过期时间,最长可设置为30天(2592000秒),适合短期活动,但生成数量上限较高。永久二维码则没有过期时间,但生成数量有限制(目前最多为10万个),更适合用于需要长期放置的渠道,如线下宣传物料或用户账号绑定。在生成时,临时二维码的 action_name 使用 QR_SCENE 或 QR_STR_SCENE,而永久二维码则使用 QR_LIMIT_SCENE 或 QR_LIMIT_STR_SCENE。需要注意的是,使用字符串参数(scene_str)的永久二维码(QR_LIMIT_STR_SCENE)在场景值设置上可能更灵活。

——

Q:生成一个能正常使用的带参数二维码,最基本的步骤是哪几步?
A:核心步骤有三步,关键在于获取访问凭证和正确调用接口。首先,你需要获取有效的 access_token,这是调用所有微信公众平台接口的必备凭证,通常通过向微信服务器发送GET请求,并传入公众号的 AppID 和 AppSecret 来获取。接着,创建二维码ticket,向接口 https://api.weixin.qq.com/cgi-bin/qrcode/create 发送POST请求,携带 access_token 和定义二维码类型、场景值等参数的JSON数据。最后,使用ticket换取二维码图片,通过GET请求访问 https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET(注意TICKET需要进行UrlEncode),即可得到最终的二维码图片。整个过程需要你的公众号已经是认证服务号,因为部分接口权限可能对未认证的订阅号有限制。

延伸问题:测试时生成的二维码扫了没反应怎么办?
可以先检查几个常见点:生成的 ticket 是否在有效期内(特别是临时二维码);换取二维码图片时,ticket 是否进行了正确的URL编码;以及公众号服务器的网络环境能否正常接收微信的事件推送。

适用情况:本文所述方法主要适用于已认证的微信公众号(特别是服务号)进行渠道管理或用户绑定。不适用情况:未认证的订阅号可能功能受限,个人或非认证账号需特别注意。所有信息基于当前微信公众平台接口规则,仅供参考,具体请以官方最新文档为准。

下一步可以尝试在你的测试公众号上,为一个简单的场景(如回复特定文章链接)生成一个临时二维码进行完整流程验证。