验券
用于核销券码,同时适用于抖音团购券码与三方券码,抖音券码的核销需要先调用准备接口,再调用本接口,三方券码的核销直接调用本接口即可。
使用限制
无
接口说明
- 1.同时适用于抖音团购券码与三方券码
- 2.抖音团购券码的核销需要先调用验券准备接口, 再调用本接口
- 3.三方券码的核销直接调用本接口即可
- 4.可支持多个批量验券, 需为同一个订单,不可跨订单验券, 且三方码场景下必传抖音侧订单 ID 参数
- 5.error_code、result 均为 0 代表验券成功。error_code非0时则表示调用验券接口失败,建议服务商侧主动发起重试,建议间隔5s发起。第一次调用error_code非0,第二次调用error_code=0且result=1208或2,也可以代表验券成功
- 6.三方码同一笔订单下如有多张券,在发起验券的时候,不可同时发起多次请求,需等待前一次请求有响应再发起下次请求
- 7.接口报错返回”服务器错误,请稍后重试“、“您的访问过于频繁,请稍后重试”等建议重试的文案后,建议以如下重试策略进行重试,接口成功返回后即可停止重试:
- a.前5次重试以5s间隔进行
- b.之后以40s间隔进行
- c.最高重试14次,如果接口依然报错,请进线反馈
基本信息
HTTP URL | ||||
HTTP Method | POST | |||
申请权限 | 团购核销 | |||
权限要求 |
| |||
请求头
参数 | 描述 | 必须 |
content-type | application/json | 是 |
access-token | 是 |
请求参数
Body 请求
参数名称 | 参数类型 | 参数描述 | 必需 |
verify_token | string | 一次验券的标识 (用于短时间内的幂等)
| 是 |
poi_id | string | 核销的抖音门店id 如何获得抖音门店id,可以参考:门店关联及匹配能力 | 是 |
account_id | string | 核销 商户根账户ID(共管/云连锁场景接入需传入,其余场景可不传) | 否 |
encrypted_codes | list | 验券准备接口返回的加密抖音券码
| 否 |
codes | list | 三方原始券码值列表 (encrypted_codes/codes/code_with_time_list必须三选一)
| 否 |
order_id | string | 抖音侧的订单号 (非预导码模式的三方券码必需) | 否 |
code_with_time_list | list | 带有核销时间的三方码列表 备注:如果code_with_time_list 和 codes 同时传, 本字段优先级更高 | 否 |
.code | string | 三方码 | 否 |
.verify_time | int64 | 核销时间戳(秒) | 否 |
.serial_num | int32 | 次卡序号(例如:3次卡次序为:1、2、3,如3次卡传2,即核销次卡的第2次卡,剩余1,3) | 否 |
.verify_sign_list | list | 验签 | 否 |
voucher | struct | 多项目多凭证的情况 备注:景区预售券核销必传,非景点预售券核销可忽略! 注:此参数只进行数据同步,不进行真实券核销!待预约结束时间+24小时后,履约单会自动推核销状态为已履约 | 否 |
.project_id | string | 项目唯一标识(有校验,景区预售券必传) | 否 |
.id_card_list | list | 身份证号码(身份证号码、二维码、券号至少填一个) | 否 |
.qrcode_list | list | 二维码(身份证号码、二维码、券号至少填一个) | 否 |
.certificate_no_list | list | 券号(身份证号码、二维码、券号至少填一个) | 否 |
.verify_time | int64 | 核销时间戳(秒)(景区预售券必传) | 否 |
vouchers | list | 针对团购景区套票 | 否 |
.project_id | string | 项目唯一标识(有校验,团购景区套票必传) | 否 |
verify_extra | struct | 核销额外参数 | 否 |
.total_verify | bool | 整体核销标识,批量核销时传此参数为true则会在不能全部核销成功时报错(幂等也算核销成功) 此字段只支持三方码团购; 抖音码团购此字段无效; 次卡此字段无效,次卡默认整体核销; | 否 |
.out_good_ids | list<string> | 外部货号。 当核销商品类型为医疗器械团购品时必填,填写内容为批次号/序列号; 数量和核销券码数量一致; 只允许英文字母和符号,不允许出现中文汉字和中文符号。 | 否 |
.dynamic_coupon_info | struct | 动态代金券额外参数(动态代金券必传) | 否 |
..biz_time | int64 | 开台时间(秒)(动态代金券必传) | 否 |
..actual_deduction_amount | int64 | 实际抵扣金额(动态代金券必传) | 否 |
consumption_amount | int32 | 消费金额(如果惠享卡包含本金、赠送金,平台默认从本金、赠送金中等比例扣除,惠享卡必传) | 否 |
out_order_id | string | 用户在线下消费对应的商家系统订单id,回传后方便两边对账(仅支持惠享卡) | |
请求示例
https://open.douyin.com/goodlife/v1/fulfilment/certificate/verify/
{ "verify_token": "211ecb01-9f97-46e1-98db-b2cbecfbfd7e", "encrypted_codes": [ "CgwIARDhJxjLLyABKAESLgosRSH/OAfU5+MZ9y0u3l/999bpcS5P1zOqn2mxgQXAx3jGpwb+jnqZPTlDldcaAA==" ], "poi_id": "111111" }
响应参数
参数名称 | 参数类型 | 参数描述 |
data | struct | |
.error_code | int64 | 错误码,0为成功 |
.description | string | 错误码描述 |
.verify_results | list | 验券结果 |
..result | int32 | 验 券结果码,0表示成功,非0表示失败 |
..msg | string | 验券结果说明 |
..code | string | 代表验券传入的code或encrypted_code |
..verify_id | string | 代表券码一次核销的标识(撤销时需要,撤销后会变) |
..source_verify_ids | list<string> | 代表买单所使用代金券的核销标识(仅买单场景返回) |
..order_id | string | 代表一张订单的标识 |
..certificate_id | string | 代表一张券码的标识(撤销时需要),不等于券码但与券码一一对应,验券前可通过订单接口查询 |
..certificate_no | string | 代表验券传入的certificate_no_content |
..origin_code | string | 代表抖音团购券的12位或15位原始券码(抖音加密券码核销时) |
..account_id | string | 代表企业号商家总店id(查询验券历史时需要) |
..project_id | string | 项目唯一标识 |
..id_card | string | 代表验券传入的id_card_content |
..qrcode | string | 代表验券传入的qrcode_content |
..verify_amount_info | struct | 核销金额信息(仅次卡核销返回) |
...times_card_amount | struct | 【deprecated,不建议用,后期会下掉】次卡单笔核销金额 |
....amount | int64 | 【deprecated,不建议用,后期会下掉】单次核销金额(当前次卡未接入营销活动,因此原价 = 用户实付) |
...times_card_serial_amount | struct | 对应核销序号的金额明细 |
....serial_numb | int32 | 次序号 |
....amount | struct | 对应次序号的金额信息 |
.....original_amount | int32 | 原始金额,单位分 |
.....pay_amount | int32 | 用户实付金额,单位分(包含支付优惠/次数) |
.....merchant_ticket_amount | int32 | 商家营销金额,单位分 |
.....list_market_amount | int32 | 划线价,单位分 |
.....platform_discount_amount | int32 | 平台优惠金额,单位分 |
.....coupon_pay_amount | int32 | 券实付金额(=用户实付金额+支付优惠金额),单位分 |
...benefit_amount | struct | 惠享卡核销信息(仅惠享卡核销返回) |
....principal_amount | int32 | 本金扣除金额 |
....benefit_amount | int32 | 赠送金扣除金额 |
....total_amount | int32 | 总扣除金额 |
.sub_error_code | int64 | (弃用)子错误码 |
.sub_description | string | (弃用)子错误码描述 |
.logid | string | 请求id |
.now | int64 | (弃用)接口响应时间,时间戳,单位秒 |
响应示例
正常示例
{ "data": { "error_code": 0, "description": "success", "verify_results": [ { "result": 0, "msg": "验券成功", "code": "CgwIARDhJxjLLyABKAESLgosTYTOIJFLZx8IaWKdO9ISKSWf4XYaqzt8TU1fhbTpYhIAuA5i5fRYfApwNRMaAA==", "verify_id": "7091478021421631519", "certificate_id": "7091180835810052103", "origin_code": "102539929601", "account_id": "123456" } ] }, "extra": { "error_code": 0, "description": "success", "sub_error_code": 0, "sub_description": "", "logid": "xxx", "now": 1651113600 } }
异常示例
参考下述错误码和枚举。
错误码
HTTP 状态码 | 错误码 | 描述 | 排查建议 |
200 | 2190002 | access_token无效 | 调用接口重新生成access_token |
200 | 2190004 | 应用申请接口权限 | |
200 | 2190008 | access_token过期,请刷新或重新授权 | 规范token刷新机制,检查是否有测试环境在同步刷 新token |
200 | 2119001 | 参数不合法 | 更换参数 |
200 | 2119002 | 系统繁忙,请稍候再试 | 重试 |
200 | 2119003 | 请求太过频繁,请稍后再试 | 重试 |
200 | 2119005 | 应用未获商家授权 | 联系合作商家在商家后台发起授权,并在服务商后台同意授权 |
200 | 3000001 | 根据实际业务错误返回 | 对照接口文档规范参数并重试 |
200 | 4000001 | 补充参数 | |
200 | 4000002 | 对照接口文档规范参数并重试 | |
200 | 5000001 | 联系抖音处理 | |
200 | 3000002 | 核销门店错误 | 检查核销门店重试 |
200 | 3000020 | 无核销记录可撤销 | 查看是否核销过再重试 |
verify_results 枚举
- •核销次卡枚举(三方码)
- •备注:当前三方码次卡未做result非0的错误枚举,0之外,其他一律返回-1,有 需求可向对应产运同学反馈,抖音码次卡同团购错误码
verify_results枚举 | 枚举说明 |
0 | 履约成功 |
-1 | 券码已核销 |
-1 | 券码正在退款中(用户主动退款) |
-1 | 券码未到可使用日期 |
-1 | 券码正在退款中(过期自动退) |
-1 | 券码已退款 |
- •核销团购枚举(三方码&抖音码)
verify_results枚举 | 枚举说明 |
0 | 验券成功 |
三方码:1205 抖音码:3 | 券码正在退款中(用户主动退款) |
三方码:1206 抖音码:5 | 券码未到可使用日期 或 团购有效期尚未开始 |
三方码:1207 抖音码:32 | 券码退款中(过期自动退) |
三方码:1208 抖音码:2 | 券码已核销 |
三方码:1209 抖音码:4 | 券码已退款 |
三方码:1211 | 其他错误 |
三方码: 1212 | 无法查到券信息 |
抖音码:31 | 券码退款中(用户申请) |
抖音码:6 | 券码已过期,系统将自动发起退款 |
阶梯次卡独有错误码
错误码 | 错误msg | 解释 |
1601 | 次卡核销,指定序号[4]无法被核销,被锁定或已核销,请检查此序号合理性 | 指定核销次数(且只有一个指定次数),如果指定次数已经核销了,且传入的核销token不一致,有此错误码。 |
