codecamp

支付宝小程序API 运动数据

my.getRunData

版本要求:基础库 1.17.1 或更高版本;支付宝客户端 10.1.60 或更高版本,若版本较低,建议做 兼容处理

注意:

  • IDE 模拟器暂不支持调试,请以真机调试结果为准。
  • 此 API 暂仅支持企业支付宝账户使用。

获取用户一个自然天内的运动步数信息。

调用本 API 时无需再接入授权 API,系统将自动会检查用户是否已授权。若用户尚未授权,则会弹出授权框;用户同意授权后,可获取到返回的加密数据。 然后在服务端结合签名算法和 AES 密钥进行解密,获取运动数据。

目前只支持查询最近 30 天内的运动数据,若超过 30 天,则返回的步数信息为 0。

示例代码

my.getRunData({
  countDate: '2018-12-19',
  timeZone: 'Asia/Shanghai',
  fail: (res) => {
    console.log('get pedometer encrypted fail:'+JSON.stringify(res))
  },
  success: (res) => {
    let that = this;
    console.log('get pedometer encrypted success:'+JSON.stringify(res))
    my.request({
      url: 'http://www.telmo.cn/gateway/decrypt',
      data: {
        encryptKey: 'VyxFi6ZJtYz1UGLFZYPD9g==',
        encryptContent: res.response
      },
      success: function(res) {
        console.log('decrypt pedometer success:'+JSON.stringify(res))
        that.setData({
          step: res.data.count
        })
      },
      fail: function(res) {
        console.log('decrypt pedometer fail:'+JSON.stringify(res))
      }
    })
  },
  complete: (res) => {
    console.log('getRunData complete:' + JSON.stringify(res))
  }
})

入参

参数 类型 必填 说明
countDate String 要查询的步数日期(yyyy-mm-dd)的字符串例如:countDate: '2018-12-19' 。
timeZone String 要查询的时区信息,例如:timeZone: 'Asia/Shanghai'
fail Function 调用失败的回调函数。
success Function 调用成功的回调函数。
complete Function 调用结束的回调函数(调用成功、失败都会执行)。

接口返回值

参数 类型 说明
response String 查询到的指定日期的步数,该数据是经过加密的,需要通过 my.request 请求解密数据。

res.response 为完整的报文数据,前端需要将该报文发送到开发者服务端做验签和解密处理,服务端解密后的明文示例如下:

正常响应

{
    "count": "16880",
    "countDate": "2018-12-19",
    "code": "10000",
    "timeZone": "Asia/Shanghai"
}

服务端接口异常响应

{
    "code": "40003",
    "msg": "Insufficient Conditions",
    "subCode": "isv.invalid-auth-relations",
    "subMsg": "无效的授权关系"
}


{
    "code": "20000",
    "msg": "Service Currently Unavailable",
    "subCode": "aop.unknow-error",
    "subMsg": "系统繁忙"
}


{
    "code": "40001",
    "msg": "Missing Required Arguments",
    "subCode": "isv.missing-default-signature-type",
    "subMsg": "应用未设置默认签名类型"
}
//解决方案:重新保存下开发者的密钥,或者设置下小程序的应用网关地址


{
    "code": "40002",
    "msg": "Invalid Arguments",
    "subCode": "isv.invalid-encrypt",
    "subMsg": "加密异常"
}
//解决方案:按文档重新设置AES密钥

结果码

结果码 结果描述 解决方案
MISSING_PARAMETER 缺少入参信息 检查步数日期是否传入。
INVALID_DATE 传入的查询日期非法 countDate 格式为 yyyy-MM-dd 的字符串,请按照描述修正传入的参数。
INVALID_USER_STATUS 此用户未开通支付宝运动业务 此支付宝用户未开通支付宝运动业务。需用户在支付宝首页 > 教育公益 > 运动 >设置 页面(或直接在支付宝搜索“运动”)开通支付宝运动业务后才能使用此接口查询用户步数信息。
INVALID_USERID userid 非法 入参的 userid 格式错误,请注意: userid 必须是以 2088 开头的 16位数字字符串 请修正此参数
INVALID_APP_ID appId 为空 请检查 appid 是否正确
INVALID_TIMEZONE 传入的时区信息有误 请检查时区设备问题

常见问题 FAQ

安卓系统下的用户在未开启 my.getRunData 时,调用这个方法为何报错:SYNC getAPPInfo do not execute callback?

这是已知问题,会在基础库 1.23.0 版本修复,原因是同步 API 容器底层偶现异常导致。

调用 my.getRunData 运动数据为何报错缺少加密配置?

未配置开放平台 AES 密钥导致的报错。

1、登录支付宝 开放平台 ,在“管理中心”选择需要配置 AES 密钥的应用,在“ 应用详情-应用环境 ”页面配置 AES 密钥。

2、在开放平台,“ 账户密钥管理 ” 页面点击配置 AES 密钥。

两个入口选择其一即可完成配置。

支付宝小程序API 商户会员卡
支付宝小程序API 获取会员手机号
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

支付宝小程序开发文档

支付宝小程序 快速示例

支付宝小程序 小程序快速示例

支付宝小程序 框架

支付宝小程序 组件

支付宝小程序组件 基础组件

支付宝小程序组件 无障碍访问

支付宝小程序 扩展组件

支付宝小程序扩展组件 UI组件

支付宝小程序 API

支付宝小程序 开发工具

支付宝小程序 云服务

支付宝小程序 Serverless

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }