my.getphonenumber(object object)
基础库 或更高版本; 且 支付宝客户端 10.1.35 或更高版本; 若版本较低,建议采取 兼容处理 。
支小宝客户端 支持
安诊儿客户端 支持
以 promise 风格调用: 不支持 。
主体: 企业支付宝小程序
获取用户支付宝绑定的手机号。
此功能需谨慎使用,若支付宝发现信息存在超出约定范围使用或者不合理使用等情况,支付宝有权永久回收接口权限。
效果示例
未授权时弹出
点击右上角胶囊按钮的“···”查看授权详情
打开设置页面
进入用户信息可解除授权
获取手机号
是否必须: 是。
加密: 设置 接口内容加密方式 (可参考文档接口内容加密方式)。
加签: 如需验证内容的真实性,可进一步设置接口加签方式: 设置 接口加签方式 (可参考文档接口加签方式)。
未设置接口加密方式而直接调用 my.getphonenumber
,将得到异常响应“缺少加密配置”(code
40001),可点此查看示例:未配置接口内容加签方式。
是否必须: 是。
调用my.getphonenumber
前,需要借助,由用户主动触发并完成授权。
在 ongetauthorize
(用户同意授权)回调函数中调用 my.getphonenumber
,并恰当处理
onerror
(用户拒绝授权)事件。(查看示例)
未经用户授权而直接调用 my.getphonenumber
,将得到异常响应“无效的授权关系”(code 40003),可点此查看示例:
未正确通过
是否必须: 是。
调用my.getphonenumber
获取加密后的报文数据。
是否必须: 是。
将my.getphonenumber
返回的密文发送给服务端,参考
接口内容加密方式 进行验签解密。
如果未配置 接口加签方式,reponse中将不会返回sign信息。
如果第二步或第三步未正确完成,报错信息也会在解密步骤完成后才能看到,可点此查看示例: 解密有误的返回值。
如果一切正常,解密后可获取手机号,可点此查看示例: 解密正确的返回值。
——
object object
查看示例
属性 | 类型 | 默认值 | 必填 | 描述 |
---|---|---|---|---|
success | function | - | 否 | 调用成功的回调函数 |
fail | function | - | 否 | 调用失败的回调函数 |
complete | function | - | 否 | 调用结束的回调函数(调用成功、失败都会执行) |
success 回调函数
参数
object res
查看示例
属性 | 类型 | 描述 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
response | string | 完整的响应数据,前端需要将该报文发送到开发者服务端做验签和解密处理。 |
||||||||||
|
response 明文返回的异常报错信息(40001),以及 response 密文经由服务端解密后返回的异常报错信息。
结果码 | 结果码信息 | 凯发app官方网站的解决方案 |
---|---|---|
20000 | 系统繁忙 | 可提示用户“稍后再试”。 |
40001 | 缺少加密配置 | 调用my.getphonenumber 之前,需完成接口内容加密方式的配置: 进入 配置 接口内容加密方式 。详见:接口内容加密方式 |
40001 | 应用未设置默认签名类型 | 进入 配置 应用网关 。详见:应用网关 。 |
40002 | 加密异常 | 参考文档:接口内容加密方式,重新设置接口内容加密方式。 |
40003 | 无效的授权关系 | 获取支付宝会员手机号需要用户进行授权,授权行为通过
|
<button
open-type="getauthorize"
scope="phonenumber"
ongetauthorize="getphonenumber"
onerror="handleautherror"
>
授权手机号
button>
授权行为通过
page({
getphonenumber() {
my.getphonenumber({
success: (res) => {
let encrypteddata = res.response;
my.request({
//你的服务器地址
url: 'https://xxxxxxx',
data: encrypteddata,
});
},
fail: (res) => {
console.log(res);
},
});
}
})
{
"response": "{\"response\":\"p sg2yxuddogfvsderkk3su7gprfupx92bgnuonmh3ki4eo zl6zy gzpuizcvz lcgpul1qydsqhruqejsgb3jwch3encussqf 3pfuwdenkljxodnjxp2blk7nvecrtjm3tw4ttsinp5aukd2yheqv7nxwqxcouqu8bks0/8 x89ntwpvicvnihda phntfrtfzjgivtuvasdm7bdz 5usgisxpwqn7fgmwu1fqvvqxutey95rcu6il5hjbpbl9kzsrj1y1aczr7pi1irnsan2kxszreeld/hsu/zfoahewoqu1q3q3wso 6rfijtmqcyxam 5vgazqvwkfrofqzwn7rvlocnnto0nnodty3u=\",\"sign\":\"c6ufmxxdgg3arm7wmcfoj n08ic8mhv2yjsue60rgg8jljhz0owspc3szqm3 w2bf0uov2ytscmdup3csk4hbkjb7hieewzcm5yahzfx78f4sujcev0mj fnz884ckomyzyapi48ntjvdfsyggkz6i3wmrakzsyrjzkrmnru/u3kq/whyrq2qogngr/zeoseg mfpj4kp/4qopyz8uwcypdp44x73oflrgypmykafcxrbsgmvje/4rgs6d1qoihw3wcji9jfjojt tczofd4psuyw9s3ywk3ldleah2x msyw2vt7aawguctme va1cimwp4y hqmqgtb6wz7y1ema==\"}"
}
{
"code": "10000",
"msg": "success",
"mobile": "1597671905"
}
{
"code": "40003",
"msg": "insufficient conditions",
"subcode": "isv.invalid-auth-relations",
"submsg": "无效的授权关系"
}
此种异常情况,错误信息不直接对前端可见,前端将 success 回调函数参数中 response 字段,通过网络请求传递给服务端。 服务端使用 sdk 解密后,再将解密后的信息传递前端。
{
"code": "40002",
"msg": "invalid arguments",
"subcode": "isv.invalid-encrypt",
"submsg": "加密异常"
}
此种异常情况,错误信息不直接对前端可见,前端将 success 回调函数参数中 response 字段,通过网络请求传递给服务端。 服务端使用 sdk 解密后,再将解密后的信息传递前端。
{
"response": "{\"response\":{\"code\":\"40001\",\"msg\":\"missing required arguments\",\"subcode\":\"isv.missing-encrypt-key\",\"submsg\":\"缺少加密配置\"}}"
}
-
tip谨慎使用,若支付宝发现信息存在超出约定范围使用或者不合理使用等情况,支付宝有权永久收回该小程序的接口权限。
-
tipmy.getphonenumber 只用于获取手机号,如需可靠地识别用户身份,建议使用 my.getauthcode 并通过 openapi 获取 uid 或者进一步的用户信息。
-
tipmy.getphonenumber 仅支持企业小程序调用,个人小程序调用会报错误码 40006。
q:调用 my.getphonenumber,报错 “无效的授权关系”,如何处理?
请参考本文接入流程-获取手机号部分的用户授权。也可通过 my.getsetting 接口返回的 phonenumber 判断用户是否授权过手机号,phonenumber 为 true 即已授权。
q:调用 my.getphonenumber,报错 “缺少加密配置”,如何处理?
请参考本文接入流程-获取手机号部分的配置加密加签。
q:为什么调用 my.getphonenumber 返回的手机号为空?
一般情况下都是当前用户的支付宝账号没有绑定手机号所致,需要当前用户登录 ,绑定手机号。