遇到问题?让我来为你解答~去咨询
开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
基础 api
开放能力 api
支付
用户授权
会员
获取会员基础信息
获取会员收货地址
获取会员手机号
周期扣款
商家会员卡
消息
模板配置
支付宝卡包
交易组件
小程序商品
开发 > api > 开放能力 api > 会员 > 获取会员手机号 > my.getphonenumber
评论 (33)
收藏
我的文档
设置

my.getphonenumber(object object)

基础库  或更高版本; 且 支付宝客户端 10.1.35 或更高版本; 若版本较低,建议采取 兼容处理

支小宝客户端 支持

安诊儿客户端 支持

以 promise 风格调用: 不支持 。

主体: 企业支付宝小程序

获取用户支付宝绑定的手机号。

此功能需谨慎使用,若支付宝发现信息存在超出约定范围使用或者不合理使用等情况,支付宝有权永久回收接口权限。

效果示例

获取用户手机号时,会先经过用户授权,可点击左侧的箭头展开查看c端界面。用户也可从小程序右上角胶囊按钮的“···”打开授权详情界面,解除授权。

未授权时弹出

点击右上角胶囊按钮的“···”查看授权详情

打开设置页面

进入用户信息可解除授权

获取手机号

为了确保准确接入“获取手机号”的能力, 需要按照 配置加密加签 > 用户授权 > api调用 > 解密及验签 的流程接入。
1
配置加密加签 开放平台
2
用户授权 小程序
3
api调用 小程序
4
解密及验签 服务端

是否必须: 是。

加密: 设置 接口内容加密方式 (可参考文档接口内容加密方式)。

加签: 如需验证内容的真实性,可进一步设置接口加签方式: 设置 接口加签方式 (可参考文档接口加签方式)。

未设置接口加密方式而直接调用 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

    完整的响应数据,前端需要将该报文发送到开发者服务端做验签和解密处理。
    通过 json.parse 解析后,属性如下:

    属性 类型 描述
    response string | object

    报文。通常为一串加密字符串,经服务端解密后返回一个对象。
    注意:在 code = 40001 的情况下,返回明文对象。详见示例代码 未配置接口内容加密方式

    sign string

    对 response 报文的签名

    response 明文返回的异常报错信息(40001),以及 response 密文经由服务端解密后返回的异常报错信息。

    结果码 结果码信息 凯发app官方网站的解决方案
    20000 系统繁忙 可提示用户“稍后再试”。
    40001 缺少加密配置 调用my.getphonenumber之前,需完成接口内容加密方式的配置: 进入 配置 接口内容加密方式 。详见:接口内容加密方式
    40001 应用未设置默认签名类型 进入 配置 应用网关 。详见:应用网关
    40002 加密异常 参考文档:接口内容加密方式,重新设置接口内容加密方式。
    40003 无效的授权关系 获取支付宝会员手机号需要用户进行授权,授权行为通过
    通过
    my.getphonenumber(object object)
    success参数
    解密后正确的返回值
    未正确通过<button>组件授权
    接口内容加密有误
    未配置接口内容加密方式
    <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
      谨慎使用,若支付宝发现信息存在超出约定范围使用或者不合理使用等情况,支付宝有权永久收回该小程序的接口权限。
    • tip
      my.getphonenumber 只用于获取手机号,如需可靠地识别用户身份,建议使用 my.getauthcode 并通过 openapi 获取 uid 或者进一步的用户信息。
    • tip
      my.getphonenumber 仅支持企业小程序调用,个人小程序调用会报错误码 40006。

    q:调用 my.getphonenumber,报错 “无效的授权关系”,如何处理?

    a:

    请参考本文接入流程-获取手机号部分的用户授权。也可通过 my.getsetting 接口返回的 phonenumber 判断用户是否授权过手机号,phonenumber 为 true 即已授权。

    q:调用 my.getphonenumber,报错 “缺少加密配置”,如何处理?

    a:

    请参考本文接入流程-获取手机号部分的配置加密加签

    q:为什么调用 my.getphonenumber 返回的手机号为空?

    a:

    一般情况下都是当前用户的支付宝账号没有绑定手机号所致,需要当前用户登录 ,绑定手机号。

    内容没有解决您的问题?您还可以前往 或 寻求帮助
    凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
    网站地图