接入指南
完整文档下载:Markdown · OpenAPI YAML。
版本:1.0.0 · 契约修订:2026-10-28.2
本文用于店铺自有商品订单、供货订单及售后的经营对接。商品查询、采购下单等对接另见 采购 OpenAPI 文档;管理员接入见 后台管理 API。机器可读契约见 management-openapi-v1.yaml。
开始接入
接入需要三个参数:主站 HTTPS 域名、店主的前台用户 ID、该用户当前的 OpenAPI Key。店铺须具备经营权限、审核通过且处于启用状态。店铺身份由认证用户确定,不传 storeId。
基础地址:
https://{merchant-domain}/openapi/v1/seller请求头:
X-KYS-User-Id: <USER_ID>
X-KYS-Key: <OPENAPI_KEY>
Content-Type: application/json仅使用主站域名。店铺可以获取在分站成交的本店订单,但经营接口不改用分站域名。
Key 与前台“接口管理”中的 Key 共用,支持
AK_加 16 位或 32 位小写十六进制字符。重置后旧 Key 立即失效。沿用该用户的 OpenAPI 开关、账户状态和 IP 白名单,不需要另申请供货密钥。
不传 Cookie、登录密码、API Secret、时间戳或签名。密钥不得放入 URL、浏览器代码或日志。
订单范围与操作权限
可见订单包括:
该店铺销售的自有商品订单。
该店铺作为当前有效供货方的订单。
由该店铺人工供货、没有履约尝试记录的订单。
范围包括卡密、充值、实物及合法分站成交订单。历史上曾供货、现在已不由本店履约的订单,不因此获得供货权限。售后沿关联订单的店铺归属判断可见性。
返回信息 | 用途 |
|---|---|
isSeller / role | 是否销售方; |
canFulfill | 是否由本店履约且已付款;具体动作还须符合当前状态 |
canProcessRecharge | 当前能否处理人工充值 |
canUploadRechargeProof | 当前是否具备人工充值凭证上传资格 |
canRefund / refundPending | 是否可申请退款、是否正在退款 |
physical.canShip / canUpdateLogistics | 实物发货、修改运单资格 |
canReply | 当前是否可向买家回复或提交意见 |
canHandleExchange | 当前是否由本店处理换货;还须匹配实物售后服务状态 |
销售方与实际履约方可能不同。销售方可按资格回复买家,供货方可查看相关售后,但供货身份本身不授予面向买家的回复或售后裁决权限。每次写入仍以服务端当时的状态和权限检查为准。
通用约定
HTTPS、UTF-8。除凭证上传外,请求体为
application/json。路径
{id}为 1~10 位正整数,订单 ID、售后 ID 与其单号分别保存。时间是 Unix 秒级整数;金额单位为人民币元。
totalPrice、refundedAmount为两位金额,supplyAmount可保留四位小数。列表
page从 1 开始,pageSize默认 20,范围 1~100。GET 订单详情的
cards.list、GET 售后详情的messages.list返回全部记录;不要用cardPage或messagePage截断它们。POST/PUT 返回的是操作后的详情快照,其中卡密、消息可能按每页 100/50 条返回;要获取完整记录,再调用对应 GET 详情。
成功响应:
{"code": 0, "message": "success", "data": {}, "requestId": "req_example"}列表 data:
{"list": [], "total": 0, "page": 1, "pageSize": 20}同时检查 HTTP 状态、code 及返回的业务状态。退款受理成功不表示资金已经退回。
接口清单
以下路径均接在 /openapi/v1/seller 后。
方法 | 路径 | 用途 |
|---|---|---|
GET |
| 分页获取自有商品与供货订单 |
GET |
| 获取订单完整详情 |
POST |
| 处理人工充值,或上传充值凭证 |
POST |
| 本地卡密出库、实物发货 |
PUT |
| 更新实物运单 |
POST |
| 全额退还剩余可退金额 |
GET |
| 分页获取可见售后 |
GET |
| 获取售后完整详情 |
POST |
| 回复或举证 |
POST |
| 提交商家处理意见 |
POST |
| 处理已批准换货的物流 |
错误、限流与重试
类别 | 配额 |
|---|---|
订单 GET 接口 | 每用户每分钟 120 次 |
售后 GET 接口 | 每用户每分钟 120 次 |
订单写接口 | 每用户每分钟 30 次 |
售后写接口 | 每用户每分钟 30 次 |
用户总额度 | 每用户每分钟 600 次,瞬时容量 30 |
认证尝试 | 同一商户、同一来源 IP 每分钟 200 次 |
店铺接口与该用户的采购 OpenAPI 共享账户和对应分组额度。响应可携带 X-RateLimit-Limit、X-RateLimit-Remaining、X-RateLimit-Reset,以 Retry-After 的秒数退避。
HTTP | 常见 code | 处理方式 |
|---|---|---|
400 | 400001 | 参数错误、状态不允许、订单或售后不属于本店、店铺未通过审核或停用 |
401 | 401001 | 用户 ID、Key 不匹配,账户或 API 未启用 |
403 | 403001、403002 | 权限不足、IP 不在白名单或经营资格不满足 |
404 | 404001、404002 | 域名、路径或资源不存在 |
409 | 409001 | 请求编号与已有内容冲突,核对原请求 |
429 | 429001 | 请求频率超限,按 |
503 | 503001 | 暂时不可用;读取可退避重试,写入先确认结果 |
500 | 500001 | 保存 |
域名或入口直接被网关拒绝时,可能使用其他错误正文,先检查 HTTP 状态和响应类型。
重试规则:
GET 可在退避后重试,列表按订单 ID、消息 ID 去重。
退款、回复、处理意见保留同一
requestNo和相同内容重试。requestNo不是所有写接口的通用幂等参数。充值处理、运单、换货先查询当前状态及已有结果,再决定是否继续操作。微信投诉远端结果待确认时,先核对详情与消息,不换编号盲重发。
本分组不新增管理事件订阅,订单与售后采集采用分页查询;涉及采购方的通知仍按原订单回调约定由平台发送。
返回字段
订单
字段 | JSON 类型 | 说明 |
|---|---|---|
id / orderNo | integer / string | 订单 ID、平台单号 |
goodsName / skuName / goodsImage | string 或 null | 商品、规格显示信息 |
productType | string |
|
quantity / isPay | integer / boolean | 数量、是否付款 |
status | string |
|
fulfillmentStatus | string | 履约状态代码,用于辅助展示;最终交易结果仍读取 status |
isSeller / role | boolean / string | 是否销售方,角色 |
totalPrice | number | 销售方可见的买家实付金额 |
refundedAmount | number | 销售方详情可见的累计退款金额 |
supplyAmount | number 或 null | 纯供货方可见的本店供货金额,可能四位小数;无历史报价时为 null |
createdAt / paymentTime / completedAt | integer | 创建、付款、完成时间;未发生可为 0 |
remark / message | string 或 null | 备注、处理说明,详情字段 |
processStart / processCurrent / processTarget | integer | 处理进度,详情字段 |
canFulfill / canProcessRecharge / canUploadRechargeProof / canRefund / refundPending | boolean | 详情的操作资格及退款进行状态 |
inputTemplateSnapshot | object 或 array | 履约输入模板;无模板时可为 |
normalizedInputValues | array | 履约资料,按模板 fieldKey 读取;仅按履约权限返回 |
verificationCodeRequired / verificationCodeInfo | boolean / object 或 null | 验证码要求与当前状态;只返回履约所需信息 |
rechargeProof | object 或 null | 凭证 url、uploadedAt、expiresAt |
cards | object |
|
physical | object | 实物地址、物流、快递选项与可执行操作 |
非适用字段可能省略或为 null,未知附加字段请忽略。纯供货方不返回买家实付和退款金额,不用 supplyAmount 替代买家订单总额。
售后与物流
售后项字段:id、complainNo、orderId、orderNo、goodsName、productType、topic、status、serviceType、serviceStatus、createdAt、updatedAt、canReply。
售后 status:pending 待处理、processing 处理中、completed 已完成、terminated 已终止。
消息在 messages.list,包括 id、sender、senderLabel、content、messageFormat、timestamp。sender 为 user 或 service,展示时优先使用 senderLabel;messageFormat 常见 text、image。
实物售后的 serviceType 为 refund_only、return_refund、exchange,普通售后可为空。physical 包括 id、serviceType、serviceStatus、returnAddress、returnLogistics、replacementLogistics、carrierOptions。未形成的物流为 null,地址未提供时可为 []。
订单 physical 包括 shippingAddress、logistics、carrierOptions、canShip、canUpdateLogistics。地址及物流按返回内容展示,不自行拼接其他接口编号。
请求示例
curl --get "${KYS_BASE_URL}/openapi/v1/seller/orders" \
-H "X-KYS-User-Id: ${KYS_USER_ID}" \
-H "X-KYS-Key: ${KYS_OPENAPI_KEY}" \
--data-urlencode 'page=1' \
--data-urlencode 'pageSize=20' \
--data-urlencode 'status=pending'curl "${KYS_BASE_URL}/openapi/v1/seller/aftersales/5001/messages" \
-H "X-KYS-User-Id: ${KYS_USER_ID}" \
-H "X-KYS-Key: ${KYS_OPENAPI_KEY}" \
-H 'Content-Type: application/json' \
--data '{"content":"已收到,正在核实","attachments":[],"requestNo":"seller_reply_20261028_0001"}'KYS_BASE_URL 形如 https://merchant.example.com,不包含 /openapi/v1。示例编号、卡密及凭证均为演示值;成功响应中的敏感资料也应按密钥同等要求保护。