• OpenAPI 简介
  • 小程序 OpenAPI SDK 总览
  • 签名算法
  • 基础能力
  • 联合授权
  • 视频能力
  • 线索组件
  • 接口调用凭证
  • 登录
  • Web 化接入
  • 隐私协议
  • 流量主
  • 小程序码与小程序链接
  • 用户信息
  • 抖音号绑定
  • 小程序推广计划
  • 内容安全
  • 任务能力
  • 分享
  • 客服
  • 小程序券
  • 「小程序券」直播玩法接入指南
  • 「小程序券」复访营销活动接入指南
  • 小程序券API列表
  • 用户券管理
  • 查询用户圈选状态
  • 查询用户可用券信息
  • 用户领券结果回调通知
  • 用户手机号授权结果回调通知
  • 用户撤销核销券
  • 用户核销券
  • 主播授权管理
  • 营销活动管理
  • 券模板管理
  • 接口发放管理
  • 触达与营销
  • 支付
  • 运营
  • 生活服务
  • 垂直行业
  • 其它
  • 抖音开平通过券模板领券回调通知接口将用户授权的手机号加密后通知给开发者。

    使用限制

      抖音开平会尽可能的将用户手机号授权结果通知给开发者,由于网络超时等情况,同样的通知可能会多次发送。开发者务必支持通知消息的幂等处理。 推荐的做法是,当开发者收到通知消息进行处理时,先判断该通知消息是否已经处理。如果未处理,再进行处理;如果已处理,则直接返回结果成功。在对业务数据进行状态检查和处理之前,可采用锁进行并发控制,以避免函数重入造成的数据混乱。
      开发者对于回调通知的内容务必要用平台公钥做签名验证,防止数据泄露导致出现“假通知”,造成损失。

    接口说明

    抖音开平通过回调通知接口将用户手机号授权结果的消息通知给开发者,开发者需要接收处理该消息并响应,响应时不需要签名。
    如果抖音开平收到开发者的响应不符合规范或超时未收到,抖音开平会认为通知失败,并通过一定的重试策略再次发起通知。开发者应尽可能提高接收通知的成功率,抖音开平不保证通知最终能成功。

    回调信息

    HTTP URL
    券模板配置的回调通知callback_url,详细可见券模板创建
    要求必须为https地址。请确保回调通知URL是外部可正常访问的,且不能携带后缀参数,否则可能导致无法接收到回调通知。
    HTTP Method
    POST

    请求头

    属性
    数据类型
    必填
    说明
    content-type
    string
    application/json
    Byte-Timestamp
    string
    签名时间戳
    Byte-Nonce-Str
    string
    签名随机串
    Byte-Signature
    string
    签名值
    回调通知签名验证,可参考: 签名算法重点关注 “签名验证” 部分。如下图所示部分:

    请求 Body

    参数
    类型
    是否必填
    描述
    示例值
    type
    string
    回调类型标记,手机号授权结果回调固定为"authorized_phone"。
    authorized_phone
    msg
    string
    回调信息的 json 字符串。
    type=authorized_phone时,msg 为如下结构:
    参数
    类型
    是否必填
    描述
    示例值
    coupon_id
    string
      券id,由平台生成,全局唯一
      开发者可以用coupon_id作为幂等键,实现通知消息的幂等处理
    709243586555366
    app_id
    string
    小程序appid
    ttxxxxxx
    user_open_id
    string
    领券用户的小程序open_id
    543SXXXXf234
    user_union_id
    string
    领券用户的union_id
    3d5f4913-xxxx-443d-b7ab-538db3f4e237
    encrypted_phone
    string
    加密后的手机号
    tFtxSF1KRkL4dxnMzqKCoApxnKAXXXXXXXXXXXXXLZl+h1I5JRhgCGPg/pQNXYtNbiDV==
    rsa_key_version
    int32
      rsa加解密密钥版本号。
      抖音开放平台默认使用开发者在平台上上传的最新版本的密钥,但在发券期间如果开发者进行变更,会存在短时间内仍使用旧版本公钥进行加密的场景,因此需要开发者根据版本号使用对应的私钥进行解密。
    1
    talent_open_id
    string
    主播的小程序open_id
    6879SAVs5XXX0093
    talent_account
    string
    主播的抖音号
    687899XX92
    用户领手机号授权结果回调通知,开发者可以用coupon_id作为幂等键,实现通知消息的幂等处理。

    密文手机号解密方式

      1.解析回调参数中的rsa_key_version字段,获取对应版本的私钥。(在开放平台上传应用公钥时需要开发者保存好对应的私钥,否则会无法解密。)
      2.将encrypted_phone进行base64 decode后,用私钥进行rsa解密得到明文手机号。

    示例:

      rsa私钥:
    -----BEGIN PRIVATE KEY----- MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCiUVuI/B+wk+fq HEEWh/Nas0smjC0cbs7kddZtF3UiDvUl6dYzPcfM+hJGV9qKaXsugGiDQNb6sxMF ZYm30O3ekq87jFa+0ZkuUd7bXEACUFzg8x5zjmE26Fbna/vtMlQYvIY0bmUNmD5Q JIUn69+xLEbcPHngXEnREo9TowUdkGv2IsR2BqE1HvLYtdg+zn71e2DseUjxaNqf /Bk0+P+6AbcWE+DCFULpSRLrTTCNQszKK7bkPcpJJDSUwOzhNr05sUJiq7dZ1lO+ zuGZT22xDl+Ru4MmwS8vT89bJcLLgPVPHkMlt37CAitNLcbG2GKeqTxD3ktTEhV1 Y8IA2dQnAgMBAAECggEACACY0a0UZuEz2s/fyZuUPNGAD/tzMeaonozMsH4qkS5J mb/ohogyNIHTqtIj/RTsNMOx416r+pofgvGZk41iXMnAh+AIWsn8klMI+KmYokSR /6kcxDetxUY5GpmxRuVnTfzlZOpYYw4xbEQQqIIxegujxrHYlF4YaY1PsaDk3Ksw 9N3Inz0YbqnhBSQd2eecmAsMrw/CPdPXwLktSDFyiX0zCQpxnA7BZUiEiBsltt7j YUkrK7Eg+kFA9nk6mvjnJofgSDe0AuGR/hbWHS7rAAHb6tsN+oqsrGHRVpfSdjsV z8lVlpwLrQ27ShNd0Uzo5sIq19fmd9Y5KBWB+GH4KQKBgQDYRLOYasgMwGaVVMlJ wyjstYCCz7D+x5GvxrLXd042mmJJ7D93yRbgoQnn6utsHVoDq3Cm1TQny8kxy6K3 wtAhVbyDGw8rkLsPQi49THBs1rSMWKnVvRG8P9ewYi7AZ6+xCYwkMP94nNpXsPR6 f2TOx79Do2iG7+1sI2fLu0/5owKBgQDAI0/WJ3k87FYkYxxp4Dw7W/otGS6OBOlY SIi4t/vcnqc6mBVUQNQd+xTLFLDbBFfZgeLhZuH3KKNA7Op2Y+03EoroUJDheAFy oIiJ/llnJd7cwOArlTYgh3o0BAtya5481YZJHK5VxBBEc9exKxudDoeYmKLnqqKk OZtz3R1rrQKBgD0K1y5UJXcD73CC5/W78hct+8HwYWLobYSRrvUGJbtfxBJdbmSf C6gHjEY7louDlV6nyzorv3bkHDvD4H/BqwFds8HFp3iCd2oNIgQHSUxPJdLfS8Ca hyD9XCHa9Js2KO7tZPLqKZGfpDlQJxFUV93Nn3y16ND9c6QsMiXdDuvFAoGANiA8 d1m7X5w8UBfTg0f178rjWR0E7mEX0xTr3w2FWAshlPIO4CM7Hg8DNopnn+tDTDS4 00KGWXgLNVkIW72er6r7kqJPjhSeY8oxbJ5IVTRn6cwz2lM4YkWH+WtCRkNm2kBU ifgYbHTFGGOB2ZkJOF9Fd4lYKub41kacMjGR/ikCgYBH6XqtBE85fJ5xlQBA0R8G pL66muA8PNOC53bKglOs+rbuxVk3Qwz57tOte0ke0U6jLQVRnR9YZ7ttvz5TscZx Ff/xQRdmqAFteQz2ENYQkiNlY9xNxsF1vJrqt6JRmTH47XTyxRDZIPo7wu47P4tE 6s5GDwkznMfsJu7K0fgwgA== -----END PRIVATE KEY-----
      加密后的手机号:ilaYjwpcZQ4SqTEQs/1g8CMWLzfkjkJhw3A8Gz48j/NRGzAfkc8ptHBHcWYh6C0oW6sKrQJPO1Kov0D8MnUhrlAHP+SnvsAQEud+8Z2ugrszgmKXUWP3Eeb+jOGl4VXwNj1B++iYFhAPtq/sW5c0ipUR22JGCJt6Aqt5ZYJAexnRqHKe6jaEqYG6KXvV7rdmL17xFIsuMGBpsZqxGYhaD9u7Rr/IuSEy7qW+Qm172s2gKoOmLGtmD7I9szE5GNo0mReZPoHDQhlFOwP5Q3yA2sz3i+EZEyukB7DNdatL7KD4/l4L+ZTAi7AJIuNvEPWtLKuRnygzpyo3KrPw/uis6w==
      解密结果:12345678901

    回调示例

    { "type": "authorized_phone", "msg": "{\"coupon_id\":\"709243586555366\",\"app_id\":\"ttxxxxxx\",\"user_open_id\":\"\",\"\":\"3d5f4913-xxxx-443d-b7ab-538db3f4e237\",\"encrypted_phone\":\"tFtxSF1KRkL4dxnMzqKCoApxnKAXXXXXXXXXXXXXLZl+h1I5JRhgCGPg/pQNXYtNbiDV==\",\"rsa_key_version\":1,\"talent_open_id\":\"6879SAVs5XXX0093\",\"talent_account\":\"687899XX92\"}" }

    响应参数

    名称
    类型
    是否必填
    描述
    示例值
    err_no
    int32
    返回码,0代表成功
    0
    err_msg
    string
    返回码信息
    success
    应答时不需要签名。开发者成功处理回调时,http 应答状态码需为200err_no务必返回0err_msg务必返回success

    响应示例

    正常响应示例

    { "err_no": 0, "err_msg": "success" }

    异常响应示例

    { "err_no": 400, "err_msg": "business fail" // 开发者可返回可对外的报错信息 }

    Q & A

    验签、解密使用的密钥是服务商的还是授权小程序的?