摇优惠-核销组件(通过openid发券)开发指引

更新时间:2025.06.18

1、背景介绍

  • 为解决在摇一摇有优惠场景用户“领取不到券”以及“领券后找不到可用商品“的两大核心问题,平台侧提供标准化核销组件,标准化领取与核销体验链路,最终提升用户领券率与领取核销率

    • 领取不到券:通常是用户在商家小程序未登录正确的领券账号,导致无法找到优惠券。

    • 领券后找不到可用商品:通常为单品或品类券,用户登录小程序后未能及时找到优惠单品,导致用户流失。

2、组件介绍

组件页面无需商家开发,商家根据规范在用户用券场景调起核销组件,串接可用单品。

3如何开通商家券核销组件权限

需联系贵司对接的微信支付行业运营负责人申请。

4系统版本要求

开发者可通过调用wx.openBusinessView方式在商户小程序中打开商家券核销组件,引导用户核销商家券。

接口兼容:微信 >= 8.0.30&小程序版本库 >= 2.28.1,低版本需提示用户升级到最新的微信版本。

5、 接入流程

5.1、摇一摇-领券事件回调通知(如何获取用户openid)

1、创建商家券接口中设置notify_config.notify_appid,领券事件回调通知接口会按照此appid设置openid。

2、对领券事件回调通知的resource.ciphertext进行解密,得到的资源对象示例(见第 6 行,解密后获取领券用户 openid)。

1{   
2    "event_type":"EVENT_TYPE_BUSICOUPON_SEND",
3    "coupon_code":"1227944959000000911017",
4    "stock_id":"1286950000000039",
5    "send_time":"2019-12-17T10:35:53+08:00",
6    "openid":"odXnH1CJjeQoWTld48db-pnxs-Wg",
7    "unionid":"oOuyajgxj0oVwjocSoQm6mp7PGKw",
8    "send_channel":"BUSICOUPON_SEND_CHANNEL_SHAKE", 
9    "send_merchant":"98568888",
10    "act_id":"1234",
11    "attach_info":""
12}

5.2、如何调用商家券核销组件

核销组件接口调用请参考摇一摇有优惠核销组件API

摇一摇有优惠跳转商家小程序的路径query会增加以下属性

属性

类型

说明

couponCode

string

券的唯一标识

stockId

string

批次号

action

string

操作标识

wxpayCouponUse:商家券核销操作标识

accountType

string

领券用户类型标识
accountTypeOpenid:标识用户领券至openid,身份验证需要按照openid的流程进行处理

调用微信支付商家券核销组件需满足以下条件:

  1. 参数校验:从路径 query 参数获取 couponCode(券的唯一标识)

  2. 身份验证:

    1. 商家使用 couponCode 和 stockId 匹配用户 领券 openid。

    2. 通过商家服务端接口获得当前用户小程序登陆openid。

    3. 比对 领券 openid 和 登录 openid 的一致性,按照协议设置 authState(用户账户登录状态,见本文档5.3 商家调起商家券组件接口说明,extraData 参数 authState 的说明 )

  3. 操作标识:路径 query 参数中 action 字段值为 wxpayCouponUse(商家券核销操作标识)

  4. 用户标识:路径 query 参数中 accountType 字段值为 accoutTypeOpenid(领券用户类型标识)

 

示例

1# 示例:如以下所示路径,是微信跳转商家小程序落地页的完整路径
2# 其中`pages/takefood/index?somequery=$somequery`是商家小程序落地页的路径,由商家侧提供
3# `&couponCode=$couponCode&stockId=$stockId&action=wxpayCouponUse`由微信侧拼接而成
4
5pages/takefood/index?somequery=$somequery&couponCode=$couponCode&stockId=$stockId&action=wxpayCouponUse

注意

目前从微信卡包页面点击微信卡券的“立即使用”跳转不会携带核销组件的couponCode、stockId、action参数,商户只有接入核销组件且从摇一摇会场“去小程序使用”跳转才会携带核销组件的参数,商户侧需要做下兼容处理。

5.3 商家调起商家券组件接口说明

开发者可通过调用 wx.openBusinessView 方式在本小程序打开商家券核销组件,引导用户核销商家券。

接口名称:wx.openBusinessView

接口兼容:微信 >= 8.0.30&小程序版本库 >= 2.28.1,低版本需提示用户升级到最新的微信版本。

接口参数

属性

类型

必填

说明

businessType

string

固定配置:wxpayCouponUse

extraData

object

用于向组件传递商家券信息

extraData参数

属性

类型

必填

说明

couponCode

string

券的唯一标识

商品详情页跳转商家小程序的路径query会增加该属性,开发者可通过小程序页面query参数获取此值。

stockId

string

批次号

商品详情页跳转商家小程序的路径query会增加该属性,开发者可通过小程序页面query参数获取此值。

authState

string

用户登录账号的状态

用户正确登录账号:verified

用户登录错误账号:invalidCredentials

用户未登录/注册:unauthenticated

 

见本文档 5.2、如何调用商家券核销组件

 

success回调结果参数

属性

类型

必填

说明

extraData

object

用于向组件传递商家券信息

extraData参数

属性

类型

必填

说明

action

string

用户动作

selectProduct: 选择商品

auth: 注册/登录

closePage: 关闭页面

switchAccount: 更换登录账号

selectGlobalCoupon: 选择全场券

productPath

string

用户选择的商品路径

当用户选择商品,会在success回调返回商品路径,由开发者自行跳转

errMsg

string

错误信息

 

调用示例

1if (wx.openBusinessView && checkVersion()) {
2//checkVersion版本检查:微信>=8.0.30&小程序版本库 >= 2.28.1
3  wx.openBusinessView({
4    businessType: 'wxpayCouponUse',
5    extraData: {
6      couponCode: '1227944959000000911017', // 从query获取
7      stockId: '1286950000000039',   // 从query获取
8      authState: 'verified' // 见本文档 2.1 商家调用商家券核销组件的条件的说明
9    },
10    success(e) {
11        console.log(e.extraData.action); // 用户动作
12        console.log(e.extraData.productPath); // 用户选择的商品路径
13      // dosomething
14    },
15    fail() {
16      // dosomething
17    },
18    complete() {
19      // dosomething
20    }
21  });
22} else {
23  // 引导用户升级微信版本
24}

 

5.4 商家处理接口回调参数说明

回调action

商家操作说明

selectProduct: 选择商品

根据返回的productPath跳转至对应商品详情页

auth: 注册/登录

拉起商家小程序微信账号登录流程(由商家自定义页面跳转路径)

switchAccount: 更换登录账号

拉起商家小程序切换账号登录流程(由商家自定义页面跳转路径)

selectGlobalCoupon: 选择全场券

跳转商家货架选品页面(由商家自定义页面跳转路径)

closePage: 关闭页面

无需操作