# 手機號實時驗證組件
該能力旨在幫助開發(fā)者向用戶發(fā)起手機號申請,并且必須經過用戶同意后,開發(fā)者才可獲得由平臺驗證后的手機號,進而為用戶提供相應服務。
該能力與手機號快速驗證組件的區(qū)別為:
- 手機號實時驗證組件,在每次請求時,平臺均會對用戶選擇的手機號進行實時驗證;
- 手機號快速驗證組件,平臺會對號碼進行驗證,但不保證是實時驗證。
請注意:
- 目前該接口針對非個人主體,且完成了認證的小程序開放(境外主體目前僅限部分國家地區(qū)開放,詳見文檔);
- 該能力使用時,用戶可選擇綁定號碼,或自主添加號碼。每次請求時,平臺均會基于中國三大運營商提供的短信等底層能力對號碼進行實時驗證;
- 請開發(fā)者根據業(yè)務場景需要自行判斷并選擇是否使用,必要時可考慮增加其他安全驗證手段。
- 開發(fā)者需合理使用,若用戶舉報或被發(fā)現開發(fā)者不合理地要求用戶提供手機號等個人信息,中斷了正常的使用流程,影響了用戶的使用體驗,微信有權依據《微信小程序平臺運營管理規(guī)范》對該小程序進行處理。常見違規(guī)事例和具體解析;
# 收費說明
自2023年8月28日起,手機號實時驗證組件將需要付費使用。標準單價為:每次組件調用成功,收費0.04元。更多套餐價格請見微信公眾平臺-付費管理。
請注意:
- 體驗額度:每個小程序賬號將有1000次體驗額度,用于開發(fā)、調試和體驗。該1000次的體驗額度為正式版、體驗版和開發(fā)版小程序共用,超額后,體驗版和開發(fā)版小程序調用同正式版小程序一樣,均收費;
- 資源包有效期:在2023年8月28日前購買的訂單,資源包將于2023年8月28日生效;在2023年8月28日后購買的訂單,資源包將于支付成功后即刻生效;各資源包將按購買時所選擇的有效期,計算相應的到期失效時間;
- 資源使用順序:默認先從體驗額度中劃扣,劃扣完畢后再從付費資源包中劃扣;若有多個付費資源包,將按資源包到期時間順序,先從最近到期的資源包開始劃扣,如此類推;
- 退款規(guī)則:若購買有誤,且未正式開始使用資源包前,可以在支付成功后的7天內申請退款??铐棇⒃?-5個工作日內從原支付路徑返回;若資源包已經開始使用(使用1次及以上),則不能申請退款;若支付成功后超過7天,未發(fā)起退款申請,亦不能再申請退款。
- 異常排查:若對調用量有疑問,可參考《手機號計費誤差問題排查指南》進行排查。
# 免費規(guī)則
符合以下情況之一的小程序,使用此能力不收費,具體如下:
開發(fā)者可通過以下兩種方式查詢小程序的微信認證主體類型:
# 集采模式
旨在提供更高效的落地工具,支持批量采購資源包后,可以靈活地分配給多個小程序使用。集采模式接入指引。
# 查詢和扣費節(jié)點說明
- 查詢節(jié)點:用戶點擊button時,進行資源包額度查詢。若查詢額度不足,開發(fā)者將收到錯誤碼
e.detail.errno===1400001,同時用戶側將收到平臺默認半屏提示“該功能使用次數已達當前小程序上限,暫時無法使用”。若開發(fā)者想自行兼容欠費邏輯,可將 button 組件中phone-number-no-quota-toast的值設置為false,此時平臺將不在用戶側進行提示; - 扣費節(jié)點:開發(fā)者獲得
bindgetphonenumber事件的 success 回調信息時,進行扣費。
# 使用方法
步驟1:需要將 button 組件 open-type 的值設置為 getRealtimePhoneNumber,當用戶點擊并同意之后,通過 bindgetrealtimephonenumber 事件獲取回調信息;
步驟2:將 bindgetrealtimephonenumber 事件回調中的動態(tài)令牌code傳到開發(fā)者后臺,并在開發(fā)者后臺調用微信后臺提供的 phonenumber.getPhoneNumber 接口,消費code來換取用戶手機號。每個code有效期為5分鐘,且只能消費一次。
注:getRealtimePhoneNumber 返回的 code 與 wx.login 返回的 code 作用是不一樣的,不能混用。
注意
該能力的bindgetrealtimephonenumber 事件回調中,僅會返回 code,不會返回 encryptedData和iv,開發(fā)者僅可通過調用phonenumber.getPhoneNumber 接口,消費 code的方式換取用戶手機號。
# 代碼示例
<button open-type="getRealtimePhoneNumber" bindgetrealtimephonenumber="getrealtimephonenumber"></button>
Page({
getrealtimephonenumber (e) {
console.log(e.detail.code) // 動態(tài)令牌
console.log(e.detail.errMsg) // 回調信息(成功失敗都會返回)
console.log(e.detail.errno) // 錯誤碼(失敗時返回)
}
})
# 返回參數說明
| 參數 | 類型 | 說明 | 最低版本 |
|---|---|---|---|
| code | String | 動態(tài)令牌??赏ㄟ^動態(tài)令牌換取用戶手機號。使用方法詳情 phonenumber.getPhoneNumber 接口 |