Skip to content

JSSDK 集成

JSSDK 集成功能用于对接第三方系统的 JavaScript SDK,如微信、钉钉、企业微信等。

支持的 SDK

SDK说明适用场景
微信 JS-SDK微信公众号/小程序微信内网页开发
企业微信 JS-SDK企业微信企业微信应用开发
钉钉 JSAPI钉钉钉钉应用开发
飞书 JS-SDK飞书飞书应用开发
自定义 SDK任意第三方 SDK其他平台对接

集成步骤

1. 引入 SDK 文件

在平台配置中添加外部资源引用:

javascript
// 系统管理 → 系统配置 → 外部资源
// 添加以下引用

// 微信 JS-SDK
loadScript('https://res.wx.qq.com/open/js/jweixin-1.6.0.js');

// 企业微信 JS-SDK
loadScript('https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js');

// 钉钉 JSAPI
loadScript('https://g.alicdn.com/dingding/dingtalk-jsapi/2.10.3/dingtalk.open.js');

2. 配置 SDK 权限

每种 SDK 都需要进行权限配置和签名验证:

javascript
// 微信 JS-SDK 配置示例
wx.config({
  debug: false,
  appId: 'wx_your_appid',
  timestamp: '${timestamp}',
  nonceStr: '${nonceStr}',
  signature: '${signature}',
  jsApiList: [
    'chooseImage',
    'previewImage',
    'uploadImage',
    'getLocation',
    'scanQRCode'
  ]
});

// 配置成功回调
wx.ready(function() {
  console.log('微信 JS-SDK 初始化成功');
});

// 配置失败回调
wx.error(function(res) {
  console.error('微信 JS-SDK 初始化失败:', res);
});

3. 使用 SDK 接口

SDK 初始化成功后即可调用对应接口。

微信 JS-SDK 使用示例

获取地理位置

javascript
wx.getLocation({
  type: 'gcj02',
  success: function(res) {
    var latitude = res.latitude;   // 纬度
    var longitude = res.longitude; // 经度
    var speed = res.speed;         // 速度
    var accuracy = res.accuracy;   // 位置精度
    
    setControlValue('text_lat', latitude);
    setControlValue('text_lng', longitude);
  },
  fail: function(res) {
    showMessage('error', '获取位置失败');
  }
});

扫码功能

javascript
wx.scanQRCode({
  desc: '扫描二维码',
  needResult: 1,
  scanType: ['qrCode', 'barCode'],
  success: function(res) {
    var result = res.resultStr;
    setControlValue('text_scan', result);
  }
});

图片上传

javascript
wx.chooseImage({
  count: 1,
  sizeType: ['original', 'compressed'],
  sourceType: ['album', 'camera'],
  success: function(res) {
    var localIds = res.localIds;
    // 上传图片
    wx.uploadImage({
      localId: localIds[0],
      isShowProgressTips: 1,
      success: function(res) {
        var serverId = res.serverId;
        // 保存到平台
        saveWxImage(serverId);
      }
    });
  }
});

企业微信 JS-SDK 使用示例

获取当前用户信息

javascript
wx.qy.login({
  success: function(res) {
    var code = res.code;
    // 通过 code 换取用户信息
    getUserInfoByCode(code, function(userInfo) {
      console.log('用户信息:', userInfo);
    });
  }
});

发起审批

javascript
wx.qy.openApprovalDetail({
  spId: 'approval_id_001',
  spNo: '202607010001',
  success: function(res) {
    console.log('审批详情已打开');
  }
});

钉钉 JSAPI 使用示例

获取免登授权码

javascript
dd.ready(function() {
  dd.runtime.permission.requestAuthCode({
    corpId: 'ding_your_corpid',
    onSuccess: function(res) {
      var code = res.code;
      // 通过 code 换取用户信息
      getDingTalkUserInfo(code);
    },
    onFail: function(err) {
      console.error('获取授权码失败:', err);
    }
  });
});

选择联系人

javascript
dd.biz.contact.choose({
  title: '选择审批人',
  multiple: true,
  limitTips: '最多选择5人',
  maxUsers: 5,
  onSuccess: function(res) {
    var users = res.users;
    setControlValue('text_approvers', users.map(u => u.name).join(','));
  }
});

自定义 SDK 集成

如果需要对接其他平台的 SDK,可以使用通用的加载方式:

javascript
// 动态加载外部 JS
loadScript('https://example.com/sdk.js', function() {
  // SDK 加载完成后初始化
  if (window.ExampleSDK) {
    ExampleSDK.init({
      appId: 'your_app_id',
      appKey: 'your_app_key'
    });
  }
});

// 调用自定义 SDK
function useExampleSDK() {
  if (window.ExampleSDK) {
    ExampleSDK.doSomething({
      param1: 'value1',
      param2: 'value2'
    }, function(result) {
      console.log('SDK 调用结果:', result);
    });
  }
}

JSSDK 配置管理

在系统管理 → 第三方集成 → JSSDK 配置中,可以统一管理:

  • AppID / AppKey / AppSecret
  • 授权域名配置
  • 权限接口列表
  • SDK 版本管理

注意事项

  1. JSSDK 通常需要在特定的域名下运行,需要在第三方平台配置授权域名
  2. AppSecret 等敏感信息应保存在服务端,不要在前端暴露
  3. 签名验证需要在后端完成,确保安全性
  4. 不同 SDK 的接口调用方式可能不同,请参考对应官方文档
  5. 建议封装统一的调用方法,便于后续维护和升级

基于 MIT 许可发布