# 小程序会员

本文档面向自研商家和 ISV 服务商,覆盖小程序会员功能的完整接入流程。

# 开发前准备

小店跳转品牌小程序时不会携带 UnionID,开发者需自行通过 wx.login() 获取当前用户的 openid 和 unionid。

# 接入流程

# 阶段一:会员绑定流程

用户在微信小店触发会员关联时,小店向商家后台发起 [事件] 会员状态查询 / channels_ec_vip_user_info_get 回调,商家查询该用户是否已在品牌小程序入会并实时返回结果:

  • 已入会(is_vip=true):无需跳转小程序,直接在小店完成静默关联
  • 未入会(is_vip=false):跳转品牌小程序引导用户注册,完成后通过 [事件] 静默关联成功 / channels_ec_vip_user_auto_add 通知关联成功

路径一:用户已是小程序会员(静默关联)

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#0ab8a6', 'primaryTextColor': '#ffffff', 'primaryBorderColor': '#089e8d', 'lineColor': '#0ab8a6', 'secondaryColor': '#07827a', 'secondaryTextColor': '#ffffff', 'secondaryBorderColor': '#055f59', 'tertiaryColor': '#0ab8a6', 'tertiaryTextColor': '#ffffff', 'tertiaryBorderColor': '#089e8d', 'edgeLabelBackground': '#888888', 'fontColor': '#888888'}}}%% flowchart LR A["用户点击会员入口"] -->|触发回调| B B["[事件] 会员状态查询<br/>channels_ec_vip_user_info_get"] -->|返回 is_vip=true| C C["静默关联完成"] style A fill:#ffffff,stroke:#0ab8a6,color:#666666 style C fill:#ffffff,stroke:#0ab8a6,color:#666666

路径二:用户未入会(跳转小程序注册)

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#0ab8a6', 'primaryTextColor': '#ffffff', 'primaryBorderColor': '#089e8d', 'lineColor': '#0ab8a6', 'secondaryColor': '#07827a', 'secondaryTextColor': '#ffffff', 'secondaryBorderColor': '#055f59', 'tertiaryColor': '#0ab8a6', 'tertiaryTextColor': '#ffffff', 'tertiaryBorderColor': '#089e8d', 'edgeLabelBackground': '#888888', 'fontColor': '#888888'}}}%% flowchart LR A["用户点击会员入口"] -->|触发回调| B B["[事件] 会员状态查询<br/>channels_ec_vip_user_info_get"] -->|返回 is_vip=false| C C["跳转品牌小程序入会"] --> D D["用户完成注册"] --> E E["[API] 新增小程序会员信息<br/>adduserinfo"] -->|关联成功通知| F F["[事件] 静默关联成功<br/>channels_ec_vip_user_auto_add"] --> G G["静默关联完成"] style A fill:#ffffff,stroke:#0ab8a6,color:#666666 style C fill:#ffffff,stroke:#0ab8a6,color:#666666 style D fill:#ffffff,stroke:#0ab8a6,color:#666666 style G fill:#ffffff,stroke:#0ab8a6,color:#666666

# 阶段二:下单优惠流程

[事件] 获取默认权益 / channels_ec_gen_order_info_init 和 [事件] 使用会员权益 / channels_ec_order_use_vip_discount 均需实时回调,超时时间为 3 秒,超时视为失败。

优惠规则:

  • 每个 SKU 会员优惠金额最低 0.01 元(即 1 分),最低总优惠金额 = 0.01 元 × SKU 种类数。例如购买 3 种商品最少优惠 0.03 元,同一 SKU 购买 10 件最少优惠 0.10 元
  • 店铺优惠发生变化时,小程序需重新生成会话 ID 并清空当前已选会员权益,避免权益信息错乱

异常兜底:若品牌小程序内部已扣除权益,但微信后台侧因超时等原因判定失败,微信后台会主动推送 [事件] 取消使用权益 / channels_ec_order_unuse_vip_discount 通知取消,小程序需监听并恢复权益。

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#0ab8a6', 'primaryTextColor': '#ffffff', 'primaryBorderColor': '#089e8d', 'lineColor': '#0ab8a6', 'secondaryColor': '#07827a', 'secondaryTextColor': '#ffffff', 'secondaryBorderColor': '#055f59', 'tertiaryColor': '#0ab8a6', 'tertiaryTextColor': '#ffffff', 'tertiaryBorderColor': '#089e8d', 'edgeLabelBackground': '#888888', 'fontColor': '#888888'}}}%% flowchart LR A["用户进入下单页"] -->|触发回调| B B["[事件] 获取默认权益<br/>channels_ec_gen_order_info_init"] -->|返回默认权益| C C["展示会员优惠选择"] -->|用户点击使用权益| D D["跳转小程序选权益"] -->|返回 vip_discounted_info| E E["[事件] 使用会员权益<br/>channels_ec_order_use_vip_discount"] -->|验证通过| F F["下单成功"] E -->|店铺优惠变化| G G["重新生成会话id"] --> C style A fill:#ffffff,stroke:#0ab8a6,color:#666666 style C fill:#ffffff,stroke:#0ab8a6,color:#666666 style D fill:#ffffff,stroke:#0ab8a6,color:#666666 style F fill:#ffffff,stroke:#0ab8a6,color:#666666 style G fill:#ffffff,stroke:#0ab8a6,color:#666666

# 阶段三:售后权益回退流程

用户发起退款或取消订单后,商家需回退已使用的会员权益,避免权益被重复消耗。

%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#0ab8a6', 'primaryTextColor': '#ffffff', 'primaryBorderColor': '#089e8d', 'lineColor': '#0ab8a6', 'secondaryColor': '#07827a', 'secondaryTextColor': '#ffffff', 'secondaryBorderColor': '#055f59', 'tertiaryColor': '#0ab8a6', 'tertiaryTextColor': '#ffffff', 'tertiaryBorderColor': '#089e8d', 'edgeLabelBackground': '#888888', 'fontColor': '#888888'}}}%% flowchart LR A["用户退款或取消订单"] -->|触发通知| B B["感知售后/取消事件"] --> C C["回退会员权益"] style A fill:#ffffff,stroke:#0ab8a6,color:#666666 style B fill:#ffffff,stroke:#0ab8a6,color:#666666 style C fill:#ffffff,stroke:#0ab8a6,color:#666666

# 前端对接说明

# 小程序返回小店(权益数据传递)

用户在品牌小程序选择完会员权益后,通过 wx.postMessageToReferrerPage 将权益信息传递给小店:

wx.postMessageToReferrerPage({
  extraData: {
    vip_discounted_info: {
      vip_discounted_price: 100,  // 会员优惠总金额,单位:分
      product_infos: [            // 必填,每个商品的会员优惠信息
        {
          product_id: "12345",    // 商品ID
          sku_id: "23456",        // SKU ID
          vip_discounted_price: 100  // 该SKU的会员优惠金额,单位:分
        }
      ],
      unuse_shop_discount: 0      // 是否叠加店铺优惠:0-叠加,1-不叠加
    }
  },
  success() {
    // Android:在 success 回调中退出小程序
    wx.exitMiniProgram()
  }
})
// iOS 若提示 can only be invoked by user TAP gesture,在同级调用:
// wx.exitMiniProgram()

常见错误提示:

  1. product_infos 为必填字段,不传或传空数组均会导致下单失败。请确保每个参与优惠的 SKU 都填入对应的优惠信息

  2. 内外金额必须一致product_infos 中各 SKU 的 vip_discounted_price 之和,必须等于外层的 vip_discounted_price。里外不一致会导致校验失败

    正确示例:

    {
      "vip_discounted_price": 100,
      "product_infos": [
        { "product_id": "12345", "sku_id": "23456", "vip_discounted_price": 60 },
        { "product_id": "12346", "sku_id": "23457", "vip_discounted_price": 40 }
      ]
    }
    

    外层 100 = 内层 60 + 40

  3. 叠加优惠的注意事项:当前无小程序优惠时,应传 unuse_shop_discount: 0(叠加)且 vip_discounted_price: 0。不能传 unuse_shop_discount: 1(不叠加)且 vip_discounted_price: 0,否则会直接抹掉店铺券

# 订单与售后字段

订单维度

字段路径 说明
order_detail.price_info.vip_discounted_price 订单维度会员优惠总金额(单位:分)
order_detail.product_infos[].vip_discounted_price 商品维度会员优惠金额(单位:分)
order_detail.ext_info.vip_order_session_id 会员权益 session_id

售后维度

字段路径 说明
AfterSaleDetails.wxa_vip_discounted_price 售后单中已优惠金额(单位:分)

# 接口全览

# API 接口

小程序侧(使用小程序 access_token)

中文名 / 英文名 请求方式 功能说明
新增小程序会员信息 / adduserinfo POST /wxa/vip/user/info/add 用户关联入会时设置会员信息
更新小程序会员信息 / updateuserinfo POST /wxa/vip/user/info/update 同步会员信息更新(如等级变更)
获取小程序会员信息 / getuserinfo POST /wxa/vip/user/info/get 获取小程序的会员信息
获取小程序会员列表 / getuserlist POST /wxa/vip/user/list/get 获取小程序的会员列表
删除小程序会员信息 / deluserinfo POST /wxa/vip/user/info/delete 删除小程序在关联小店的会员信息
获取小程序已关联小店列表 / getshoplist POST /wxa/vip/shop/list/get 获取小程序已关联的小店列表

小店侧(使用小店 access_token)

中文名 / 英文名 请求方式 功能说明
小店获取关联小程序信息 / getwxainfo POST /channels/ec/vip/v3/wxa/info/get 获取关联的小程序信息

# 事件通知

本模块所有事件通知均为小程序侧回调,回调格式取决于小程序后台的消息推送配置(JSON 或 XML),需确保服务端解析格式与配置一致。

中文名 / 英文名 事件标识 功能说明
会员状态查询 / channels_ec_vip_user_info_get Event: channels_ec_vip_user_info_get 静默关联时查询用户是否已入会,需实时返回
静默关联成功 / channels_ec_vip_user_auto_add Event: channels_ec_vip_user_auto_add 静默关联成功通知
获取默认权益 / channels_ec_gen_order_info_init Event: channels_ec_gen_order_info_init 用户进入下单页时获取默认会员优惠,需实时返回(超时 3 秒)
使用会员权益 / channels_ec_order_use_vip_discount Event: channels_ec_order_use_vip_discount 用户下单使用会员权益时确认优惠,需实时返回(超时 3 秒)
取消使用权益 / channels_ec_order_unuse_vip_discount Event: channels_ec_order_unuse_vip_discount 用户取消使用会员权益或超时兜底通知
文档变更日志(1条)
2026 年 03 月 27 日
优化开发指南