微信如何開通wx.getPhoneNumber權(quán)限
首先必須是企業(yè)認(rèn)證賬號,自己是個人認(rèn)證賬號,折騰了好半天沒找到地方。代碼測試來測試去都是授權(quán)失敗。
其次才是按規(guī)矩文檔配置好
要開通微信小程序的 `wx.getPhoneNumber` 權(quán)限(實際上是手機(jī)號快速驗證組件),需要確保小程序滿足相關(guān)前提條件,并進(jìn)行相應(yīng)的配置。以下是基于官方文檔的詳細(xì)步驟和要求:
### 1. **前提條件**
- 小程序必須是非個人開發(fā)者主體,且已完成微信認(rèn)證(企業(yè)、組織等主體)。個人開發(fā)者無法開通此權(quán)限。境外主體目前僅限部分國家/地區(qū)開放。
- 該組件使用時,平臺會基于中國三大運(yùn)營商的底層能力驗證號碼,但不保證實時性。開發(fā)者需合理使用,避免強(qiáng)制要求用戶提供手機(jī)號,否則可能違反平臺規(guī)范導(dǎo)致小程序被處理。
### 2. **權(quán)限開通與付費(fèi)配置**
- **微信認(rèn)證**:在微信公眾平臺(mp.weixin.qq.com)登錄小程序賬號,進(jìn)入“設(shè)置” > “基本設(shè)置” > “微信認(rèn)證”,完成認(rèn)證流程(需提供主體資質(zhì)證明等)。未認(rèn)證的小程序調(diào)用時會報錯如 “getPhoneNumber:fail no permission”。
- **開通付費(fèi)能力**:自 2023 年 8 月 28 日起,該組件需付費(fèi)使用(標(biāo)準(zhǔn)單價每次調(diào)用成功收費(fèi) 0.03 元)。在微信公眾平臺進(jìn)入“付費(fèi)管理”,購買資源包。每個小程序有 1000 次體驗額度(正式版、體驗版、開發(fā)版共用,超額后收費(fèi))。
- **免費(fèi)規(guī)則**:如果小程序主體類型為政府、非營利組織、事業(yè)單位(政務(wù)民生類目)、公立醫(yī)療機(jī)構(gòu)或?qū)W歷教育(學(xué)校)類目,則使用不收費(fèi)。查詢方式:在公眾平臺查看“小程序信息” > “基本信息” > “微信認(rèn)證主體類型”。
- **集采模式**:支持批量采購資源包后分配給多個小程序。
- **額度查詢與扣費(fèi)**:用戶點擊按鈕時查詢額度,若不足會返回錯誤碼 1400001(可自定義提示)。扣費(fèi)發(fā)生在成功回調(diào)時。
### 3. **代碼配置(前端組件)**
- 在小程序頁面中使用 `<button>` 組件:
- 設(shè)置 `open-type="getPhoneNumber"`。
- 綁定事件 `bindgetphonenumber`,用于處理回調(diào)。
- 示例代碼:
```xml
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">獲取手機(jī)號</button>
```
在 Page 方法中處理:
```javascript
getPhoneNumber(e) {
if (e.detail.errMsg === "getPhoneNumber:ok") {
const code = e.detail.code; // 動態(tài)令牌,傳給后端
} else {
// 處理失敗,如權(quán)限不足
}
}
```
- 注意:如果額度不足,用戶側(cè)會提示“該功能使用次數(shù)已達(dá)當(dāng)前小程序上限”,可通過 `phone-number-no-quota-toast` 屬性自定義。
### 4. **后端配置(解密手機(jī)號)**
- 前端獲取的 `code`(動態(tài)令牌,有效期 5 分鐘,只能用一次)需傳給服務(wù)器。
- 在服務(wù)器端調(diào)用微信的 `phonenumber.getPhoneNumber` 接口(HTTPS 或云調(diào)用):
- 接口地址:`POST https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=ACCESS_TOKEN`。
- 請求參數(shù):JSON 對象,包括 `code`(必填),可選 `openid`。
- 需要小程序的 `access_token`(通過 `appid` 和 `secret` 獲取),且 `appid` 必須匹配獲取 `code` 的小程序。
- 對于第三方開發(fā):需獲得權(quán)限集 ID 為 18 的授權(quán),使用 `authorizer_access_token`。
- 示例返回:包含 `phone_info` 對象,如 `purePhoneNumber`(純手機(jī)號)。
### 注意事項
- `getPhoneNumber` 返回的 `code` 與 `wx.login` 的 `code` 不同,不能混用。從基礎(chǔ)庫 2.21.2 開始,無需提前調(diào)用 `wx.login`。
- 測試時,確保小程序在開發(fā)版或體驗版中已上線認(rèn)證版本。
- 如果遇到權(quán)限問題,檢查認(rèn)證狀態(tài)和付費(fèi)額度。建議參考微信開發(fā)者社區(qū)或官方支持獲取最新更新。
如果你的小程序主體不符合條件,可考慮切換主體或咨詢微信客服。

浙公網(wǎng)安備 33010602011771號