抖音优惠券核销对接自有平台优惠券
抖音优惠券核销对接自有平台优惠券,核心是通过抖音开放平台接口完成券码核验、状态同步,再联动自有平台券的发放/核销,关键在于权限申请、门店与券码映射、接口调用及异常处理。以下是完整对接方案与实操步骤。
一、核心对接模式与前提准备
| 准备项 | 说明 |
|---|---|
| 账号与权限 | 1. 注册抖音开放平台开发者账号,创建应用(小程序/服务端应用);2. 申请团购核销、优惠券管理等权限(如promotion.coupon.admin、life.capacity.fulfilment);3. 完成商家/门店授权,绑定抖音门店ID与自有平台门店ID |
| 券码体系映射 | 1. 抖音券(团购券/三方券)与自有平台券建立批次关联(如活动ID绑定);2. 支持抖音券核销后自动发放自有平台券,或三方券由自有平台生成并同步抖音 |
| 接口基础 | 1. 接入抖音验券、核销、取消核销等核心接口;2. 自有平台需提供券发放、核销、状态查询接口,支持幂等处理 |
二、完整对接流程(分两种场景)
场景1:核销抖音券后联动自有平台发券
用户下单与券码生成
- 用户在抖音购买团购券,抖音生成券码(12位数字)或加密数据(encrypted_data),订单状态为待核销。
- 自有平台通过抖音订单查询接口获取订单与券码信息,建立订单-券码映射。
核销流程
- 验券准备:调用抖音验券准备接口(/api/douyin-code/verify/preparation),传入券码(code)或加密数据(encrypted_data),获取可用券列表与加密券码。
- 抖音券核销:调用核销接口(/coupons/verifyV2),传入verify_token(UUID)、订单ID、券码等,返回核销结果(error_code=0为成功)。
- 自有平台联动:核销成功后,调用自有平台发券接口,给用户发放对应优惠券,并记录核销流水与关联关系。
状态同步与结算
- 抖音侧:核销后T+2天自动推进订单完成(支持取消核销);自有平台同步更新券状态为“已核销”。
- 结算:按抖音规则完成资金结算,自有平台同步记账。
场景2:自有平台生成三方券同步抖音核销
三方券发码
- 自有平台生成券码,通过抖音三方券码订单发货接口同步券码至抖音,标记order_type=5(待发码订单)。
核销与状态同步
- 直接调用抖音核销接口(/coupons/verifyV2)完成核销,无需验券准备;取消核销调用/coupons/cancelVerify。
- 自有平台同步券状态,处理退款、过期退等逆向场景。
三、核心接口调用详解
| 接口名称 | 接口地址 | 作用 | 关键参数 | 调用注意 |
|---|---|---|---|---|
| 验券准备 | https://open.douyin.com/api/douyin-code/verify/preparation | 获取可用券列表 | code/encrypted_data、门店ID | 优先用encrypted_data,二维码变更会导致失效 |
| 核销接口 | https://open.douyin.com/api/douyin-code/verify | 核销抖音券/三方券 | verify_token、订单ID、券码 | verify_token重试时需保持一致,支持批量验券(不跨订单) |
| 批量核销(小程序券) | https://open.douyin.com/api/promotion/v1/coupon/batch_consume_coupon/ | 核销小程序券 | coupon_id_list、open_id | 一次最多核销10张,需用户open_id |
| 取消核销 | https://open.douyin.com/api/douyin-code/cancelVerify | 撤销核销 | verify_id、券码 | 仅核销后T+2天内支持,用于异常修正 |
四、自有平台联动关键步骤
券发放触发
- 监听抖音核销回调(配置核销通知地址),或主动轮询核销结果接口,获取核销成功事件。
- 调用自有平台发券接口,按规则发放优惠券(如满减券、折扣券),记录抖音券ID与自有券ID的关联。
状态一致性保障
- 双方券状态双向同步:抖音券核销/退款后,同步自有平台券状态;自有平台券核销后,若关联抖音券,需同步更新。
- 实现幂等:通过verify_token、订单ID等唯一标识,避免重复核销/发券。
异常处理
- 核销失败:重试机制(间隔递增),记录失败日志,人工介入处理。
- 取消核销:抖音侧调用cancelVerify后,自有平台同步撤销对应券的发放或恢复状态。
- 退款场景:抖音订单退款时,自有平台回收已发放的优惠券。
五、YII2框架下的对接示例(PHP)
以下是YII2中调用抖音核销接口并联动自有平台发券的简化代码:
// 1. 验券准备
public function actionVerifyPrep() {
$code = Yii::$app->request->post('code');
$client = new \GuzzleHttp\Client();
$response = $client->post('https://open.douyin.com/api/douyin-code/verify/preparation', [
'headers' => ['Authorization' => 'Bearer ' . $this->getAccessToken()],
'json' => ['code' => $code, 'store_id' => 'your_store_id']
]);
$result = json_decode($response->getBody(), true);
if ($result['error_code'] == 0) {
return $this->actionVerify($result['encrypted_coupon_code'], $result['order_id']);
}
return ['error' => '验券准备失败'];
}
// 2. 抖音券核销+自有平台发券
public function actionVerify($encryptedCode, $orderId) {
$verifyToken = \Ramsey\Uuid\Uuid::uuid4()->toString();
$client = new \GuzzleHttp\Client();
$response = $client->post('https://open.douyin.com/coupons/verifyV2', [
'headers' => ['Authorization' => 'Bearer ' . $this->getAccessToken()],
'json' => [
'verify_token' => $verifyToken,
'order_id' => $orderId,
'encrypted_coupon_code' => $encryptedCode
]
]);
$result = json_decode($response->getBody(), true);
if ($result['error_code'] == 0) {
// 调用自有平台发券接口
$this->sendOwnCoupon($orderId, Yii::$app->user->id);
return ['success' => true];
}
return ['error' => '核销失败'];
}
// 3. 自有平台发券逻辑
private function sendOwnCoupon($orderId, $userId) {
$coupon = new OwnCoupon();
$coupon->user_id = $userId;
$coupon->order_id = $orderId;
$coupon->batch_id = 'tie_to_douyin_activity';
$coupon->save();
}六、关键注意事项
权限与安全
- 接口调用需携带access_token,通过OAuth2.0获取并定期刷新。
- 核销通知地址需配置白名单,防止非法请求。
逆向流程
- 支持随时退、过期自动退,退款时同步撤销自有平台券的发放。
- 取消核销需在T+2天内操作,超时无法撤销。
性能与监控
- 接口调用添加超时重试(如3次),verify_token重试时保持一致。
- 监控核销成功率、接口响应时间,设置告警机制。
七、交付物清单
- 抖音开放平台应用配置文档(权限、门店绑定、回调地址)。
- 券码映射关系表(抖音活动ID-自有平台券批次ID)。
- 接口调用手册(验券、核销、发券接口参数与示例)。
- 异常处理与重试机制代码片段。
版权属于:Joyber
本文链接:https://blog.qqvbc.com/default/1424.html
转载时须注明出处及本声明