接入准备

这一步做什么

在宿主小程序里声明小鹅插件。不需要安装 npm 包,也不需要在微信开发者工具里构建 npm。AK/SK 不要放进小程序,只留在接入方后台。

添加插件

在微信公众平台的小程序管理后台添加插件,AppID 为 wxd8d176525a5b4e85。宿主 app.json 填写已发布的正式版版本号,当前是 0.2.4。

宿主 app.jsonjson
{
  "plugins": {
    "yunduo-sdk": {
      "version": "0.2.4",
      "provider": "wxd8d176525a5b4e85",
      "export": "plugin-export.js"
    }
  }
}

新建小程序的首页是「欢迎使用微信开发者工具」。那是开发者工具自带的默认页,不是插件。把首页换成下面的文件,再点编译,才会进入商品列表。版本 0.2.4 需要先在公众平台发布,开发者工具才能下载;还没发布时,模拟器也会停在这个默认页。

pages/index/index.jsonjson
{
  "usingComponents": {
    "yunduo-workspace": "plugin://yunduo-sdk/workspace"
  }
}
pages/index/index.wxml
<yunduo-workspace entry="{{entry}}" product-id="{{productId}}" sku-id="{{skuId}}" />
pages/index/index.jsjavascript
Page({
  data: { entry: "products", productId: 0, skuId: 0 },
  onLoad(options) {
    this.setData({
      entry: options.entry || "products",
      productId: Number(options.productId) || 0,
      skuId: Number(options.skuId) || 0
    });
  }
});

plugin-export.js 放在小程序根目录,把换票和打开支付页交给插件。接口地址已经写在插件里。

plugin-export.jsjavascript
module.exports = {
  getToken({ forceRefresh }) {
    // 向接入方后台换 access_token,只返回字符串。
    return obtainSDKTokenFromYourBackend({ forceRefresh });
  },
  openPayment({ checkoutId }) {
    return new Promise((resolve, reject) => {
      wx.navigateTo({
        url: '/pages/cashier/index?checkoutId=' + encodeURIComponent(checkoutId),
        success: resolve,
        fail: reject
      });
    });
  }
};

在接入配置签发 AK/SK,只放在接入方后台,用来换用户凭证。

开发者工具可以临时关闭域名校验。体验版和正式版仍会校验下面的域名。

小程序要配置的域名

配置位置在微信公众平台的开发管理、开发设置、服务器域名。漏配时,接口、上传或图片会直接失败。

  • request 合法域名 https://api.channel.suiinn.com:商品、作品、结算、订单接口,以及换取小程序登录态。
  • request 合法域名 https://api.suiinn.com:商品详情、上传图片和图片编辑页。
  • request 合法域名 https://yunduo-1334189972.cos.ap-guangzhou.myqcloud.com:上传成品图。上传使用 wx.request PUT,配在 request,不要配到 uploadFile。
  • downloadFile 合法域名 https://suiinn.com:展示商品图和作品图。
  • 业务域名 https://suiinn.com:展示商品图,以及页面里用到的静态资源。