重庆互联网,19年企业互联网解决经验,专业网站开发、移动端开发、微信端开发、小程序开发!
重庆网络推广公司

微信云托管教程(四十四):开放接口服务(二)

作者:重庆互联网小徐 发布时间:2023-11-29 浏览:12401 赞(2904 收藏 评论(0)

三、本地调试中如何使用「开放接口服务」

使用 VSCode 插件,可以在支持 Docker 环境的系统进行本地调试云调用。

(一)快速开始

  1. 如果未安装 VSCode,请下载 VSCode

  2. 在 VSCode 拓展栏搜索 weixin-cloudbase 然后安装。

  3. 完成配置后,在左侧 Docker 面板内,右击 Proxy nodes for VPC access 中的 api.weixin.qq.com,点击启动(Start)。

  4. 右击用户容器,点击启动(Start),容器内即可访问本地云调用。

更新vscode插件到最新版,启动自己的业务服务,在业务服务运行过程中,启动vpc中的 api.weixin.qq.com 服务,或者先启动api.weixin.qq.com 服务,再启动业务服务,没有先后限制。

插件将会在你的云托管环境中开启一个代理服务,用于和本地 api.weixin.qq.com 服务,同时和业务服务共享同一个网络,就实现了本地的「开放接口服务」,需要注意,本地调试中只是模拟了业务服务的所处环境,不是真实的线上部署情况。

(二)常见问题

1. 如何确定请求经过本地云调用?
  • 请求头返回了 x-openapi-seqid

  • 请求解析到的地址为 Docker 内部地址(如 10.0.0.2)。

2. 是否支持 HTTPS 云调用?

由于技术原因,本地调试暂不支持 HTTPS 云调用,需要先暂时使用 HTTP 协议进行本地调试。

3. 为何不支持外网直接访问开放接口服务?

为保证小程序凭证以及小程序敏感接口安全,开放接口服务不允许外网直接访问。 通过本地云调用,会启动与线上版本能力一致的调试镜像,且通过本地调试可以安全地访问内网 VPC 接口。

四、服务使用示例

以「获取当前小程序的业务域名」为例。

使用 cURL 请求地址:

curl -v http://api.weixin.qq.com/wxa/getwxadevinfo

返回 errcode 为 0,代表请求成功。

各语言的调用形式仅供参考,根据具体库和语言版本的不同,可能存在一定差别。

语言/框架调用示例代码备注
Java
HttpRequest.newBuilder()
    .uri(URI.create("http://api.weixin.qq.com/wxa/getwxadevinfo"))
    .build();
Java HttpClient (Java 11+)
Go
resp, err := http.Get("http://api.weixin.qq.com/wxa/getwxadevinfo")
-
C#
new HttpClient().GetAsync("http://api.weixin.qq.com/wxa/getwxadevinfo");
.NET SDK 5.0+
NodeJS
request('http://api.weixin.qq.com/wxa/getwxadevinfo', console.log)
request
Python
import requests
response = requests.get("http://api.weixin.qq.com/wxa/getwxadevinfo")
requests

开放接口服务调用微信支付相关例子,参见指引文档

使用云托管获取用户手机号

使用云托管结合开放接口服务,服务端可以无需加解密逻辑,免鉴权获取用户手机号(需要小程序拥有相关权限,且用户确认允许获取)。使用类似的方法,也可以获取用户的步数等数据。

使用步骤如下:

  1. 开启「开放接口服务」,配置接口 /wxa/getopendata 到权限列表中。

  2. 在小程序中使用 <button open-type="getPhoneNumber"> 获取用户手机号。

  3. 将按钮回调中的 CloudID 发送到云托管服务,后台换取手机号信息。

参考代码如下:

云托管端(Express.js 示例)

// 需要使用 body-parser 处理 JSON 数据 // 示例路径为 /phone,根据业务场景可自行修改 app.post('/phone', (req, res) => {   // 拼接 Header 中的 x-wx-openid 到接口中   const api = `http://api.weixin.qq.com/wxa/getopendata?openid=${req.headers['x-wx-openid']}`;   request(api, {     method: 'POST',     body: JSON.stringify({       cloudid_list: [req.body.cloudid], // 传入需要换取的 CloudID     }),     headers: {       'Content-Type': 'application/json',     },   }, (err, resp, body) => {     try {       const data = JSON.parse(body).data_list[0]; // 从回包中获取手机号信息       const phone = JSON.parse(data.json).data.phoneNumber;       // 将手机号发送回客户端,此处仅供示例       // 实际场景中应对手机号进行打码处理,或仅在后端保存使用       res.send(phone);     } catch (error) {       res.send('get phone failed');     }   }); });

小程序端

getPhoneNumber (e) {   wx.cloud.callContainer({       "config": {         "env": "环境ID" // 修改为云托管的环境ID       },       "path": "/phone", // 与服务端的 Path 相同,示例为 /phone       "header": {         "X-WX-SERVICE": "服务名称", // 修改为服务名称         "content-type": "application/json"       },       "method": "POST",       "data": {           cloudid: e.detail.cloudID,       }     }).then(res => console.log('用户的手机号为:', res.data)); },

示例输出如下:

用户的手机号为:xxxxxx

—————————————————————————————————————————————————————

        重庆互联网项目从2004年开始为各行各业提供互联网发展解决方案,专业从事网站、小程序、微信公众号、APP、电商平台、系统等互联网平台开发,帮助企业实现从传统行业到互联网的完美转型。截止目前,重庆互联网合作的企业遍布全国各地,19年的开发经验和完善的售后服务体系获得合作客户的高度认可!

关注重庆互联网官方公众号,即可获取粉丝专享福利!

重庆互联网公众号二维码.jpg

网友留言评论
我要评论
评论

欢迎广大用户为此页面进行评价,评价成功将获得积分奖励!

  • 赞(0
    踩(0
重庆网站定制建设
  • 重庆网站建设平台
  • 重庆网站优化公司
  • 重庆网络推广公司哪家好
  • 重庆APP制作公司
版权所有 ©2004-2024 重庆市渝中区圣灵科技信息有限公司 渝ICP备16004600号-14 渝公网安备50010802001420号 电子营业执照
重庆公众号制作哪家好
二维码
联系客服 重庆商城网站建设