# 发送短信验证码

iOS >= 0.7.13 支持,Android >= 0.7.5 支持。

通过 button 组件指定 open-typesendPhoneSms,可触发向指定手机号发送手机验证码。

注意:在使用发送短信验证码功能之前需先完成短信签名要求实名制报备,否则将无法发送短信。点此提交报备材料。并且,提交报备材料后可前往社区联系小助手提供「多端应用id」以及「短信签名」信息进行申请加急处理

# 短信签名报备注意事项

  • 业务短信下发时的签名,必须与 App 的名称完全一致。例如,App 名称为「麦多鱼」,那么报备的短信签名也必须是「麦多鱼」,不能是例如「麦多鱼App」
  • 多端应用的名称需要与 App 名称一致,否则在调用sendPhoneSms会出现”应用名称与短信签名不一致“的错误
  • 即下方红色框框中的名称要与短信签名保持完全一致

# button 组件参数

属性 类型 默认值 必填 说明
phoneNumber string 手机号
open-type string sendPhoneSms 为发送手机验证码
sms-type number 0 发送手机验证码的类型
bindsendphonesms Function 获取用户手机号回调,open-type=sendPhoneSms时有效

# sms-type

说明
0 作为 wx.phoneSmsLogin 的前置流程
1 作为 wx.miniapp.bindPhone 的前置流程

# bindsendphonesms 回调参数

# Object res

属性 类型 说明
errCode number 错误码
errMsg string 错误提示

# 示例代码

<input bindinput="onPhoneNumberChange" value="{{phoneNumber}}"/>
<button type="primary" open-type="sendPhoneSms" sms-type="{{0}}" bindsendphonesms="onHandleLogin" phoneNumber="{{phoneNumber}}">发送验证码</button>
<input bindinput="onVerifyCodeChange" value="{{verifyCode}}"/>
<button bindtap="login">登录</button>
Page({
  data: {
    phoneNumber: '',
    verifyCode: ''
  },
  onVerifyCodeChange(e) {
    this.setData({ verifyCode: e.detail.value });
  },
  onPhoneNumberChange(e) {
    this.setData({ phoneNumber: e.detail.value });
  },
  onHandleLogin(e) {
    const detail = e.detail;
    console.log('sendphonesms errCode', detail.errCode)
  },
  login() {
    wx.phoneSmsLogin({
      phoneNumber: this.data.phoneNumber,
      verifyCode: this.data.verifyCode,
      success (res) {
        if (res.code) {
          //发起网络请求
          wx.request({
            url: 'https://example.com/onLogin',
            data: {
              code: res.code
            }
          })
        } else {
          console.log('登录失败!' + res.errMsg)
        }
      }
    })
  }
})

# 错误码

errCode 说明
10001007 多端应用未绑定移动应用
10001017 发送短信超过频率限制,验证码有效期为2分钟,开发者需限制调用频率
-700000 前端错误,errMsg 将给出详细提示