HaniBlindBox/docs/API接口文档.md
2026-01-01 21:43:38 +08:00

21 KiB
Raw Blame History

抽奖盲盒系统API接口文档

1. 接口概览

基础信息

  • 基础URL: https://api.zfunbox.cn/api/
  • API版本: v1
  • 数据格式: JSON
  • 字符编码: UTF-8
  • 认证方式: Token认证
  • 签名方式: MD5签名 + 时间戳防重放

通用响应格式

{
    "status": 1,
    "msg": "success",
    "data": {},
    "timestamp": 1640995200
}

状态码说明

状态码 说明
1 请求成功
0 请求失败
-1 未登录
-9 需要绑定手机号
2222 特殊状态(如已领取等)

请求签名机制

所有POST请求都需要包含以下参数

  • timestamp: 当前时间戳
  • nonce: 随机字符串
  • sign: MD5签名

签名算法:

  1. 将所有参数按键名排序
  2. 拼接为 key1=value1&key2=value2 格式
  3. 添加密钥:host + timestamp
  4. 对整个字符串进行MD5加密

2. 用户认证接口

2.1 发送短信验证码

POST /v2/account/sendSms

请求参数:

{
    "phone": "13800138000"
}

参数说明:

参数 类型 必填 说明
phone string 手机号

响应示例:

{
    "status": 1,
    "msg": "验证码发送成功",
    "data": 60
}

2.2 手机号登录

POST /mobileLogin

请求参数:

{
    "mobile": "13800138000",
    "code": "123456",
    "pid": ""
}

参数说明:

参数 类型 必填 说明
mobile string 手机号
code string 验证码
pid string 推荐人ID

响应示例:

{
    "status": 1,
    "msg": "登录成功",
    "data": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}

2.3 微信授权登录

POST /login

请求参数:

{
    "code": "wx_auth_code",
    "nickname": "用户昵称",
    "avatar": "头像URL"
}

响应示例:

{
    "status": 1,
    "msg": "登录成功",
    "data": "token_string"
}

2.4 获取用户信息

POST /user

请求头:

token: {user_token}

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "userinfo": {
            "id": 1001,
            "phone": "138****8000",
            "nickname": "用户昵称",
            "avatar": "头像URL",
            "money": "100.00",
            "integral": "50.00",
            "money2": "20.00",
            "level": 1,
            "mobile_is": 1
        }
    }
}

2.5 注销账号

POST /user_log_off

响应示例:

{
    "status": 1,
    "msg": "注销成功"
}

3. 商品相关接口

3.1 获取首页商品列表

POST /goods

请求参数:

{
    "page": 1,
    "type": 0,
    "keyword": ""
}

参数说明:

参数 类型 必填 说明
page int 页码从1开始
type int 商品类型0-全部1-一番赏2-无限赏等
keyword string 搜索关键词

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "data": [
            {
                "id": 1001,
                "title": "精美手办盲盒",
                "imgurl": "商品图片URL",
                "price": "29.90",
                "type": 1,
                "stock": 100,
                "sale_stock": 50,
                "status": 1,
                "prize_num": 1,
                "show_price": "29.9元/抽"
            }
        ],
        "total": 100,
        "current_page": 1,
        "last_page": 10
    }
}

3.2 获取商品详情(一番赏)

POST /goodsdetail

请求参数:

{
    "goods_id": 1001,
    "num": 0
}

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "goods": {
            "id": 1001,
            "title": "精美手办盲盒",
            "imgurl": "商品封面图",
            "imgurl_detail": "商品详情图",
            "price": "29.90",
            "type": 1,
            "stock": 100,
            "prize_num": 1,
            "goods_describe": "商品描述"
        },
        "goods_list": [
            {
                "id": 2001,
                "title": "限定手办A",
                "imgurl": "奖品图片",
                "price": "299.00",
                "money": "150.00",
                "real_pro": "0.05000",
                "goods_type": 1,
                "prize_code": "A001"
            }
        ]
    }
}

3.3 获取无限赏商品详情

POST /infinite_goodsdetail

请求参数:

{
    "goods_id": 1001
}

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "goods": {
            "id": 1001,
            "title": "无限赏盲盒",
            "imgurl": "商品图片",
            "price": "19.90",
            "type": 2,
            "lingzhu_is": 1,
            "king_user_id": 1234
        },
        "goods_list": [
            {
                "id": 2001,
                "title": "稀有奖品",
                "imgurl": "奖品图片",
                "price": "199.00",
                "real_pro": "0.01000"
            }
        ]
    }
}

3.4 获取商品奖品数量统计

POST /goodslist_count

请求参数:

{
    "goods_id": 1001
}

3.5 获取商品奖品内容

POST /goodslist_content

请求参数:

{
    "goods_id": 1001,
    "num": 0
}

3.6 获取预售日历

POST /yushourili

请求参数:

{
    "page": 1
}

4. 订单相关接口

4.1 计算订单金额(一番赏)

POST /ordermoney

请求参数:

{
    "goods_id": 1001,
    "num": 0,
    "prize_num": 1,
    "coupon_id": "",
    "use_money_is": 2,
    "use_integral_is": 2,
    "use_money2_is": 2
}

参数说明:

参数 类型 必填 说明
goods_id int 商品ID
num int 第几套
prize_num int 抽奖数量
coupon_id string 优惠券ID
use_money_is int 是否使用余额1-是2-否
use_integral_is int 是否使用积分1-是2-否
use_money2_is int 是否使用哈尼券1-是2-否

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "order_total": "29.90",
        "price": "29.90",
        "goods_info": {
            "id": 1001,
            "title": "精美手办盲盒",
            "imgurl": "商品图片"
        },
        "goodsExtend": {
            "pay_wechat": 1,
            "pay_balance": 1,
            "pay_currency": 1,
            "pay_currency2": 1
        }
    }
}

4.2 创建订单并支付(一番赏)

POST /orderbuy

请求参数:

{
    "goods_id": 1001,
    "num": 0,
    "prize_num": 1,
    "coupon_id": "",
    "use_money_is": 2,
    "use_integral_is": 2,
    "use_money2_is": 2
}

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "status": 1,
        "order_num": "202401010001",
        "res": {
            "appId": "wx123456789",
            "timeStamp": "1640995200",
            "nonceStr": "abc123",
            "package": "prepay_id=wx123456789",
            "signType": "RSA",
            "paySign": "signature"
        }
    }
}

4.3 无限赏订单金额计算

POST /infinite_ordermoney

请求参数:

{
    "goods_id": 1001,
    "prize_num": 1,
    "use_money_is": 2,
    "use_integral_is": 2,
    "use_money2_is": 2,
    "coupon_id": ""
}

4.4 无限赏创建订单

POST /infinite_orderbuy

请求参数:

{
    "goods_id": 1001,
    "prize_num": 1,
    "use_money_is": 2,
    "use_integral_is": 2,
    "use_money2_is": 2,
    "coupon_id": ""
}

4.5 商城订单金额计算

POST /mall_ordermoney

请求参数:

{
    "goods_id": 1001,
    "prize_num": 1,
    "goods_num": 1,
    "use_money_is": 2,
    "use_integral_is": 2,
    "use_money2_is": 2
}

4.6 获取订单列表

POST /order_list

请求参数:

{
    "page": 1,
    "page_size": 20
}

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "data": [
            {
                "id": 10001,
                "order_num": "202401010001",
                "goods_title": "精美手办盲盒",
                "goods_imgurl": "商品图片",
                "order_total": "29.90",
                "price": "29.90",
                "prize_num": 1,
                "status": 1,
                "addtime": 1640995200,
                "pay_time": 1640995300
            }
        ],
        "total": 50,
        "current_page": 1,
        "last_page": 3
    }
}

4.7 获取订单详情

POST /order_detail

请求参数:

{
    "order_num": "202401010001"
}

5. 抽奖相关接口

5.1 获取抽奖结果(一番赏)

POST /prizeorderlog

请求参数:

{
    "order_num": "202401010001"
}

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": [
        {
            "id": 20001,
            "order_id": 10001,
            "goodslist_title": "限定手办A",
            "goodslist_imgurl": "奖品图片",
            "goodslist_price": "299.00",
            "goodslist_money": "150.00",
            "goodslist_type": 1,
            "status": 0,
            "addtime": 1640995300,
            "prize_code": "A001",
            "luck_no": 1
        }
    ]
}

5.2 获取无限赏抽奖结果

POST /infinite_prizeorderlog

请求参数:

{
    "order_num": "202401010001"
}

5.3 获取中奖记录

POST /shang_log

请求参数:

{
    "goods_id": 1001,
    "num": 0,
    "page": 1
}

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "data": [
            {
                "user_nickname": "用户***",
                "goodslist_title": "限定手办A",
                "addtime": "2024-01-01 10:30:00",
                "luck_no": 1
            }
        ]
    }
}

5.4 获取无限赏中奖记录

POST /infinite_shang_log

请求参数:

{
    "goods_id": 1001,
    "page": 1
}

5.5 获取每日抽奖记录

POST /infinite_prizerecords

请求参数:

{
    "goods_id": 1001
}

5.6 使用道具卡抽奖

POST /item_card_chou

请求参数:

{
    "goods_id": 1001,
    "item_card_id": 1
}

6. 盒柜(仓库)相关接口

6.1 获取仓库首页

POST /warehouse_index

请求参数:

{
    "page": 1,
    "status": 0
}

参数说明:

参数 类型 必填 说明
page int 页码
status int 状态0-待选择1-回收2-发货3-集市

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "data": [
            {
                "id": 20001,
                "goodslist_title": "限定手办A",
                "goodslist_imgurl": "奖品图片",
                "goodslist_price": "299.00",
                "goodslist_money": "150.00",
                "status": 0,
                "addtime": 1640995300
            }
        ]
    }
}

6.2 回收奖品

POST /warehouse_recovery

请求参数:

{
    "order_list_ids": "20001,20002"
}

6.3 发货奖品

POST /warehouse_send

请求参数:

{
    "order_list_ids": "20001,20002",
    "name": "张三",
    "mobile": "13800138000",
    "address": "北京市朝阳区xxx街道xxx号",
    "message": "请小心轻放"
}

6.4 确认发货

POST /warehouse_send_confirm

请求参数:

{
    "id": 70001
}

6.5 获取发货记录

POST /warehouse_send_record

请求参数:

{
    "page": 1
}

6.6 获取发货记录详情

POST /warehouse_send_record_detail

请求参数:

{
    "id": 70001
}

6.7 获取回收记录

POST /warehouse_recovery_record

请求参数:

{
    "page": 1
}

6.8 获取物流信息

POST /warehouse_order_logistics

请求参数:

{
    "id": 70001
}

7. 财务相关接口

7.1 获取资金明细

POST /profitMoney

请求参数:

{
    "page": 1,
    "type": 0
}

参数说明:

参数 类型 必填 说明
page int 页码
type int 类型0-全部1-充值2-消费3-回收等

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "data": [
            {
                "id": 50001,
                "change_money": "+150.00",
                "money": "250.00",
                "type": 4,
                "type_name": "背包回收",
                "content": "回收奖品获得",
                "addtime": 1640995500
            }
        ]
    }
}

7.2 获取积分明细

POST /profitScore

请求参数:

{
    "page": 1,
    "type": 0
}

7.3 获取支付明细

POST /profitPay

请求参数:

{
    "page": 1,
    "type": 0
}

7.4 获取优惠券列表

POST /coupon_list

请求参数:

{
    "page": 1,
    "status": 0
}

参数说明:

参数 类型 必填 说明
page int 页码
status int 状态0-未使用1-已使用2-已过期

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "data": [
            {
                "id": 60001,
                "title": "新人专享券",
                "price": "5.00",
                "man_price": "30.00",
                "end_time": 1641081600,
                "status": 0,
                "state": 0
            }
        ]
    }
}

7.5 领取优惠券

POST /coupon_ling

请求参数:

{
    "coupon_id": 60001
}

7.6 分享优惠券

POST /coupon_share

请求参数:

{
    "coupon_id": 60001
}

7.7 合成优惠券

POST /coupon_synthesis

请求参数:

{
    "coupon_ids": "60001,60002,60003"
}

7.8 计算优惠券合成

POST /coupon_ji_suan

请求参数:

{
    "coupon_ids": "60001,60002,60003"
}

8. 福利相关接口

8.1 获取福利屋列表

POST /welfare_house_list

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": [
        {
            "id": 1001,
            "title": "每日福利",
            "imgurl": "福利图片",
            "status": 1
        }
    ]
}

8.2 获取福利屋详情

POST /fuliwu_detail

请求参数:

{
    "goods_id": 1001
}

8.3 获取福利屋参与者

POST /fuliwu_participants

请求参数:

{
    "goods_id": 1001,
    "page": 1
}

8.4 获取福利屋记录

POST /fuliwu_records

请求参数:

{
    "goods_id": 1001,
    "page": 1
}

8.5 获取用户福利屋参与记录

GET /fuliwu_user_records

8.6 获取用户福利屋中奖记录

GET /fuliwu_user_winning_records

8.7 完成任务

POST /ling_task

请求参数:

{
    "task_list_id": 1001
}

9. 系统配置接口

9.1 获取全局配置

GET /config

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "good_type": [
            {
                "value": 1,
                "name": "一番赏",
                "is_show": 1,
                "pay_wechat": 1,
                "pay_balance": 1
            }
        ],
        "app_setting": {
            "app_name": "友达赏",
            "balance_name": "钻石",
            "currency1_name": "UU币",
            "currency2_name": "哈尼券",
            "applet_version": "v1.0.3"
        }
    }
}

9.2 获取轮播图

GET /getAdvert

请求参数:

参数 类型 必填 说明
type_id int 类型1-首页轮播2-抽卡机轮播

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": [
        {
            "id": 1,
            "imgurl": "轮播图URL",
            "url": "跳转链接",
            "ttype": 2,
            "goods_id": 1001
        }
    ]
}

9.3 获取单页内容

GET /getDanye

请求参数:

参数 类型 必填 说明
type int 页面类型1-服务协议2-隐私政策3-公告

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "title": "用户协议",
        "content": "协议内容..."
    }
}

9.4 获取优惠券中心

POST /coupon

响应示例:

{
    "status": 1,
    "msg": "success",
    "data": {
        "status": 1,
        "goods": {
            "list": [
                {
                    "id": 60001,
                    "title": "新人券",
                    "price": "5.00"
                }
            ]
        }
    }
}

9.5 领取优惠券

POST /receive

请求参数:

{
    "coupon_id": "60001,60002"
}

9.6 添加收藏

POST /addCollect

请求参数:

{
    "goods_id": 1001,
    "type": 1,
    "num": 0
}

10. 其他功能接口

10.1 获取排行榜

GET /getRankList

请求参数:

参数 类型 必填 说明
type string 排行榜类型invite-邀请榜consume-消费榜

10.2 获取邀请信息

POST /invitation

请求参数:

{
    "page": 1
}

10.3 绑定邀请码

POST /bind_invite_code

请求参数:

{
    "invite_code": "ABC123"
}

10.4 获取VIP列表

POST /vip_list

10.5 使用兑换码

POST /used

请求参数:

{
    "code": "EXCHANGE123"
}

11. 错误码说明

错误码 说明
1 请求成功
0 请求失败
-1 用户未登录
-9 需要绑定手机号
2222 特殊状态(如已领取、已完成等)

12. UniApp小程序接口调用示例

12.1 请求封装使用

// 在小程序页面中调用API
export default {
    methods: {
        // 获取商品列表
        async getGoodsList() {
            try {
                const res = await this.$request.post('goods', {
                    page: 1,
                    type: 0
                });
                
                if (res.status === 1) {
                    this.goodsList = res.data.data;
                } else {
                    this.$c.toast(res.msg);
                }
            } catch (error) {
                console.error('获取商品列表失败:', error);
            }
        },
        
        // 创建订单并支付
        async createOrder() {
            const res = await this.req({
                url: 'orderbuy',
                data: {
                    goods_id: this.goodsId,
                    num: 0,
                    prize_num: 1,
                    use_money_is: 2,
                    use_integral_is: 2
                }
            });
            
            if (res.status === 1 && res.data.status === 1) {
                // 调起微信支付
                const payResult = await this.$platform.pay({
                    data: res.data.res
                }, this);
                
                if (payResult === 'success') {
                    // 支付成功,获取抽奖结果
                    this.getPrizeResult(res.data.order_num);
                }
            }
        },
        
        // 获取抽奖结果
        async getPrizeResult(orderNum) {
            const res = await this.$request.post('prizeorderlog', {
                order_num: orderNum
            });
            
            if (res.status === 1) {
                // 显示中奖结果
                this.showPrizeResult(res.data);
            }
        }
    }
}

12.2 配置管理使用

// 获取全局配置
const appName = this.$config.getAppSetting('app_name');
const balanceName = this.$config.getAppSetting('balance_name');

// 获取商品类型配置
const goodTypes = this.$config.getGoodType();

// 检查支付方式
const goodTypeConfig = this.$config.getGoodTypeFind(1); // 一番赏
if (goodTypeConfig.pay_wechat === 1) {
    // 支持微信支付
}

12.3 路由跳转使用

// 跳转到商品详情页
this.$c.to({
    url: '/pages/shouye/detail',
    query: {
        goods_id: 1001,
        num: 0
    }
});

// 跳转到用户中心
this.$customRouter.navigateTo('/pages/user/index');

12.4 平台适配使用

// 调起支付(自动适配不同平台)
const payResult = await this.$platform.pay({
    data: payParams
}, this);

// 平台特定功能
if (this.$platform.code === 'mp-weixin') {
    // 微信小程序特有功能
    wx.requestPayment(payParams);
}

这份更新后的API文档基于小程序中实际使用的接口包含了完整的请求参数、响应格式和使用示例更贴近实际开发需求。