支付寶小程序API 運(yùn)動(dòng)數(shù)據(jù)

2020-09-16 15:50 更新

my.getRunData

版本要求:基礎(chǔ)庫 1.17.1 或更高版本;支付寶客戶端 10.1.60 或更高版本,若版本較低,建議做 兼容處理

注意:

  • IDE 模擬器暫不支持調(diào)試,請(qǐng)以真機(jī)調(diào)試結(jié)果為準(zhǔn)。
  • 此 API 暫僅支持企業(yè)支付寶賬戶使用。

獲取用戶一個(gè)自然天內(nèi)的運(yùn)動(dòng)步數(shù)信息。

調(diào)用本 API 時(shí)無需再接入授權(quán) API,系統(tǒng)將自動(dòng)會(huì)檢查用戶是否已授權(quán)。若用戶尚未授權(quán),則會(huì)彈出授權(quán)框;用戶同意授權(quán)后,可獲取到返回的加密數(shù)據(jù)。 然后在服務(wù)端結(jié)合簽名算法和 AES 密鑰進(jìn)行解密,獲取運(yùn)動(dòng)數(shù)據(jù)。

目前只支持查詢最近 30 天內(nèi)的運(yùn)動(dòng)數(shù)據(jù),若超過 30 天,則返回的步數(shù)信息為 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))
  }
})

入?yún)?/h4>
參數(shù) 類型 必填 說明
countDate String 要查詢的步數(shù)日期(yyyy-mm-dd)的字符串例如:countDate: '2018-12-19' 。
timeZone String 要查詢的時(shí)區(qū)信息,例如:timeZone: 'Asia/Shanghai'
fail Function 調(diào)用失敗的回調(diào)函數(shù)。
success Function 調(diào)用成功的回調(diào)函數(shù)。
complete Function 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行)。

接口返回值

參數(shù) 類型 說明
response String 查詢到的指定日期的步數(shù),該數(shù)據(jù)是經(jīng)過加密的,需要通過 my.request 請(qǐng)求解密數(shù)據(jù)。

res.response 為完整的報(bào)文數(shù)據(jù),前端需要將該報(bào)文發(fā)送到開發(fā)者服務(wù)端做驗(yàn)簽和解密處理,服務(wù)端解密后的明文示例如下:

正常響應(yīng)

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

服務(wù)端接口異常響應(yīng)

{
    "code": "40003",
    "msg": "Insufficient Conditions",
    "subCode": "isv.invalid-auth-relations",
    "subMsg": "無效的授權(quán)關(guān)系"
}


{
    "code": "20000",
    "msg": "Service Currently Unavailable",
    "subCode": "aop.unknow-error",
    "subMsg": "系統(tǒng)繁忙"
}


{
    "code": "40001",
    "msg": "Missing Required Arguments",
    "subCode": "isv.missing-default-signature-type",
    "subMsg": "應(yīng)用未設(shè)置默認(rèn)簽名類型"
}
//解決方案:重新保存下開發(fā)者的密鑰,或者設(shè)置下小程序的應(yīng)用網(wǎng)關(guān)地址


{
    "code": "40002",
    "msg": "Invalid Arguments",
    "subCode": "isv.invalid-encrypt",
    "subMsg": "加密異常"
}
//解決方案:按文檔重新設(shè)置AES密鑰

結(jié)果碼

結(jié)果碼 結(jié)果描述 解決方案
MISSING_PARAMETER 缺少入?yún)⑿畔?/td> 檢查步數(shù)日期是否傳入。
INVALID_DATE 傳入的查詢?nèi)掌诜欠?/td> countDate 格式為 yyyy-MM-dd 的字符串,請(qǐng)按照描述修正傳入的參數(shù)。
INVALID_USER_STATUS 此用戶未開通支付寶運(yùn)動(dòng)業(yè)務(wù) 此支付寶用戶未開通支付寶運(yùn)動(dòng)業(yè)務(wù)。需用戶在支付寶首頁 > 教育公益 > 運(yùn)動(dòng) >設(shè)置 頁面(或直接在支付寶搜索“運(yùn)動(dòng)”)開通支付寶運(yùn)動(dòng)業(yè)務(wù)后才能使用此接口查詢用戶步數(shù)信息。
INVALID_USERID userid 非法 入?yún)⒌?nbsp;userid 格式錯(cuò)誤,請(qǐng)注意: userid 必須是以 2088 開頭的 16位數(shù)字字符串 請(qǐng)修正此參數(shù)
INVALID_APP_ID appId 為空 請(qǐng)檢查 appid 是否正確
INVALID_TIMEZONE 傳入的時(shí)區(qū)信息有誤 請(qǐng)檢查時(shí)區(qū)設(shè)備問題

常見問題 FAQ

安卓系統(tǒng)下的用戶在未開啟 my.getRunData 時(shí),調(diào)用這個(gè)方法為何報(bào)錯(cuò):SYNC getAPPInfo do not execute callback?

這是已知問題,會(huì)在基礎(chǔ)庫 1.23.0 版本修復(fù),原因是同步 API 容器底層偶現(xiàn)異常導(dǎo)致。

調(diào)用 my.getRunData 運(yùn)動(dòng)數(shù)據(jù)為何報(bào)錯(cuò)缺少加密配置?

未配置開放平臺(tái) AES 密鑰導(dǎo)致的報(bào)錯(cuò)。

1、登錄支付寶 開放平臺(tái) ,在“管理中心”選擇需要配置 AES 密鑰的應(yīng)用,在“ 應(yīng)用詳情-應(yīng)用環(huán)境 ”頁面配置 AES 密鑰。

2、在開放平臺(tái),“ 賬戶密鑰管理 ” 頁面點(diǎn)擊配置 AES 密鑰。

兩個(gè)入口選擇其一即可完成配置。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)