卡密兑换 #

描述 #

第三方应用使用此接口为不二云微系统已有会员兑换卡密,并执行卡密配置的奖励。会员可以通过用户ID或手机号识别;使用手机号时不会自动注册新会员。

同一卡密由同一会员重复提交时返回原兑换结果,不会重复发放奖励。同一卡密不能由其他会员再次兑换。

接口说明 #

授权对象 APP

请求地址 POST /notify/notice

请求规则 请查阅开发必读

请求参数 #

参数名称 变量名称 参数类型[长度限制] 是否必填 描述
操作类型 type string[1, 32] body固定为card_code_redeem
兑换数据 data string body序列化后的JSON字符串,字段见兑换数据。不能直接传JSON对象。

兑换数据 data #

参数名称 变量名称 参数类型[长度限制] 是否必填 描述
用户ID uid uint32 条件必填 bodydata内字段。不二云微系统用户ID。uidmobile至少填写一个。
手机号 mobile string[11] 条件必填 bodydata内字段。已注册不二云微系统会员的中国大陆手机号。手机号必须匹配唯一会员;uidmobile同时填写时必须属于同一会员。
卡密 code string[1, 128] bodydata内字段。完整卡密,兑换时不区分大小写。

请求示例 #

通过手机号兑换:

{
  "type": "card_code_redeem",
  "data": "{\"mobile\":\"13800138000\",\"code\":\"aB3dE5fG7hJ9kL2mN4pQ6rS8\"}"
}

通过用户ID兑换:

{
  "type": "card_code_redeem",
  "data": "{\"uid\":73,\"code\":\"aB3dE5fG7hJ9kL2mN4pQ6rS8\"}"
}

请求签名必须使用最终发送的JSON原文计算,不能使用转义前的data对象计算。

响应参数 #

参数名称 变量名称 参数类型 是否必填 描述
卡密信息 item object 已兑换的卡密信息。
奖励发放记录 completion object 本次兑换对应的奖励发放记录。
跳转配置 redirect_url string 卡密活动设置的跳转配置JSON字符串,未设置时为空。

卡密信息 item #

参数名称 变量名称 参数类型 是否必填 描述
卡密ID id uint32 卡密记录ID。
活动ID activity_id uint32 卡密所属激励活动ID。
卡密 code string 规范化后的完整卡密。
卡密前缀 code_prefix string 卡密前8位,用于后台检索和展示。
状态 status int32 1未兑换,2已兑换,3已过期,4已作废。兑换成功时为2
过期时间 expire_at int64 Unix时间戳,单位为秒。
批次ID batch_id uint32 卡密所属批次ID。
卡号 card_no string 导入卡密时设置的外部卡号,未设置时为空。
奖励发放记录 completion object 与响应中的completion对应。

奖励发放记录 completion #

参数名称 变量名称 参数类型 是否必填 描述
发放记录ID id uint32 奖励发放记录ID,可用于问题排查。
活动ID activity_id uint32 激励活动ID。
用户ID uid uint32 实际领取奖励的不二云微系统用户ID。
助力用户ID assist_uid uint32 卡密兑换固定为0
触发类型 trigger_type int32 卡密兑换固定为1
发放状态 status int32 1待处理,2处理中,3成功,4待重试,5失败。
奖励类型 reward_type int32 1红包,2券包,3跳转,4积分,5余额,6超级会员天数,7会员等级,8商品套餐。
奖励ID reward_id uint32 红包、券包、会员等级或商品套餐等奖励的业务ID。
奖励数量 reward_num uint32 奖励发放数量。
奖励值 reward_value uint32 会员天数等整数型奖励值。
奖励金额 reward_amount double 积分或余额等奖励数值。
奖励流水ID reward_log_ids string 实际奖励流水ID,多个ID使用英文逗号分隔。
重试次数 retry_count uint32 奖励发放重试次数。
失败原因 failed_reason string 奖励发放失败时返回。
完成时间 completed_at int64 Unix时间戳,单位为秒。
发奖时间 rewarded_at int64 Unix时间戳,单位为秒。
创建时间 created_at int64 Unix时间戳,单位为秒。

响应示例 #

{
  "code": 20000,
  "msg": "success",
  "data": {
    "item": {
      "id": 101,
      "activity_id": 2,
      "code": "aB3dE5fG7hJ9kL2mN4pQ6rS8",
      "code_prefix": "aB3dE5fG",
      "status": 2,
      "expire_at": 1785427200,
      "batch_id": 9,
      "card_no": "",
      "completion": {
        "id": 301,
        "activity_id": 2,
        "uid": 73,
        "assist_uid": 0,
        "trigger_type": 1,
        "status": 3,
        "reward_type": 1,
        "reward_id": 26,
        "reward_num": 1,
        "reward_value": 0,
        "reward_amount": 0,
        "reward_log_ids": "1750",
        "retry_count": 0,
        "failed_reason": "",
        "completed_at": 1784196000,
        "rewarded_at": 1784196000,
        "created_at": 1784196000
      }
    },
    "completion": {
      "id": 301,
      "activity_id": 2,
      "uid": 73,
      "assist_uid": 0,
      "trigger_type": 1,
      "status": 3,
      "reward_type": 1,
      "reward_id": 26,
      "reward_num": 1,
      "reward_value": 0,
      "reward_amount": 0,
      "reward_log_ids": "1750",
      "retry_count": 0,
      "failed_reason": "",
      "completed_at": 1784196000,
      "rewarded_at": 1784196000,
      "created_at": 1784196000
    },
    "redirect_url": ""
  }
}

失败处理 #

  • HTTP状态码为401表示接口签名校验失败,请检查请求头、签名密钥和参与签名的请求原文。
  • HTTP状态码为200但响应code不是20000表示业务处理失败,应以codemsg判断结果。
  • 卡密不存在、已被其他用户兑换、已过期或已作废时不会发放奖励。
  • 同一用户或同一开放应用在5分钟内累计提交10次无效卡密后,将暂时限制继续校验;首次兑换成功后清除失败次数。
  • 第三方只需保管开放应用的AppSecret并完成接口签名,不需要获取卡密加密密钥或系统内部奖励密钥。
上次更新: 7/16/2026, 5:12:22 PM