showWxPhone
获取微信手机号,仅支持微信小程序端。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.detectEnvironment | () => 'h5' | 'miniapp' | 'app' | 'unknown' | 检测环境函数(可选) |
deps.error | Console['error'] | 错误输出 |
环境要求
- 微信小程序: 仅支持微信小程序端
- 注意: H5 和 App 端不支持,需要使用其他方式获取手机号
函数签名
typescript
function showWxPhone(
request?: PhoneRequest,
deps: ShowPhoneDeps
): Promise<PhoneResult>
interface ShowPhoneDeps {
detectEnvironment?: () => 'h5' | 'miniapp' | 'app' | 'unknown'
error: Console['error']
}
interface PhoneRequest {
eventDetail?: unknown
rawEvent?: unknown
code?: string
encryptedData?: string
iv?: string
cloudID?: string
}
interface PhoneResult {
errMsg?: string
code?: string
encryptedData?: string
iv?: string
phoneNumber?: string
purePhoneNumber?: string
countryCode?: string
cloudID?: string
raw?: unknown
}参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
request | PhoneRequest | 否 | {} | 手机号请求参数 |
request.eventDetail | unknown | 否 | - | 从 <button open-type="getPhoneNumber"> 的 @getphonenumber 事件中获取的 event.detail |
deps | ShowPhoneDeps | 是 | - | 依赖注入对象 |
返回值
| 类型 | 说明 |
|---|---|
Promise<PhoneResult> | Promise,成功时返回手机号信息,包含 code、encryptedData、iv 等 |
工作原理
- 环境检测:检查当前是否为微信小程序环境
- 参数处理:从
eventDetail中提取 code、encryptedData、iv 等信息 - 返回结果:返回包含加密手机号信息的对象
- 后端解密:开发者需要将 encryptedData 和 iv 发送到后端进行解密获取真实手机号
使用方式:需要在模板中使用 <button open-type="getPhoneNumber" @getphonenumber="handleGetPhone">,然后将事件对象传递给此函数。
注意:H5 和 App 端不支持此功能,会直接返回错误提示。