# 资源复用

很多业务情况下,我们需要在多个小程序或公众号中提供统一的后端服务;微信云托管目前支持将一个「小程序/小游戏/公众号」的云托管环境共享给同主体的其他「小程序/小游戏/公众号」。 设置资源复用时,被复用方不需要也开通微信云托管。即从理论上来说,同一个主体的多个小程序/公众号,只需开通一个云托管即可,避免创建过多帐号。

# 操作指引

  1. 前往微信云托管控制台 - 资源复用页面,登录共享环境所在的账号。
  1. 点击右上角「关联」按钮,将会弹出对话框,在对话框中输入需要共享的账号APPID,如果条件符合,将展示 logo 和名称用于确认。
  1. 另外,选择共享的环境,可以选择多个,确认信息后点击「确定」按钮。

  2. 关联中会弹出管理员扫码确认框,需要当前账号下的微信管理员扫码确认方可。

  3. 确认完成后,将在列表中显示信息,你可以进行「配置」用于变更环境,也可以操作「解绑」解除复用关系。每项操作均需要管理员扫码确认。

  4. 如需添加关联账号的相关开发者,可前往当前账号 MP 后台将相关开发者加为 web 开发者/项目成员即可。

# 云端调试

共享环境后,在共享环境所在的服务中,云端调试可以切换账号主体,相应的就可以用指定账号发起调用测试,也可以复制关键代码直接用于开发。

# 各端应用调用

资源复用下小程序中调用,需要在 wx.cloud.init 中填写环境来源的账号appid,

例如,小程序A(appid:WXAAA)的环境 prod_001 授权给 小程序B(appid:WXBBB),则应是如下:

const c1 = new wx.cloud.Cloud({
  resourceAppid: 'WXAAA', // 环境所属的账号appid
  resourceEnv: 'prod_001', // 微信云托管的环境ID
})
await c1.init()
await c1.callContainer({
  config: {
    env: 'prod_001', // 微信云托管的环境ID
  },
  path: '/xxx', // 填入业务自定义路径和参数,根目录,就是 / 
  method: 'POST', // 按照自己的业务开发,选择对应的方法
  header: {
    'X-WX-SERVICE': 'xxx', // xxx中填入服务名称(微信云托管 - 服务管理 - 服务列表 - 服务名称)
    // 其他 header 参数
  }
  // 其余参数同 wx.request
})

如果你在小程序中进行对象存储相关操作,请参考对象存储文档,参看资源复用章节

资源复用下公众号中调用,请参考公众号调用文档

# 资源复用下的开放接口调用

使用资源复用进行开放接口调用时,需要额外携带调用方的 AppID 信息进行调用,示例如下。

# 原接口形式
api.weixin.qq.com/wxa/getwxadevinfo

# 资源复用的形式
api.weixin.qq.com/wxa/getwxadevinfo?from_appid=APPID

如果没有携带 from_appid,默认会以调用方的身份去进行服务端调用。建议在业务代码内判断需要的资源方身份,并在调用时显式携带 from_appid 参数。

如果请求来自小程序,可以将用户请求中的 x-wx-from-appid 透传至 api.weixin.qq.com 的接口参数中,参考代码如下:

return new Promise((resolve, reject) => {
  request({
    method: 'POST',
    url: `http://api.weixin.qq.com/wxa/msg_sec_check?from_appid=${req.headers['x-wx-from-appid']}`,
    body: JSON.stringify({
      openid: req.headers['x-wx-openid'],
      version: 2,
      scene: 2,
      content: '安全检测文本'
    })
  },function (error, response) {
    console.log('接口返回内容', response.body)
    resolve(JSON.parse(response.body))
  })
})

# 资源复用情况下使用微信支付

请参考此文档

# 资源复用情况下消息推送的使用

请参考此文档

# 使用限制

  1. 当前仅支持小程序、小游戏、公众号、小商店的账号间资源复用。

  2. 不支持第三方平台、开放平台 WEB 网站等其他账号类型的复用。 第三方平台的账号授权请参照服务商模式

  3. 即使A小程序B小程序/B公众号设置了资源复用,在使用云调用时,也不可以以A小程序身份使用B小程序/B公众号的微信令牌。