# 小程序连接小店

本文档面向自研商家和 ISV 服务商,覆盖小程序连接小店的完整接入流程,包括关联账号、小程序组件、定制商品、礼物营销和事件通知。

# 开发前准备

# 接入流程

小程序连接小店的能力依赖关联关系。完整接入分为以下环节:先建立小程序与小店的关联关系,再按需接入小程序组件、小程序 API、定制商品、礼物营销和事件通知。

# 关联关系建立

小程序与微信小店之间需要先建立关联关系才能使用连接能力。关联关系由小店侧发起邀请,小程序侧接受后生效(status=1);解绑后 status=2。

%%{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[邀请接受中<br/>status=4] B --> C{被邀请方处理} C -->|接受| D[已绑定<br/>status=1] C -->|拒绝| E[邀请已拒绝<br/>status=3] C -->|超时| F[邀请接受超时<br/>status=5] C -->|失败| G[邀请接受失败<br/>status=6] C -->|店铺取消| H[邀请店铺取消<br/>status=7] D -->|解绑| I[已解绑<br/>status=2] style A fill:#ffffff,stroke:#0ab8a6,color:#666666 style C fill:#ffffff,stroke:#0ab8a6,color:#666666 style E fill:#ffffff,stroke:#0ab8a6,color:#666666 style F fill:#ffffff,stroke:#0ab8a6,color:#666666 style G fill:#ffffff,stroke:#0ab8a6,color:#666666 style H fill:#ffffff,stroke:#0ab8a6,color:#666666

# 小程序组件接入

关联关系建立后,小程序可以直接使用以下原生组件展示小店内容:

组件名称 组件标签 最低基础库 用途说明
商品卡组件 <store-product> 3.7.0 在小程序中展示微信小店商品卡片,需与小店建立关联关系
店铺卡组件 <store-home> 3.5.5 在小程序中展示微信小店店铺卡片,无关联关系限制
礼物组件 <store-gift> 3.8.10 在小程序中展示微信小店礼物功能,需与小店建立关联关系,且商家需对该小程序创建礼物活动
优惠券组件 <store-coupon> 3.8.3 在小程序中展示微信小店优惠券,无关联关系限制

# 小程序 API 接入

API 名称 用途说明
wx.openStoreOrderDetail 打开微信小店订单详情页
wx.openStoreCouponDetail 打开微信小店优惠券详情页

# 定制商品接入

适用于个性化印刷、定制刻字、3D 打印等定制商品场景。用户在小程序内完成定制操作后先上传文件获取 media_id,将 media_id 作为参数传入 <store-product> 商品卡;用户点击商品卡跳转到小店下单页完成下单;商家收到订单后通过小店服务端获取文件下载链接,完成定制发货。

%%{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["[API] 上传资料<br/>uploadec"] B --> C["获取 media_id<br/>传入 &lt;store-product&gt; 参数"] C --> D[用户点击商品卡<br/>跳转小店下单] D --> E["[API] 获取文件下载链接<br/>getdownloadurl"] E --> F[下载文件定制发货] 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
步骤 接口 调用方 说明
用户定制后上传文件 [API] 上传资料 / uploadec 小程序服务端 传入用户 openid,返回 media_id;支持图片、CAD、3DMax、文档、压缩包等格式,最大 50M
商家获取文件并发货 [API] 获取文件下载链接 / getdownloadurl 小店服务端 传入 openidorder_id,返回临时下载链接(有效期 10 分钟,每订单限 10 次/天)

两个接口均须在服务端调用,不可在小程序前端直接调用。上传资料权限集 ID:180,获取文件下载链接权限集 ID:131

# 礼物营销接入

开发前建议先阅读 微信小店「礼物抽奖」使用指南 了解礼物活动的创建与管理。

礼物营销分为采购模式(开发者自采自发)和商家配置模式(商家提供礼物、开发者发放),两种模式仅在获取活动 ID 的方式上不同,之后的 API 调用和前端收礼流程完全一致。小游戏送礼物可参考 小游戏开放能力 - 微信礼物

# 角色说明

角色 说明
小店商家 在小店后台创建礼物活动,授权指定发礼方参与发礼
发礼方 通过服务端接口发放礼物,支持小程序、小游戏、微信小店、移动应用四种账号类型,使用对应账号的 access_token 调用接口
用户 通过小程序内的 <store-gift> 组件查看和领取礼物

# 步骤1:创建礼物活动

采购模式和商家配置模式的活动创建方式不同

采购模式

  1. 小程序后台 - 支付与交易 - 微信小店 - 礼物活动
  2. 在「已购买的礼物」分类下点击「去购买」
  3. 通过微信扫码后跳转至选礼物页面
  4. 选择礼物份数并完成付款(单次购买生成一个活动,单活动最多 500 件,可分多次购买)
  5. 购买后可在「微信 - 我 - 小店与卡包」查看付款订单
  6. 返回 小程序后台 - 支付与交易 - 微信小店 - 礼物活动 - 「已购买的礼物」页面,查看已支付的礼物活动,获得活动 ID
购买后 48 小时自动失效,请尽快发出礼物。

商家配置模式

  1. 商家进入 微信小店后台 - 推荐运营 - 礼物运营
  2. 点击「创建活动」,选择推广渠道「小程序」
  3. 在发放账号中选择需要发放的小程序
  4. 选择要发放的礼物商品和份数(仅支持小店在售商品)
活动上线后内容不可修改,请谨慎操作。

# 步骤2:调用 API 发放礼物

拿到活动 ID 后,通过服务端 API 完成礼物分配:

%%{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["[API] 查询小店礼物活动列表<br/>list_present_activity"] --> B["[API] 查询礼物活动详情<br/>get_activity"] B --> C{模式?} C -->|采购| D["[API] 查询礼物订单详情<br/>get_present_order"] C -->|商家配置| E["[API] 创建并发送礼物<br/>create_present_order"] D --> F["[API] 指定礼物收礼者<br/>set_present_receiver"] style C fill:#ffffff,stroke:#0ab8a6,color:#666666

之后按模式调用:

采购模式

  1. 调用 [API] 查询小店礼物活动列表 / list_present_activity 获取已购买的礼物活动列表,拿到活动 ID activity_id
  2. 调用 [API] 查询礼物活动详情 / get_activity 确认活动信息,得到 present_order_id(礼物单 ID)
  3. 调用 [API] 查询礼物订单详情 / get_present_order 查询子单列表,拿到子单 order_id
  4. 调用 [API] 指定礼物收礼者 / set_present_receiver 传入子单 order_id 和用户 openid 完成分配。一个用户只能指定一个 order_id,指定多个会报错,开发者需自行实现「挑选一个空的订单分配」逻辑,指定后不可更改。同一活动库存中同一用户只能发一件,如需给同一用户发多件需在购买时拆单。

商家配置模式

  1. 调用 [API] 查询小店礼物活动列表 / list_present_activity 获取已授权的活动列表,拿到活动 ID activity_id
  2. 调用 [API] 查询礼物活动详情 / get_activity 确认活动信息
  3. 调用 [API] 创建并发送礼物 / create_present_order 传入活动 activity_id 和用户 openid 创建礼物单,返回 present_id

# 步骤3:前端拉起礼物组件

在小程序页面中引入 <store-gift> 组件(基础库 ≥ 3.8.10),传入步骤2返回的礼物订单 ID 和用户 openid

<store-gift present-order-id="xxx" open-id="xxx" />

用户被指定为收礼者后,可通过以下方式领取礼物:

  1. 在小程序内点击礼物卡片,显示「已抽中,待收下」,点击「收下礼物」填写收货地址
  2. 或在微信「服务通知」中查看通知,点击「收下礼物」填写收货地址
24 小时内未收下,礼物将自动失效。

# 步骤4:查询发货状态

通过 [API] 查询礼物订单详情 / get_present_order 查询礼物的领取状态和发货状态。

# 库存与发放规则

规则项 采购模式 商家配置模式
库存来源 开发者购买(个人支付) 商家提供
库存锁定 购买时锁定 创建订单后锁定
自动失效 购买后 48 小时 下单 24 小时后用户未收下,订单过期,库存释放
活动有效期 购买时间 + 30 天 最长 30 天
用户领取限制 同一活动中同一用户只能发一件 不限制
指定收礼者 指定后不可更改 创建订单时指定
活动修改 - 上线后内容不可修改
过期提醒 临近过期,小店侧发送服务通知 临近过期,小店侧发送服务通知
支付订单号 有(个人支付订单) 无(不涉及资金交易)

# 事件通知接入

配置消息推送后,当用户通过小程序进入小店下单成功,小店侧会向渠道小程序推送订单通知回调。

[事件] 订单通知 / cooperation_shop_order 推送至小程序侧配置的消息回调地址,存在两个 Event 值:

场景 Event 值
旧版关联账号 cooperation_shop_order
新版关联账号 related_shop_order_submission

回调消息示例(解密后的明文 JSON):

{
    "ToUserName": "gh_2defbb026678",
    "FromUserName": "OPENID",
    "CreateTime": 1706518830,
    "MsgType": "event",
    "Event": "cooperation_shop_order",
    "Data": {
        "order_id": "coiqBw3B****TdtdzIpQ",
        "shop_appid": "店铺appid"
    }
}

order_id 并非小店侧的订单 ID,仅供渠道小程序查询使用。

重试策略:0s / 0s / 10s / 1min / 5min / 30min / 60min / 60min / 60min,最多推送 10 次。

# 接口全览

# 第三方应用服务端接口

以下接口支持小程序、小游戏、微信小店、移动应用四种账号类型调用。

中文名 / 英文名 请求方式 功能说明
上传资料 / uploadec POST /channels/ec/open/upload 上传定制商品文件,返回 media_id 供下单时传参(仅小程序场景使用)
查询小店礼物活动列表 / list_present_activity POST /channels/ec/b2c/activity/list/promoter/get 查询小店授权给当前应用的送礼活动列表
查询礼物活动详情 / get_activity POST /channels/ec/b2c/activity/info/promoter/get 查询指定送礼活动的商品、库存、有效期等详情
指定礼物收礼者 / set_present_receiver POST /channels/ec/order/presentorder/receiver/set 传入 present_id 和收礼用户 openid,绑定收礼关系
创建并发送礼物 / create_present_order POST /channels/ec/order/presentorder/create 创建礼物单,返回 present_id;外部应用身份调用时额外返回 business_type(外部 App 跳转业务类型)和 query(外部 App 跳转参数)
查询礼物订单列表 / list_present_order POST /channels/ec/order/presentlist/get 查询当前应用已发放的礼物单列表
查询收礼者订单列表 / get_receiver_order_list POST /channels/ec/order/receiverorderlist/get 查询发放给某位收礼者的订单列表
查询礼物订单详情 / get_present_order POST /channels/ec/order/present/get 查询指定礼物单的状态详情

存在旧版接口 查询礼物订单列表(旧)查询礼物订单详情(旧),推荐使用上方新版接口。

# 小店服务端接口

中文名 / 英文名 请求方式 功能说明
获取文件下载链接 / getdownloadurl POST /channels/ec/open/get_download_url 传入 openidorder_id,获取定制商品文件的临时下载链接

# 事件通知(推送至小程序侧)

中文名 / 英文名 事件标识 功能说明
订单通知 / cooperation_shop_order cooperation_shop_order / related_shop_order_submission 用户通过小程序下单成功后,小店推送订单回调至渠道小程序配置的消息回调地址

# 小程序组件

组件名称 组件标签 最低基础库
商品卡组件 <store-product> 3.7.0
店铺卡组件 <store-home> 3.5.5
礼物组件 <store-gift> 3.8.10
优惠券组件 <store-coupon> 3.8.3

# 小程序 API

API 名称 功能说明
wx.openStoreOrderDetail 打开微信小店订单详情页
wx.openStoreCouponDetail 打开微信小店优惠券详情页

# 常见问题 FAQ

Q:订单通知的 Event 有两个值,如何区分? A:cooperation_shop_order 用于旧版关联账号,related_shop_order_submission 用于新版关联账号。两者消息结构相同,开发者需根据实际的关联关系类型处理对应的 Event 值。

Q:礼物 API 使用哪个 access_token 调用? A:所有礼物接口均由第三方应用服务端调用,使用对应应用的 access_token,支持小程序、小游戏、微信小店、移动应用四种账号类型;上传资料(uploadec)仅小程序场景使用,由小程序服务端调用,使用小程序 access_token;获取文件下载链接(getdownloadurl)由小店服务端调用,使用小店 access_token。

Q:采购模式和商家配置模式如何选择? A:采购模式适用于开发者自采自发的场景,开发者自行购买礼物后通过 API 分配给用户;商家配置模式适用于商家提供礼物、小程序负责发放的场景,商家在小店后台创建活动授权关联小程序,小程序通过 API 创建礼物订单发放。两种模式的 API 调用流程不同:采购模式通过查询活动详情获取已购买的礼物单后指定收礼者;商家配置模式通过创建礼物订单生成新的礼物单。

Q:采购模式中一个用户可以分配多个礼物吗? A:不可以。一个用户只能指定一个 order_id,指定多个会报错。开发者需自行实现「挑选一个空的订单分配」逻辑。指定收礼者后不可更改。

Q:礼物活动创建后可以修改吗? A:商家配置模式中,活动上线后内容(发放商品及件数等)不可修改。采购模式中,开发者购买的礼物在购买后 48 小时自动失效,请尽快发出。

Q:用户被指定为收礼者后多久内需要领取? A:24 小时内未收下,礼物将自动失效。

文档变更日志(2条)
2026 年 06 月 23 日
补充 礼物营销 相关说明
2026 年 04 月 28 日
新增 小程序连接小店 开发指南