OPENID 03

获取用户 Openid

在微信内置浏览器中通过网页授权静默获取用户 Openid,全程无需签名,系统自动处理授权流程。

接口地址https://api.alldaypay.cn/api/openid
请求方式GET(浏览器跳转)
签名方式无需签名

调用流程

无需关注具体获取过程,系统自动处理:商户引导浏览器跳转接口地址,平台 302 至微信网页授权,静默授权后自动携带 openid 回跳至 callback_url。

请求参数

字段名称变量名必填类型描述
商户号mchid是String(32)
回调地址callback_url是String接收 openid 的 url,必须为 HTTPS 地址,域名需在商户后台「授权域名」中已添加,不能带 session 验证、csrf 验证

回跳参数

授权完成后,微信浏览器会自动跳转至 callback_url,并附加以下参数:

字段名称变量名类型描述
用户 OpenidopenidString用户在此公众号下的唯一标识,成功时返回
错误信息openid_errorString仅获取失败时返回,可能值:network_error(网络异常)、auth_failed(微信授权失败)

请求示例

假如需要接收 openid 的 url 是:

https://www.example.com/abc?uid=32

则直接通过浏览器跳转该 url 即可:

https://api.alldaypay.cn/api/openid?mchid=1006&callback_url=https://www.example.com/abc?uid=32

完成 openid 获取后,微信浏览器会自动跳转至:

https://www.example.com/abc?uid=32&openid=oXXXXXXXXXXXXXXXXX

回调域名要求

  • 必须为 HTTPS 协议,不支持 HTTP 和 IP 地址
  • 域名必须在商户后台「授权域名」中已添加,支持通配符(如 *.example.com 同时匹配裸域和子域名)
  • 不能使用平台自身域名(如 api.alldaypay.cn)作为回调
  • 删除授权域名后立即生效,无缓存延迟

限制说明

  • 限流:同一商户号 + IP 每分钟最多 60 次请求
  • state 有效期 120 秒,超时需重新发起
  • 商户状态必须为正常(status=1),禁用商户无法调用
注意:该接口不能在小程序中直接使用;不能在微信开发者工具里调试,需真机调试。callback_url 必须是 HTTPS 且域名已授权,请确保该地址可公网直接访问。
提示:该 openid 具备唯一性,可做映射关系存储在本地数据库,例如建表 user_openid(uid, openid, mchid, created_at),以「商户号 + openid」为唯一键关联用户。