From 5978e92370bfac2f7937afa23f1fac83b31aaa85 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Thu, 8 Oct 2026 14:57:30 +0800 Subject: [PATCH] =?UTF-8?q?docs(=E6=8A=96=E9=9F=B3-=E7=A0=81=E9=80=9F?= =?UTF-8?q?=E8=BE=BE):=20=E6=94=B6=E5=BD=95=E5=BC=80=E6=94=BE=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E5=85=A8=E9=87=8F=E5=AF=B9=E6=8E=A5=E6=96=87=E6=A1=A3?= =?UTF-8?q?=EF=BC=88=E6=8A=93=E5=8F=96=E5=BF=AB=E7=85=A7=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 docs/抖音-码速达:把新平台(dy-openplatform-api.wanmahui.com)联调文档页的 全部数据落到仓库,供离线查阅与后续对接。 数据来源:文档页把全部数据内嵌在隐藏 input#raw_data 的 JSON 里(api / message / fee / menu 四块),一次请求即取全,无需逐页爬取。 内容: - README.md:平台速览(网关、鉴权要素、计费)、14 条消息与 16 个接口总表、对接六步; - 01-计费规则.md:免费/基础(1 金豆)/高级(2 金豆)/增值(4 金豆)四档与各接口分级; - 02-接口调用规范与签名.md:网关 POST /api/openplatform/gateway、公共参数 uid/method/timestamp/sign、MD5 签名算法与可复算示例、返回结构; - 03-消息推送规范与签名.md:topic/pub_time/sign 走 URL、data 走 POST body、 验签要点、message.config 消息设置、messagetest 测试入口; - 接口API/ 16 篇:请求参数、返回字段(层级缩进)、可解析的返回示例 JSON、 签名原串 + MD5 结果; - 消息推送/ 14 篇:topic、data 字段、示例 JSON、签名原串 + MD5 结果; - data/raw_data.json(与页面快照逐字段校验一致)、data/page.html、data/代码示例/ (页面内置 JAVA/.NET/PHP 示例 6 份)、data/crawl-meta.json(抓取元信息与文件 MD5)。 校验:接口 16/16、消息 14/14 无缺漏,33 段示例 JSON 全部可解析,内部链接全部可达。 文档页访问令牌已隐去(凭据不入库)。04~06 的分析类文档暂不入库,仅保留本地。 --- docs/抖音-码速达/01-计费规则.md | 52 + docs/抖音-码速达/02-接口调用规范与签名.md | 130 + docs/抖音-码速达/03-消息推送规范与签名.md | 121 + docs/抖音-码速达/README.md | 86 + docs/抖音-码速达/data/crawl-meta.json | 221 ++ docs/抖音-码速达/data/page.html | 1061 +++++++ docs/抖音-码速达/data/raw_data.json | 2789 +++++++++++++++++ .../data/代码示例/接口API-请求示例-DOTNET.txt | 64 + .../data/代码示例/接口API-请求示例-JAVA.txt | 82 + .../data/代码示例/接口API-请求示例-PHP.txt | 35 + .../代码示例/消息推送-请求示例-DOTNET.txt | 39 + .../data/代码示例/消息推送-请求示例-JAVA.txt | 44 + .../data/代码示例/消息推送-请求示例-PHP.txt | 14 + docs/抖音-码速达/接口API/01-订单详情.md | 144 + docs/抖音-码速达/接口API/02-充值结果提交.md | 85 + docs/抖音-码速达/接口API/03-卡券同步.md | 78 + docs/抖音-码速达/接口API/04-卡券核销V3.md | 61 + docs/抖音-码速达/接口API/05-券码查询.md | 91 + docs/抖音-码速达/接口API/06-卡券取消核销.md | 63 + docs/抖音-码速达/接口API/07-卖家备注.md | 64 + docs/抖音-码速达/接口API/08-售后审核.md | 96 + .../接口API/09-查询商家拒绝原因列表.md | 79 + docs/抖音-码速达/接口API/10-订单列表查询.md | 147 + .../接口API/11-商家主动取消订单.md | 87 + docs/抖音-码速达/接口API/12-消息设置.md | 61 + docs/抖音-码速达/接口API/13-商品详情.md | 93 + docs/抖音-码速达/接口API/14-商品列表.md | 94 + docs/抖音-码速达/接口API/15-商品sku列表.md | 89 + docs/抖音-码速达/接口API/16-订单消息测试.md | 61 + docs/抖音-码速达/消息推送/01-买家已付款.md | 72 + docs/抖音-码速达/消息推送/02-卖家备注变更.md | 62 + docs/抖音-码速达/消息推送/03-卖家发货.md | 86 + docs/抖音-码速达/消息推送/04-卖家部分发货.md | 99 + docs/抖音-码速达/消息推送/05-买家发起售后.md | 87 + docs/抖音-码速达/消息推送/06-售后关闭.md | 76 + docs/抖音-码速达/消息推送/07-退款成功.md | 76 + docs/抖音-码速达/消息推送/08-订单完成.md | 50 + docs/抖音-码速达/消息推送/09-订单取消.md | 50 + docs/抖音-码速达/消息推送/10-同意退款.md | 50 + docs/抖音-码速达/消息推送/11-拒绝退款.md | 50 + docs/抖音-码速达/消息推送/12-发起仲裁.md | 50 + docs/抖音-码速达/消息推送/13-取消仲裁.md | 50 + docs/抖音-码速达/消息推送/14-订单创建.md | 68 + 43 files changed, 7057 insertions(+) create mode 100644 docs/抖音-码速达/01-计费规则.md create mode 100644 docs/抖音-码速达/02-接口调用规范与签名.md create mode 100644 docs/抖音-码速达/03-消息推送规范与签名.md create mode 100644 docs/抖音-码速达/README.md create mode 100644 docs/抖音-码速达/data/crawl-meta.json create mode 100644 docs/抖音-码速达/data/page.html create mode 100644 docs/抖音-码速达/data/raw_data.json create mode 100644 docs/抖音-码速达/data/代码示例/接口API-请求示例-DOTNET.txt create mode 100644 docs/抖音-码速达/data/代码示例/接口API-请求示例-JAVA.txt create mode 100644 docs/抖音-码速达/data/代码示例/接口API-请求示例-PHP.txt create mode 100644 docs/抖音-码速达/data/代码示例/消息推送-请求示例-DOTNET.txt create mode 100644 docs/抖音-码速达/data/代码示例/消息推送-请求示例-JAVA.txt create mode 100644 docs/抖音-码速达/data/代码示例/消息推送-请求示例-PHP.txt create mode 100644 docs/抖音-码速达/接口API/01-订单详情.md create mode 100644 docs/抖音-码速达/接口API/02-充值结果提交.md create mode 100644 docs/抖音-码速达/接口API/03-卡券同步.md create mode 100644 docs/抖音-码速达/接口API/04-卡券核销V3.md create mode 100644 docs/抖音-码速达/接口API/05-券码查询.md create mode 100644 docs/抖音-码速达/接口API/06-卡券取消核销.md create mode 100644 docs/抖音-码速达/接口API/07-卖家备注.md create mode 100644 docs/抖音-码速达/接口API/08-售后审核.md create mode 100644 docs/抖音-码速达/接口API/09-查询商家拒绝原因列表.md create mode 100644 docs/抖音-码速达/接口API/10-订单列表查询.md create mode 100644 docs/抖音-码速达/接口API/11-商家主动取消订单.md create mode 100644 docs/抖音-码速达/接口API/12-消息设置.md create mode 100644 docs/抖音-码速达/接口API/13-商品详情.md create mode 100644 docs/抖音-码速达/接口API/14-商品列表.md create mode 100644 docs/抖音-码速达/接口API/15-商品sku列表.md create mode 100644 docs/抖音-码速达/接口API/16-订单消息测试.md create mode 100644 docs/抖音-码速达/消息推送/01-买家已付款.md create mode 100644 docs/抖音-码速达/消息推送/02-卖家备注变更.md create mode 100644 docs/抖音-码速达/消息推送/03-卖家发货.md create mode 100644 docs/抖音-码速达/消息推送/04-卖家部分发货.md create mode 100644 docs/抖音-码速达/消息推送/05-买家发起售后.md create mode 100644 docs/抖音-码速达/消息推送/06-售后关闭.md create mode 100644 docs/抖音-码速达/消息推送/07-退款成功.md create mode 100644 docs/抖音-码速达/消息推送/08-订单完成.md create mode 100644 docs/抖音-码速达/消息推送/09-订单取消.md create mode 100644 docs/抖音-码速达/消息推送/10-同意退款.md create mode 100644 docs/抖音-码速达/消息推送/11-拒绝退款.md create mode 100644 docs/抖音-码速达/消息推送/12-发起仲裁.md create mode 100644 docs/抖音-码速达/消息推送/13-取消仲裁.md create mode 100644 docs/抖音-码速达/消息推送/14-订单创建.md diff --git a/docs/抖音-码速达/01-计费规则.md b/docs/抖音-码速达/01-计费规则.md new file mode 100644 index 00000000..48c327e4 --- /dev/null +++ b/docs/抖音-码速达/01-计费规则.md @@ -0,0 +1,52 @@ +# 计费规则 + +> 来源:抖音码速达开放平台「计费规则」页(`#fee`)。所有接口按功能分级扣金豆,按实际调用量计费。 + +| 功能类型 | 单价(金豆) | 折合 | 说明 | +| --- | --- | --- | --- | +| 免费功能 | 0 | - | | +| 基础功能 | 1 | 0.001元 | | +| 高级功能 | 2 | 0.002元 | | +| 增值功能 | 4 | 0.004元 | | + +## 各接口对应的功能分级 + +### 消息推送 + +| 序号 | 消息 | 主题 | 分级 | +| --- | --- | --- | --- | +| 1 | 买家已付款 | `trade_TradePaid` | 基础功能 | +| 2 | 卖家备注变更 | `trade_TradeMemoModify` | 基础功能 | +| 3 | 卖家发货 | `trade_TradeSellerShip` | 基础功能 | +| 4 | 卖家部分发货 | `trade_TradePartlySellerShip` | 基础功能 | +| 5 | 买家发起售后 | `refund_RefundCreated` | 基础功能 | +| 6 | 售后关闭 | `refund_RefundClosed` | 高级功能 | +| 7 | 退款成功 | `refund_RefundSuccess` | 高级功能 | +| 8 | 订单完成 | `trade_TradeSuccess` | 基础功能 | +| 9 | 订单取消 | `trade_TradeCanceled` | 基础功能 | +| 10 | 同意退款 | `refund_RefundAgreed` | 基础功能 | +| 11 | 拒绝退款 | `refund_RefundRefused` | 高级功能 | +| 12 | 发起仲裁 | `refund_ArbitrateApplied` | 高级功能 | +| 13 | 取消仲裁 | `refund_ArbitrateCancelled` | 高级功能 | +| 14 | 订单创建 | `trade_TradeCreate` | 基础功能 | + +### 接口 API + +| 序号 | 接口 | 方法名 | 分级 | +| --- | --- | --- | --- | +| 1 | 订单详情 | `order.orderDetail` | 高级功能 | +| 2 | 充值结果提交 | `topup.result` | 基础功能 | +| 3 | 卡券同步 | `coupons.syncV2` | 基础功能 | +| 4 | 卡券核销V3 | `coupons.verifyV3` | 高级功能 | +| 5 | 券码查询 | `coupons.list` | 基础功能 | +| 6 | 卡券取消核销 | `coupons.cancelVerify` | 基础功能 | +| 7 | 卖家备注 | `order.addOrderRemark` | 基础功能 | +| 8 | 售后审核 | `afterSale.operate` | 高级功能 | +| 9 | 查询商家拒绝原因列表 | `afterSale.rejectReasonCodeList` | 免费功能 | +| 10 | 订单列表查询 | `order.searchList` | 未标注 | +| 11 | 商家主动取消订单 | `coupons.CertSyncFailedCancelOrder` | 高级功能 | +| 12 | 消息设置 | `message.config` | 免费功能 | +| 13 | 商品详情 | `product.detail` | 基础功能 | +| 14 | 商品列表 | `product.list` | 高级功能 | +| 15 | 商品sku列表 | `sku.list` | 高级功能 | +| 16 | 订单消息测试 | `order.message` | 高级功能 | diff --git a/docs/抖音-码速达/02-接口调用规范与签名.md b/docs/抖音-码速达/02-接口调用规范与签名.md new file mode 100644 index 00000000..50d7b64d --- /dev/null +++ b/docs/抖音-码速达/02-接口调用规范与签名.md @@ -0,0 +1,130 @@ +# 接口调用规范与签名 + +> 内容来源:抖音码速达开放平台「接口API」各页面内的公共说明(请求方式、公共参数、签名规则、返回结构、示例代码)。 +> 原始页面数据见 [`data/raw_data.json`](data/raw_data.json),示例代码原文见 [`data/代码示例/`](data/代码示例)。 + +## 1. 请求地址与协议 + +| 项目 | 值 | +| --- | --- | +| 接口网关 | `https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| 请求方式 | `POST` | +| Content-Type | `application/x-www-form-urlencoded` | +| 编码 | UTF-8(参数值需 URLEncode) | +| 响应 | JSON | + +页面上的「接口地址」是按当前站点 origin 动态拼出来的(`location.origin + "/api/openplatform/gateway"`), +因此测试环境换域名时,网关地址随之变化。 + +## 2. 公共参数(所有接口都必须带) + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(页面示例为 `111111111`,实际由平台方分配) | +| method | String | 是 | Post | 方法名,例如 `order.orderDetail`,取值见各接口文档 | +| timestamp | String | 是 | Post | 秒级时间戳,**10 分钟内有效** | +| sign | String | 是 | Post | 签名,签名原串计算 MD5(32 位小写) | + +> 业务参数与公共参数一并 POST(`application/x-www-form-urlencoded`),业务参数清单见 [`接口API/`](接口API) 下各接口文档。 + +## 3. 签名算法 + +签名原串由 **用户秘钥 secret**、**参数名**、**参数值** 组成: + +1. 取除 `sign` 之外的**全部参数**(公共参数 + 业务参数); +2. 按**参数名的字典序**(ASCII 升序)排列,即 `content`、`method`、`order_id`、`timestamp`、`uid`… 的顺序; +3. 每个参数把 `参数名` 直接连接 `参数值`(中间无分隔符),首尾相连; +4. 在最前面和最后面各拼一次**用户秘钥**; +5. 对该原串计算 **MD5,输出 32 位小写**,即为 `sign`。 + +```text +sign = md5( secret + Σ(参数名 + 参数值,按参数名字典序) + secret ) +``` + +### 示例(订单详情 `order.orderDetail`) + +占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`、业务参数 `shop_order_id=6917533224570258991`: + +```text +XXXXXXXXXXXXXXXXXXXXmethodorder.orderDetailshop_order_id6917533224570258991timestamp1780000000uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`method`、`shop_order_id`、`timestamp`、`uid` + +```text +sign = e4a08602d21966e99d2fa0921d7456b0 +``` + +> 每条接口文档的「签名原串示例」小节里都给出了该接口的可复算示例(含 MD5 结果),可直接用来校验自己的实现。 + +### 注意 + +- `sign` 本身**不参与**签名原串计算。 +- 参数值要用**原始值**参与拼接;发请求时才对值做 URLEncode(页面 Java 示例是先拼原串算 sign,再把 `key=URLEncoder.encode(value)` 拼成 body 并追加 `sign`)。 +- 若业务参数值为 JSON 字符串(`type = Json`,如 `op`),拼进原串的是该 JSON 字符串本身,与 POST 出去的值保持一致。 +- `timestamp` 超过 10 分钟会校验失败,需要重新取当前秒级时间戳。 + +## 4. 返回结构 + +公共返回参数: + +| 参数名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| code | String | `10000` | 返回编码,`10000` 代表成功,其余均表示错误 | +| message | String | `成功` | 返回消息,错误时返回错误原因 | + +```json +{ + "code": "10000", + "message": "成功" +} +``` + +业务数据在 `data` 字段中,按各接口的「返回参数」定义;完整示例见每条接口文档。 + +## 5. 请求代码示例 + +页面内置了三种语言的完整示例,已原样保存: + +| 语言 | 文件 | +| --- | --- | +| JAVA | [`data/代码示例/接口API-请求示例-JAVA.txt`](data/代码示例/接口API-请求示例-JAVA.txt) | +| .NET | [`data/代码示例/接口API-请求示例-DOTNET.txt`](data/代码示例/接口API-请求示例-DOTNET.txt) | +| PHP | [`data/代码示例/接口API-请求示例-PHP.txt`](data/代码示例/接口API-请求示例-PHP.txt) | + +代码里的 `{{secret}}` `{{uid}}` `{{method}}` `{{url}}` 是页面占位符,实际使用时替换为真实值; +`{{p6}}` ~ `{{p10}}` 标注的是「按当前接口的业务参数逐条插入的位置」。 + +JAVA 示例的核心逻辑: + +```java +String secret = "{{secret}}"; // 用户秘钥 +String uid = "{{uid}}"; // 用户 OpenUid +String method = "{{method}}"; // API 方法名 +String timestamp = String.valueOf(System.currentTimeMillis() / 1000L); + +// 业务参数(按接口文档逐个 map.put) +Map map = new HashMap(); +map.put("uid", uid); +map.put("method", method); +map.put("timestamp", timestamp); + +List keys = new ArrayList(map.keySet()); +Collections.sort(keys); // 参数名字典序 +StringBuffer sb = new StringBuffer(secret); // 签名原串 +StringBuffer sb2 = new StringBuffer(); // POST body +for (String key : keys) { + sb.append(key + map.get(key)); + sb2.append(key + "=" + URLEncoder.encode(map.get(key), "UTF-8") + "&"); +} +sb.append(secret); +String sign = CalculateMd5(sb.toString()); // MD5 小写 +sb2.append("sign=" + sign); +// POST sb2 到 {{url}},Content-Type: application/x-www-form-urlencoded +``` + +## 6. 计费与注意事项 + +- 调用按**功能分级**扣金豆:免费 / 基础功能 1 金豆(0.001 元)/ 高级功能 2 金豆(0.002 元)/ 增值功能 4 金豆(0.004 元),按实际调用量计费,详见 [01-计费规则.md](01-计费规则.md)。 +- 页面部分接口标注「测试接口,仅支持特定商户」(如 `order.message`),接入前先与平台方确认权限。 +- 页面原始数据中,个别数值型返回字段没有示例值;本文档为保证示例 JSON 可被解析,统一补 `0`(原页面会渲染成非法 JSON)。 diff --git a/docs/抖音-码速达/03-消息推送规范与签名.md b/docs/抖音-码速达/03-消息推送规范与签名.md new file mode 100644 index 00000000..88211fd3 --- /dev/null +++ b/docs/抖音-码速达/03-消息推送规范与签名.md @@ -0,0 +1,121 @@ +# 消息推送规范与签名 + +> 内容来源:抖音码速达开放平台「消息推送」各页面内的公共说明(推送参数、data 提交方式、签名规则、测试入口)。 +> 原始页面数据见 [`data/raw_data.json`](data/raw_data.json),示例代码原文见 [`data/代码示例/`](data/代码示例)。 + +## 1. 推送模型 + +1. 商家在「接口API → 消息设置」(方法名 `message.message_config`)里配置**推送地址 `message_url`** 与**订阅主题 `topics`**; +2. 平台在对应业务事件发生时,向该地址推送消息; +3. 推送采用 **URL 查询串 + POST body** 的混合方式:`topic`、`pub_time`、`sign` 放在 URL 上(Get),`data`(JSON 字符串)放在 POST body 里; +4. 商家服务端校验签名、解析 `data` 后返回成功即可。 + +页面给出的 jQuery 请求示例(由平台侧发出,商家侧只需实现接收): + +```javascript +$.ajax('{message_url}?topic={topic}&pub_time={pub_time}&sign={sign}', { + method: 'POST', + data: '{data 的 JSON 字符串}', + success: function (res) { console.log(res); }, + error: function (err) { console.log(err); } +}); +``` + +## 2. 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题,如 `trade_TradePaid`,取值见「[消息清单](#5-消息清单)」 | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 格式字符串 | +| sign | String | Get | 签名,签名原串计算 MD5(32 位小写) | + +> 消息设置接口的字段:`status`(推送状态:0-禁用,1-启用)、`message_url`(推送地址)、`topics`(订阅的主题,多个用半角逗号分隔),首次提交时三项必填。 + +## 3. 签名算法 + +与接口调用同一套规则,但参与签名的参数只有 `data`、`pub_time`、`topic` 三个: + +1. 参数名按**字典序**排序 → `data`、`pub_time`、`topic`; +2. 依次拼接 `参数名 + 参数值`(`data` 用**完整 JSON 字符串本身**,不做 URL 编码); +3. 首尾各拼一次**用户秘钥 secret**; +4. 计算 **MD5,输出 32 位小写**。 + +```text +sign = md5( secret + "data" + data + "pub_time" + pub_time + "topic" + topic + secret ) +``` + +### 示例(`trade_TradePaid` 买家已付款) + +占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、`pub_time = 1780000000`: + +```text +XXXXXXXXXXXXXXXXXXXXdata{"pay_amount":1990,"s_ids":[123],"order_status":2,"order_type":0,"pay_time":1630373504,"p_id":4837328765348567000,"shop_id":77977,"pay_type":1,"biz":2}pub_time1780000000topictrade_TradePaidXXXXXXXXXXXXXXXXXXXX +``` + +```text +sign = 1f4e1e6fc7e2ebad3368abfc2e07f2d1 +``` + +> 每条消息文档的「签名原串示例」小节都给出了该 topic 的可复算示例(含 MD5 结果),可用于校验验签实现。 + +## 4. 验签与联调 + +- **验签**:商家服务端收到请求后,用自己保存的 secret 按上面的规则复算 MD5,与 URL 上的 `sign` 比对;`data` 要使用**原始 JSON 字符串**(与 body 完全一致),不要先做格式化或键排序。 +- **测试入口**:平台提供消息推送测试接口 + + ```text + GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic={topic}&pub_time={秒时间戳}&sign={签名} + ``` + + `data` 以 POST body 提交,用于在联调阶段按指定 topic 触发一条推送。 +- 另有「接口API → 订单消息测试」(方法名 `order.message`,测试接口,仅支持特定商户)可模拟订单类消息。 + +## 5. 消息清单 + +| # | 消息 | 主题 topic | 分级 | +| --- | --- | --- | --- | +| 1 | 买家已付款 | `trade_TradePaid` | 基础功能 | +| 2 | 卖家备注变更 | `trade_TradeMemoModify` | 基础功能 | +| 3 | 卖家发货 | `trade_TradeSellerShip` | 基础功能 | +| 4 | 卖家部分发货 | `trade_TradePartlySellerShip` | 基础功能 | +| 5 | 买家发起售后 | `refund_RefundCreated` | 基础功能 | +| 6 | 售后关闭 | `refund_RefundClosed` | 高级功能 | +| 7 | 退款成功 | `refund_RefundSuccess` | 高级功能 | +| 8 | 订单完成 | `trade_TradeSuccess` | 基础功能 | +| 9 | 订单取消 | `trade_TradeCanceled` | 基础功能 | +| 10 | 同意退款 | `refund_RefundAgreed` | 基础功能 | +| 11 | 拒绝退款 | `refund_RefundRefused` | 高级功能 | +| 12 | 发起仲裁 | `refund_ArbitrateApplied` | 高级功能 | +| 13 | 取消仲裁 | `refund_ArbitrateCancelled` | 高级功能 | +| 14 | 订单创建 | `trade_TradeCreate` | 基础功能 | + +每条消息的 `data` 字段说明与示例见 [`消息推送/`](消息推送) 目录。 + +## 6. 签名/推送代码示例 + +| 语言 | 文件 | +| --- | --- | +| JAVA | [`data/代码示例/消息推送-请求示例-JAVA.txt`](data/代码示例/消息推送-请求示例-JAVA.txt) | +| .NET | [`data/代码示例/消息推送-请求示例-DOTNET.txt`](data/代码示例/消息推送-请求示例-DOTNET.txt) | +| PHP | [`data/代码示例/消息推送-请求示例-PHP.txt`](data/代码示例/消息推送-请求示例-PHP.txt) | + +PHP 示例(可直接用于验签): + +```php +$secret = '{{secret}}'; // 用户秘钥 +$params = array(); +$params['topic'] = '{{topic}}'; // 消息主题 +$params['pub_time'] = '{{pub-time}}'; // 原消息发布时间 +$params['data'] = '{{data}}'; // 消息内容(原始 JSON 字符串) +ksort($params); // 参数名字典序 +$str = ''; +foreach ($params as $k => $v) { + $str .= ($k . $v); +} +$str = $secret . $str . $secret; // 拼接签名原串 +$sign = md5($str); // 签名计算 +``` + +Java 示例的核心逻辑见 [`data/代码示例/消息推送-请求示例-JAVA.txt`](data/代码示例/消息推送-请求示例-JAVA.txt): +把 `topic`/`pub_time`/`data` 放进 map → `Collections.sort` → 前后拼 secret → `CalculateMd5`。 diff --git a/docs/抖音-码速达/README.md b/docs/抖音-码速达/README.md new file mode 100644 index 00000000..4fa3cc1c --- /dev/null +++ b/docs/抖音-码速达/README.md @@ -0,0 +1,86 @@ +# 抖音码速达 - 开放平台 对接文档 + +> 本目录把 **抖音码速达开放平台**()联调文档页的全部数据完整落到仓库里, +> 便于离线查阅、评审与后续对接开发。 +> +> 抓取时间:2026-10-08(Asia/Shanghai)| 抓取入口:`https://dy-openplatform-api.wanmahui.com/?token=<访问令牌已隐去>#message.trade_TradePaid` +> 页面数据源:页面内嵌的 `#raw_data` JSON(本目录已原样保存为 `data/raw_data.json`)。 +> 说明:文档页访问令牌(token)属于凭据,已在本文档中隐去,如需重新访问请向平台方索取。 + +## 平台速览 + +| 项目 | 内容 | +| --- | --- | +| 平台名称 | 抖音码速达 - 开放平台 | +| 服务地址(页面 origin) | `https://dy-openplatform-api.wanmahui.com` | +| 接口网关 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| 消息推送测试入口 | `https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest` | +| 请求编码 | `Content-Type: application/x-www-form-urlencoded` | +| 签名算法 | MD5(32 位小写),见「[接口调用规范与签名](02-接口调用规范与签名.md)」 | +| 鉴权要素 | 用户秘钥 secret + 抖店商户号 uid(OpenUid) + 方法名 method + 时间戳 timestamp | +| 计费 | 按功能分级扣金豆(见「[计费规则](01-计费规则.md)」) | +| 消息主题数量 | 14 条 | +| 接口数量 | 16 个(不含公共参数 uid/method/timestamp/sign) | + +## 文档目录 + +| 文档 | 内容 | +| --- | --- | +| [01-计费规则.md](01-计费规则.md) | 免费/基础/高级/增值 四档功能单价与各接口分级 | +| [02-接口调用规范与签名.md](02-接口调用规范与签名.md) | 网关、公共参数、签名算法、返回结构、JAVA/.NET/PHP 请求示例 | +| [03-消息推送规范与签名.md](03-消息推送规范与签名.md) | 推送参数、data 提交方式、签名与验签、消息设置、示例代码 | +| 04 ~ 06 分析文档 | 【本地文档,暂未入库】结合本项目的深度分析、最小接入方案分析、待确认问题清单 | +| `接口API/` | 16 个接口逐条文档(请求参数、返回参数与示例、签名原串示例) | +| `消息推送/` | 14 条消息逐条文档(topic、data 字段、示例 JSON、签名原串示例) | +| `data/raw_data.json` | 页面内嵌原始数据(api / message / fee / menu 四块,完整未删减) | +| `data/page.html` | 文档页原始 HTML 快照(含页面模板与前端逻辑) | +| `data/代码示例/` | 页面内置的 JAVA / .NET / PHP 示例代码原文 | + +## 消息推送(14 条) + +| # | 消息 | 主题 topic | 分级 | 说明 | +| --- | --- | --- | --- | --- | +| 1 | [买家已付款](消息推送/01-买家已付款.md) | `trade_TradePaid` | 基础功能 | 在线支付订单,当买家付款成功时,会推送此消息 | +| 2 | [卖家备注变更](消息推送/02-卖家备注变更.md) | `trade_TradeMemoModify` | 基础功能 | 卖家修改交易备注时,会推送此消息 | +| 3 | [卖家发货](消息推送/03-卖家发货.md) | `trade_TradeSellerShip` | 基础功能 | 卖家对所有商品发货完成,且父订单状态为【已发货】时,会推送此消息 | +| 4 | [卖家部分发货](消息推送/04-卖家部分发货.md) | `trade_TradePartlySellerShip` | 基础功能 | 卖家对部分商品(可能是部分件数)发货时,会推送此消息 | +| 5 | [买家发起售后](消息推送/05-买家发起售后.md) | `refund_RefundCreated` | 基础功能 | 买家申请整单退款时,会推送此消息 | +| 6 | [售后关闭](消息推送/06-售后关闭.md) | `refund_RefundClosed` | 高级功能 | 当买家取消申请或系统超时机制导致退款取消时,会推送此消息 | +| 7 | [退款成功](消息推送/07-退款成功.md) | `refund_RefundSuccess` | 高级功能 | 当商家同意退款后,实际退款到账时,会推送此消息 | +| 8 | [订单完成](消息推送/08-订单完成.md) | `trade_TradeSuccess` | 基础功能 | 买家确认收货或系统自动确认收货,且父订单状态变为「已完成」时,会推送此消息 | +| 9 | [订单取消](消息推送/09-订单取消.md) | `trade_TradeCanceled` | 基础功能 | 触发场景:货到付款订单且订单状态为「待确认」,买家和商家可取消订单;货到付款订单且订单状态为「备货中」,买家、商家和平台客服可取消订单;货到付款订单且订单状态为「已发货」,物流状态为拒收或退回;在线支付订单且订单状态为「待付款」,买家可取消该订单;在线支付订单且订单状态为「待付款」,超时未支付,订单自动取消 | +| 10 | [同意退款](消息推送/10-同意退款.md) | `refund_RefundAgreed` | 基础功能 | 触发场景:买家在发货前申请整单退款,卖家同意退款或超时自动同意退款时;买家在发货后申请退款,卖家同意退款或超时自动同意退款时;买家在发货后申请申请退货,卖家确认收货或系统超时自动确认收货时;卖家收到买家换货包裹,核验后无法换货,同意换货但转直接退款时 | +| 11 | [拒绝退款](消息推送/11-拒绝退款.md) | `refund_RefundRefused` | 高级功能 | 触发场景:买家在发货前申请整单退款,卖家拒绝;买家在发货后申请退款,卖家拒绝;买家在发货后申请申请退货,买家发货后,卖家拒绝收货 | +| 12 | [发起仲裁](消息推送/12-发起仲裁.md) | `refund_ArbitrateApplied` | 高级功能 | 触发场景:商家拒绝买家请求,买家可申请平台客服介入、发起客服仲裁,此时推送此消息。具体场景如下: 订单已发货,买家申请售后退款,此时商家拒绝,买家可发起仲裁;订单已发货,买家申请售后退换货,此时商家拒绝退货请求,买家可发起仲裁;订单已发货,买家申请售后退换货,买家已填写退货物流,此时商家拒绝收货,买家可发起仲裁 | +| 13 | [取消仲裁](消息推送/13-取消仲裁.md) | `refund_ArbitrateCancelled` | 高级功能 | 买家申请客服介入、发起客服仲裁后,而后又取消客服仲裁时,推送此消息 | +| 14 | [订单创建](消息推送/14-订单创建.md) | `trade_TradeCreate` | 基础功能 | 当买家下单,系统生成订单时,会推送此消息 | + +## 接口 API(16 个) + +| # | 接口 | 方法名 | 分级 | 说明 | +| --- | --- | --- | --- | --- | +| 1 | [订单详情](接口API/01-订单详情.md) | `order.orderDetail` | 高级功能 | 查询订单的详细信息,仅显示关键字段 | +| 2 | [充值结果提交](接口API/02-充值结果提交.md) | `topup.result` | 基础功能 | 商家处理完充值请求后,异步回调告知平台充值结果 | +| 3 | [卡券同步](接口API/03-卡券同步.md) | `coupons.syncV2` | 基础功能 | 卖家在平台卖出券后同步卡券信息 | +| 4 | [卡券核销V3](接口API/04-卡券核销V3.md) | `coupons.verifyV3` | 高级功能 | 卖家向平台提交卡券核销状态 | +| 5 | [券码查询](接口API/05-券码查询.md) | `coupons.list` | 基础功能 | 查询券码在平台侧的状态详情 | +| 6 | [卡券取消核销](接口API/06-卡券取消核销.md) | `coupons.cancelVerify` | 基础功能 | 当卡券核销错误之后,取消核销时候使用 | +| 7 | [卖家备注](接口API/07-卖家备注.md) | `order.addOrderRemark` | 基础功能 | 卖家提交订单备注 | +| 8 | [售后审核](接口API/08-售后审核.md) | `afterSale.operate` | 高级功能 | 售后统一操作接口 | +| 9 | [查询商家拒绝原因列表](接口API/09-查询商家拒绝原因列表.md) | `afterSale.rejectReasonCodeList` | 免费功能 | 查询抖店支持的全量拒绝原因列表,或指定售后单可选的拒绝原因列表(仅支持已发货的售后查询,备货中未发货订单返回为空) | +| 10 | [订单列表查询](接口API/10-订单列表查询.md) | `order.searchList` | 未标注 | 根据条件检索满足要求的订单列表,支持下单时间和更新时间排序;最大支持查询近90天的数据;注:本接口仅用作批量获取订单基础信息及核查订单状态,如需获取订单充值信息,构建充值流程,请对接【买家已付款】消息+【订单详情】API | +| 11 | [商家主动取消订单](接口API/11-商家主动取消订单.md) | `coupons.CertSyncFailedCancelOrder` | 高级功能 | 仅适用于三方卡券订单,其他类型的订单都不支持;订单状态等于2,处于待发码状态,商家才可主动取消订单 | +| 12 | [消息设置](接口API/12-消息设置.md) | `message.config` | 免费功能 | 用户自行设置消息接收地址,推送状态及订阅内容 | +| 13 | [商品详情](接口API/13-商品详情.md) | `product.detail` | 基础功能 | 根据商品ID获取商品详情,输出仅限码速达系统已采集的字段 | +| 14 | [商品列表](接口API/14-商品列表.md) | `product.list` | 高级功能 | 分页查询店铺商品列表,输出仅限码速达系统已采集的字段 | +| 15 | [商品sku列表](接口API/15-商品sku列表.md) | `sku.list` | 高级功能 | 根据商品id获取商品的sku列表 | +| 16 | [订单消息测试](接口API/16-订单消息测试.md) | `order.message` | 高级功能 | 测试接口,仅支持特定商户 | + +## 对接要点(快速上手) + +1. **拿凭据**:向平台方索取「用户秘钥 secret」与「抖店商户号 uid」。 +2. **调接口**:`POST {网关}`,`application/x-www-form-urlencoded`,带公共参数 `uid`、`method`、`timestamp`(10 分钟内有效)、`sign` + 业务参数。 +3. **算签名**:除 `sign` 外所有参数按**参数名字典序**拼接 `参数名+参数值`,首尾各加一次 secret,取 **MD5 小写**。 +4. **看返回**:`{"code":"10000","message":"成功","data":{...}}`;`code != 10000` 即失败,`message` 为错误原因。 +5. **收消息推送**:在「消息设置」接口配置 `message_url` 与订阅的 `topics`;平台以 `GET topic+pub_time+sign`、`data` 走 POST body 推送到该地址,验签同样用 MD5 原串。 +6. **自测**:消息可用 `messagetest` 入口按 topic 触发;接口联调前先确认账户金豆余额与功能分级。 diff --git a/docs/抖音-码速达/data/crawl-meta.json b/docs/抖音-码速达/data/crawl-meta.json new file mode 100644 index 00000000..7d396adb --- /dev/null +++ b/docs/抖音-码速达/data/crawl-meta.json @@ -0,0 +1,221 @@ +{ + "platform": "抖音码速达 - 开放平台", + "source_url": "https://dy-openplatform-api.wanmahui.com/?token=<已隐去>#message.trade_TradePaid", + "source_origin": "https://dy-openplatform-api.wanmahui.com", + "crawled_at": "2026-10-08T14:05:00+08:00", + "data_source": "页面内嵌 #raw_data JSON(隐藏 input),单次请求即包含全部文档数据", + "counts": { + "messages": 14, + "apis": 16, + "fee_tiers": 4, + "menu_groups": 3 + }, + "endpoints": { + "gateway": "https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway", + "message_test": "https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest" + }, + "messages": [ + { + "topic": "trade_TradePaid", + "name": "买家已付款", + "level": "基础功能", + "props": 9 + }, + { + "topic": "trade_TradeMemoModify", + "name": "卖家备注变更", + "level": "基础功能", + "props": 5 + }, + { + "topic": "trade_TradeSellerShip", + "name": "卖家发货", + "level": "基础功能", + "props": 15 + }, + { + "topic": "trade_TradePartlySellerShip", + "name": "卖家部分发货", + "level": "基础功能", + "props": 21 + }, + { + "topic": "refund_RefundCreated", + "name": "买家发起售后", + "level": "基础功能", + "props": 17 + }, + { + "topic": "refund_RefundClosed", + "name": "售后关闭", + "level": "高级功能", + "props": 12 + }, + { + "topic": "refund_RefundSuccess", + "name": "退款成功", + "level": "高级功能", + "props": 12 + }, + { + "topic": "trade_TradeSuccess", + "name": "订单完成", + "level": "基础功能", + "props": 0 + }, + { + "topic": "trade_TradeCanceled", + "name": "订单取消", + "level": "基础功能", + "props": 0 + }, + { + "topic": "refund_RefundAgreed", + "name": "同意退款", + "level": "基础功能", + "props": 0 + }, + { + "topic": "refund_RefundRefused", + "name": "拒绝退款", + "level": "高级功能", + "props": 0 + }, + { + "topic": "refund_ArbitrateApplied", + "name": "发起仲裁", + "level": "高级功能", + "props": 0 + }, + { + "topic": "refund_ArbitrateCancelled", + "name": "取消仲裁", + "level": "高级功能", + "props": 0 + }, + { + "topic": "trade_TradeCreate", + "name": "订单创建", + "level": "基础功能", + "props": 7 + } + ], + "apis": [ + { + "method": "order.orderDetail", + "name": "订单详情", + "level": "高级功能", + "params": 1, + "returns": 39 + }, + { + "method": "topup.result", + "name": "充值结果提交", + "level": "基础功能", + "params": 9, + "returns": 7 + }, + { + "method": "coupons.syncV2", + "name": "卡券同步", + "level": "基础功能", + "params": 2, + "returns": 0 + }, + { + "method": "coupons.verifyV3", + "name": "卡券核销V3", + "level": "高级功能", + "params": 1, + "returns": 0 + }, + { + "method": "coupons.list", + "name": "券码查询", + "level": "基础功能", + "params": 3, + "returns": 13 + }, + { + "method": "coupons.cancelVerify", + "name": "卡券取消核销", + "level": "基础功能", + "params": 3, + "returns": 0 + }, + { + "method": "order.addOrderRemark", + "name": "卖家备注", + "level": "基础功能", + "params": 4, + "returns": 0 + }, + { + "method": "afterSale.operate", + "name": "售后审核", + "level": "高级功能", + "params": 3, + "returns": 4 + }, + { + "method": "afterSale.rejectReasonCodeList", + "name": "查询商家拒绝原因列表", + "level": "免费功能", + "params": 1, + "returns": 8 + }, + { + "method": "order.searchList", + "name": "订单列表查询", + "level": "", + "params": 12, + "returns": 35 + }, + { + "method": "coupons.CertSyncFailedCancelOrder", + "name": "商家主动取消订单", + "level": "高级功能", + "params": 2, + "returns": 4 + }, + { + "method": "message.config", + "name": "消息设置", + "level": "免费功能", + "params": 3, + "returns": 0 + }, + { + "method": "product.detail", + "name": "商品详情", + "level": "基础功能", + "params": 1, + "returns": 15 + }, + { + "method": "product.list", + "name": "商品列表", + "level": "高级功能", + "params": 2, + "returns": 15 + }, + { + "method": "sku.list", + "name": "商品sku列表", + "level": "高级功能", + "params": 2, + "returns": 12 + }, + { + "method": "order.message", + "name": "订单消息测试", + "level": "高级功能", + "params": 3, + "returns": 0 + } + ], + "files": { + "raw_data.json": "01b9c677ebafaf9f45521c1ac12d11aa", + "page.html": "12789c19c2d6a8271383eeb9f6f14aa4" + } +} \ No newline at end of file diff --git a/docs/抖音-码速达/data/page.html b/docs/抖音-码速达/data/page.html new file mode 100644 index 00000000..4a6d931d --- /dev/null +++ b/docs/抖音-码速达/data/page.html @@ -0,0 +1,1061 @@ + + + + + + + + + + + +
+

抖音码速达 - 开放平台

+
+ +
+
+
+
+
+   +
+
+
+

【计费规则】

+
+ + + + + + + + + + +
功能类型单价规则
+
+
+
+

+

+

+

请求方式:POST

+

Content-Type:application/x-www-form-urlencoded

+

接口地址:

+
+
请求参数说明
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
参数名类型必填提交方式说明
uidString是Post抖店商户号,示例:
methodString是Post方法名:
timestampString是Post时间戳(10分钟内有效):
signString是Post +

签名,签名原串计算MD5(全小写),签名原串拼接方式如下:

+

+

签名原串由用户秘钥、参数名、参数值组成。除sign之外的所有参数,将参数名连接参数值,按参数名的字典序排列,即按的顺序,首尾相连,最后在头尾两端加上用户秘钥。

+

签名原串计算MD5获得签名。示例签名原串MD5结果为

+
+
+
+
返回参数
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
参数名类型示例说明
codeString10000返回编码,10000代表成功,其余均表示错误
messageString成功返回消息,错误时返回错误原因
+
+
+
{
+    "code": "10000",
+    "message": "成功"
+}
+
+
+
+
+
请求代码示例
+ +
+
+
import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.math.BigInteger;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.security.MessageDigest;
+import java.util.*;
+
+public class Main {
+    public static void main(String[] args) {
+        try {
+            String secret = ""; //用户秘钥
+            String uid = ""; //用户OpenUid
+            String method = ""; //API方法名
+            String timestamp = String.valueOf(System.currentTimeMillis() / 1000L); //时间戳
+            //业务参数
+            Map<String, String> map = new HashMap<String, String>();
+            map.put("uid", uid);
+            map.put("method", method);
+            map.put("timestamp", timestamp);
+            //业务参数
+            List<String> keys = new ArrayList(map.keySet()); //SET转LIST
+            Collections.sort(keys); //排序
+            StringBuffer sb = new StringBuffer(secret); //拼接签名原串
+            StringBuffer sb2 = new StringBuffer(); //拼接POST内容
+            for (String key : keys) {
+                sb.append(key + map.get(key));
+                sb2.append(key + "=" + URLEncoder.encode(map.get(key), "UTF-8") + "&");
+            }
+            sb.append(secret);
+            String sign = CalculateMd5(sb.toString()); //签名计算
+            sb2.append("sign=" + sign); //添加签名参数
+            String result = CallApi(sb2.toString()); //请求API
+            System.out.println(result);
+        } catch (Exception e) {
+        }
+    }
+
+    private static String CalculateMd5(String content) {
+        try {
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            md.update(content.getBytes());
+            byte[] digest = md.digest();
+            Formatter formatter = new Formatter();
+            for (byte b : digest) {
+                formatter.format("%02x", b);
+            }
+            String result = formatter.toString();
+            return result;
+        } catch (Exception e) {
+        }
+        return null;
+    }
+
+    private static String CallApi(String formData) {
+        try {
+            URL url = new URL("");
+            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+            connection.setRequestMethod("POST");
+            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+            connection.setRequestProperty("Accept", "application/json");
+            connection.setDoOutput(true);
+            try (OutputStream os = connection.getOutputStream()) {
+                byte[] input = formData.getBytes("utf-8");
+                os.write(input, 0, input.length);
+            }
+            try (BufferedReader br = new BufferedReader(
+                    new InputStreamReader(connection.getInputStream(), "utf-8"))) {
+                StringBuilder response = new StringBuilder();
+                String responseLine = null;
+                while ((responseLine = br.readLine()) != null) {
+                    response.append(responseLine.trim());
+                }
+                return response.toString();
+            }
+        } catch (Exception e) {
+        }
+        return null;
+    }
+}
+
+
+
using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Security.Cryptography;
+using System.Text;
+using System.Web;
+
+namespace Test
+{
+    public class Program
+    {
+        static void Main(string[] args)
+        {
+            string secret = ""; //用户秘钥
+            string uid = ""; //用户OpenUid
+            string method = ""; //API方法名
+            string timestamp = ((long)(DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds).ToString(); //时间戳
+            //业务参数
+            Dictionary<string, string> dict = new Dictionary<string, string>();
+            dict.Add("uid", uid);
+            dict.Add("method", method);
+            dict.Add("timestamp", timestamp);
+            //业务参数
+            StringBuilder sb = new StringBuilder(secret); //拼接签名原串
+            StringBuilder sb2 = new StringBuilder(); //拼接POST内容
+            foreach (string key in dict.Keys.OrderBy(key => key))
+            {
+                sb.Append(key + dict[key]);
+                sb2.Append(key + "=" + HttpUtility.UrlEncode(dict[key], Encoding.UTF8) + "&");
+            }
+            sb.Append(secret);
+            string sign = CalculateMd5(sb.ToString()); //签名计算
+            sb2.Append("sign=" + sign); //添加签名参数
+            string result = CallApi(sb2.ToString()); //请求API
+            Console.WriteLine(result);
+        }
+
+        private static string CalculateMd5(string content)
+        {
+            var md5 = new MD5CryptoServiceProvider();
+            byte[] bytes = Encoding.UTF8.GetBytes(content);
+            byte[] bytes2 = md5.ComputeHash(bytes);
+            return BitConverter.ToString(bytes2).Replace("-", "").ToLower();
+        }
+
+        private static string CallApi(string formData)
+        {
+            try
+            {
+                WebClient webClient = new WebClient();
+                webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
+                webClient.Headers.Add("Accept", "application/json");
+                webClient.Encoding = Encoding.UTF8;
+                string result = webClient.UploadString("", "POST", formData);
+                return result;
+            }
+            catch (Exception e)
+            {
+            }
+            return null;
+        }
+    }
+}
+
+
+
$secret = ''; //用户秘钥
+$params = array();
+$params['uid'] = ''; //用户OpenUid
+$params['method'] = ''; //API方法名
+$params['timestamp'] = time(); //时间戳
+//业务参数
+ksort($params); //排序
+$str='';
+foreach($params as $k => $v)
+{
+    $str .= ($k . $v);
+    $params[$k] = urlencode($v);
+}
+$str = $secret . $str . $secret; //拼接签名原串
+$sign = md5($str); //签名计算
+$params['sign'] = $sign; //添加签名参数
+$res = call_api($params); //请求API
+echo($res);
+
+function call_api($params) 
+{
+    $curl = curl_init();
+    if (version_compare(phpversion(), '5.4.0', '<')) {
+      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
+    } else {
+      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
+    }
+    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
+    curl_setopt($curl, CURLOPT_POST, TRUE);
+    curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
+    curl_setopt($curl, CURLOPT_URL, '');
+    $res = curl_exec($curl);
+    curl_close ($curl);
+    return $res;
+}
+
+
+
+
+
验签工具
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + + + +
+
+
+
+ +
+
+ +
+
+
+ + +
+
+ + +
+
+
+
+
+
+
+ +
+
+ + + + + + + + + + + + +
属性名类型必填示例说明
+
+
+

+                        
+
+
+
+
+

+

+

+
+
参数说明
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
参数名类型提交方式说明
topicStringGet消息主题:trade_buyer_pay
pub_timeNumberGet原消息发布时间(秒时间戳):
dataStringPost +
+
消息内容,json格式
+ +
+
+ + + + + + + + + + + + +
属性名类型示例说明
+
+
+ +

+                                            
+
+
+
signStringGet +

签名,签名原串计算MD5(全小写),签名原串拼接方式如下:

+

datapub_timetopic

+

签名原串由用户秘钥、参数名、参数值组成。除sign之外的所有参数,将参数名连接参数值,按参数名的字典序排列,即按content、pub_time、topic的顺序,首尾相连,最后在头尾两端加上用户秘钥。

+

签名原串计算MD5获得签名。示例签名原串MD5结果为

+
+
+
+
jQuery请求示例
+
+$.ajax('?topic=&pub_time=&sign=', {
+    method: 'POST',
+    data: '',
+    success:function (res) {
+        console.log(res);
+    },
+    error:function (err) {
+        console.log(err);
+    }
+});
+
+
+
签名计算代码示例
+ +
+
+
import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.util.*;
+
+public class Main {
+    public static void main(String[] args) {
+        try {
+            String secret = ""; //用户秘钥
+            String topic = ""; //消息主题
+            String pub_time = ""; //原消息发布时间
+            String data = ""; //消息内容
+            Map<String, String> map = new HashMap<String, String>();
+            map.put("topic", topic);
+            map.put("pub_time", pub_time);
+            map.put("data", data);
+            List<String> keys = new ArrayList(map.keySet()); //SET转LIST
+            Collections.sort(keys); //排序
+            StringBuffer sb = new StringBuffer(secret); //拼接签名原串
+            for (String key : keys) {
+                sb.append(key + map.get(key));
+            }
+            sb.append(secret);
+            String sign = CalculateMd5(sb.toString()); //签名计算
+            System.out.println(sign);
+        } catch (Exception e) {
+        }
+    }
+
+    private static String CalculateMd5(String content) {
+        try {
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            md.update(content.getBytes());
+            byte[] digest = md.digest();
+            Formatter formatter = new Formatter();
+            for (byte b : digest) {
+                formatter.format("%02x", b);
+            }
+            String result = formatter.toString();
+            return result;
+        } catch (Exception e) {
+        }
+        return null;
+    }
+}
+
+
+
using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Text;
+
+namespace Test
+{
+    public class Program
+    {
+        static void Main(string[] args)
+        {
+            string secret = ""; //用户秘钥
+            string topic = ""; //消息主题
+            string pub_time = "";//原消息发布时间
+            string data = ""; //消息内容
+            Dictionary<string, string> dict = new Dictionary<string, string>();
+            dict.Add("topic", topic);
+            dict.Add("pub_time", pub_time);
+            dict.Add("data", data);
+            StringBuilder sb = new StringBuilder(secret); //拼接签名原串
+            foreach (string key in dict.Keys.OrderBy(key => key))
+            {
+                sb.Append(key + dict[key]);
+            }
+            sb.Append(secret);
+            string sign = CalculateMd5(sb.ToString()); //签名计算
+            Console.WriteLine(sign);
+        }
+
+        private static string CalculateMd5(string content)
+        {
+            var md5 = new MD5CryptoServiceProvider();
+            byte[] bytes = Encoding.UTF8.GetBytes(content);
+            byte[] bytes2 = md5.ComputeHash(bytes);
+            return BitConverter.ToString(bytes2).Replace("-", "").ToLower();
+        }
+    }
+}
+
+
+
$secret = ''; //用户秘钥
+$params = array();
+$params['topic'] = ''; //消息主题
+$params['pub_time'] = ''; //原消息发布时间
+$params['data'] = ''; //消息内容
+ksort($params); //排序
+$str='';
+foreach($params as $k => $v)
+{
+    $str .= ($k . $v);
+}
+$str = $secret . $str . $secret; //拼接签名原串
+$sign = md5($str); //签名计算
+echo($sign);
+
+
+
+
+
验签工具
+
+
+ + +
+
+ + +
+
+ +
+ + + + +
+
+
+ + +
+
+
+ +
+
+ +
+
+
+ + +
+
+ + +
+
+
+
+
+ +
+ © 2025 - 万码惠 +
+ + + + + + + \ No newline at end of file diff --git a/docs/抖音-码速达/data/raw_data.json b/docs/抖音-码速达/data/raw_data.json new file mode 100644 index 00000000..0ebb5af9 --- /dev/null +++ b/docs/抖音-码速达/data/raw_data.json @@ -0,0 +1,2789 @@ +{ + "api": { + "order_orderDetail": { + "name": "订单详情", + "level": "高级功能", + "remark": "查询订单的详细信息,仅显示关键字段", + "method": "order.orderDetail", + "dop_path": "/order/orderDetail", + "dop_url": "https://op.jinritemai.com/docs/api-docs/15/1343", + "dop_title": "订单详情查询", + "params": [ + { + "name": "shop_order_id", + "type": "String", + "required": true, + "value": "6917533224570258991", + "remark": "店铺父订单号,抖店平台生成,平台下唯一" + } + ], + "returns": [ + [ + 0, + "data", + "Object", + null, + null + ], + [ + 1, + "order_id", + "String", + "6917533224570258991", + "店铺父订单号,抖店平台生成,平台下唯一" + ], + [ + 1, + "order_status", + "Integer", + "3", + "订单状态:1-待确认/待支付(订单创建完毕),105-已支付,2-备货中,101-部分发货,3-已发货(全部发货),4-已取消,5-已完成(已收货)" + ], + [ + 1, + "shop_id", + "Integer", + "94956", + "店铺ID,抖店平台生成,平台下唯一" + ], + [ + 1, + "shop_name", + "String", + "订单专用_测试店三", + "商户名称" + ], + [ + 1, + "order_amount", + "Integer", + "20500", + "订单金额(单位:分)" + ], + [ + 1, + "pay_amount", + "Integer", + "20500", + "支付金额(单位:分)" + ], + [ + 1, + "pay_time", + "Integer", + "1682479081", + "支付时间,时间戳,秒" + ], + [ + 1, + "create_time", + "Integer", + "1682479079", + "下单时间,时间戳,秒" + ], + [ + 1, + "finish_time", + "Integer", + "0", + "订单完成时间,时间戳,秒" + ], + [ + 1, + "doudian_open_id", + "String", + "1@#SGf7u/L4T728WdIaNcm6c+7SOqTObqbPh6wJBSm6lRGO+VEipIFB4EZDoWtkW1ThcrgNhg==", + "用户唯一id,规则详见:https://op.jinritemai.com/docs/guide-docs/1368/4416" + ], + [ + 1, + "post_tel", + "String", + "1231234", + "收件人电话" + ], + [ + 1, + "post_receiver", + "String", + "aaa", + "收件人姓名" + ], + [ + 1, + "buyer_words", + "String", + "取消", + "买家留言" + ], + [ + 1, + "seller_words", + "String", + "取消", + "商家备注" + ], + [ + 1, + "seller_remark_stars", + "Integer", + "0", + "插旗信息:0-灰 1-紫 2-青 3-绿 4-橙 5-红" + ], + [ + 1, + "order_type", + "Integer", + "5", + "订单类型:0-普通订单,2-虚拟商品订单,4-电子券(poi核销),5-三方核销,6-服务市场" + ], + [ + 1, + "biz", + "Integer", + "11", + "业务来源:1-鲁班,2-小店,3-好好学习,4-ev,5-虚拟,6-建站,7-平台卡券,8-玉石,9-ez,10-ep,11-三方卡券,12-服务市场,13-EP视频课,14-EP直播课,21-跨境BBC,22-跨境BC,23-跨境CC|UPU,24-手机充值,25-拍卖保证金,26-懂车帝抵扣券,27-懂车帝返现券,28-离岛免税,29-海南会员购,30-抽奖,31-清北-企业代付,32-抖+券,33-联盟寄样,49-刀剑,53-通信卡,66-加油包,76-大闸蟹,99-保险,101-三方卡券卡密模式,102-小店海外,108-上门取件收款" + ], + [ + 1, + "b_type", + "Integer", + "2", + "下单端:0-站外,1-火山,2-抖音,3-头条,4-西瓜,5-微信,6-值点app,7-头条lite,8-懂车帝,9-皮皮虾,11-抖音极速版,12-TikTok,13-musically,14-穿山甲,15-火山极速版,16-服务市场,26-番茄小说,27-UG教育营销电商平台,28-Jumanji,29-电商SDK" + ], + [ + 1, + "sku_order_list", + "Array", + "", + "订单详情信息,一个主订单下有可以最大返回40个子订单" + ], + [ + 2, + "order_id", + "String", + "4781320682406083640", + "店铺子订单号,抖店平台生成,平台下唯一;注意:一笔订单下有一个子订单和父订单单号相同" + ], + [ + 2, + "product_id", + "Integer", + "3473196049974326153", + "商品ID,字符串类型" + ], + [ + 2, + "sku_id", + "Integer", + "3254535", + "商品SkuID" + ], + [ + 2, + "out_product_id", + "String", + "432655662343", + "商品外部编码" + ], + [ + 2, + "out_sku_id", + "String", + "43564553", + "外部SkuID" + ], + [ + 2, + "product_name", + "String", + "XX鞋子", + "商品名称" + ], + [ + 2, + "goods_price", + "Integer", + "100", + "商品原价(单位:分)" + ], + [ + 2, + "item_num", + "Integer", + "2", + "订单商品数量" + ], + [ + 2, + "order_amount", + "Integer", + "20500", + "订单金额(单位:分)" + ], + [ + 2, + "pay_amount", + "Integer", + "20500", + "支付金额(单位:分)" + ], + [ + 2, + "code", + "String", + "XXX001", + "商家后台商品编码" + ], + [ + 2, + "account_list", + "Array", + "", + "买家账号信息,列表类型,当order_type=2,order_type_desc为虚拟订单时该参数会返回信息" + ], + [ + 3, + "account_id", + "String", + "15678909876", + "账号值" + ], + [ + 3, + "account_type", + "String", + "1", + "买家账号类型:Mobile-手机号,Email-邮箱,IdCard-身份证,Passport-护照,BankCard-银行卡,Number-纯数学,NumberLetter-数字字母混合" + ], + [ + 3, + "account_name", + "String", + "测试", + "买家账号名称" + ], + [ + 2, + "after_sale_info", + "Object", + "", + "售后信息" + ], + [ + 3, + "after_sale_id", + "Integer", + "6965315853751632172", + "售后单ID" + ], + [ + 3, + "after_sale_status", + "Integer", + "12", + "售后状态:6-售后申请,27-拒绝售后申请,12-售后成功,7-售后退货中,11-售后已发货,29-售后退货拒绝,13-[换货返回-换货售后换货商家发货]/[补寄返回-补寄待用户收货], 14-[换货返回-换货售后换货用户收货]/[补寄返回-补寄用户已收货] ,28-售后失败,51-订单取消成功,53-逆向交易已完成" + ], + [ + 3, + "after_sale_type", + "Integer", + "1", + "售后类型:0-退货退款,1-已发货仅退款,2-未发货仅退款,3-换货,4-系统取消,5-用户取消,6-价保,7-补寄" + ] + ] + }, + "topup_result": { + "name": "充值结果提交", + "level": "基础功能", + "remark": "商家处理完充值请求后,异步回调告知平台充值结果", + "method": "topup.result", + "dop_path": "/topup/result", + "dop_url": "https://op.jinritemai.com/docs/api-docs/164/1639", + "dop_title": "商家充值结果回调", + "params": [ + { + "name": "trade_order_no", + "type": "String", + "required": true, + "value": "47544092076043809181", + "remark": "订单号" + }, + { + "name": "topup_biz", + "type": "String", + "required": true, + "value": "MOBILE_TOPUP", + "remark": "充值业务" + }, + { + "name": "seller_order_no", + "type": "String", + "required": true, + "value": "DY8123123", + "remark": "商家充值单号" + }, + { + "name": "seller_order_status", + "type": "String", + "required": true, + "value": "SUCCESS", + "remark": "充值结果" + }, + { + "name": "err_code", + "type": "String", + "required": false, + "value": "1003", + "remark": "错误码" + }, + { + "name": "err_desc", + "type": "String", + "required": false, + "value": "参数校验失败", + "remark": "错误信息" + }, + { + "name": "url", + "type": "String", + "required": false, + "value": "https://xxxx.com", + "remark": "去使用链接" + }, + { + "name": "url_type", + "type": "String", + "required": false, + "value": "normal", + "remark": "去使用链接类型:microapp-小程序,normal-普通链接" + }, + { + "name": "topup_failure_reason_code", + "type": "String", + "required": false, + "value": "10001", + "remark": "充值失败错误码:10001-手机号码无效,10002-商家缺货,10003-命中运营商风控策略" + } + ], + "returns": [ + [ + 0, + "data", + "Object", + "", + "返回数据" + ], + [ + 1, + "trade_order_no", + "String", + "4754409207604380918", + "平台订单号" + ], + [ + 1, + "topup_biz", + "String", + "MOBILE_TOPUP", + "充值业务" + ], + [ + 1, + "result", + "String", + "FAILED", + "平台接口充值结果失败" + ], + [ + 1, + "seller_order_no", + "String", + "DY8123123", + "商家充值单号" + ], + [ + 1, + "err_code", + "String", + "-1", + "错误码" + ], + [ + 1, + "err_desc", + "String", + "内部错误", + "错误信息" + ] + ] + }, + "coupons_syncV2": { + "name": "卡券同步", + "level": "基础功能", + "remark": "卖家在平台卖出券后同步卡券信息", + "method": "coupons.syncV2", + "dop_path": "/coupons/syncV2", + "dop_url": "https://op.jinritemai.com/docs/api-docs/52/712", + "dop_title": "卡券同步", + "params": [ + { + "name": "order_id", + "type": "String", + "required": true, + "value": "123421345", + "remark": "子订单ID" + }, + { + "name": "cert_list", + "type": "Json", + "required": true, + "value": "", + "remark": "卡券信息列表,数组类型,以Json字符串形式传入", + "subParams": [ + [ + 0, + "cert_link", + "String", + "https://obd.gtimg.com/new-benefit-web-schema/dev/dist/index.html?ShortLinkId=6438f6f4a87f2&e=test&dyp=1&c=cafsdadsfas", + "卡券跳转链接,长度限制255", + 0 + ], + [ + 0, + "cert_no", + "String", + "7136xxxasd", + "卡券券码", + 1 + ], + [ + 0, + "grant_time", + "String", + "2010-01-01 12:12:12", + "发券时间", + 1 + ] + ] + } + ], + "returns": [] + }, + "coupons_verifyV3": { + "name": "卡券核销V3", + "level": "高级功能", + "remark": "卖家向平台提交卡券核销状态", + "method": "coupons.verifyV3", + "dop_path": "/coupons/verifyV2", + "dop_url": "https://op.jinritemai.com/docs/api-docs/52/797", + "dop_title": "卡券核销接口V2版本", + "params": [ + { + "name": "cert_no", + "type": "String", + "required": true, + "value": "123456", + "remark": "卡券号码" + } + ], + "returns": [] + }, + "coupons_list": { + "name": "券码查询", + "level": "基础功能", + "remark": "查询券码在平台侧的状态详情", + "method": "coupons.list", + "dop_path": "/coupons/list", + "dop_url": "https://op.jinritemai.com/docs/api-docs/52/369", + "dop_title": "券码查询接口", + "params": [ + { + "name": "order_id", + "type": "String", + "required": false, + "value": "123", + "remark": "子订单ID" + }, + { + "name": "cert_no", + "type": "String", + "required": false, + "value": "卡券id", + "remark": "卡号券码" + }, + { + "name": "cert_type", + "type": "Integer", + "required": false, + "value": "0", + "remark": "卡券类型:0-三方卡券,1-平台卡券" + } + ], + "returns": [ + [ + 0, + "data", + "Array", + "", + "返回数据,列表类型" + ], + [ + 1, + "order_id", + "String", + "6917586388057718374", + "平台订单ID" + ], + [ + 1, + "verrify_order_ids", + "String", + "123123123123;789789789789", + "三方商家的订单Id,如果有多个,使用;分割" + ], + [ + 1, + "cert_id", + "String", + "71937153151279783203", + "卡券ID" + ], + [ + 1, + "out_cert_id", + "String", + "123", + "外部卡券ID" + ], + [ + 1, + "cert_no", + "String", + "71936748123123166654548", + "卡号券码" + ], + [ + 1, + "valid_start", + "Integer", + "1673452800", + "有效开始时间" + ], + [ + 1, + "valid_end", + "Integer", + "1674921599", + "有效结束时间" + ], + [ + 1, + "grant_time", + "Integer", + "1674914207", + "发券时间,0则用当前时间" + ], + [ + 1, + "status", + "Integer", + "1", + "状态:1-未激活(表示初始状态), 2-未使用,3-已使用,4-已废弃,5-已过期,6-已完成" + ], + [ + 1, + "total_num", + "Integer", + "2", + "可核销次数" + ], + [ + 1, + "verify_num", + "Integer", + "1", + "已核销次数" + ], + [ + 1, + "available_num", + "Integer", + "1", + "剩余可用次数" + ] + ] + }, + "coupons_cancelVerify": { + "name": "卡券取消核销", + "level": "基础功能", + "remark": "当卡券核销错误之后,取消核销时候使用", + "method": "coupons.cancelVerify", + "dop_path": "/coupons/cancelVerify", + "dop_url": "https://op.jinritemai.com/docs/api-docs/52/668", + "dop_title": "卡券取消核销接口", + "params": [ + { + "name": "cert_no", + "type": "String", + "required": true, + "value": "231342sdd", + "remark": "卡号券码" + }, + { + "name": "batch_no", + "type": "String", + "required": false, + "value": "123123", + "remark": "幂等请求编号" + }, + { + "name": "cancel_verify_count", + "type": "Integer", + "required": false, + "value": "3", + "remark": "取消核销总次数" + } + ], + "returns": [] + }, + "order_addOrderRemark": { + "name": "卖家备注", + "level": "基础功能", + "remark": "卖家提交订单备注", + "method": "order.addOrderRemark", + "dop_path": "/order/addOrderRemark", + "dop_url": "https://op.jinritemai.com/docs/api-docs/15/568", + "dop_title": "为商家提供订单备注接口", + "params": [ + { + "name": "order_id", + "type": "String", + "required": true, + "value": "6496679971677798670", + "remark": "店铺订单ID" + }, + { + "name": "remark", + "type": "String", + "required": true, + "value": "这是具体的备注内容", + "remark": "备注内容,必填选项;如果不填会导致订单的备注被空值覆盖,最大不得超过500个字符" + }, + { + "name": "is_add_star", + "type": "String", + "required": false, + "value": "true", + "remark": "是否加旗标,不填则默认为false,不会修改旗帜颜色; is_add_star=true,需要加旗帜或者覆盖原来的旗帜颜色;is_add_star=false,不添加旗帜,不会覆盖原来的旗帜颜色" + }, + { + "name": "star", + "type": "String", + "required": false, + "value": "2", + "remark": "标星等级:0-灰色旗标,1-紫色旗标,2-青色旗标,3-绿色旗标,4-橙色旗标,5-红色旗标" + } + ], + "returns": [] + }, + "afterSale_operate": { + "name": "售后审核", + "level": "高级功能", + "remark": "售后统一操作接口", + "method": "afterSale.operate", + "dop_path": "/afterSale/operate", + "dop_url": "https://op.jinritemai.com/docs/api-docs/17/560", + "dop_title": "售后审核接口聚合版", + "params": [ + { + "name": "type", + "type": "Integer", + "required": true, + "value": "201", + "remark": "操作类型:201-同意仅退款,202-拒绝仅退款" + }, + { + "name": "items", + "type": "Json", + "required": true, + "value": "", + "remark": "操作售后详情,数组类型,以Json字符串形式传入", + "subParams": [ + [ + 0, + "repair_type", + "Integer", + "1", + "维修类型:1-原商品维修,2-商品换新", + 0 + ], + [ + 0, + "aftersale_id", + "Integer", + "6959800000297566494", + "售后单号", + 1 + ], + [ + 0, + "reason", + "String", + "卡密商品已发货,不支持退款", + "操作原因,拒绝操作必填", + 0 + ], + [ + 0, + "remark", + "String", + "卡密已查看,且可正常使用,拒绝退款", + "操作评论,拒绝操作必填", + 0 + ], + [ + 0, + "evidence", + "Array", + "", + "操作凭证编码,当【查询商家拒绝原因列表】接口响应参数evidence_need=Y时,该参数必填;使用【查询商家拒绝原因列表】接口获取响应参数中的reject_reason_code字段。", + 0 + ], + [ + 1, + "type", + "Integer", + "1", + "凭证类型:1-图片", + 0 + ], + [ + 1, + "url", + "String", + "http://xxxxxxxx.jpg", + "凭证url", + 0 + ], + [ + 1, + "desc", + "String", + "店铺相关说明", + "凭证描述", + 0 + ], + [ + 0, + "reject_reason_code", + "Integer", + "1", + "售后拒绝原因码,拒绝时必填填。通过【查询商家拒绝原因列表】接口获取", + 0 + ], + [ + 0, + "update_time", + "Integer", + "0", + "用于校验售后单版本是不是最新的版本,防止售后单变更且open侧审核通过导致资损。使用【买家发起售后】消息推送中的update_time字段", + 0 + ] + ] + }, + { + "name": "store_id", + "type": "Integer", + "required": false, + "value": "123", + "remark": "门店ID,抖超小时达业务使用" + } + ], + "returns": [ + [ + 0, + "data", + "Array", + "", + "审核结果" + ], + [ + 1, + "aftersale_id", + "Integer", + "6959800000297566494", + "售后单号" + ], + [ + 1, + "status_code", + "Integer", + "0", + "操作结果码" + ], + [ + 1, + "status_msg", + "String", + "success", + "操作结果描述" + ] + ] + }, + "afterSale_rejectReasonCodeList": { + "name": "查询商家拒绝原因列表", + "level": "免费功能", + "remark": "查询抖店支持的全量拒绝原因列表,或指定售后单可选的拒绝原因列表(仅支持已发货的售后查询,备货中未发货订单返回为空)", + "method": "afterSale.rejectReasonCodeList", + "dop_path": "/afterSale/rejectReasonCodeList", + "dop_url": "https://op.jinritemai.com/docs/api-docs/17/1540", + "dop_title": "查询商家拒绝原因列表", + "params": [ + { + "name": "aftersale_id", + "type": "Integer", + "required": false, + "value": "7140522277954690000", + "remark": "售后单号" + } + ], + "returns": [ + [ + 0, + "data", + "Array", + "", + "售后商家拒绝原因详情列表" + ], + [ + 1, + "reject_reason_code", + "Integer", + "1", + "售后审核拒绝原因枚举编码" + ], + [ + 1, + "reason", + "String", + "多拍/错拍/不想要", + "售后审核拒绝原因文案" + ], + [ + 1, + "evidence_description", + "String", + "请提供发货物流进度截图", + "凭证描述文案" + ], + [ + 1, + "evidence_need", + "String", + "Y", + "是否需要上传凭证:Y-必填,N-非必填" + ], + [ + 1, + "image", + "String", + "/obj/ecom-aftersale-image-example/vsfguUuWBsXzjgyexWJRoBUMVORQBnmvMQHBRFom.png", + "凭证示例图片链接" + ], + [ + 1, + "order_type", + "Integer", + "1", + "订单类型:0-普通实物订单,1-全款预售订单,2-虚拟商品订单,3-快闪店订单,4-电子券,5-三方核销,6-服务市场,-1-通用,不考虑订单类型" + ], + [ + 1, + "pkg", + "Integer", + "1", + "是否收到货:0-未收到,1-收到,-1-通用,不考虑是否收到货" + ] + ] + }, + "order_searchList": { + "name": "订单列表查询", + "level": "", + "remark": "根据条件检索满足要求的订单列表,支持下单时间和更新时间排序;最大支持查询近90天的数据;注:本接口仅用作批量获取订单基础信息及核查订单状态,如需获取订单充值信息,构建充值流程,请对接【买家已付款】消息+【订单详情】API", + "method": "order.searchList", + "dop_path": "/order/searchList", + "dop_url": "https://op.jinritemai.com/docs/api-docs/15/1342", + "dop_title": "订单列表查询", + "params": [ + { + "name": "size", + "type": "Integer", + "required": true, + "value": "20", + "remark": "单页大小,限制100以内" + }, + { + "name": "page", + "type": "Integer", + "required": true, + "value": "0", + "remark": "页码,0页开始" + }, + { + "name": "product", + "type": "String", + "required": false, + "value": "3473196049974326153", + "remark": "商品,number型代表商品ID,其它代表商品名称" + }, + { + "name": "after_sale_status_desc", + "type": "String", + "required": false, + "value": "refund_success", + "remark": "售后状态:all-全部,in_aftersale-售后中,refund-退款中,refund_success-退款成功,refund_fail-退款失败,exchange_success-换货成功,aftersale_close-售后关闭" + }, + { + "name": "order_type", + "type": "Integer", + "required": false, + "value": "1", + "remark": "订单类型:0-普通订单,2-虚拟商品订单,4-电子券(poi核销),5-三方核销" + }, + { + "name": "create_time_start", + "type": "Integer", + "required": false, + "value": "1617355413", + "remark": "下单时间:开始,秒级时间戳" + }, + { + "name": "create_time_end", + "type": "Integer", + "required": false, + "value": "1617355413", + "remark": "下单时间:截止,秒级时间戳" + }, + { + "name": "order_status", + "type": "String", + "required": false, + "value": "105,2", + "remark": "订单状态,\",\"分隔多个状态:1-待支付,101-部分发货,105-已支付,2-待发货,3-已发货,4-已取消,5-已完成" + }, + { + "name": "update_time_start", + "type": "Integer", + "required": false, + "value": "1617355413", + "remark": "更新时间:开始,秒级时间戳" + }, + { + "name": "update_time_end", + "type": "Integer", + "required": false, + "value": "1617355413", + "remark": "更新时间:截止,秒级时间戳" + }, + { + "name": "order_by", + "type": "String", + "required": false, + "value": "create_time", + "remark": "排序条件:create_time-订单创建时间,update_time-订单更新时间,默认create_time" + }, + { + "name": "order_asc", + "type": "Boolean", + "required": false, + "value": "false", + "remark": "排序类型:true-升序,false-降序,默认降序" + } + ], + "returns": [ + [ + 0, + "data", + "Object", + null, + "" + ], + [ + 1, + "page", + "Integer", + "", + "页数,从0开始" + ], + [ + 1, + "total", + "Integer", + "", + "总订单数" + ], + [ + 1, + "size", + "Integer", + "", + "单页大小" + ], + [ + 1, + "shop_order_list", + "Array", + "", + "订单信息" + ], + [ + 2, + "order_id", + "String", + "4781320682406083640", + "店铺订单号" + ], + [ + 2, + "order_status", + "Integer", + "3", + "订单状态:1-待确认/待支付-订单创建完毕,105-已支付,2-备货中,101-部分发货,3-已发货(全部发货),4-已取消,5 已完成(已收货)" + ], + [ + 2, + "shop_id", + "Integer", + "77977", + "店铺ID" + ], + [ + 2, + "shop_name", + "String", + "刘好好严选", + "商户名称" + ], + [ + 2, + "order_amount", + "Integer", + "600", + "订单金额(单位:分)" + ], + [ + 2, + "pay_amount", + "Integer", + "500", + "支付金额(单位:分)" + ], + [ + 2, + "pay_time", + "String", + "2021-04-02 17:23:33", + "支付时间" + ], + [ + 2, + "create_time", + "String", + "2021-04-02 17:23:33", + "下单时间" + ], + [ + 2, + "finish_time", + "String", + "2021-04-02 17:23:33", + "订单完成时间" + ], + [ + 2, + "doudian_open_id", + "String", + "#zuLyd4U4J3p+czzXkwg+ZQ673h7KTcrKOddb5iPGAAE0K3MYJmgXEXof9LDtoScAfMKvdVRqpAL4CEI3SrLwYATIzTF9Qw==", + "用户唯一id,规则详见:https://op.jinritemai.com/docs/guide-docs/1368/4416" + ], + [ + 2, + "buyer_words", + "String", + "要xxx", + "买家留言" + ], + [ + 2, + "seller_words", + "String", + "注意XX", + "商家备注" + ], + [ + 2, + "seller_remark_stars", + "Integer", + "1", + "插旗信息:0-灰 1-紫 2-青 3-绿 4-橙 5-红" + ], + [ + 2, + "order_type", + "Integer", + "0", + "订单类型:0-普通订单,2-虚拟商品订单,4-电子券(poi核销),5-三方核销" + ], + [ + 2, + "biz", + "Integer", + "1", + "业务来源" + ], + [ + 2, + "sku_order_list", + "Array", + "", + "商品单信息" + ], + [ + 3, + "order_id", + "String", + "4781320682406083640", + "商品订单号" + ], + [ + 3, + "product_id", + "Integer", + "3473196049974326153", + "商品ID" + ], + [ + 3, + "sku_id", + "Integer", + "3254535", + "商品SkuID" + ], + [ + 3, + "out_product_id", + "String", + "432655662343", + "商品外部编码" + ], + [ + 3, + "out_sku_id", + "String", + "43564553", + "外部Skuid" + ], + [ + 3, + "product_name", + "String", + "衣服", + "商品名称" + ], + [ + 3, + "goods_price", + "Integer", + "100", + "商品原价(单位:分)" + ], + [ + 3, + "item_num", + "Integer", + "2", + "订单商品数量" + ], + [ + 3, + "order_amount", + "Integer", + "600", + "订单金额(单位:分)" + ], + [ + 3, + "pay_amount", + "Integer", + "500", + "支付金额(单位:分)" + ], + [ + 3, + "after_sale_info", + "Object", + "", + "售后信息" + ], + [ + 4, + "after_sale_status", + "Integer", + "6", + "售后状态:0-售后初始化,6-售后申请,7-售后退货中,27-拒绝售后申请,12-售后成功,28-售后失败,11-售后已发货,29-退货后拒绝退款,13-售后换货商家发货,14-售后换货用户收货,51-取消成功,53-逆向交易完成" + ], + [ + 4, + "after_sale_type", + "Integer", + "1", + "售后类型:0-售后退货退款,1-售后退款,2-售前退款,3-换货,4-系统取消,5-用户取消" + ], + [ + 4, + "refund_status", + "Integer", + "1", + "退款状态:1-待退款,3-退款成功,4-退款失败;当买家发起售后后又主动取消售后,此时after_sale_status=28,并且refund_status=1的状态不变,不会流转至4状态" + ] + ] + }, + "coupons_CertSyncFailedCancelOrder": { + "name": "商家主动取消订单", + "level": "高级功能", + "remark": "仅适用于三方卡券订单,其他类型的订单都不支持;订单状态等于2,处于待发码状态,商家才可主动取消订单", + "method": "coupons.CertSyncFailedCancelOrder", + "dop_path": "/coupons/CertSyncFailedCancelOrder", + "dop_url": "https://op.jinritemai.com/docs/api-docs/15/6662", + "dop_title": "商家主动取消", + "params": [ + { + "name": "order_id", + "type": "String", + "required": true, + "value": "6931496948675122841", + "remark": "订单号" + }, + { + "name": "op", + "type": "Json", + "required": false, + "value": "", + "remark": "风控相关信息,对象类型,以Json字符串形式传入", + "subParams": [ + [ + 0, + "platform", + "Integer", + "1", + "操作平台枚举(选填,暂时用不上)", + 0 + ], + [ + 0, + "op_uid", + "Integer", + "1234", + "操作人uid(选填,暂时用不上)", + 0 + ] + ] + } + ], + "returns": [ + [ + 0, + "data", + "Object", + "", + "返回数据" + ], + [ + 1, + "ret_status", + "String", + "000000", + "返回状态" + ], + [ + 1, + "ret_code", + "String", + "000000", + "返回码" + ], + [ + 1, + "ret_message", + "String", + "000000", + "返回信息" + ] + ] + }, + "message_config": { + "name": "消息设置", + "level": "免费功能", + "remark": "用户自行设置消息接收地址,推送状态及订阅内容", + "method": "message.config", + "dop_path": "", + "dop_url": "", + "dop_title": "", + "params": [ + { + "name": "status", + "type": "Integer", + "required": true, + "value": "1", + "remark": "推送状态:0-禁用,1-启用,第一次提交时必填" + }, + { + "name": "message_url", + "type": "String", + "required": false, + "value": "https://api.xxxx.com/message", + "remark": "推送地址,第一次提交时必填" + }, + { + "name": "topics", + "type": "String", + "required": false, + "value": "trade_TradePaid,refund_RefundCreated,refund_RefundClosed", + "remark": "消息的topic,多个用半角逗号分隔,第一次提交时必填" + } + ], + "returns": [] + }, + "product_detail": { + "name": "商品详情", + "level": "基础功能", + "remark": "根据商品ID获取商品详情,输出仅限码速达系统已采集的字段", + "method": "product.detail", + "dop_path": "", + "dop_url": "", + "dop_title": "", + "params": [ + { + "name": "product_id", + "type": "Integer", + "required": true, + "value": "3558192687276554544", + "remark": "商品ID,抖店系统生成,店铺下唯一;长度19位" + } + ], + "returns": [ + [ + 0, + "data", + "Object", + "", + "" + ], + [ + 1, + "product_id", + "Integer", + "3539925204033339668", + "商品ID,抖店系统生成,店铺下唯一;长度19位" + ], + [ + 1, + "name", + "String", + "XXX充值卡", + "商品标题" + ], + [ + 1, + "product_type", + "Integer", + "3", + "商品类型:0-普通,3-虚拟,6-玉石闪购,7-云闪购" + ], + [ + 1, + "discount_price", + "Integer", + "1999", + "售卖价,单位分" + ], + [ + 1, + "img", + "String", + "https://img.xxxx.com/abc/def.jpg", + "商品图片" + ], + [ + 1, + "status", + "Integer", + "0", + "商品在店铺中状态:0-在线,1-下线,2-删除" + ], + [ + 1, + "check_status", + "Integer", + "3", + "商品审核状态:1-未提交,2-待审核,3-审核通过,4-审核未通过,5-封禁,7-审核通过待上架" + ], + [ + 1, + "skus", + "Array", + "", + "规格信息" + ], + [ + 2, + "id", + "Integer", + "1737398770243598", + "规格ID;抖店系统生成,商品ID下唯一" + ], + [ + 2, + "code", + "String", + "XXX001", + "商家编码" + ], + [ + 2, + "price", + "Integer", + "102", + "商户名称" + ], + [ + 2, + "specs", + "Array", + "", + "规格项和规格值" + ], + [ + 3, + "name", + "String", + "充值类型", + "属性名" + ], + [ + 3, + "value", + "String", + "点卡寄售", + "属性值" + ] + ] + }, + "product_list": { + "name": "商品列表", + "level": "高级功能", + "remark": "分页查询店铺商品列表,输出仅限码速达系统已采集的字段", + "method": "product.list", + "dop_path": "", + "dop_url": "", + "dop_title": "", + "params": [ + { + "name": "page", + "type": "Integer", + "required": false, + "value": "1", + "remark": "页码,从1开始,缺省为1" + }, + { + "name": "size", + "type": "Integer", + "required": false, + "value": "10", + "remark": "页长,范围1~100,缺省为15" + } + ], + "returns": [ + [ + 0, + "data", + "Object", + "", + "" + ], + [ + 1, + "page", + "Integer", + "1", + "页码,从1开始" + ], + [ + 1, + "size", + "Integer", + "10", + "页长,范围1~100" + ], + [ + 1, + "total", + "Integer", + "422", + "本次查询返回的商品总数" + ], + [ + 1, + "data", + "Array", + "", + "商品数据" + ], + [ + 2, + "product_id", + "Integer", + "3539925204033339668", + "商品ID,抖店系统生成,店铺下唯一;长度19位" + ], + [ + 2, + "name", + "String", + "XXX充值卡", + "商品标题" + ], + [ + 2, + "product_type", + "Integer", + "3", + "商品类型:0-普通,3-虚拟,6-玉石闪购,7-云闪购" + ], + [ + 2, + "discount_price", + "Integer", + "1999", + "售卖价,单位分" + ], + [ + 2, + "img", + "String", + "https://img.xxxx.com/abc/def.jpg", + "商品图片" + ], + [ + 2, + "status", + "Integer", + "0", + "商品在店铺中状态:0-在线,1-下线,2-删除" + ], + [ + 2, + "check_status", + "Integer", + "3", + "商品审核状态:1-未提交,2-待审核,3-审核通过,4-审核未通过,5-封禁,7-审核通过待上架" + ], + [ + 2, + "skus", + "Array", + "", + "规格信息" + ], + [ + 3, + "id", + "Integer", + "1737398770243598", + "规格ID;抖店系统生成,商品ID下唯一" + ], + [ + 3, + "code", + "String", + "XXX001", + "商家编码" + ] + ] + }, + "sku_list": { + "name": "商品sku列表", + "level": "高级功能", + "remark": "根据商品id获取商品的sku列表", + "method": "sku.list", + "dop_path": "/sku/list\r\n/sku/list", + "dop_url": "https://op.jinritemai.com/docs/api-docs/14/82", + "dop_title": "获取商品sku列表", + "params": [ + { + "name": "product_id", + "type": "Integer", + "required": false, + "value": "3213654123157", + "remark": "商品ID,抖店系统生成" + }, + { + "name": "out_product_id", + "type": "Integer", + "required": false, + "value": "243523452435", + "remark": "外部商品ID,商家创建商品时自定义" + } + ], + "returns": [ + [ + 0, + "data", + "Array", + "", + "sku列表" + ], + [ + 1, + "id", + "Integer", + "1736402086955032", + "商品sku_id,抖店系统生成" + ], + [ + 1, + "sku_status", + "Boolean", + "true", + "sku状态:true-上架,false-下架" + ], + [ + 1, + "out_sku_id", + "Integer", + "0", + "外部的skuId,商家自定义,未设置返回为0" + ], + [ + 1, + "product_id", + "Integer", + "3557453527615939930", + "商品ID,抖店系统生成" + ], + [ + 1, + "price", + "Integer", + "12", + "商品价格,单位分" + ], + [ + 1, + "spec_id", + "Integer", + "1737037851056167", + "规格ID" + ], + [ + 1, + "create_time", + "Integer", + "1621611875", + "创建时间,时间戳,单位秒" + ], + [ + 1, + "code", + "String", + "dy001", + "sku外部编码" + ], + [ + 1, + "sell_properties", + "Array", + "", + "销售属性" + ], + [ + 2, + "value_spec_detail_id", + "Integer", + "111", + "规格值id" + ], + [ + 2, + "value_name", + "String", + "红色", + "规格值名称" + ] + ] + }, + "order_message": { + "name": "订单消息测试", + "level": "高级功能", + "remark": "测试接口,仅支持特定商户", + "method": "order.message", + "dop_path": "", + "dop_url": null, + "dop_title": "", + "params": [ + { + "name": "order_id", + "type": "String", + "required": true, + "value": "1234567", + "remark": "订单号" + }, + { + "name": "content", + "type": "String", + "required": true, + "value": "订单已发货,请注意查收", + "remark": "消息内容" + }, + { + "name": "message_type", + "type": "Integer", + "required": true, + "value": "2", + "remark": "消息类型:1-订单状态消息,2-订单发货消息,4-图片消息,5-视频消息" + } + ], + "returns": [] + } + }, + "message": { + "trade_TradePaid": { + "name": "买家已付款", + "level": "基础功能", + "remark": "在线支付订单,当买家付款成功时,会推送此消息", + "topic": "trade_TradePaid", + "dop_tag": "101", + "dop_url": "https://op.jinritemai.com/docs/message-docs/30/110", + "dop_title": "订单支付/确认消息", + "props": [ + [ + 0, + "pay_amount", + "Integer", + "1990", + "订单实付金额" + ], + [ + 0, + "s_ids", + "Array", + "[\r\n 123\r\n ]", + "子订单ID列表" + ], + [ + 0, + "order_status", + "Integer", + "2", + "父订单状态,订单支付消息的status值为\"2\"" + ], + [ + 0, + "order_type", + "Integer", + "0", + "订单类型:0-实物,2-普通虚拟,4-poi核销,5-三方核销,6-服务市场" + ], + [ + 0, + "pay_time", + "Integer", + "1630373504", + "在线订单支付时间;货到付款订单确认时间" + ], + [ + 0, + "p_id", + "Integer", + "4837328765348567000", + "父订单ID" + ], + [ + 0, + "shop_id", + "Integer", + "77977", + "店铺ID,即时零售店铺该字段为即时零售总部id" + ], + [ + 0, + "pay_type", + "Integer", + "1", + "订单支付方式: 0: 货到付款 1: 微信 2: 支付宝" + ], + [ + 0, + "biz", + "Integer", + "2", + "订单业务类型,表示买家从哪里看到的这个商品、产生了订单:1-鲁班广告,2-联盟,4-商城,8-自主经营,10-线索通支付表单,12-抖音门店,14-抖+,15-穿山甲" + ] + ] + }, + "trade_TradeMemoModify": { + "name": "卖家备注变更", + "level": "基础功能", + "remark": "卖家修改交易备注时,会推送此消息", + "topic": "trade_TradeMemoModify", + "dop_tag": "113", + "dop_url": "https://op.jinritemai.com/docs/message-docs/30/571", + "dop_title": "卖家添加备注消息", + "props": [ + [ + 0, + "p_id", + "Integer", + "483680741644460700", + "父订单ID" + ], + [ + 0, + "remark", + "String", + "备注", + "备注内容,最大不得超过60个字符" + ], + [ + 0, + "star", + "Integer", + "3", + "标星等级:0-灰色旗标,1-紫色旗标,2-青色旗标,3-绿色旗标,4-橙色旗标,5-红色旗标" + ], + [ + 0, + "update_time", + "Integer", + "1630269363", + "时间戳,秒" + ], + [ + 0, + "shop_id", + "Integer", + "11808642", + "店铺ID,即时零售店铺该字段为即时零售总部id" + ] + ] + }, + "trade_TradeSellerShip": { + "name": "卖家发货", + "level": "基础功能", + "remark": "卖家对所有商品发货完成,且父订单状态为【已发货】时,会推送此消息", + "topic": "trade_TradeSellerShip", + "dop_tag": "102", + "dop_url": "https://op.jinritemai.com/docs/message-docs/30/111", + "dop_title": "卖家发货消息", + "props": [ + [ + 0, + "receiver_msg", + "Object", + "", + "收货人详细信息" + ], + [ + 1, + "addr", + "String", + "{}", + "收货地址,包含省市区和详细地址" + ], + [ + 1, + "name", + "String", + "张三", + "收货人姓名" + ], + [ + 1, + "tel", + "String", + "13117428564", + "收货人手机号" + ], + [ + 0, + "p_id", + "Integer", + "4835999782215623000", + "父订单ID" + ], + [ + 0, + "s_ids", + "Array", + "[\r\n 123\r\n ]", + "子订单ID列表" + ], + [ + 0, + "shop_id", + "Integer", + "597277", + "店铺ID,即时零售店铺该字段为即时零售总部id" + ], + [ + 0, + "biz", + "Integer", + "2", + "订单业务类型,表示买家从哪里看到的这个商品、产生了订单:1-鲁班广告,2-联盟,4-商城,8-自主经营,10-线索通支付表单,12-抖音门店,14-抖+,15-穿山甲" + ], + [ + 0, + "logistics_msg", + "Object", + "", + "发货物流信息" + ], + [ + 1, + "express_company_id", + "String", + "yunda", + "发货快递公司" + ], + [ + 1, + "logistics_code", + "String", + "431******408", + "发货物流单号" + ], + [ + 0, + "order_status", + "Integer", + "3", + "父订单状态,卖家发货消息的status值为\"3\"" + ], + [ + 0, + "order_type", + "Integer", + "2", + "订单类型: 0: 实物 2: 普通虚拟 4: poi核销 5: 三方核销 6: 服务市场" + ], + [ + 0, + "update_time", + "Integer", + "1630335741", + "订单发货时间" + ], + [ + 0, + "store_id", + "Integer", + "597277", + "即时零售门店ID" + ] + ] + }, + "trade_TradePartlySellerShip": { + "name": "卖家部分发货", + "level": "基础功能", + "remark": "卖家对部分商品(可能是部分件数)发货时,会推送此消息", + "topic": "trade_TradePartlySellerShip", + "dop_tag": "108", + "dop_url": "https://op.jinritemai.com/docs/message-docs/30/208", + "dop_title": "卖家部分发货消息", + "props": [ + [ + 0, + "p_id", + "Integer", + "4705288465508533000", + "父订单ID" + ], + [ + 0, + "order_status", + "Integer", + "2", + "父订单状态,卖家发货消息的status值为\"2\"" + ], + [ + 0, + "logistics_msg", + "Object", + "", + "发货物流信息" + ], + [ + 1, + "express_company_id", + "String", + "gdkd", + "发货快递公司" + ], + [ + 1, + "logistics_code", + "String", + "111111111111111", + "发货物流单号" + ], + [ + 1, + "pack_id", + "String", + "4705288465508532862", + "包裹ID" + ], + [ + 1, + "shipped_order_info", + "Array", + "", + "已发货子订单信息" + ], + [ + 2, + "sku_num", + "Integer", + "2", + "该子订单里已购买的sku数量" + ], + [ + 2, + "product_id", + "Integer", + "2329389", + "对应的商品ID" + ], + [ + 2, + "shipped_num", + "Integer", + "1", + "已发货sku数量" + ], + [ + 2, + "shipped_order_id", + "Integer", + "4705288465508533000", + "已发货子订单ID" + ], + [ + 2, + "sku_id", + "Integer", + "3373737", + "对应的SkuID" + ], + [ + 0, + "receiver_msg", + "Object", + "", + "收货人信息" + ], + [ + 1, + "addr", + "String", + "{}", + "收货地址" + ], + [ + 1, + "name", + "String", + "张三", + "收货人姓名" + ], + [ + 1, + "tel", + "String", + "13117428565", + "收货人手机号" + ], + [ + 0, + "s_ids", + "Array", + "[\r\n 123\r\n ]", + "子订单ID列表" + ], + [ + 0, + "shop_id", + "Integer", + "77977", + "店铺id,即时零售店铺该字段为即时零售总部id" + ], + [ + 0, + "order_type", + "Integer", + "2", + "订单类型:0-实物,2-普通虚拟,4-poi核销,5-三方核销,6-服务市场" + ], + [ + 0, + "biz", + "Integer", + "2", + "订单业务类型,表示买家从哪里看到的这个商品、产生了订单:1-鲁班广告,2-联盟,4-商城,8-自主经营,10-线索通支付表单,12-抖音门店,14-抖+,15-穿山甲" + ], + [ + 0, + "update_time", + "Integer", + "123", + "订单发货时间" + ] + ] + }, + "refund_RefundCreated": { + "name": "买家发起售后", + "level": "基础功能", + "remark": "买家申请整单退款时,会推送此消息", + "topic": "refund_RefundCreated", + "dop_tag": "200", + "dop_url": "https://op.jinritemai.com/docs/message-docs/31/115", + "dop_title": "买家发起售后申请消息", + "props": [ + [ + 0, + "refund_amount", + "Integer", + "8900", + "申请退款的金额(含运费)" + ], + [ + 0, + "refund_voucher_num", + "Integer", + "0", + "申请退款的卡券的数量" + ], + [ + 0, + "shop_id", + "Integer", + "10437917", + "店铺ID" + ], + [ + 0, + "aftersale_id", + "Integer", + "7000893114000949000", + "售后单ID" + ], + [ + 0, + "aftersale_status", + "Integer", + "6", + "售后状态,枚举值如下" + ], + [ + 0, + "aftersale_type", + "Integer", + "2", + "售后类型:0-退货,1-售后退款,2-发货前退款" + ], + [ + 0, + "apply_time", + "Integer", + "1630022518", + "售后申请时间" + ], + [ + 0, + "s_id", + "Integer", + "4835804142146757000", + "子订单ID" + ], + [ + 0, + "p_id", + "Integer", + "4835804142146757000", + "父订单ID" + ], + [ + 0, + "refund_post_amount", + "Integer", + "0", + "申请退的运费金额" + ], + [ + 0, + "reason_code", + "Integer", + "1", + "申请售后原因码,枚举值如下https://op.jinritemai.com/docs/question-docs/93/2306" + ], + [ + 0, + "update_time", + "String", + "2022-09-02T10:27:50+08:00", + "售后单更新时间" + ], + [ + 0, + "return_book_info", + "Object", + "", + "用户退货物流偏好" + ], + [ + 1, + "send_type", + "Integer", + "1", + "寄回类型:1-自行寄回,2-上门取件,4-到店退货,5-商家自有运力上门取货,3-快递柜,8-驿站,10-商家上门取货【商家取货的统称:自有运力、平台运力、线下自取】" + ], + [ + 1, + "time_begin", + "String", + "09:00", + "上门取件预约开始时间段" + ], + [ + 1, + "time_end", + "String", + "11:00", + "上门取件预约结束时间段" + ], + [ + 1, + "encrypt_addr", + "String", + "北京市海淀区海淀街道海淀街道海淀大街x号xx大厦x楼xxx室", + "地址, 已加密需解密使用" + ] + ] + }, + "refund_RefundClosed": { + "name": "售后关闭", + "level": "高级功能", + "remark": "当买家取消申请或系统超时机制导致退款取消时,会推送此消息", + "topic": "refund_RefundClosed", + "dop_tag": "207", + "dop_url": "https://op.jinritemai.com/docs/message-docs/31/122", + "dop_title": "售后关闭消息", + "props": [ + [ + 0, + "aftersale_type", + "Integer", + "0", + "售后类型:0-退货,1-售后退款,2-发货前退款" + ], + [ + 0, + "refund_amount", + "Integer", + "6800", + "申请退款的金额(含运费)" + ], + [ + 0, + "reason_code", + "Integer", + "83", + "申请售后原因码,枚举值如下" + ], + [ + 0, + "close_time", + "Integer", + "1630023532", + "退款成功时间" + ], + [ + 0, + "refund_voucher_num", + "Integer", + "0", + "申请退款的卡券的数量" + ], + [ + 0, + "s_id", + "Integer", + "4831577825636368000", + "子订单ID" + ], + [ + 0, + "shop_id", + "Integer", + "15791245", + "店铺ID" + ], + [ + 0, + "aftersale_id", + "Integer", + "6998111327440863000", + "售后单ID" + ], + [ + 0, + "p_id", + "Integer", + "4831577825636368000", + "父订单ID" + ], + [ + 0, + "aftersale_status", + "Integer", + "28", + "售后状态码,枚举值如下" + ], + [ + 0, + "refund_post_amount", + "Integer", + "0", + "申请退的运费金额" + ], + [ + 0, + "update_time", + "String", + "2022-09-02T10:27:50+08:00", + "售后单更新时间" + ] + ] + }, + "refund_RefundSuccess": { + "name": "退款成功", + "level": "高级功能", + "remark": "当商家同意退款后,实际退款到账时,会推送此消息", + "topic": "refund_RefundSuccess", + "dop_tag": "206", + "dop_url": "https://op.jinritemai.com/docs/message-docs/31/121", + "dop_title": "退款成功消息", + "props": [ + [ + 0, + "p_id", + "Integer", + "4835702458804230000", + "父订单ID" + ], + [ + 0, + "shop_id", + "Integer", + "19586871", + "店铺ID" + ], + [ + 0, + "aftersale_id", + "Integer", + "7000774764214157000", + "售后单ID" + ], + [ + 0, + "success_time", + "Integer", + "1629994938", + "退款成功时间" + ], + [ + 0, + "refund_voucher_num", + "Integer", + "0", + "申请退款的卡券的数量" + ], + [ + 0, + "s_id", + "Integer", + "4835702458804230000", + "子订单ID(售前整单退类型无此字段)" + ], + [ + 0, + "aftersale_status", + "Integer", + "13", + "售后状态码,枚举值如下" + ], + [ + 0, + "aftersale_type", + "Integer", + "2", + "售后类型:0-退货,1-售后退款,2-发货前退款" + ], + [ + 0, + "refund_amount", + "Integer", + "24500", + "申请退款的金额(含运费)" + ], + [ + 0, + "refund_post_amount", + "Integer", + "0", + "申请退的运费金额" + ], + [ + 0, + "reason_code", + "Integer", + "1", + "申请售后原因码,枚举值如下" + ], + [ + 0, + "update_time", + "String", + "2022-09-02T10:27:50+08:00", + "售后单更新时间" + ] + ] + }, + "trade_TradeSuccess": { + "name": "订单完成", + "level": "基础功能", + "remark": "买家确认收货或系统自动确认收货,且父订单状态变为「已完成」时,会推送此消息", + "topic": "trade_TradeSuccess", + "dop_tag": "103", + "dop_url": "https://op.jinritemai.com/docs/message-docs/30/112", + "dop_title": "交易完成消息", + "props": [] + }, + "trade_TradeCanceled": { + "name": "订单取消", + "level": "基础功能", + "remark": "触发场景:货到付款订单且订单状态为「待确认」,买家和商家可取消订单;货到付款订单且订单状态为「备货中」,买家、商家和平台客服可取消订单;货到付款订单且订单状态为「已发货」,物流状态为拒收或退回;在线支付订单且订单状态为「待付款」,买家可取消该订单;在线支付订单且订单状态为「待付款」,超时未支付,订单自动取消", + "topic": "trade_TradeCanceled", + "dop_tag": "106", + "dop_url": "https://op.jinritemai.com/docs/message-docs/30/123", + "dop_title": "订单取消消息", + "props": [] + }, + "refund_RefundAgreed": { + "name": "同意退款", + "level": "基础功能", + "remark": "触发场景:买家在发货前申请整单退款,卖家同意退款或超时自动同意退款时;买家在发货后申请退款,卖家同意退款或超时自动同意退款时;买家在发货后申请申请退货,卖家确认收货或系统超时自动确认收货时;卖家收到买家换货包裹,核验后无法换货,同意换货但转直接退款时", + "topic": "refund_RefundAgreed", + "dop_tag": "201", + "dop_url": "https://op.jinritemai.com/docs/message-docs/31/116", + "dop_title": "同意退款消息", + "props": [] + }, + "refund_RefundRefused": { + "name": "拒绝退款", + "level": "高级功能", + "remark": "触发场景:买家在发货前申请整单退款,卖家拒绝;买家在发货后申请退款,卖家拒绝;买家在发货后申请申请退货,买家发货后,卖家拒绝收货", + "topic": "refund_RefundRefused", + "dop_tag": "204", + "dop_url": "https://op.jinritemai.com/docs/message-docs/31/119", + "dop_title": "拒绝退款消息", + "props": [] + }, + "refund_ArbitrateApplied": { + "name": "发起仲裁", + "level": "高级功能", + "remark": "触发场景:商家拒绝买家请求,买家可申请平台客服介入、发起客服仲裁,此时推送此消息。具体场景如下: 订单已发货,买家申请售后退款,此时商家拒绝,买家可发起仲裁;订单已发货,买家申请售后退换货,此时商家拒绝退货请求,买家可发起仲裁;订单已发货,买家申请售后退换货,买家已填写退货物流,此时商家拒绝收货,买家可发起仲裁", + "topic": "refund_ArbitrateApplied", + "dop_tag": "212", + "dop_url": "https://op.jinritemai.com/docs/message-docs/31/256", + "dop_title": "买家发起客服仲裁消息", + "props": [] + }, + "refund_ArbitrateCancelled": { + "name": "取消仲裁", + "level": "高级功能", + "remark": "买家申请客服介入、发起客服仲裁后,而后又取消客服仲裁时,推送此消息", + "topic": "refund_ArbitrateCancelled", + "dop_tag": "215", + "dop_url": "https://op.jinritemai.com/docs/message-docs/31/260", + "dop_title": "买家取消仲裁消息", + "props": [] + }, + "trade_TradeCreate": { + "name": "订单创建", + "level": "基础功能", + "remark": "当买家下单,系统生成订单时,会推送此消息", + "topic": "trade_TradeCreate", + "dop_tag": "100", + "dop_url": "https://op.jinritemai.com/docs/message-docs/30/109", + "dop_title": "订单创建消息", + "props": [ + [ + 0, + "p_id", + "Integer", + "4835999782215623000", + "父订单ID" + ], + [ + 0, + "s_ids", + "Array", + "[\r\n 123\r\n ]", + "子订单ID列表" + ], + [ + 0, + "shop_id", + "Integer", + "597277", + "店铺ID,即时零售店铺该字段为即时零售总部id" + ], + [ + 0, + "order_status", + "Integer", + "1", + "父订单状态,订单创建消息的order_status值为\"1\"" + ], + [ + 0, + "order_type", + "Integer", + "2", + "订单类型: 0: 实物 2: 普通虚拟 4: poi核销 5: 三方核销 6: 服务市场" + ], + [ + 0, + "create_time", + "Integer", + "1630335741", + "订单创建时间" + ], + [ + 0, + "biz", + "Integer", + "2", + "订单业务类型,表示买家从哪里看到的这个商品、产生了订单:1-鲁班广告,2-联盟,4-商城,8-自主经营,10-线索通支付表单,12-抖音门店,14-抖+,15-穿山甲" + ] + ] + } + }, + "fee": [ + { + "name": "免费功能", + "beans": 0, + "remark": "", + "original_beans": 0 + }, + { + "name": "基础功能", + "beans": 1, + "remark": "0.001元", + "original_beans": 1 + }, + { + "name": "高级功能", + "beans": 2, + "remark": "0.002元", + "original_beans": 2 + }, + { + "name": "增值功能", + "beans": 4, + "remark": "0.004元", + "original_beans": 4 + } + ], + "menu": [ + { + "text": "消息推送", + "nodes": [ + { + "text": "买家已付款", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.trade_TradePaid" + }, + { + "text": "卖家备注变更", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.trade_TradeMemoModify" + }, + { + "text": "卖家发货", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.trade_TradeSellerShip" + }, + { + "text": "卖家部分发货", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.trade_TradePartlySellerShip" + }, + { + "text": "买家发起售后", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.refund_RefundCreated" + }, + { + "text": "售后关闭", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.refund_RefundClosed" + }, + { + "text": "退款成功", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.refund_RefundSuccess" + }, + { + "text": "订单完成", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.trade_TradeSuccess" + }, + { + "text": "订单取消", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.trade_TradeCanceled" + }, + { + "text": "同意退款", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.refund_RefundAgreed" + }, + { + "text": "拒绝退款", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.refund_RefundRefused" + }, + { + "text": "发起仲裁", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.refund_ArbitrateApplied" + }, + { + "text": "取消仲裁", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.refund_ArbitrateCancelled" + }, + { + "text": "订单创建", + "icon": "glyphicon glyphicon-cloud-download", + "href": "#message.trade_TradeCreate" + } + ] + }, + { + "text": "接口API", + "nodes": [ + { + "text": "订单详情", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.order_orderDetail" + }, + { + "text": "充值结果提交", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.topup_result" + }, + { + "text": "卡券同步", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.coupons_syncV2" + }, + { + "text": "卡券核销V3", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.coupons_verifyV3" + }, + { + "text": "券码查询", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.coupons_list" + }, + { + "text": "卡券取消核销", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.coupons_cancelVerify" + }, + { + "text": "卖家备注", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.order_addOrderRemark" + }, + { + "text": "售后审核", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.afterSale_operate" + }, + { + "text": "查询商家拒绝原因列表", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.afterSale_rejectReasonCodeList" + }, + { + "text": "订单列表查询", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.order_searchList" + }, + { + "text": "商家主动取消订单", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.coupons_CertSyncFailedCancelOrder" + }, + { + "text": "消息设置", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.message_config" + }, + { + "text": "商品详情", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.product_detail" + }, + { + "text": "商品列表", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.product_list" + }, + { + "text": "商品sku列表", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.sku_list" + }, + { + "text": "订单消息测试", + "icon": "glyphicon glyphicon-retweet", + "href": "#api.order_message" + } + ] + }, + { + "text": "计费规则", + "icon": "glyphicon glyphicon-asterisk", + "href": "#fee" + } + ] +} \ No newline at end of file diff --git a/docs/抖音-码速达/data/代码示例/接口API-请求示例-DOTNET.txt b/docs/抖音-码速达/data/代码示例/接口API-请求示例-DOTNET.txt new file mode 100644 index 00000000..4ba69270 --- /dev/null +++ b/docs/抖音-码速达/data/代码示例/接口API-请求示例-DOTNET.txt @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Security.Cryptography; +using System.Text; +using System.Web; + +namespace Test +{ + public class Program + { + static void Main(string[] args) + { + string secret = "{{secret}}"; //用户秘钥 + string uid = "{{uid}}"; //用户OpenUid + string method = "{{method}}"; //API方法名 + string timestamp = ((long)(DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds).ToString(); //时间戳 + //业务参数 {{p8}} + Dictionary dict = new Dictionary(); + dict.Add("uid", uid); + dict.Add("method", method); + dict.Add("timestamp", timestamp); + //业务参数 {{p9}} + StringBuilder sb = new StringBuilder(secret); //拼接签名原串 + StringBuilder sb2 = new StringBuilder(); //拼接POST内容 + foreach (string key in dict.Keys.OrderBy(key => key)) + { + sb.Append(key + dict[key]); + sb2.Append(key + "=" + HttpUtility.UrlEncode(dict[key], Encoding.UTF8) + "&"); + } + sb.Append(secret); + string sign = CalculateMd5(sb.ToString()); //签名计算 + sb2.Append("sign=" + sign); //添加签名参数 + string result = CallApi(sb2.ToString()); //请求API + Console.WriteLine(result); + } + + private static string CalculateMd5(string content) + { + var md5 = new MD5CryptoServiceProvider(); + byte[] bytes = Encoding.UTF8.GetBytes(content); + byte[] bytes2 = md5.ComputeHash(bytes); + return BitConverter.ToString(bytes2).Replace("-", "").ToLower(); + } + + private static string CallApi(string formData) + { + try + { + WebClient webClient = new WebClient(); + webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); + webClient.Headers.Add("Accept", "application/json"); + webClient.Encoding = Encoding.UTF8; + string result = webClient.UploadString("{{url}}", "POST", formData); + return result; + } + catch (Exception e) + { + } + return null; + } + } +} diff --git a/docs/抖音-码速达/data/代码示例/接口API-请求示例-JAVA.txt b/docs/抖音-码速达/data/代码示例/接口API-请求示例-JAVA.txt new file mode 100644 index 00000000..950defee --- /dev/null +++ b/docs/抖音-码速达/data/代码示例/接口API-请求示例-JAVA.txt @@ -0,0 +1,82 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.math.BigInteger; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +import java.security.MessageDigest; +import java.util.*; + +public class Main { + public static void main(String[] args) { + try { + String secret = "{{secret}}"; //用户秘钥 + String uid = "{{uid}}"; //用户OpenUid + String method = "{{method}}"; //API方法名 + String timestamp = String.valueOf(System.currentTimeMillis() / 1000L); //时间戳 + //业务参数 {{p6}} + Map map = new HashMap(); + map.put("uid", uid); + map.put("method", method); + map.put("timestamp", timestamp); + //业务参数 {{p7}} + List keys = new ArrayList(map.keySet()); //SET转LIST + Collections.sort(keys); //排序 + StringBuffer sb = new StringBuffer(secret); //拼接签名原串 + StringBuffer sb2 = new StringBuffer(); //拼接POST内容 + for (String key : keys) { + sb.append(key + map.get(key)); + sb2.append(key + "=" + URLEncoder.encode(map.get(key), "UTF-8") + "&"); + } + sb.append(secret); + String sign = CalculateMd5(sb.toString()); //签名计算 + sb2.append("sign=" + sign); //添加签名参数 + String result = CallApi(sb2.toString()); //请求API + System.out.println(result); + } catch (Exception e) { + } + } + + private static String CalculateMd5(String content) { + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(content.getBytes()); + byte[] digest = md.digest(); + Formatter formatter = new Formatter(); + for (byte b : digest) { + formatter.format("%02x", b); + } + String result = formatter.toString(); + return result; + } catch (Exception e) { + } + return null; + } + + private static String CallApi(String formData) { + try { + URL url = new URL("{{url}}"); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + connection.setRequestProperty("Accept", "application/json"); + connection.setDoOutput(true); + try (OutputStream os = connection.getOutputStream()) { + byte[] input = formData.getBytes("utf-8"); + os.write(input, 0, input.length); + } + try (BufferedReader br = new BufferedReader( + new InputStreamReader(connection.getInputStream(), "utf-8"))) { + StringBuilder response = new StringBuilder(); + String responseLine = null; + while ((responseLine = br.readLine()) != null) { + response.append(responseLine.trim()); + } + return response.toString(); + } + } catch (Exception e) { + } + return null; + } +} diff --git a/docs/抖音-码速达/data/代码示例/接口API-请求示例-PHP.txt b/docs/抖音-码速达/data/代码示例/接口API-请求示例-PHP.txt new file mode 100644 index 00000000..d29c15ba --- /dev/null +++ b/docs/抖音-码速达/data/代码示例/接口API-请求示例-PHP.txt @@ -0,0 +1,35 @@ +$secret = '{{secret}}'; //用户秘钥 +$params = array(); +$params['uid'] = '{{uid}}'; //用户OpenUid +$params['method'] = '{{method}}'; //API方法名 +$params['timestamp'] = time(); //时间戳 +//业务参数 {{p10}} +ksort($params); //排序 +$str=''; +foreach($params as $k => $v) +{ + $str .= ($k . $v); + $params[$k] = urlencode($v); +} +$str = $secret . $str . $secret; //拼接签名原串 +$sign = md5($str); //签名计算 +$params['sign'] = $sign; //添加签名参数 +$res = call_api($params); //请求API +echo($res); + +function call_api($params) +{ + $curl = curl_init(); + if (version_compare(phpversion(), '5.4.0', '<')) { + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); + } else { + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); + } + curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); + curl_setopt($curl, CURLOPT_POST, TRUE); + curl_setopt($curl, CURLOPT_POSTFIELDS, $params); + curl_setopt($curl, CURLOPT_URL, '{{url}}'); + $res = curl_exec($curl); + curl_close ($curl); + return $res; +} diff --git a/docs/抖音-码速达/data/代码示例/消息推送-请求示例-DOTNET.txt b/docs/抖音-码速达/data/代码示例/消息推送-请求示例-DOTNET.txt new file mode 100644 index 00000000..309cd8bf --- /dev/null +++ b/docs/抖音-码速达/data/代码示例/消息推送-请求示例-DOTNET.txt @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Text; + +namespace Test +{ + public class Program + { + static void Main(string[] args) + { + string secret = "{{secret}}"; //用户秘钥 + string topic = "{{topic}}"; //消息主题 + string pub_time = "{{pub_time}}";//原消息发布时间 + string data = "{{data-2}}"; //消息内容 + Dictionary dict = new Dictionary(); + dict.Add("topic", topic); + dict.Add("pub_time", pub_time); + dict.Add("data", data); + StringBuilder sb = new StringBuilder(secret); //拼接签名原串 + foreach (string key in dict.Keys.OrderBy(key => key)) + { + sb.Append(key + dict[key]); + } + sb.Append(secret); + string sign = CalculateMd5(sb.ToString()); //签名计算 + Console.WriteLine(sign); + } + + private static string CalculateMd5(string content) + { + var md5 = new MD5CryptoServiceProvider(); + byte[] bytes = Encoding.UTF8.GetBytes(content); + byte[] bytes2 = md5.ComputeHash(bytes); + return BitConverter.ToString(bytes2).Replace("-", "").ToLower(); + } + } +} diff --git a/docs/抖音-码速达/data/代码示例/消息推送-请求示例-JAVA.txt b/docs/抖音-码速达/data/代码示例/消息推送-请求示例-JAVA.txt new file mode 100644 index 00000000..8f1a6bd4 --- /dev/null +++ b/docs/抖音-码速达/data/代码示例/消息推送-请求示例-JAVA.txt @@ -0,0 +1,44 @@ +import java.math.BigInteger; +import java.security.MessageDigest; +import java.util.*; + +public class Main { + public static void main(String[] args) { + try { + String secret = "{{secret}}"; //用户秘钥 + String topic = "{{topic}}"; //消息主题 + String pub_time = "{{pub-time}}"; //原消息发布时间 + String data = "{{data-2}}"; //消息内容 + Map map = new HashMap(); + map.put("topic", topic); + map.put("pub_time", pub_time); + map.put("data", data); + List keys = new ArrayList(map.keySet()); //SET转LIST + Collections.sort(keys); //排序 + StringBuffer sb = new StringBuffer(secret); //拼接签名原串 + for (String key : keys) { + sb.append(key + map.get(key)); + } + sb.append(secret); + String sign = CalculateMd5(sb.toString()); //签名计算 + System.out.println(sign); + } catch (Exception e) { + } + } + + private static String CalculateMd5(String content) { + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(content.getBytes()); + byte[] digest = md.digest(); + Formatter formatter = new Formatter(); + for (byte b : digest) { + formatter.format("%02x", b); + } + String result = formatter.toString(); + return result; + } catch (Exception e) { + } + return null; + } +} diff --git a/docs/抖音-码速达/data/代码示例/消息推送-请求示例-PHP.txt b/docs/抖音-码速达/data/代码示例/消息推送-请求示例-PHP.txt new file mode 100644 index 00000000..15ed4e3b --- /dev/null +++ b/docs/抖音-码速达/data/代码示例/消息推送-请求示例-PHP.txt @@ -0,0 +1,14 @@ +$secret = '{{secret}}'; //用户秘钥 +$params = array(); +$params['topic'] = '{{topic}}'; //消息主题 +$params['pub_time'] = '{{pub-time}}'; //原消息发布时间 +$params['data'] = '{{data}}'; //消息内容 +ksort($params); //排序 +$str=''; +foreach($params as $k => $v) +{ + $str .= ($k . $v); +} +$str = $secret . $str . $secret; //拼接签名原串 +$sign = md5($str); //签名计算 +echo($sign); diff --git a/docs/抖音-码速达/接口API/01-订单详情.md b/docs/抖音-码速达/接口API/01-订单详情.md new file mode 100644 index 00000000..f854b5af --- /dev/null +++ b/docs/抖音-码速达/接口API/01-订单详情.md @@ -0,0 +1,144 @@ +# 订单详情(`order.orderDetail`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 订单详情」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 订单详情 | +| 方法名 method | `order.orderDetail` | +| 功能分级 | 高级功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 查询订单的详细信息,仅显示关键字段 | +| 抖店原始路径 | `/order/orderDetail` | +| 抖店原始文档 | [订单详情查询](https://op.jinritemai.com/docs/api-docs/15/1343) | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `order.orderDetail`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| shop_order_id | String | 是 | Post | 店铺父订单号,抖店平台生成,平台下唯一,示例:`6917533224570258991` | + +## 返回参数 + +| 参数名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| data | Object | `` | | +|     order_id | String | `6917533224570258991` | 店铺父订单号,抖店平台生成,平台下唯一 | +|     order_status | Integer | `3` | 订单状态:1-待确认/待支付(订单创建完毕),105-已支付,2-备货中,101-部分发货,3-已发货(全部发货),4-已取消,5-已完成(已收货) | +|     shop_id | Integer | `94956` | 店铺ID,抖店平台生成,平台下唯一 | +|     shop_name | String | `订单专用_测试店三` | 商户名称 | +|     order_amount | Integer | `20500` | 订单金额(单位:分) | +|     pay_amount | Integer | `20500` | 支付金额(单位:分) | +|     pay_time | Integer | `1682479081` | 支付时间,时间戳,秒 | +|     create_time | Integer | `1682479079` | 下单时间,时间戳,秒 | +|     finish_time | Integer | `0` | 订单完成时间,时间戳,秒 | +|     doudian_open_id | String | `1@#SGf7u/L4T728WdIaNcm6c+7SOqTObqbPh6wJBSm6lRGO+VEipIFB4EZDoWtkW1ThcrgNhg==` | 用户唯一id,规则详见:https://op.jinritemai.com/docs/guide-docs/1368/4416 | +|     post_tel | String | `1231234` | 收件人电话 | +|     post_receiver | String | `aaa` | 收件人姓名 | +|     buyer_words | String | `取消` | 买家留言 | +|     seller_words | String | `取消` | 商家备注 | +|     seller_remark_stars | Integer | `0` | 插旗信息:0-灰 1-紫 2-青 3-绿 4-橙 5-红 | +|     order_type | Integer | `5` | 订单类型:0-普通订单,2-虚拟商品订单,4-电子券(poi核销),5-三方核销,6-服务市场 | +|     biz | Integer | `11` | 业务来源:1-鲁班,2-小店,3-好好学习,4-ev,5-虚拟,6-建站,7-平台卡券,8-玉石,9-ez,10-ep,11-三方卡券,12-服务市场,13-EP视频课,14-EP直播课,21-跨境BBC,22-跨境BC,23-跨境CC\|UPU,24-手机充值,25-拍卖保证金,26-懂车帝抵扣券,27-懂车帝返现券,28-离岛免税,29-海南会员购,30-抽奖,31-清北-企业代付,32-抖+券,33-联盟寄样,49-刀剑,53-通信卡,66-加油包,76-大闸蟹,99-保险,101-三方卡券卡密模式,102-小店海外,108-上门取件收款 | +|     b_type | Integer | `2` | 下单端:0-站外,1-火山,2-抖音,3-头条,4-西瓜,5-微信,6-值点app,7-头条lite,8-懂车帝,9-皮皮虾,11-抖音极速版,12-TikTok,13-musically,14-穿山甲,15-火山极速版,16-服务市场,26-番茄小说,27-UG教育营销电商平台,28-Jumanji,29-电商SDK | +|     sku_order_list | Array | `` | 订单详情信息,一个主订单下有可以最大返回40个子订单 | +|         order_id | String | `4781320682406083640` | 店铺子订单号,抖店平台生成,平台下唯一;注意:一笔订单下有一个子订单和父订单单号相同 | +|         product_id | Integer | `3473196049974326153` | 商品ID,字符串类型 | +|         sku_id | Integer | `3254535` | 商品SkuID | +|         out_product_id | String | `432655662343` | 商品外部编码 | +|         out_sku_id | String | `43564553` | 外部SkuID | +|         product_name | String | `XX鞋子` | 商品名称 | +|         goods_price | Integer | `100` | 商品原价(单位:分) | +|         item_num | Integer | `2` | 订单商品数量 | +|         order_amount | Integer | `20500` | 订单金额(单位:分) | +|         pay_amount | Integer | `20500` | 支付金额(单位:分) | +|         code | String | `XXX001` | 商家后台商品编码 | +|         account_list | Array | `` | 买家账号信息,列表类型,当order_type=2,order_type_desc为虚拟订单时该参数会返回信息 | +|             account_id | String | `15678909876` | 账号值 | +|             account_type | String | `1` | 买家账号类型:Mobile-手机号,Email-邮箱,IdCard-身份证,Passport-护照,BankCard-银行卡,Number-纯数学,NumberLetter-数字字母混合 | +|             account_name | String | `测试` | 买家账号名称 | +|         after_sale_info | Object | `` | 售后信息 | +|             after_sale_id | Integer | `6965315853751632172` | 售后单ID | +|             after_sale_status | Integer | `12` | 售后状态:6-售后申请,27-拒绝售后申请,12-售后成功,7-售后退货中,11-售后已发货,29-售后退货拒绝,13-[换货返回-换货售后换货商家发货]/[补寄返回-补寄待用户收货], 14-[换货返回-换货售后换货用户收货]/[补寄返回-补寄用户已收货] ,28-售后失败,51-订单取消成功,53-逆向交易已完成 | +|             after_sale_type | Integer | `1` | 售后类型:0-退货退款,1-已发货仅退款,2-未发货仅退款,3-换货,4-系统取消,5-用户取消,6-价保,7-补寄 | + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功", + "data": { + "order_id": "6917533224570258991", + "order_status": 3, + "shop_id": 94956, + "shop_name": "订单专用_测试店三", + "order_amount": 20500, + "pay_amount": 20500, + "pay_time": 1682479081, + "create_time": 1682479079, + "finish_time": 0, + "doudian_open_id": "1@#SGf7u/L4T728WdIaNcm6c+7SOqTObqbPh6wJBSm6lRGO+VEipIFB4EZDoWtkW1ThcrgNhg==", + "post_tel": "1231234", + "post_receiver": "aaa", + "buyer_words": "取消", + "seller_words": "取消", + "seller_remark_stars": 0, + "order_type": 5, + "biz": 11, + "b_type": 2, + "sku_order_list": [{ + "order_id": "4781320682406083640", + "product_id": 3473196049974326153, + "sku_id": 3254535, + "out_product_id": "432655662343", + "out_sku_id": "43564553", + "product_name": "XX鞋子", + "goods_price": 100, + "item_num": 2, + "order_amount": 20500, + "pay_amount": 20500, + "code": "XXX001", + "account_list": [{ + "account_id": "15678909876", + "account_type": "1", + "account_name": "测试" + }], + "after_sale_info": { + "after_sale_id": 6965315853751632172, + "after_sale_status": 12, + "after_sale_type": 1 + } + }] + } +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXmethodorder.orderDetailshop_order_id6917533224570258991timestamp1780000000uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`method`、`shop_order_id`、`timestamp`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `e4a08602d21966e99d2fa0921d7456b0` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 1 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/02-充值结果提交.md b/docs/抖音-码速达/接口API/02-充值结果提交.md new file mode 100644 index 00000000..2408cf20 --- /dev/null +++ b/docs/抖音-码速达/接口API/02-充值结果提交.md @@ -0,0 +1,85 @@ +# 充值结果提交(`topup.result`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 充值结果提交」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 充值结果提交 | +| 方法名 method | `topup.result` | +| 功能分级 | 基础功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 商家处理完充值请求后,异步回调告知平台充值结果 | +| 抖店原始路径 | `/topup/result` | +| 抖店原始文档 | [商家充值结果回调](https://op.jinritemai.com/docs/api-docs/164/1639) | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `topup.result`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| trade_order_no | String | 是 | Post | 订单号,示例:`47544092076043809181` | +| topup_biz | String | 是 | Post | 充值业务,示例:`MOBILE_TOPUP` | +| seller_order_no | String | 是 | Post | 商家充值单号,示例:`DY8123123` | +| seller_order_status | String | 是 | Post | 充值结果,示例:`SUCCESS` | +| err_code | String | 否 | Post | 错误码,示例:`1003` | +| err_desc | String | 否 | Post | 错误信息,示例:`参数校验失败` | +| url | String | 否 | Post | 去使用链接,示例:`https://xxxx.com` | +| url_type | String | 否 | Post | 去使用链接类型:microapp-小程序,normal-普通链接,示例:`normal` | +| topup_failure_reason_code | String | 否 | Post | 充值失败错误码:10001-手机号码无效,10002-商家缺货,10003-命中运营商风控策略,示例:`10001` | + +## 返回参数 + +| 参数名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| data | Object | `` | 返回数据 | +|     trade_order_no | String | `4754409207604380918` | 平台订单号 | +|     topup_biz | String | `MOBILE_TOPUP` | 充值业务 | +|     result | String | `FAILED` | 平台接口充值结果失败 | +|     seller_order_no | String | `DY8123123` | 商家充值单号 | +|     err_code | String | `-1` | 错误码 | +|     err_desc | String | `内部错误` | 错误信息 | + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功", + "data": { + "trade_order_no": "4754409207604380918", + "topup_biz": "MOBILE_TOPUP", + "result": "FAILED", + "seller_order_no": "DY8123123", + "err_code": "-1", + "err_desc": "内部错误" + } +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXerr_code1003err_desc参数校验失败methodtopup.resultseller_order_noDY8123123seller_order_statusSUCCESStimestamp1780000000topup_bizMOBILE_TOPUPtopup_failure_reason_code10001trade_order_no47544092076043809181uid111111111urlhttps://xxxx.comurl_typenormalXXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`err_code`、`err_desc`、`method`、`seller_order_no`、`seller_order_status`、`timestamp`、`topup_biz`、`topup_failure_reason_code`、`trade_order_no`、`uid`、`url`、`url_type` + +`sign = md5(签名原串)`(32 位小写)= `9322cbc2e8f5cce0b2931cbe9eb6e312` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 2 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/03-卡券同步.md b/docs/抖音-码速达/接口API/03-卡券同步.md new file mode 100644 index 00000000..5f960d99 --- /dev/null +++ b/docs/抖音-码速达/接口API/03-卡券同步.md @@ -0,0 +1,78 @@ +# 卡券同步(`coupons.syncV2`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 卡券同步」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 卡券同步 | +| 方法名 method | `coupons.syncV2` | +| 功能分级 | 基础功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 卖家在平台卖出券后同步卡券信息 | +| 抖店原始路径 | `/coupons/syncV2` | +| 抖店原始文档 | [卡券同步](https://op.jinritemai.com/docs/api-docs/52/712) | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `coupons.syncV2`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| order_id | String | 是 | Post | 子订单ID,示例:`123421345` | +| cert_list | Json | 是 | Post | 卡券信息列表,数组类型,以Json字符串形式传入,示例:`[{"cert_link":"https://obd.gtimg.com/new-benefit-web-schema/dev/dist/index.html?ShortLinkId=6438f6f4a87f2&e=test&dyp=1&c=cafsdadsfas","cert_no":"7136xxxasd","grant_time":"2010-01-01 12:12:12"}]` | + +### 嵌套参数 `cert_list` + +卡券信息列表,数组类型,以Json字符串形式传入 + +提交时以 JSON 字符串整体作为一个参数值,示例: + +```json +[{"cert_link":"https://obd.gtimg.com/new-benefit-web-schema/dev/dist/index.html?ShortLinkId=6438f6f4a87f2&e=test&dyp=1&c=cafsdadsfas","cert_no":"7136xxxasd","grant_time":"2010-01-01 12:12:12"}] +``` + +| 参数名 | 类型 | 必填 | 说明 | +| --- | --- | --- | --- | +| cert_link | String | 否 | 卡券跳转链接,长度限制255 | +| cert_no | String | 是 | 卡券券码 | +| grant_time | String | 是 | 发券时间 | + +## 返回参数 + +(无返回参数说明) + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功" +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXcert_list[{"cert_link":"https://obd.gtimg.com/new-benefit-web-schema/dev/dist/index.html?ShortLinkId=6438f6f4a87f2&e=test&dyp=1&c=cafsdadsfas","cert_no":"7136xxxasd","grant_time":"2010-01-01 12:12:12"}]methodcoupons.syncV2order_id123421345timestamp1780000000uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`cert_list`、`method`、`order_id`、`timestamp`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `e178612ad7b122104b9ec34e12fdfb9a` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 3 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/04-卡券核销V3.md b/docs/抖音-码速达/接口API/04-卡券核销V3.md new file mode 100644 index 00000000..cb7c49b0 --- /dev/null +++ b/docs/抖音-码速达/接口API/04-卡券核销V3.md @@ -0,0 +1,61 @@ +# 卡券核销V3(`coupons.verifyV3`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 卡券核销V3」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 卡券核销V3 | +| 方法名 method | `coupons.verifyV3` | +| 功能分级 | 高级功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 卖家向平台提交卡券核销状态 | +| 抖店原始路径 | `/coupons/verifyV2` | +| 抖店原始文档 | [卡券核销接口V2版本](https://op.jinritemai.com/docs/api-docs/52/797) | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `coupons.verifyV3`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| cert_no | String | 是 | Post | 卡券号码,示例:`123456` | + +## 返回参数 + +(无返回参数说明) + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功" +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXcert_no123456methodcoupons.verifyV3timestamp1780000000uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`cert_no`、`method`、`timestamp`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `276e1c47c1c31305d2bc651db4083ef2` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 4 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/05-券码查询.md b/docs/抖音-码速达/接口API/05-券码查询.md new file mode 100644 index 00000000..a652ed53 --- /dev/null +++ b/docs/抖音-码速达/接口API/05-券码查询.md @@ -0,0 +1,91 @@ +# 券码查询(`coupons.list`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 券码查询」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 券码查询 | +| 方法名 method | `coupons.list` | +| 功能分级 | 基础功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 查询券码在平台侧的状态详情 | +| 抖店原始路径 | `/coupons/list` | +| 抖店原始文档 | [券码查询接口](https://op.jinritemai.com/docs/api-docs/52/369) | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `coupons.list`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| order_id | String | 否 | Post | 子订单ID,示例:`123` | +| cert_no | String | 否 | Post | 卡号券码,示例:`卡券id` | +| cert_type | Integer | 否 | Post | 卡券类型:0-三方卡券,1-平台卡券,示例:`0` | + +## 返回参数 + +| 参数名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| data | Array | `` | 返回数据,列表类型 | +|     order_id | String | `6917586388057718374` | 平台订单ID | +|     verrify_order_ids | String | `123123123123;789789789789` | 三方商家的订单Id,如果有多个,使用;分割 | +|     cert_id | String | `71937153151279783203` | 卡券ID | +|     out_cert_id | String | `123` | 外部卡券ID | +|     cert_no | String | `71936748123123166654548` | 卡号券码 | +|     valid_start | Integer | `1673452800` | 有效开始时间 | +|     valid_end | Integer | `1674921599` | 有效结束时间 | +|     grant_time | Integer | `1674914207` | 发券时间,0则用当前时间 | +|     status | Integer | `1` | 状态:1-未激活(表示初始状态), 2-未使用,3-已使用,4-已废弃,5-已过期,6-已完成 | +|     total_num | Integer | `2` | 可核销次数 | +|     verify_num | Integer | `1` | 已核销次数 | +|     available_num | Integer | `1` | 剩余可用次数 | + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功", + "data": [{ + "order_id": "6917586388057718374", + "verrify_order_ids": "123123123123;789789789789", + "cert_id": "71937153151279783203", + "out_cert_id": "123", + "cert_no": "71936748123123166654548", + "valid_start": 1673452800, + "valid_end": 1674921599, + "grant_time": 1674914207, + "status": 1, + "total_num": 2, + "verify_num": 1, + "available_num": 1 + }] +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXcert_no卡券idcert_type0methodcoupons.listorder_id123timestamp1780000000uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`cert_no`、`cert_type`、`method`、`order_id`、`timestamp`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `7cf0d2b6bc406444baa75215b584c997` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 5 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/06-卡券取消核销.md b/docs/抖音-码速达/接口API/06-卡券取消核销.md new file mode 100644 index 00000000..d818038a --- /dev/null +++ b/docs/抖音-码速达/接口API/06-卡券取消核销.md @@ -0,0 +1,63 @@ +# 卡券取消核销(`coupons.cancelVerify`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 卡券取消核销」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 卡券取消核销 | +| 方法名 method | `coupons.cancelVerify` | +| 功能分级 | 基础功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 当卡券核销错误之后,取消核销时候使用 | +| 抖店原始路径 | `/coupons/cancelVerify` | +| 抖店原始文档 | [卡券取消核销接口](https://op.jinritemai.com/docs/api-docs/52/668) | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `coupons.cancelVerify`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| cert_no | String | 是 | Post | 卡号券码,示例:`231342sdd` | +| batch_no | String | 否 | Post | 幂等请求编号,示例:`123123` | +| cancel_verify_count | Integer | 否 | Post | 取消核销总次数,示例:`3` | + +## 返回参数 + +(无返回参数说明) + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功" +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXbatch_no123123cancel_verify_count3cert_no231342sddmethodcoupons.cancelVerifytimestamp1780000000uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`batch_no`、`cancel_verify_count`、`cert_no`、`method`、`timestamp`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `69503e5bcd1a7b8dfea36fb2d40cdb3b` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 6 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/07-卖家备注.md b/docs/抖音-码速达/接口API/07-卖家备注.md new file mode 100644 index 00000000..8806eb7d --- /dev/null +++ b/docs/抖音-码速达/接口API/07-卖家备注.md @@ -0,0 +1,64 @@ +# 卖家备注(`order.addOrderRemark`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 卖家备注」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 卖家备注 | +| 方法名 method | `order.addOrderRemark` | +| 功能分级 | 基础功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 卖家提交订单备注 | +| 抖店原始路径 | `/order/addOrderRemark` | +| 抖店原始文档 | [为商家提供订单备注接口](https://op.jinritemai.com/docs/api-docs/15/568) | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `order.addOrderRemark`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| order_id | String | 是 | Post | 店铺订单ID,示例:`6496679971677798670` | +| remark | String | 是 | Post | 备注内容,必填选项;如果不填会导致订单的备注被空值覆盖,最大不得超过500个字符,示例:`这是具体的备注内容` | +| is_add_star | String | 否 | Post | 是否加旗标,不填则默认为false,不会修改旗帜颜色; is_add_star=true,需要加旗帜或者覆盖原来的旗帜颜色;is_add_star=false,不添加旗帜,不会覆盖原来的旗帜颜色,示例:`true` | +| star | String | 否 | Post | 标星等级:0-灰色旗标,1-紫色旗标,2-青色旗标,3-绿色旗标,4-橙色旗标,5-红色旗标,示例:`2` | + +## 返回参数 + +(无返回参数说明) + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功" +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXis_add_startruemethodorder.addOrderRemarkorder_id6496679971677798670remark这是具体的备注内容star2timestamp1780000000uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`is_add_star`、`method`、`order_id`、`remark`、`star`、`timestamp`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `fc5679218161d1beeb088ffad2ae33cc` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 7 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/08-售后审核.md b/docs/抖音-码速达/接口API/08-售后审核.md new file mode 100644 index 00000000..4161ebfc --- /dev/null +++ b/docs/抖音-码速达/接口API/08-售后审核.md @@ -0,0 +1,96 @@ +# 售后审核(`afterSale.operate`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 售后审核」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 售后审核 | +| 方法名 method | `afterSale.operate` | +| 功能分级 | 高级功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 售后统一操作接口 | +| 抖店原始路径 | `/afterSale/operate` | +| 抖店原始文档 | [售后审核接口聚合版](https://op.jinritemai.com/docs/api-docs/17/560) | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `afterSale.operate`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| type | Integer | 是 | Post | 操作类型:201-同意仅退款,202-拒绝仅退款,示例:`201` | +| items | Json | 是 | Post | 操作售后详情,数组类型,以Json字符串形式传入,示例:`[{"repair_type":1,"aftersale_id":6959800000297566494,"reason":"卡密商品已发货,不支持退款","remark":"卡密已查看,且可正常使用,拒绝退款","evidence":[{"type":1,"url":"http://xxxxxxxx.jpg","desc":"店铺相关说明"}],"reject_reason_code":1,"update_time":0}]` | +| store_id | Integer | 否 | Post | 门店ID,抖超小时达业务使用,示例:`123` | + +### 嵌套参数 `items` + +操作售后详情,数组类型,以Json字符串形式传入 + +提交时以 JSON 字符串整体作为一个参数值,示例: + +```json +[{"repair_type":1,"aftersale_id":6959800000297566494,"reason":"卡密商品已发货,不支持退款","remark":"卡密已查看,且可正常使用,拒绝退款","evidence":[{"type":1,"url":"http://xxxxxxxx.jpg","desc":"店铺相关说明"}],"reject_reason_code":1,"update_time":0}] +``` + +| 参数名 | 类型 | 必填 | 说明 | +| --- | --- | --- | --- | +| repair_type | Integer | 否 | 维修类型:1-原商品维修,2-商品换新 | +| aftersale_id | Integer | 是 | 售后单号 | +| reason | String | 否 | 操作原因,拒绝操作必填 | +| remark | String | 否 | 操作评论,拒绝操作必填 | +| evidence | Array | 否 | 操作凭证编码,当【查询商家拒绝原因列表】接口响应参数evidence_need=Y时,该参数必填;使用【查询商家拒绝原因列表】接口获取响应参数中的reject_reason_code字段。 | +|     type | Integer | 否 | 凭证类型:1-图片 | +|     url | String | 否 | 凭证url | +|     desc | String | 否 | 凭证描述 | +| reject_reason_code | Integer | 否 | 售后拒绝原因码,拒绝时必填填。通过【查询商家拒绝原因列表】接口获取 | +| update_time | Integer | 否 | 用于校验售后单版本是不是最新的版本,防止售后单变更且open侧审核通过导致资损。使用【买家发起售后】消息推送中的update_time字段 | + +## 返回参数 + +| 参数名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| data | Array | `` | 审核结果 | +|     aftersale_id | Integer | `6959800000297566494` | 售后单号 | +|     status_code | Integer | `0` | 操作结果码 | +|     status_msg | String | `success` | 操作结果描述 | + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功", + "data": [{ + "aftersale_id": 6959800000297566494, + "status_code": 0, + "status_msg": "success" + }] +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXitems[{"repair_type":1,"aftersale_id":6959800000297566494,"reason":"卡密商品已发货,不支持退款","remark":"卡密已查看,且可正常使用,拒绝退款","evidence":[{"type":1,"url":"http://xxxxxxxx.jpg","desc":"店铺相关说明"}],"reject_reason_code":1,"update_time":0}]methodafterSale.operatestore_id123timestamp1780000000type201uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`items`、`method`、`store_id`、`timestamp`、`type`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `2be721539a1d74b950eca4e6237c6d50` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 8 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/09-查询商家拒绝原因列表.md b/docs/抖音-码速达/接口API/09-查询商家拒绝原因列表.md new file mode 100644 index 00000000..60ddae73 --- /dev/null +++ b/docs/抖音-码速达/接口API/09-查询商家拒绝原因列表.md @@ -0,0 +1,79 @@ +# 查询商家拒绝原因列表(`afterSale.rejectReasonCodeList`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 查询商家拒绝原因列表」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 查询商家拒绝原因列表 | +| 方法名 method | `afterSale.rejectReasonCodeList` | +| 功能分级 | 免费功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 查询抖店支持的全量拒绝原因列表,或指定售后单可选的拒绝原因列表(仅支持已发货的售后查询,备货中未发货订单返回为空) | +| 抖店原始路径 | `/afterSale/rejectReasonCodeList` | +| 抖店原始文档 | [查询商家拒绝原因列表](https://op.jinritemai.com/docs/api-docs/17/1540) | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `afterSale.rejectReasonCodeList`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| aftersale_id | Integer | 否 | Post | 售后单号,示例:`7140522277954690000` | + +## 返回参数 + +| 参数名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| data | Array | `` | 售后商家拒绝原因详情列表 | +|     reject_reason_code | Integer | `1` | 售后审核拒绝原因枚举编码 | +|     reason | String | `多拍/错拍/不想要` | 售后审核拒绝原因文案 | +|     evidence_description | String | `请提供发货物流进度截图` | 凭证描述文案 | +|     evidence_need | String | `Y` | 是否需要上传凭证:Y-必填,N-非必填 | +|     image | String | `/obj/ecom-aftersale-image-example/vsfguUuWBsXzjgyexWJRoBUMVORQBnmvMQHBRFom.png` | 凭证示例图片链接 | +|     order_type | Integer | `1` | 订单类型:0-普通实物订单,1-全款预售订单,2-虚拟商品订单,3-快闪店订单,4-电子券,5-三方核销,6-服务市场,-1-通用,不考虑订单类型 | +|     pkg | Integer | `1` | 是否收到货:0-未收到,1-收到,-1-通用,不考虑是否收到货 | + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功", + "data": [{ + "reject_reason_code": 1, + "reason": "多拍/错拍/不想要", + "evidence_description": "请提供发货物流进度截图", + "evidence_need": "Y", + "image": "/obj/ecom-aftersale-image-example/vsfguUuWBsXzjgyexWJRoBUMVORQBnmvMQHBRFom.png", + "order_type": 1, + "pkg": 1 + }] +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXaftersale_id7140522277954690000methodafterSale.rejectReasonCodeListtimestamp1780000000uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`aftersale_id`、`method`、`timestamp`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `b18a9c5691de6ad91d95f52bb1fa47d9` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 9 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/10-订单列表查询.md b/docs/抖音-码速达/接口API/10-订单列表查询.md new file mode 100644 index 00000000..500cb6e1 --- /dev/null +++ b/docs/抖音-码速达/接口API/10-订单列表查询.md @@ -0,0 +1,147 @@ +# 订单列表查询(`order.searchList`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 订单列表查询」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 订单列表查询 | +| 方法名 method | `order.searchList` | +| 功能分级 | 未标注 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 根据条件检索满足要求的订单列表,支持下单时间和更新时间排序;最大支持查询近90天的数据;注:本接口仅用作批量获取订单基础信息及核查订单状态,如需获取订单充值信息,构建充值流程,请对接【买家已付款】消息+【订单详情】API | +| 抖店原始路径 | `/order/searchList` | +| 抖店原始文档 | [订单列表查询](https://op.jinritemai.com/docs/api-docs/15/1342) | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `order.searchList`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| size | Integer | 是 | Post | 单页大小,限制100以内,示例:`20` | +| page | Integer | 是 | Post | 页码,0页开始,示例:`0` | +| product | String | 否 | Post | 商品,number型代表商品ID,其它代表商品名称,示例:`3473196049974326153` | +| after_sale_status_desc | String | 否 | Post | 售后状态:all-全部,in_aftersale-售后中,refund-退款中,refund_success-退款成功,refund_fail-退款失败,exchange_success-换货成功,aftersale_close-售后关闭,示例:`refund_success` | +| order_type | Integer | 否 | Post | 订单类型:0-普通订单,2-虚拟商品订单,4-电子券(poi核销),5-三方核销,示例:`1` | +| create_time_start | Integer | 否 | Post | 下单时间:开始,秒级时间戳,示例:`1617355413` | +| create_time_end | Integer | 否 | Post | 下单时间:截止,秒级时间戳,示例:`1617355413` | +| order_status | String | 否 | Post | 订单状态,","分隔多个状态:1-待支付,101-部分发货,105-已支付,2-待发货,3-已发货,4-已取消,5-已完成,示例:`105,2` | +| update_time_start | Integer | 否 | Post | 更新时间:开始,秒级时间戳,示例:`1617355413` | +| update_time_end | Integer | 否 | Post | 更新时间:截止,秒级时间戳,示例:`1617355413` | +| order_by | String | 否 | Post | 排序条件:create_time-订单创建时间,update_time-订单更新时间,默认create_time,示例:`create_time` | +| order_asc | Boolean | 否 | Post | 排序类型:true-升序,false-降序,默认降序,示例:`false` | + +## 返回参数 + +| 参数名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| data | Object | `` | | +|     page | Integer | `` | 页数,从0开始 | +|     total | Integer | `` | 总订单数 | +|     size | Integer | `` | 单页大小 | +|     shop_order_list | Array | `` | 订单信息 | +|         order_id | String | `4781320682406083640` | 店铺订单号 | +|         order_status | Integer | `3` | 订单状态:1-待确认/待支付-订单创建完毕,105-已支付,2-备货中,101-部分发货,3-已发货(全部发货),4-已取消,5 已完成(已收货) | +|         shop_id | Integer | `77977` | 店铺ID | +|         shop_name | String | `刘好好严选` | 商户名称 | +|         order_amount | Integer | `600` | 订单金额(单位:分) | +|         pay_amount | Integer | `500` | 支付金额(单位:分) | +|         pay_time | String | `2021-04-02 17:23:33` | 支付时间 | +|         create_time | String | `2021-04-02 17:23:33` | 下单时间 | +|         finish_time | String | `2021-04-02 17:23:33` | 订单完成时间 | +|         doudian_open_id | String | `#zuLyd4U4J3p+czzXkwg+ZQ673h7KTcrKOddb5iPGAAE0K3MYJmgXEXof9LDtoScAfMKvdVRqpAL4CEI3SrLwYATIzTF9Qw==` | 用户唯一id,规则详见:https://op.jinritemai.com/docs/guide-docs/1368/4416 | +|         buyer_words | String | `要xxx` | 买家留言 | +|         seller_words | String | `注意XX` | 商家备注 | +|         seller_remark_stars | Integer | `1` | 插旗信息:0-灰 1-紫 2-青 3-绿 4-橙 5-红 | +|         order_type | Integer | `0` | 订单类型:0-普通订单,2-虚拟商品订单,4-电子券(poi核销),5-三方核销 | +|         biz | Integer | `1` | 业务来源 | +|         sku_order_list | Array | `` | 商品单信息 | +|             order_id | String | `4781320682406083640` | 商品订单号 | +|             product_id | Integer | `3473196049974326153` | 商品ID | +|             sku_id | Integer | `3254535` | 商品SkuID | +|             out_product_id | String | `432655662343` | 商品外部编码 | +|             out_sku_id | String | `43564553` | 外部Skuid | +|             product_name | String | `衣服` | 商品名称 | +|             goods_price | Integer | `100` | 商品原价(单位:分) | +|             item_num | Integer | `2` | 订单商品数量 | +|             order_amount | Integer | `600` | 订单金额(单位:分) | +|             pay_amount | Integer | `500` | 支付金额(单位:分) | +|             after_sale_info | Object | `` | 售后信息 | +|                 after_sale_status | Integer | `6` | 售后状态:0-售后初始化,6-售后申请,7-售后退货中,27-拒绝售后申请,12-售后成功,28-售后失败,11-售后已发货,29-退货后拒绝退款,13-售后换货商家发货,14-售后换货用户收货,51-取消成功,53-逆向交易完成 | +|                 after_sale_type | Integer | `1` | 售后类型:0-售后退货退款,1-售后退款,2-售前退款,3-换货,4-系统取消,5-用户取消 | +|                 refund_status | Integer | `1` | 退款状态:1-待退款,3-退款成功,4-退款失败;当买家发起售后后又主动取消售后,此时after_sale_status=28,并且refund_status=1的状态不变,不会流转至4状态 | + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功", + "data": { + "page": 0, + "total": 0, + "size": 0, + "shop_order_list": [{ + "order_id": "4781320682406083640", + "order_status": 3, + "shop_id": 77977, + "shop_name": "刘好好严选", + "order_amount": 600, + "pay_amount": 500, + "pay_time": "2021-04-02 17:23:33", + "create_time": "2021-04-02 17:23:33", + "finish_time": "2021-04-02 17:23:33", + "doudian_open_id": "#zuLyd4U4J3p+czzXkwg+ZQ673h7KTcrKOddb5iPGAAE0K3MYJmgXEXof9LDtoScAfMKvdVRqpAL4CEI3SrLwYATIzTF9Qw==", + "buyer_words": "要xxx", + "seller_words": "注意XX", + "seller_remark_stars": 1, + "order_type": 0, + "biz": 1, + "sku_order_list": [{ + "order_id": "4781320682406083640", + "product_id": 3473196049974326153, + "sku_id": 3254535, + "out_product_id": "432655662343", + "out_sku_id": "43564553", + "product_name": "衣服", + "goods_price": 100, + "item_num": 2, + "order_amount": 600, + "pay_amount": 500, + "after_sale_info": { + "after_sale_status": 6, + "after_sale_type": 1, + "refund_status": 1 + } + }] + }] + } +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXafter_sale_status_descrefund_successcreate_time_end1617355413create_time_start1617355413methodorder.searchListorder_ascfalseorder_bycreate_timeorder_status105,2order_type1page0product3473196049974326153size20timestamp1780000000uid111111111update_time_end1617355413update_time_start1617355413XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`after_sale_status_desc`、`create_time_end`、`create_time_start`、`method`、`order_asc`、`order_by`、`order_status`、`order_type`、`page`、`product`、`size`、`timestamp`、`uid`、`update_time_end`、`update_time_start` + +`sign = md5(签名原串)`(32 位小写)= `4f87b7ebbad3cd4842a87b467a31d444` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 10 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/11-商家主动取消订单.md b/docs/抖音-码速达/接口API/11-商家主动取消订单.md new file mode 100644 index 00000000..6e4d61a4 --- /dev/null +++ b/docs/抖音-码速达/接口API/11-商家主动取消订单.md @@ -0,0 +1,87 @@ +# 商家主动取消订单(`coupons.CertSyncFailedCancelOrder`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 商家主动取消订单」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 商家主动取消订单 | +| 方法名 method | `coupons.CertSyncFailedCancelOrder` | +| 功能分级 | 高级功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 仅适用于三方卡券订单,其他类型的订单都不支持;订单状态等于2,处于待发码状态,商家才可主动取消订单 | +| 抖店原始路径 | `/coupons/CertSyncFailedCancelOrder` | +| 抖店原始文档 | [商家主动取消](https://op.jinritemai.com/docs/api-docs/15/6662) | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `coupons.CertSyncFailedCancelOrder`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| order_id | String | 是 | Post | 订单号,示例:`6931496948675122841` | +| op | Json | 否 | Post | 风控相关信息,对象类型,以Json字符串形式传入,示例:`{"platform":1,"op_uid":1234}` | + +### 嵌套参数 `op` + +风控相关信息,对象类型,以Json字符串形式传入 + +提交时以 JSON 字符串整体作为一个参数值,示例: + +```json +{"platform":1,"op_uid":1234} +``` + +| 参数名 | 类型 | 必填 | 说明 | +| --- | --- | --- | --- | +| platform | Integer | 否 | 操作平台枚举(选填,暂时用不上) | +| op_uid | Integer | 否 | 操作人uid(选填,暂时用不上) | + +## 返回参数 + +| 参数名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| data | Object | `` | 返回数据 | +|     ret_status | String | `000000` | 返回状态 | +|     ret_code | String | `000000` | 返回码 | +|     ret_message | String | `000000` | 返回信息 | + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功", + "data": { + "ret_status": "000000", + "ret_code": "000000", + "ret_message": "000000" + } +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXmethodcoupons.CertSyncFailedCancelOrderop{"platform":1,"op_uid":1234}order_id6931496948675122841timestamp1780000000uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`method`、`op`、`order_id`、`timestamp`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `1b2baad023e50fe6e7e76cec0af244f9` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 11 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/12-消息设置.md b/docs/抖音-码速达/接口API/12-消息设置.md new file mode 100644 index 00000000..578c0052 --- /dev/null +++ b/docs/抖音-码速达/接口API/12-消息设置.md @@ -0,0 +1,61 @@ +# 消息设置(`message.config`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 消息设置」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 消息设置 | +| 方法名 method | `message.config` | +| 功能分级 | 免费功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 用户自行设置消息接收地址,推送状态及订阅内容 | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `message.config`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| status | Integer | 是 | Post | 推送状态:0-禁用,1-启用,第一次提交时必填,示例:`1` | +| message_url | String | 否 | Post | 推送地址,第一次提交时必填,示例:`https://api.xxxx.com/message` | +| topics | String | 否 | Post | 消息的topic,多个用半角逗号分隔,第一次提交时必填,示例:`trade_TradePaid,refund_RefundCreated,refund_RefundClosed` | + +## 返回参数 + +(无返回参数说明) + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功" +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXmessage_urlhttps://api.xxxx.com/messagemethodmessage.configstatus1timestamp1780000000topicstrade_TradePaid,refund_RefundCreated,refund_RefundCloseduid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`message_url`、`method`、`status`、`timestamp`、`topics`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `e45e713a4f7b636f1cf49c3c8211095d` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 12 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/13-商品详情.md b/docs/抖音-码速达/接口API/13-商品详情.md new file mode 100644 index 00000000..04d93c89 --- /dev/null +++ b/docs/抖音-码速达/接口API/13-商品详情.md @@ -0,0 +1,93 @@ +# 商品详情(`product.detail`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 商品详情」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 商品详情 | +| 方法名 method | `product.detail` | +| 功能分级 | 基础功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 根据商品ID获取商品详情,输出仅限码速达系统已采集的字段 | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `product.detail`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| product_id | Integer | 是 | Post | 商品ID,抖店系统生成,店铺下唯一;长度19位,示例:`3558192687276554544` | + +## 返回参数 + +| 参数名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| data | Object | `` | | +|     product_id | Integer | `3539925204033339668` | 商品ID,抖店系统生成,店铺下唯一;长度19位 | +|     name | String | `XXX充值卡` | 商品标题 | +|     product_type | Integer | `3` | 商品类型:0-普通,3-虚拟,6-玉石闪购,7-云闪购 | +|     discount_price | Integer | `1999` | 售卖价,单位分 | +|     img | String | `https://img.xxxx.com/abc/def.jpg` | 商品图片 | +|     status | Integer | `0` | 商品在店铺中状态:0-在线,1-下线,2-删除 | +|     check_status | Integer | `3` | 商品审核状态:1-未提交,2-待审核,3-审核通过,4-审核未通过,5-封禁,7-审核通过待上架 | +|     skus | Array | `` | 规格信息 | +|         id | Integer | `1737398770243598` | 规格ID;抖店系统生成,商品ID下唯一 | +|         code | String | `XXX001` | 商家编码 | +|         price | Integer | `102` | 商户名称 | +|         specs | Array | `` | 规格项和规格值 | +|             name | String | `充值类型` | 属性名 | +|             value | String | `点卡寄售` | 属性值 | + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功", + "data": { + "product_id": 3539925204033339668, + "name": "XXX充值卡", + "product_type": 3, + "discount_price": 1999, + "img": "https://img.xxxx.com/abc/def.jpg", + "status": 0, + "check_status": 3, + "skus": [{ + "id": 1737398770243598, + "code": "XXX001", + "price": 102, + "specs": [{ + "name": "充值类型", + "value": "点卡寄售" + }] + }] + } +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXmethodproduct.detailproduct_id3558192687276554544timestamp1780000000uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`method`、`product_id`、`timestamp`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `af8e6bec4afed930f81391a6d611c237` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 13 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/14-商品列表.md b/docs/抖音-码速达/接口API/14-商品列表.md new file mode 100644 index 00000000..3161d5a9 --- /dev/null +++ b/docs/抖音-码速达/接口API/14-商品列表.md @@ -0,0 +1,94 @@ +# 商品列表(`product.list`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 商品列表」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 商品列表 | +| 方法名 method | `product.list` | +| 功能分级 | 高级功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 分页查询店铺商品列表,输出仅限码速达系统已采集的字段 | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `product.list`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| page | Integer | 否 | Post | 页码,从1开始,缺省为1,示例:`1` | +| size | Integer | 否 | Post | 页长,范围1~100,缺省为15,示例:`10` | + +## 返回参数 + +| 参数名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| data | Object | `` | | +|     page | Integer | `1` | 页码,从1开始 | +|     size | Integer | `10` | 页长,范围1~100 | +|     total | Integer | `422` | 本次查询返回的商品总数 | +|     data | Array | `` | 商品数据 | +|         product_id | Integer | `3539925204033339668` | 商品ID,抖店系统生成,店铺下唯一;长度19位 | +|         name | String | `XXX充值卡` | 商品标题 | +|         product_type | Integer | `3` | 商品类型:0-普通,3-虚拟,6-玉石闪购,7-云闪购 | +|         discount_price | Integer | `1999` | 售卖价,单位分 | +|         img | String | `https://img.xxxx.com/abc/def.jpg` | 商品图片 | +|         status | Integer | `0` | 商品在店铺中状态:0-在线,1-下线,2-删除 | +|         check_status | Integer | `3` | 商品审核状态:1-未提交,2-待审核,3-审核通过,4-审核未通过,5-封禁,7-审核通过待上架 | +|         skus | Array | `` | 规格信息 | +|             id | Integer | `1737398770243598` | 规格ID;抖店系统生成,商品ID下唯一 | +|             code | String | `XXX001` | 商家编码 | + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功", + "data": { + "page": 1, + "size": 10, + "total": 422, + "data": [{ + "product_id": 3539925204033339668, + "name": "XXX充值卡", + "product_type": 3, + "discount_price": 1999, + "img": "https://img.xxxx.com/abc/def.jpg", + "status": 0, + "check_status": 3, + "skus": [{ + "id": 1737398770243598, + "code": "XXX001" + }] + }] + } +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXmethodproduct.listpage1size10timestamp1780000000uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`method`、`page`、`size`、`timestamp`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `cffbf285d9928305b202acd0a0aec203` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 14 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/15-商品sku列表.md b/docs/抖音-码速达/接口API/15-商品sku列表.md new file mode 100644 index 00000000..e19beec9 --- /dev/null +++ b/docs/抖音-码速达/接口API/15-商品sku列表.md @@ -0,0 +1,89 @@ +# 商品sku列表(`sku.list`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 商品sku列表」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 商品sku列表 | +| 方法名 method | `sku.list` | +| 功能分级 | 高级功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 根据商品id获取商品的sku列表 | +| 抖店原始路径 | `/sku/list /sku/list` | +| 抖店原始文档 | [获取商品sku列表](https://op.jinritemai.com/docs/api-docs/14/82) | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `sku.list`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| product_id | Integer | 否 | Post | 商品ID,抖店系统生成,示例:`3213654123157` | +| out_product_id | Integer | 否 | Post | 外部商品ID,商家创建商品时自定义,示例:`243523452435` | + +## 返回参数 + +| 参数名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| data | Array | `` | sku列表 | +|     id | Integer | `1736402086955032` | 商品sku_id,抖店系统生成 | +|     sku_status | Boolean | `true` | sku状态:true-上架,false-下架 | +|     out_sku_id | Integer | `0` | 外部的skuId,商家自定义,未设置返回为0 | +|     product_id | Integer | `3557453527615939930` | 商品ID,抖店系统生成 | +|     price | Integer | `12` | 商品价格,单位分 | +|     spec_id | Integer | `1737037851056167` | 规格ID | +|     create_time | Integer | `1621611875` | 创建时间,时间戳,单位秒 | +|     code | String | `dy001` | sku外部编码 | +|     sell_properties | Array | `` | 销售属性 | +|         value_spec_detail_id | Integer | `111` | 规格值id | +|         value_name | String | `红色` | 规格值名称 | + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功", + "data": [{ + "id": 1736402086955032, + "sku_status": true, + "out_sku_id": 0, + "product_id": 3557453527615939930, + "price": 12, + "spec_id": 1737037851056167, + "create_time": 1621611875, + "code": "dy001", + "sell_properties": [{ + "value_spec_detail_id": 111, + "value_name": "红色" + }] + }] +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXmethodsku.listout_product_id243523452435product_id3213654123157timestamp1780000000uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`method`、`out_product_id`、`product_id`、`timestamp`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `006da90ba5f3b8fa7d2395ca4f0ca416` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 15 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/接口API/16-订单消息测试.md b/docs/抖音-码速达/接口API/16-订单消息测试.md new file mode 100644 index 00000000..7a1b84b1 --- /dev/null +++ b/docs/抖音-码速达/接口API/16-订单消息测试.md @@ -0,0 +1,61 @@ +# 订单消息测试(`order.message`) + +> 本页数据抓取自抖音码速达开放平台「接口API → 订单消息测试」。 + +| 项目 | 内容 | +| --- | --- | +| 接口名称 | 订单消息测试 | +| 方法名 method | `order.message` | +| 功能分级 | 高级功能 | +| 请求地址 | `POST https://dy-openplatform-api.wanmahui.com/api/openplatform/gateway` | +| Content-Type | `application/x-www-form-urlencoded` | +| 说明 | 测试接口,仅支持特定商户 | + +## 请求参数 + +| 参数名 | 类型 | 必填 | 提交方式 | 说明 | +| --- | --- | --- | --- | --- | +| uid | String | 是 | Post | 抖店商户号(公共参数,示例 `111111111`) | +| method | String | 是 | Post | 方法名,固定为 `order.message`(公共参数) | +| timestamp | String | 是 | Post | 秒级时间戳,10 分钟内有效(公共参数) | +| sign | String | 是 | Post | 签名,签名原串 MD5(小写),见「[接口调用规范与签名](../02-接口调用规范与签名.md)」 | +| order_id | String | 是 | Post | 订单号,示例:`1234567` | +| content | String | 是 | Post | 消息内容,示例:`订单已发货,请注意查收` | +| message_type | Integer | 是 | Post | 消息类型:1-订单状态消息,2-订单发货消息,4-图片消息,5-视频消息,示例:`2` | + +## 返回参数 + +(无返回参数说明) + +## 返回示例 + +```json +{ + "code": "10000", + "message": "成功" +} +``` + +## 签名原串示例 + +除 `sign` 外的全部参数按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(这里用占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、占位商户号 `111111111`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXcontent订单已发货,请注意查收message_type2methodorder.messageorder_id1234567timestamp1780000000uid111111111XXXXXXXXXXXXXXXXXXXX +``` + +参数名排序:`content`、`message_type`、`method`、`order_id`、`timestamp`、`uid` + +`sign = md5(签名原串)`(32 位小写)= `880a5d8a4f18c0822f93406b96c703f6` + +## 请求代码示例 + +页面内置 JAVA / .NET / PHP 三种示例代码,已原样保存: + +- `data/代码示例/接口API-请求示例-JAVA.txt` +- `data/代码示例/接口API-请求示例-DOTNET.txt` +- `data/代码示例/接口API-请求示例-PHP.txt` + +--- + +第 16 / 16 个接口 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/01-买家已付款.md b/docs/抖音-码速达/消息推送/01-买家已付款.md new file mode 100644 index 00000000..592d8838 --- /dev/null +++ b/docs/抖音-码速达/消息推送/01-买家已付款.md @@ -0,0 +1,72 @@ +# 买家已付款(`trade_TradePaid`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 买家已付款」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 买家已付款 | +| 消息主题 topic | `trade_TradePaid` | +| 功能分级 | 基础功能 | +| 说明 | 在线支付订单,当买家付款成功时,会推送此消息 | +| 抖店原始文档 | [订单支付/确认消息](https://op.jinritemai.com/docs/message-docs/30/110) | +| 抖店消息 tag | `101` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`trade_TradePaid` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +| 属性名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| pay_amount | Integer | `1990` | 订单实付金额 | +| s_ids | Array | `[ 123 ]` | 子订单ID列表 | +| order_status | Integer | `2` | 父订单状态,订单支付消息的status值为"2" | +| order_type | Integer | `0` | 订单类型:0-实物,2-普通虚拟,4-poi核销,5-三方核销,6-服务市场 | +| pay_time | Integer | `1630373504` | 在线订单支付时间;货到付款订单确认时间 | +| p_id | Integer | `4837328765348567000` | 父订单ID | +| shop_id | Integer | `77977` | 店铺ID,即时零售店铺该字段为即时零售总部id | +| pay_type | Integer | `1` | 订单支付方式: 0: 货到付款 1: 微信 2: 支付宝 | +| biz | Integer | `2` | 订单业务类型,表示买家从哪里看到的这个商品、产生了订单:1-鲁班广告,2-联盟,4-商城,8-自主经营,10-线索通支付表单,12-抖音门店,14-抖+,15-穿山甲 | + +## data 内容示例(JSON) + +```json +{ + "pay_amount": 1990, + "s_ids": [ + 123 + ], + "order_status": 2, + "order_type": 0, + "pay_time": 1630373504, + "p_id": 4837328765348567000, + "shop_id": 77977, + "pay_type": 1, + "biz": 2 +} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{"pay_amount":1990,"s_ids":[123],"order_status":2,"order_type":0,"pay_time":1630373504,"p_id":4837328765348567000,"shop_id":77977,"pay_type":1,"biz":2}pub_time1780000000topictrade_TradePaidXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `1f4e1e6fc7e2ebad3368abfc2e07f2d1` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=trade_TradePaid&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 1 / 14 条消息 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/02-卖家备注变更.md b/docs/抖音-码速达/消息推送/02-卖家备注变更.md new file mode 100644 index 00000000..63be5a1f --- /dev/null +++ b/docs/抖音-码速达/消息推送/02-卖家备注变更.md @@ -0,0 +1,62 @@ +# 卖家备注变更(`trade_TradeMemoModify`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 卖家备注变更」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 卖家备注变更 | +| 消息主题 topic | `trade_TradeMemoModify` | +| 功能分级 | 基础功能 | +| 说明 | 卖家修改交易备注时,会推送此消息 | +| 抖店原始文档 | [卖家添加备注消息](https://op.jinritemai.com/docs/message-docs/30/571) | +| 抖店消息 tag | `113` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`trade_TradeMemoModify` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +| 属性名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| p_id | Integer | `483680741644460700` | 父订单ID | +| remark | String | `备注` | 备注内容,最大不得超过60个字符 | +| star | Integer | `3` | 标星等级:0-灰色旗标,1-紫色旗标,2-青色旗标,3-绿色旗标,4-橙色旗标,5-红色旗标 | +| update_time | Integer | `1630269363` | 时间戳,秒 | +| shop_id | Integer | `11808642` | 店铺ID,即时零售店铺该字段为即时零售总部id | + +## data 内容示例(JSON) + +```json +{ + "p_id": 483680741644460700, + "remark": "备注", + "star": 3, + "update_time": 1630269363, + "shop_id": 11808642 +} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{"p_id":483680741644460700,"remark":"备注","star":3,"update_time":1630269363,"shop_id":11808642}pub_time1780000000topictrade_TradeMemoModifyXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `4857ea0f89c990610d003fa96d93b2d9` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=trade_TradeMemoModify&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 2 / 14 条消息 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/03-卖家发货.md b/docs/抖音-码速达/消息推送/03-卖家发货.md new file mode 100644 index 00000000..d4604e0f --- /dev/null +++ b/docs/抖音-码速达/消息推送/03-卖家发货.md @@ -0,0 +1,86 @@ +# 卖家发货(`trade_TradeSellerShip`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 卖家发货」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 卖家发货 | +| 消息主题 topic | `trade_TradeSellerShip` | +| 功能分级 | 基础功能 | +| 说明 | 卖家对所有商品发货完成,且父订单状态为【已发货】时,会推送此消息 | +| 抖店原始文档 | [卖家发货消息](https://op.jinritemai.com/docs/message-docs/30/111) | +| 抖店消息 tag | `102` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`trade_TradeSellerShip` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +| 属性名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| receiver_msg | Object | `` | 收货人详细信息 | +|     addr | String | `{}` | 收货地址,包含省市区和详细地址 | +|     name | String | `张三` | 收货人姓名 | +|     tel | String | `13117428564` | 收货人手机号 | +| p_id | Integer | `4835999782215623000` | 父订单ID | +| s_ids | Array | `[ 123 ]` | 子订单ID列表 | +| shop_id | Integer | `597277` | 店铺ID,即时零售店铺该字段为即时零售总部id | +| biz | Integer | `2` | 订单业务类型,表示买家从哪里看到的这个商品、产生了订单:1-鲁班广告,2-联盟,4-商城,8-自主经营,10-线索通支付表单,12-抖音门店,14-抖+,15-穿山甲 | +| logistics_msg | Object | `` | 发货物流信息 | +|     express_company_id | String | `yunda` | 发货快递公司 | +|     logistics_code | String | `431******408` | 发货物流单号 | +| order_status | Integer | `3` | 父订单状态,卖家发货消息的status值为"3" | +| order_type | Integer | `2` | 订单类型: 0: 实物 2: 普通虚拟 4: poi核销 5: 三方核销 6: 服务市场 | +| update_time | Integer | `1630335741` | 订单发货时间 | +| store_id | Integer | `597277` | 即时零售门店ID | + +## data 内容示例(JSON) + +```json +{ + "receiver_msg": { + "addr": "{}", + "name": "张三", + "tel": "13117428564" + }, + "p_id": 4835999782215623000, + "s_ids": [ + 123 + ], + "shop_id": 597277, + "biz": 2, + "logistics_msg": { + "express_company_id": "yunda", + "logistics_code": "431******408" + }, + "order_status": 3, + "order_type": 2, + "update_time": 1630335741, + "store_id": 597277 +} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{"receiver_msg":{"addr":"{}","name":"张三","tel":"13117428564"},"p_id":4835999782215623000,"s_ids":[123],"shop_id":597277,"biz":2,"logistics_msg":{"express_company_id":"yunda","logistics_code":"431******408"},"order_status":3,"order_type":2,"update_time":1630335741,"store_id":597277}pub_time1780000000topictrade_TradeSellerShipXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `83208e09a486476a7adc5d8db83ff01b` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=trade_TradeSellerShip&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 3 / 14 条消息 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/04-卖家部分发货.md b/docs/抖音-码速达/消息推送/04-卖家部分发货.md new file mode 100644 index 00000000..3a219e9b --- /dev/null +++ b/docs/抖音-码速达/消息推送/04-卖家部分发货.md @@ -0,0 +1,99 @@ +# 卖家部分发货(`trade_TradePartlySellerShip`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 卖家部分发货」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 卖家部分发货 | +| 消息主题 topic | `trade_TradePartlySellerShip` | +| 功能分级 | 基础功能 | +| 说明 | 卖家对部分商品(可能是部分件数)发货时,会推送此消息 | +| 抖店原始文档 | [卖家部分发货消息](https://op.jinritemai.com/docs/message-docs/30/208) | +| 抖店消息 tag | `108` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`trade_TradePartlySellerShip` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +| 属性名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| p_id | Integer | `4705288465508533000` | 父订单ID | +| order_status | Integer | `2` | 父订单状态,卖家发货消息的status值为"2" | +| logistics_msg | Object | `` | 发货物流信息 | +|     express_company_id | String | `gdkd` | 发货快递公司 | +|     logistics_code | String | `111111111111111` | 发货物流单号 | +|     pack_id | String | `4705288465508532862` | 包裹ID | +|     shipped_order_info | Array | `` | 已发货子订单信息 | +|         sku_num | Integer | `2` | 该子订单里已购买的sku数量 | +|         product_id | Integer | `2329389` | 对应的商品ID | +|         shipped_num | Integer | `1` | 已发货sku数量 | +|         shipped_order_id | Integer | `4705288465508533000` | 已发货子订单ID | +|         sku_id | Integer | `3373737` | 对应的SkuID | +| receiver_msg | Object | `` | 收货人信息 | +|     addr | String | `{}` | 收货地址 | +|     name | String | `张三` | 收货人姓名 | +|     tel | String | `13117428565` | 收货人手机号 | +| s_ids | Array | `[ 123 ]` | 子订单ID列表 | +| shop_id | Integer | `77977` | 店铺id,即时零售店铺该字段为即时零售总部id | +| order_type | Integer | `2` | 订单类型:0-实物,2-普通虚拟,4-poi核销,5-三方核销,6-服务市场 | +| biz | Integer | `2` | 订单业务类型,表示买家从哪里看到的这个商品、产生了订单:1-鲁班广告,2-联盟,4-商城,8-自主经营,10-线索通支付表单,12-抖音门店,14-抖+,15-穿山甲 | +| update_time | Integer | `123` | 订单发货时间 | + +## data 内容示例(JSON) + +```json +{ + "p_id": 4705288465508533000, + "order_status": 2, + "logistics_msg": { + "express_company_id": "gdkd", + "logistics_code": "111111111111111", + "pack_id": "4705288465508532862", + "shipped_order_info": [{ + "sku_num": 2, + "product_id": 2329389, + "shipped_num": 1, + "shipped_order_id": 4705288465508533000, + "sku_id": 3373737 + }] + }, + "receiver_msg": { + "addr": "{}", + "name": "张三", + "tel": "13117428565" + }, + "s_ids": [ + 123 + ], + "shop_id": 77977, + "order_type": 2, + "biz": 2, + "update_time": 123 +} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{"p_id":4705288465508533000,"order_status":2,"logistics_msg":{"express_company_id":"gdkd","logistics_code":"111111111111111","pack_id":"4705288465508532862","shipped_order_info":[{"sku_num":2,"product_id":2329389,"shipped_num":1,"shipped_order_id":4705288465508533000,"sku_id":3373737}]},"receiver_msg":{"addr":"{}","name":"张三","tel":"13117428565"},"s_ids":[123],"shop_id":77977,"order_type":2,"biz":2,"update_time":123}pub_time1780000000topictrade_TradePartlySellerShipXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `f0f65e89ec6c83bd397cc55750358a27` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=trade_TradePartlySellerShip&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 4 / 14 条消息 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/05-买家发起售后.md b/docs/抖音-码速达/消息推送/05-买家发起售后.md new file mode 100644 index 00000000..4bfb4585 --- /dev/null +++ b/docs/抖音-码速达/消息推送/05-买家发起售后.md @@ -0,0 +1,87 @@ +# 买家发起售后(`refund_RefundCreated`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 买家发起售后」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 买家发起售后 | +| 消息主题 topic | `refund_RefundCreated` | +| 功能分级 | 基础功能 | +| 说明 | 买家申请整单退款时,会推送此消息 | +| 抖店原始文档 | [买家发起售后申请消息](https://op.jinritemai.com/docs/message-docs/31/115) | +| 抖店消息 tag | `200` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`refund_RefundCreated` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +| 属性名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| refund_amount | Integer | `8900` | 申请退款的金额(含运费) | +| refund_voucher_num | Integer | `0` | 申请退款的卡券的数量 | +| shop_id | Integer | `10437917` | 店铺ID | +| aftersale_id | Integer | `7000893114000949000` | 售后单ID | +| aftersale_status | Integer | `6` | 售后状态,枚举值如下 | +| aftersale_type | Integer | `2` | 售后类型:0-退货,1-售后退款,2-发货前退款 | +| apply_time | Integer | `1630022518` | 售后申请时间 | +| s_id | Integer | `4835804142146757000` | 子订单ID | +| p_id | Integer | `4835804142146757000` | 父订单ID | +| refund_post_amount | Integer | `0` | 申请退的运费金额 | +| reason_code | Integer | `1` | 申请售后原因码,枚举值如下https://op.jinritemai.com/docs/question-docs/93/2306 | +| update_time | String | `2022-09-02T10:27:50+08:00` | 售后单更新时间 | +| return_book_info | Object | `` | 用户退货物流偏好 | +|     send_type | Integer | `1` | 寄回类型:1-自行寄回,2-上门取件,4-到店退货,5-商家自有运力上门取货,3-快递柜,8-驿站,10-商家上门取货【商家取货的统称:自有运力、平台运力、线下自取】 | +|     time_begin | String | `09:00` | 上门取件预约开始时间段 | +|     time_end | String | `11:00` | 上门取件预约结束时间段 | +|     encrypt_addr | String | `北京市海淀区海淀街道海淀街道海淀大街x号xx大厦x楼xxx室` | 地址, 已加密需解密使用 | + +## data 内容示例(JSON) + +```json +{ + "refund_amount": 8900, + "refund_voucher_num": 0, + "shop_id": 10437917, + "aftersale_id": 7000893114000949000, + "aftersale_status": 6, + "aftersale_type": 2, + "apply_time": 1630022518, + "s_id": 4835804142146757000, + "p_id": 4835804142146757000, + "refund_post_amount": 0, + "reason_code": 1, + "update_time": "2022-09-02T10:27:50+08:00", + "return_book_info": { + "send_type": 1, + "time_begin": "09:00", + "time_end": "11:00", + "encrypt_addr": "北京市海淀区海淀街道海淀街道海淀大街x号xx大厦x楼xxx室" + } +} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{"refund_amount":8900,"refund_voucher_num":0,"shop_id":10437917,"aftersale_id":7000893114000949000,"aftersale_status":6,"aftersale_type":2,"apply_time":1630022518,"s_id":4835804142146757000,"p_id":4835804142146757000,"refund_post_amount":0,"reason_code":1,"update_time":"2022-09-02T10:27:50+08:00","return_book_info":{"send_type":1,"time_begin":"09:00","time_end":"11:00","encrypt_addr":"北京市海淀区海淀街道海淀街道海淀大街x号xx大厦x楼xxx室"}}pub_time1780000000topicrefund_RefundCreatedXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `456e2018286c2e63534852142e62ebf2` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=refund_RefundCreated&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 5 / 14 条消息 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/06-售后关闭.md b/docs/抖音-码速达/消息推送/06-售后关闭.md new file mode 100644 index 00000000..fc5ddac1 --- /dev/null +++ b/docs/抖音-码速达/消息推送/06-售后关闭.md @@ -0,0 +1,76 @@ +# 售后关闭(`refund_RefundClosed`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 售后关闭」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 售后关闭 | +| 消息主题 topic | `refund_RefundClosed` | +| 功能分级 | 高级功能 | +| 说明 | 当买家取消申请或系统超时机制导致退款取消时,会推送此消息 | +| 抖店原始文档 | [售后关闭消息](https://op.jinritemai.com/docs/message-docs/31/122) | +| 抖店消息 tag | `207` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`refund_RefundClosed` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +| 属性名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| aftersale_type | Integer | `0` | 售后类型:0-退货,1-售后退款,2-发货前退款 | +| refund_amount | Integer | `6800` | 申请退款的金额(含运费) | +| reason_code | Integer | `83` | 申请售后原因码,枚举值如下 | +| close_time | Integer | `1630023532` | 退款成功时间 | +| refund_voucher_num | Integer | `0` | 申请退款的卡券的数量 | +| s_id | Integer | `4831577825636368000` | 子订单ID | +| shop_id | Integer | `15791245` | 店铺ID | +| aftersale_id | Integer | `6998111327440863000` | 售后单ID | +| p_id | Integer | `4831577825636368000` | 父订单ID | +| aftersale_status | Integer | `28` | 售后状态码,枚举值如下 | +| refund_post_amount | Integer | `0` | 申请退的运费金额 | +| update_time | String | `2022-09-02T10:27:50+08:00` | 售后单更新时间 | + +## data 内容示例(JSON) + +```json +{ + "aftersale_type": 0, + "refund_amount": 6800, + "reason_code": 83, + "close_time": 1630023532, + "refund_voucher_num": 0, + "s_id": 4831577825636368000, + "shop_id": 15791245, + "aftersale_id": 6998111327440863000, + "p_id": 4831577825636368000, + "aftersale_status": 28, + "refund_post_amount": 0, + "update_time": "2022-09-02T10:27:50+08:00" +} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{"aftersale_type":0,"refund_amount":6800,"reason_code":83,"close_time":1630023532,"refund_voucher_num":0,"s_id":4831577825636368000,"shop_id":15791245,"aftersale_id":6998111327440863000,"p_id":4831577825636368000,"aftersale_status":28,"refund_post_amount":0,"update_time":"2022-09-02T10:27:50+08:00"}pub_time1780000000topicrefund_RefundClosedXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `614aa4ce330e9c5f0224c960fbf40c6d` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=refund_RefundClosed&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 6 / 14 条消息 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/07-退款成功.md b/docs/抖音-码速达/消息推送/07-退款成功.md new file mode 100644 index 00000000..aae13fe4 --- /dev/null +++ b/docs/抖音-码速达/消息推送/07-退款成功.md @@ -0,0 +1,76 @@ +# 退款成功(`refund_RefundSuccess`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 退款成功」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 退款成功 | +| 消息主题 topic | `refund_RefundSuccess` | +| 功能分级 | 高级功能 | +| 说明 | 当商家同意退款后,实际退款到账时,会推送此消息 | +| 抖店原始文档 | [退款成功消息](https://op.jinritemai.com/docs/message-docs/31/121) | +| 抖店消息 tag | `206` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`refund_RefundSuccess` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +| 属性名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| p_id | Integer | `4835702458804230000` | 父订单ID | +| shop_id | Integer | `19586871` | 店铺ID | +| aftersale_id | Integer | `7000774764214157000` | 售后单ID | +| success_time | Integer | `1629994938` | 退款成功时间 | +| refund_voucher_num | Integer | `0` | 申请退款的卡券的数量 | +| s_id | Integer | `4835702458804230000` | 子订单ID(售前整单退类型无此字段) | +| aftersale_status | Integer | `13` | 售后状态码,枚举值如下 | +| aftersale_type | Integer | `2` | 售后类型:0-退货,1-售后退款,2-发货前退款 | +| refund_amount | Integer | `24500` | 申请退款的金额(含运费) | +| refund_post_amount | Integer | `0` | 申请退的运费金额 | +| reason_code | Integer | `1` | 申请售后原因码,枚举值如下 | +| update_time | String | `2022-09-02T10:27:50+08:00` | 售后单更新时间 | + +## data 内容示例(JSON) + +```json +{ + "p_id": 4835702458804230000, + "shop_id": 19586871, + "aftersale_id": 7000774764214157000, + "success_time": 1629994938, + "refund_voucher_num": 0, + "s_id": 4835702458804230000, + "aftersale_status": 13, + "aftersale_type": 2, + "refund_amount": 24500, + "refund_post_amount": 0, + "reason_code": 1, + "update_time": "2022-09-02T10:27:50+08:00" +} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{"p_id":4835702458804230000,"shop_id":19586871,"aftersale_id":7000774764214157000,"success_time":1629994938,"refund_voucher_num":0,"s_id":4835702458804230000,"aftersale_status":13,"aftersale_type":2,"refund_amount":24500,"refund_post_amount":0,"reason_code":1,"update_time":"2022-09-02T10:27:50+08:00"}pub_time1780000000topicrefund_RefundSuccessXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `acc70133942967e0bbcbd0f91d55effc` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=refund_RefundSuccess&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 7 / 14 条消息 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/08-订单完成.md b/docs/抖音-码速达/消息推送/08-订单完成.md new file mode 100644 index 00000000..b41bf626 --- /dev/null +++ b/docs/抖音-码速达/消息推送/08-订单完成.md @@ -0,0 +1,50 @@ +# 订单完成(`trade_TradeSuccess`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 订单完成」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 订单完成 | +| 消息主题 topic | `trade_TradeSuccess` | +| 功能分级 | 基础功能 | +| 说明 | 买家确认收货或系统自动确认收货,且父订单状态变为「已完成」时,会推送此消息 | +| 抖店原始文档 | [交易完成消息](https://op.jinritemai.com/docs/message-docs/30/112) | +| 抖店消息 tag | `103` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`trade_TradeSuccess` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +(页面未列出属性字段,以抖店原始文档为准) + +## data 内容示例(JSON) + +```json +{} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{}pub_time1780000000topictrade_TradeSuccessXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `9e085a6dccc6c8f517666dae8f93ac09` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=trade_TradeSuccess&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 8 / 14 条消息 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/09-订单取消.md b/docs/抖音-码速达/消息推送/09-订单取消.md new file mode 100644 index 00000000..bd6ae980 --- /dev/null +++ b/docs/抖音-码速达/消息推送/09-订单取消.md @@ -0,0 +1,50 @@ +# 订单取消(`trade_TradeCanceled`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 订单取消」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 订单取消 | +| 消息主题 topic | `trade_TradeCanceled` | +| 功能分级 | 基础功能 | +| 说明 | 触发场景:货到付款订单且订单状态为「待确认」,买家和商家可取消订单;货到付款订单且订单状态为「备货中」,买家、商家和平台客服可取消订单;货到付款订单且订单状态为「已发货」,物流状态为拒收或退回;在线支付订单且订单状态为「待付款」,买家可取消该订单;在线支付订单且订单状态为「待付款」,超时未支付,订单自动取消 | +| 抖店原始文档 | [订单取消消息](https://op.jinritemai.com/docs/message-docs/30/123) | +| 抖店消息 tag | `106` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`trade_TradeCanceled` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +(页面未列出属性字段,以抖店原始文档为准) + +## data 内容示例(JSON) + +```json +{} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{}pub_time1780000000topictrade_TradeCanceledXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `fbbad894bd5904f1b7eecb34e510c04d` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=trade_TradeCanceled&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 9 / 14 条消息 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/10-同意退款.md b/docs/抖音-码速达/消息推送/10-同意退款.md new file mode 100644 index 00000000..8a05c2ba --- /dev/null +++ b/docs/抖音-码速达/消息推送/10-同意退款.md @@ -0,0 +1,50 @@ +# 同意退款(`refund_RefundAgreed`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 同意退款」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 同意退款 | +| 消息主题 topic | `refund_RefundAgreed` | +| 功能分级 | 基础功能 | +| 说明 | 触发场景:买家在发货前申请整单退款,卖家同意退款或超时自动同意退款时;买家在发货后申请退款,卖家同意退款或超时自动同意退款时;买家在发货后申请申请退货,卖家确认收货或系统超时自动确认收货时;卖家收到买家换货包裹,核验后无法换货,同意换货但转直接退款时 | +| 抖店原始文档 | [同意退款消息](https://op.jinritemai.com/docs/message-docs/31/116) | +| 抖店消息 tag | `201` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`refund_RefundAgreed` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +(页面未列出属性字段,以抖店原始文档为准) + +## data 内容示例(JSON) + +```json +{} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{}pub_time1780000000topicrefund_RefundAgreedXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `129c1dc7220f601678d167ca78110f63` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=refund_RefundAgreed&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 10 / 14 条消息 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/11-拒绝退款.md b/docs/抖音-码速达/消息推送/11-拒绝退款.md new file mode 100644 index 00000000..8ebe2bfa --- /dev/null +++ b/docs/抖音-码速达/消息推送/11-拒绝退款.md @@ -0,0 +1,50 @@ +# 拒绝退款(`refund_RefundRefused`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 拒绝退款」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 拒绝退款 | +| 消息主题 topic | `refund_RefundRefused` | +| 功能分级 | 高级功能 | +| 说明 | 触发场景:买家在发货前申请整单退款,卖家拒绝;买家在发货后申请退款,卖家拒绝;买家在发货后申请申请退货,买家发货后,卖家拒绝收货 | +| 抖店原始文档 | [拒绝退款消息](https://op.jinritemai.com/docs/message-docs/31/119) | +| 抖店消息 tag | `204` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`refund_RefundRefused` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +(页面未列出属性字段,以抖店原始文档为准) + +## data 内容示例(JSON) + +```json +{} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{}pub_time1780000000topicrefund_RefundRefusedXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `8d649b8db2ee575c527a7a5304b9fee4` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=refund_RefundRefused&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 11 / 14 条消息 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/12-发起仲裁.md b/docs/抖音-码速达/消息推送/12-发起仲裁.md new file mode 100644 index 00000000..babc0f9e --- /dev/null +++ b/docs/抖音-码速达/消息推送/12-发起仲裁.md @@ -0,0 +1,50 @@ +# 发起仲裁(`refund_ArbitrateApplied`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 发起仲裁」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 发起仲裁 | +| 消息主题 topic | `refund_ArbitrateApplied` | +| 功能分级 | 高级功能 | +| 说明 | 触发场景:商家拒绝买家请求,买家可申请平台客服介入、发起客服仲裁,此时推送此消息。具体场景如下: 订单已发货,买家申请售后退款,此时商家拒绝,买家可发起仲裁;订单已发货,买家申请售后退换货,此时商家拒绝退货请求,买家可发起仲裁;订单已发货,买家申请售后退换货,买家已填写退货物流,此时商家拒绝收货,买家可发起仲裁 | +| 抖店原始文档 | [买家发起客服仲裁消息](https://op.jinritemai.com/docs/message-docs/31/256) | +| 抖店消息 tag | `212` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`refund_ArbitrateApplied` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +(页面未列出属性字段,以抖店原始文档为准) + +## data 内容示例(JSON) + +```json +{} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{}pub_time1780000000topicrefund_ArbitrateAppliedXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `f96c45b2922a4282f78a64857b466845` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=refund_ArbitrateApplied&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 12 / 14 条消息 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/13-取消仲裁.md b/docs/抖音-码速达/消息推送/13-取消仲裁.md new file mode 100644 index 00000000..d2b51ae4 --- /dev/null +++ b/docs/抖音-码速达/消息推送/13-取消仲裁.md @@ -0,0 +1,50 @@ +# 取消仲裁(`refund_ArbitrateCancelled`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 取消仲裁」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 取消仲裁 | +| 消息主题 topic | `refund_ArbitrateCancelled` | +| 功能分级 | 高级功能 | +| 说明 | 买家申请客服介入、发起客服仲裁后,而后又取消客服仲裁时,推送此消息 | +| 抖店原始文档 | [买家取消仲裁消息](https://op.jinritemai.com/docs/message-docs/31/260) | +| 抖店消息 tag | `215` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`refund_ArbitrateCancelled` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +(页面未列出属性字段,以抖店原始文档为准) + +## data 内容示例(JSON) + +```json +{} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{}pub_time1780000000topicrefund_ArbitrateCancelledXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `e7f05a035d12436f644f32ed73cfb872` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=refund_ArbitrateCancelled&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 13 / 14 条消息 | 导航: [返回索引](../README.md) diff --git a/docs/抖音-码速达/消息推送/14-订单创建.md b/docs/抖音-码速达/消息推送/14-订单创建.md new file mode 100644 index 00000000..558f6c99 --- /dev/null +++ b/docs/抖音-码速达/消息推送/14-订单创建.md @@ -0,0 +1,68 @@ +# 订单创建(`trade_TradeCreate`) + +> 本页数据抓取自抖音码速达开放平台「消息推送 → 订单创建」。 + +| 项目 | 内容 | +| --- | --- | +| 消息名称 | 订单创建 | +| 消息主题 topic | `trade_TradeCreate` | +| 功能分级 | 基础功能 | +| 说明 | 当买家下单,系统生成订单时,会推送此消息 | +| 抖店原始文档 | [订单创建消息](https://op.jinritemai.com/docs/message-docs/30/109) | +| 抖店消息 tag | `100` | + +## 推送参数 + +| 参数名 | 类型 | 提交方式 | 说明 | +| --- | --- | --- | --- | +| topic | String | Get | 消息主题:`trade_TradeCreate` | +| pub_time | Number | Get | 原消息发布时间(秒时间戳) | +| data | String | Post | 消息内容,JSON 字符串(URL 编码后提交) | +| sign | String | Get | 签名,签名原串 MD5(小写),见「[消息推送规范与签名](../03-消息推送规范与签名.md)」 | + +## data 内容(属性说明) + +| 属性名 | 类型 | 示例 | 说明 | +| --- | --- | --- | --- | +| p_id | Integer | `4835999782215623000` | 父订单ID | +| s_ids | Array | `[ 123 ]` | 子订单ID列表 | +| shop_id | Integer | `597277` | 店铺ID,即时零售店铺该字段为即时零售总部id | +| order_status | Integer | `1` | 父订单状态,订单创建消息的order_status值为"1" | +| order_type | Integer | `2` | 订单类型: 0: 实物 2: 普通虚拟 4: poi核销 5: 三方核销 6: 服务市场 | +| create_time | Integer | `1630335741` | 订单创建时间 | +| biz | Integer | `2` | 订单业务类型,表示买家从哪里看到的这个商品、产生了订单:1-鲁班广告,2-联盟,4-商城,8-自主经营,10-线索通支付表单,12-抖音门店,14-抖+,15-穿山甲 | + +## data 内容示例(JSON) + +```json +{ + "p_id": 4835999782215623000, + "s_ids": [ + 123 + ], + "shop_id": 597277, + "order_status": 1, + "order_type": 2, + "create_time": 1630335741, + "biz": 2 +} +``` + +## 签名原串示例 + +推送参数 `data`、`pub_time`、`topic` 按参数名字典序拼接 `参数名+参数值`,首尾各加一次用户秘钥(占位秘钥 `XXXXXXXXXXXXXXXXXXXX`、时间戳 `1780000000`): + +```text +XXXXXXXXXXXXXXXXXXXXdata{"p_id":4835999782215623000,"s_ids":[123],"shop_id":597277,"order_status":1,"order_type":2,"create_time":1630335741,"biz":2}pub_time1780000000topictrade_TradeCreateXXXXXXXXXXXXXXXXXXXX +``` + +`sign = md5(签名原串)`(32 位小写)= `9fdda386c7758d1b02ec70d2e2b53171` + +## 推送/测试地址 + +- 平台消息推送测试入口:`GET https://dy-openplatform-api.wanmahui.com/api/openplatform/messagetest?topic=trade_TradeCreate&pub_time={秒时间戳}&sign={签名}`(data 以 POST body 提交) +- 正式接收地址由商家在「接口API → 消息设置」中配置(`message.message_config`),平台按 `topics` 订阅的主题推送到该地址。 + +--- + +第 14 / 14 条消息 | 导航: [返回索引](../README.md)