---
url: "https://pay.weixin.qq.com/doc/v3/partner/4016434346.md"
title: "调起小程序发券组件"
doc_id: 4016434346
---

>更新时间：2025.12.23

开发者可通过调用 wx.openBusinessView 方式在本小程序打开「 小程序发券」组件。



## 接口说明

前置条件：商家小程序在打开领券组件前，需要先通过后台 API 调用[向用户预发放商品券](https://pay.weixin.qq.com/doc/v3/partner/4016434365.md)接口，预下单接口会返回预下单 token，通过这个 token 才能打开领券组件，否则会打开组件失败。

接口名称：wx.openBusinessView

兼容性表现说明

- 微信>=8.0.30且小程序版本库 >= 2.28.1 ，低版本需提示用户升级到最新的微信版本。


## 字段说明

### 请求参数

| 参数名 | 类型 | 必填 | 描述 |
| --- |  --- | --- | --- |
| businessType | string(32) | true | 固定值：wxpayCouponUse |
| extraData | object | true | 用于向组件传递商品券信息 |
| extraData.action | string | true | 领券操作填：receiveCoupon |
| extraData.token | string | true | 【预下单 token】打开领券组件前需要先调用 调用 [向用户预发放商品券](https://pay.weixin.qq.com/doc/v3/partner/4016434365.md) 接口进行预发券，预发券返回 token（具有有效期），把该 token 传到领券组件中 |

wx.openBusinessView 请求示例

```
if (wx.openBusinessView && checkVersion()) {
  wx.openBusinessView({
    businessType: 'wxpayCouponUse', // 固定值：wxpayCouponUse
    extraData: {
      action: 'receiveCoupon', // 领券操作
      token: '',   // 预下单 token
    },
    success(e) {
      console.debug('openBusinessView success: ', e); // 打开领券组件，关闭组件时会触发该回调
      // do something
    },
    fail(e) {
      console.debug('openBusinessView failed:', e); // 打开领券组件失败
      // do something
    },
    complete(msg) {
      console.debug('openBusinessView completed: ', msg); // 打开领券组件完成后触发的回调，无论 success 还是 fail 都会触发 complete
      // do something
    }
  });
} else {
  // 引导用户升级微信版本
}
```

## 用户选择商品后的回调

![](https://gtimg.wechatpay.cn/resource/xres/mmpaydoc/static/img/cf17ba5e79b91c0302983d8fdaaf1d37.jfif)

触发场景: 当用户选择了某个商品，领券组件会退出返回到商家的小程序页面，并会带上 extraData。

回调处理方法:下面有 2 种方式可以处理关闭组件的回调事件。

1. 请求示例代码中 success 或者 complete 回调会收到对应的回调事件

2. 在小程序的 app.ts/app.js 文件的 onShow 事件里添加判断逻辑，并根据回调数据进行相应的逻辑处理


关闭组件的回调示例

```
//  当前页面的 onShow 或者 app.ts/app.js 文件
onShow(res) {
  if (res.scene === 1038) { // 场景值1038：从被打开的小程序返回
    const { appId, extraData } = res.referrerInfo;
    if (appId === 'wx3e9c2672ad37eb4b') { // 建议检查来源 appId，确保从领券组件返回商家小程序页面，领券组件 appId 为 wx3e9c2672ad37eb4b
      const {
        action, // 当用户选择商品的时候，action 会返回"selectProductInReceiving"；当用户领券后点击“去使用”的时候，会返回"useCouponInReceiving"
        productPath, // 如果有配置商品的跳转 path，会通过 productPath 返回
        source, // 来源标识，领券组件的 source为"receiveProductCouponComponent"
      } = extraData;
      console.debug('用户动作: ', action);
      console.debug('商品 path: ', productPath);
      console.debug('来源：', source);
      // TODO 可根据用户 action 和商品 path 进行对应商品的跳转和展示
    }
  }
}
```

## 异常场景

商家在设计流程时需要注意兼容用户体验

|     |     |
| --- | --- |
| 场景 | 用户表现 |
| 商家使用了没有前置配置的appid调用组件。 | 用户会进入微信支付提供的组件页面，看不到商品，但是看到报错“商家未开通该功能” |
| 未在后台进行预下单获取 token，传递的 token 无效 | 打开领券组件，领券组件会提示“获取数据失败”，用户点击关闭按钮，领券组件关闭，回到商家小程序 |
| 对应的商品未上架 | 用户会进入微信支付提供的组件页面，看不到商品，但是看到报错“商品不存在” |
| 商家提供给小程序组件内的活动配置失效（包含活动库存不够，活动有效期过期，商品库存不够） | 用户会进入微信支付提供的组件页面，可以看到商品，但是点击领取时看到对应报错，如“商品已抢光”<br>请注意，因为库存和有效期等原因的报错，微信支付无法实时同步给商家，建议商家自身做好有效期和库存的监控，如监控库存不足时， 不引导用户跳转到微信支付提供的领券组件。 |