GET/open/v1/site站点信息
返回本站点基础信息,用于确认凭证指向的站点。
请求示例
curl https://你的站点域名/open/v1/site \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
返回示例
{
"code": 0,
"message": "ok",
"data": {
"siteId": "3",
"siteName": "星野商城",
"code": "xingye",
"mode": "b2c",
"logo": "https://.../logo.png",
"status": 1,
"expireTime": "2027-12-31 23:59:59"
},
"request_id": "..."
}GET/open/v1/goods商品列表
本站点上架商品的分页列表。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|
page | int | 否 | 页码,默认 1 |
limit | int | 否 | 每页条数 |
keyword | string | 否 | 按商品名称模糊搜索 |
category_id | string | 否 | 商品分类 ID(含子分类) |
sort_field | string | 否 | 排序字段:goods_id / create_time / sales / price_min |
sort_order | string | 否 | asc / desc,默认 desc |
请求示例
curl "https://你的站点域名/open/v1/goods?page=1&limit=20" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
返回示例
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
"goods_id": "1001",
"goods_name": "示例商品",
"price_min": "99.00",
"price_max": "129.00",
"sales": 12,
"status": 1
}
],
"total": 1,
"page": 1,
"limit": 20
},
"request_id": "..."
}GET/open/v1/order订单列表
本站点订单的分页列表,返回含子单与订单项。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|
page | int | 否 | 页码,默认 1 |
limit | int | 否 | 每页条数 |
order_no | string | 否 | 按订单号精确查询 |
status | int | 否 | 按订单状态筛选 |
请求示例
curl "https://你的站点域名/open/v1/order?page=1&limit=20" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
返回示例
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
"order_id": "2001",
"order_no": "NO202610100001",
"status": 1,
"pay_amount": "99.00",
"create_time": "2026-10-10 09:30:00",
"children": []
}
],
"total": 1,
"page": 1,
"limit": 20
},
"request_id": "..."
}GET/open/v1/dcep/red_packet/activity红包活动列表
本站点当前启用且在有效期内的数字人民币红包活动,供第三方取 activityNo。
红包面额由行方在活动上维护,本接口不返回金额。
请求示例
curl https://你的站点域名/open/v1/dcep/red_packet/activity \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
返回示例
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
"activityNo": "DR20261010000123",
"name": "双十一数币红包",
"validDays": 7,
"totalCount": 1000,
"issuedCount": 12,
"startTime": "2026-10-01 00:00:00",
"endTime": "2026-11-11 23:59:59",
"remark": ""
}
]
},
"request_id": "..."
}POST/open/v1/dcep/red_packet/send定向发放红包
按手机号批量定向发放红包,逐个号串行调用行方 2.1,返回逐号结果。
发放不可撤销;同活动同手机号已有有效发放的号会被跳过(skipped=true)。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|
activityNo | string | 是 | 红包活动编号(activityNo) |
mobiles | array | 是 | 收款手机号数组,单批最多 500 个 |
请求示例
curl -X POST https://你的站点域名/open/v1/dcep/red_packet/send \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-d '{"activityNo":"DR20261010000123","mobiles":["13800001234","13900005678"]}'返回示例
{
"code": 0,
"message": "ok",
"data": {
"batchNo": "DB20261010120000123456",
"total": 2,
"success": 1,
"failed": 1,
"skipped": 0,
"list": [
{
"recordId": "1001",
"mobile": "138****1234",
"status": 2,
"skipped": false,
"errorCode": "",
"failReason": ""
},
{
"recordId": "1002",
"mobile": "139****5678",
"status": 3,
"skipped": false,
"errorCode": "RPB01038",
"failReason": "红包活动不可用"
}
]
},
"request_id": "..."
}POST/open/v1/dcep/red_packet/receive领取红包
为单个手机号领取红包,同活动同手机号去重,重复领取返回数据已存在。
重复领取返回 code=10007。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|
activityNo | string | 是 | 红包活动编号(activityNo) |
mobile | string | 是 | 领取手机号 |
请求示例
curl -X POST https://你的站点域名/open/v1/dcep/red_packet/receive \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-d '{"activityNo":"DR20261010000123","mobile":"13800001234"}'返回示例
{
"code": 0,
"message": "ok",
"data": {
"recordId": "1001",
"activityNo": "DR20261010000123",
"activityName": "双十一数币红包",
"mobile": "138****1234",
"status": 2,
"rcvSts": "B2C00",
"sendTime": "2026-10-10 12:00:00"
},
"request_id": "..."
}GET/open/v1/dcep/red_packet/record发放记录查询
本站点数币红包发放/领取记录分页查询,手机号脱敏返回。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|
page | int | 否 | 页码,默认 1 |
limit | int | 否 | 每页条数 |
activityNo | string | 否 | 按活动编号筛选 |
batchNo | string | 否 | 按发放批次号筛选 |
mobile | string | 否 | 按手机号精确筛选 |
status | int | 否 | 发放状态:1=待发放 2=成功 3=失败 |
请求示例
curl "https://你的站点域名/open/v1/dcep/red_packet/record?page=1&limit=20" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
返回示例
{
"code": 0,
"message": "ok",
"data": {
"list": [
{
"recordId": "1001",
"activityNo": "DR20261010000123",
"activityName": "双十一数币红包",
"batchNo": "DB20261010120000123456",
"mobile": "138****1234",
"status": 2,
"rcvSts": "B2C00",
"errorCode": "",
"failReason": "",
"sendTime": "2026-10-10 12:00:00"
}
],
"total": 1,
"page": 1,
"limit": 20
},
"request_id": "..."
}POST/open/v1/dcep/red_packet/record/:recordId/sync查询并收口领取状态
按记录 ID 主动查行方 2.2 领取状态并收口本地状态(查询、补发锚点)。
rcvSts=B2C01/B2C05 表示行方要求补发,需运营介入。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|
recordId | string | 是 | 发放记录 ID(路径参数) |
请求示例
curl -X POST https://你的站点域名/open/v1/dcep/red_packet/record/1001/sync \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
返回示例
{
"code": 0,
"message": "ok",
"data": {
"recordId": "1001",
"mobile": "138****1234",
"status": 2,
"rcvSts": "B2C00"
},
"request_id": "..."
}POST/open/v1/dcep/trade下单
聚合代收下单:第三方传自己的订单号与金额,我方调行方 H5 下单并返回支付跳转地址。
同一 outTradeNo 重复下单且交易仍待支付时,复用已存 tradeNo,不重复调行方。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|
outTradeNo | string | 是 | 第三方订单号(本站点内唯一,幂等锚点) |
amount | string | 是 | 支付金额(元,两位小数,>0) |
subject | string | 是 | 商品描述 |
notifyUrl | string | 是 | 支付结果回调地址(公网 http/https) |
returnUrl | string | 否 | 支付完成返回地址 |
请求示例
curl -X POST https://你的站点域名/open/v1/dcep/trade \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-d '{"outTradeNo":"SHOP-20261010-0001","amount":"9.90","subject":"测试商品","notifyUrl":"https://your-shop.com/pay/notify"}'返回示例
{
"code": 0,
"message": "ok",
"data": {
"tradeNo": "OD20261010120000123456",
"outTradeNo": "SHOP-20261010-0001",
"amount": "9.90",
"status": 0,
"url": "https://dcep.example.com/h5/..."
},
"request_id": "..."
}GET/open/v1/dcep/trade/:tradeNo查单
按我方交易单号查询交易状态(行方 2.5),并收口本地状态。
tradeState:SUCCESS/REFUND/NOTPAY/CLOSED/PAYERROR。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|
tradeNo | string | 是 | 我方交易单号(路径参数) |
请求示例
curl https://你的站点域名/open/v1/dcep/trade/OD20261010120000123456 \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
返回示例
{
"code": 0,
"message": "ok",
"data": {
"tradeNo": "OD20261010120000123456",
"outTradeNo": "SHOP-20261010-0001",
"amount": "9.90",
"status": 1,
"tradeState": "SUCCESS",
"payTime": "2026-10-10 12:05:00"
},
"request_id": "..."
}POST/open/v1/dcep/trade/:tradeNo/close关单
关闭待支付交易(行方 2.8),已支付交易拒绝关单。
已支付交易关单返回 code=30005。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|
tradeNo | string | 是 | 我方交易单号(路径参数) |
请求示例
curl -X POST https://你的站点域名/open/v1/dcep/trade/OD20261010120000123456/close \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
返回示例
{
"code": 0,
"message": "ok",
"data": {
"tradeNo": "OD20261010120000123456",
"status": 2
},
"request_id": "..."
}POST/open/v1/dcep/refund退款
对已支付交易退款(行方 2.6 申请 + 2.7 查询);处理中返回 status=0,需轮询退款查询。
同一 refundNo 重复请求复用已存退款单。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|
tradeNo | string | 是 | 我方交易单号 |
refundNo | string | 是 | 第三方退款单号(幂等锚点) |
refundAmount | string | 是 | 退款金额(元,累计不得超过交易额) |
reason | string | 否 | 退款原因 |
请求示例
curl -X POST https://你的站点域名/open/v1/dcep/refund \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-d '{"tradeNo":"OD20261010120000123456","refundNo":"RF-SHOP-0001","refundAmount":"9.90"}'返回示例
{
"code": 0,
"message": "ok",
"data": {
"refundNo": "RF20261010120000123456",
"merchantRefundNo": "RF-SHOP-0001",
"tradeNo": "OD20261010120000123456",
"refundAmount": "9.90",
"status": 1,
"refundStatus": "SUCCESS"
},
"request_id": "..."
}GET/open/v1/dcep/refund/:refundNo退款查询
按我方退款单号查询退款状态(行方 2.7),并收口本地状态。
refundStatus:SUCCESS/FAIL/PROCESSING/CHANGE。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|
refundNo | string | 是 | 我方退款单号(路径参数) |
请求示例
curl https://你的站点域名/open/v1/dcep/refund/RF20261010120000123456 \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
返回示例
{
"code": 0,
"message": "ok",
"data": {
"refundNo": "RF20261010120000123456",
"tradeNo": "OD20261010120000123456",
"refundAmount": "9.90",
"status": 1,
"refundStatus": "SUCCESS"
},
"request_id": "..."
}