# 抽奖盲盒系统API接口文档 ## 1. 接口概览 ### 基础信息 - **基础URL**: `https://api.zfunbox.cn/api/` - **API版本**: `v1` - **数据格式**: `JSON` - **字符编码**: `UTF-8` - **认证方式**: `Token认证` - **签名方式**: `MD5签名 + 时间戳防重放` ### 通用响应格式 ```json { "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 发送短信验证码 ```http POST /v2/account/sendSms ``` **请求参数:** ```json { "phone": "13800138000" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | phone | string | 是 | 手机号 | **响应示例:** ```json { "status": 1, "msg": "验证码发送成功", "data": 60 } ``` ### 2.2 手机号登录 ```http POST /mobileLogin ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/mobileLogin` **请求参数:** ```json { "mobile": "13800138000", "code": "123456", "pid": 0, "clickId": "" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | mobile | string | 是 | 手机号 | | code | string | 是 | 验证码 | | pid | int | 否 | 推荐人ID | | clickId | string | 否 | 点击ID | **响应示例:** ```json { "status": 1, "msg": "登录成功", "data": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." } ``` ### 2.3 微信授权登录 ```http POST /login ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/login` **请求参数:** ```json { "code": "wx_auth_code", "pid": 0, "clickId": "" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | code | string | 是 | 微信授权code | | pid | int | 否 | 推荐人ID | | clickId | string | 否 | 点击ID | **响应示例:** ```json { "status": 1, "msg": "登录成功", "data": "token_string" } ``` ### 2.4 获取用户信息 ```http POST /user ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/user` **请求头:** ``` Authorization: Bearer {token} ``` **响应示例:** ```json { "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 更新用户信息 ```http POST /update_userinfo ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/update_userinfo` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "nickname": "新昵称", "headimg": "头像URL", "imagebase": "Base64编码的图片数据" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | nickname | string | 否 | 新昵称 | | headimg | string | 否 | 头像URL(直接使用URL) | | imagebase | string | 否 | Base64编码的图片数据(优先使用) | **响应示例:** ```json { "status": 1, "msg": "更新成功" } ``` ### 2.6 注销账号 ```http POST /user_log_off ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/user_log_off` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "type": 0 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | type | int | 否 | 类型:0-注销账号,1-取消注销 | **响应示例:** ```json { "status": 1, "msg": "注销成功" } ``` ### 2.6 微信授权绑定手机号 ```http POST /login_bind_mobile ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/login_bind_mobile` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "code": "wx_phone_auth_code" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | code | string | 是 | 微信获取手机号授权code | **响应示例:** ```json { "status": 1, "msg": "绑定成功", "data": { "token": "new_token_if_account_merged" } } ``` **说明:** - 如果手机号已被其他用户绑定,会进行账户合并,返回新的token - 如果手机号未被绑定,直接绑定到当前用户,token为null ### 2.7 验证码绑定手机号 ```http POST /bindMobile ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/bindMobile` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "mobile": "13800138000", "code": "123456" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | mobile | string | 是 | 手机号 | | code | string | 是 | 短信验证码 | **响应示例:** ```json { "status": 1, "msg": "绑定成功", "data": { "token": "new_token_if_account_merged" } } ``` **说明:** - 如果手机号已被其他用户绑定,会进行账户合并,返回新的token - 如果手机号未被绑定,直接绑定到当前用户,token为null ### 2.8 记录用户登录 ```http GET|POST /login_record ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `GET|POST /api/login_record` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "device": "android", "deviceInfo": "设备信息" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | device | string | 否 | 设备类型 | | deviceInfo | string | 否 | 设备信息 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "uid": "100001", "nickname": "用户昵称", "headimg": "头像URL" } } } ``` ## 3. 商品相关接口 ### 3.1 获取首页商品列表 ```http POST /goods ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/goods_list` **请求参数:** ```json { "page": 1, "type": 0, "keyword": "" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | page | int | 是 | 页码,从1开始 | | type | int | 否 | 商品类型:0-全部,1-一番赏,2-无限赏等 | | keyword | string | 否 | 搜索关键词 | **响应示例:** ```json { "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 获取商品详情(一番赏) ```http POST /goodsdetail ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/goods_detail` **请求参数:** ```json { "goods_id": 1001, "num": 0 } ``` **响应示例:** ```json { "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 获取商品子奖品 ```http POST /goods_children ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/goods_children` **请求参数:** ```json { "goods_id": 1001, "goods_num": 0, "goods_list_id": 2001 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | goods_id | int | 是 | 商品ID | | goods_num | int | 否 | 箱号,默认0 | | goods_list_id | int | 是 | 奖品ID | **响应示例:** ```json { "status": 1, "msg": "success", "data": [ { "id": 3001, "title": "子奖品名称", "imgurl": "子奖品图片", "price": "99.00", "real_pro": "0.05000", "shang_info": { "id": 1, "title": "A赏", "color": "#FF0000" } } ] } ``` ### 3.4 获取商品扩展配置 ```http POST /goods_extend ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/goods_extend` **请求参数:** ```json { "goods_id": 1001, "goods_type": 1 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | goods_id | int | 是 | 商品ID | | goods_type | int | 否 | 商品类型 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "pay_wechat": 1, "pay_balance": 1, "pay_currency": 1, "pay_currency2": 1, "dk_money": 1, "dk_integral": 1, "dk_money2": 1 } } ``` ### 3.5 获取箱号列表 ```http POST /goods_num_list ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/goods_num_list` **请求参数:** ```json { "goods_id": 1001 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | goods_id | int | 是 | 商品ID | **响应示例:** ```json { "status": 1, "msg": "success", "data": [ { "start": 1, "end": 10, "text": "1-10" }, { "start": 11, "end": 20, "text": "11-20" } ] } ``` ### 3.6 获取箱号详情 ```http POST /goods_num_detail ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/goods_num_detail` **请求参数:** ```json { "goods_id": 1001, "page_no": 0, "sort": 0 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | goods_id | int | 是 | 商品ID | | page_no | int | 否 | 页码,默认0(第一组) | | sort | int | 否 | 排序:0-箱号升序,1-箱号降序,2-余量降序 | **响应示例:** ```json { "status": 1, "msg": "success", "data": [ { "num": 1, "surplus_all_stock": 50, "goods_list": [ { "id": 2001, "title": "奖品名称", "imgurl": "奖品图片", "surplus_stock": 5 } ] } ] } ``` ### 3.7 获取无限赏商品详情 ```http POST /infinite_goodsdetail ``` **请求参数:** ```json { "goods_id": 1001 } ``` **响应示例:** ```json { "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 获取商品奖品数量统计 ```http POST /goodslist_count ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/goods_prize_count` **请求参数:** ```json { "goods_id": 1001 } ``` ### 3.5 获取商品奖品内容 ```http POST /goodslist_content ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/goods_prize_content` **请求参数:** ```json { "goods_id": 1001, "num": 0 } ``` ### 3.6 获取预售日历 ```http POST /yushourili ``` **请求参数:** ```json { "page": 1 } ``` ## 4. 订单相关接口 ### 4.1 计算订单金额(一番赏) ```http POST /ordermoney ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/ordermoney` **请求参数:** ```json { "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-否 | **响应示例:** ```json { "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 创建订单并支付(一番赏) ```http POST /orderbuy ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/orderbuy` **请求参数:** ```json { "goods_id": 1001, "num": 0, "prize_num": 1, "coupon_id": "", "use_money_is": 2, "use_integral_is": 2, "use_money2_is": 2 } ``` **响应示例:** ```json { "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 无限赏订单金额计算 ```http POST /infinite_ordermoney ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/infinite_ordermoney` **请求参数:** ```json { "goods_id": 1001, "prize_num": 1, "use_money_is": 2, "use_integral_is": 2, "use_money2_is": 2, "coupon_id": "" } ``` ### 4.4 无限赏创建订单 ```http POST /infinite_orderbuy ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/infinite_orderbuy` **请求参数:** ```json { "goods_id": 1001, "prize_num": 1, "use_money_is": 2, "use_integral_is": 2, "use_money2_is": 2, "coupon_id": "" } ``` ### 4.5 商城订单金额计算 ```http POST /mall_ordermoney ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/mall_ordermoney` **请求参数:** ```json { "goods_id": 1001, "prize_num": 1, "goods_num": 1, "use_money_is": 2, "use_integral_is": 2, "use_money2_is": 2 } ``` ### 4.6 获取订单列表 ```http POST /order_list ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/order_list` **请求参数:** ```json { "page": 1, "page_size": 20 } ``` **响应示例:** ```json { "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 获取订单详情 ```http POST /order_detail ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/order_detail` **请求参数:** ```json { "order_num": "202401010001" } ``` ## 5. 抽奖相关接口 ### 5.1 获取抽奖结果(一番赏) ```http POST /prizeorderlog ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/prizeorderlog` **请求参数:** ```json { "order_num": "202401010001" } ``` **响应示例:** ```json { "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 获取无限赏抽奖结果 ```http POST /infinite_prizeorderlog ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/infinite_prizeorderlog` **请求参数:** ```json { "order_num": "202401010001" } ``` ### 5.3 获取中奖记录 ```http POST /shang_log ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/goods_prize_logs` **请求参数:** ```json { "goods_id": 1001, "goods_num": 0, "shang_id": 0, "page": 1, "page_size": 15 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | goods_id | int | 是 | 商品ID | | goods_num | int | 否 | 箱号,默认0 | | shang_id | int | 否 | 赏品分类ID,0=全部 | | page | int | 否 | 页码,默认1 | | page_size | int | 否 | 每页数量,默认15 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "category": [ { "id": 1, "title": "A赏", "color": "#FF0000" } ], "data": [ { "user_nickname": "用户***", "user_headimg": "头像URL", "goodslist_title": "限定手办A", "goodslist_imgurl": "奖品图片", "shang_info": { "id": 1, "title": "A赏", "color": "#FF0000" }, "addtime": "2024-01-01 10:30:00", "luck_no": 1 } ], "last_page": 10 } } ``` ### 5.4 获取无限赏中奖记录 ```http POST /infinite_shang_log ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/infinite_shang_log` **请求参数:** ```json { "goods_id": 1001, "shang_id": 0, "is_mibao": 0, "page": 1, "page_size": 100 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | goods_id | int | 是 | 商品ID | | shang_id | int | 否 | 赏品等级ID,0表示全部 | | is_mibao | int | 否 | 是否秘宝池,0=否,1=是 | | page | int | 否 | 页码,默认1 | | page_size | int | 否 | 每页数量,默认100 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "category": [ {"shang_id": 0, "shang_title": "全部"}, {"shang_id": 34, "shang_title": "A赏"} ], "data": [ { "id": 1, "user_id": 100, "goodslist_title": "奖品名称", "goodslist_imgurl": "https://example.com/image.jpg", "shang_id": 34, "shang_title": "A赏", "shang_color": "#FF0000", "addtime": "2025-01-03 10:30:00", "luck_no": 1, "doubling": 1, "is_lingzhu": 0, "user_info": { "nickname": "用***户", "headimg": "https://example.com/avatar.jpg" } } ], "last_page": 10, "total": 100 } } ``` ### 5.5 获取用户抽奖记录(盒子抽奖记录) ```http POST /infinite_prizerecords ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/infinite_prizerecords` **请求参数:** ```json { "goods_id": 1001, "page": 1, "page_size": 100 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | goods_id | int | 是 | 商品ID | | page | int | 否 | 页码,默认1 | | page_size | int | 否 | 每页数量,默认100 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "data": [ { "user_id": 10001, "goodslist_title": "限定手办A", "goodslist_imgurl": "https://example.com/prize.jpg", "addtime": "2025-01-03 10:30:00" } ], "current_page": 1, "last_page": 1, "per_page": 100, "total": 1 } } ``` ### 5.6 使用道具卡抽奖 ```http POST /item_card_chou ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/item_card_chou` **请求参数:** ```json { "goods_id": 1001, "order_list_ids": "1,2,3" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | goods_id | int | 是 | 商品ID | | order_list_ids | string | 是 | 要重抽的订单项ID列表(逗号分隔) | **响应示例:** ```json { "status": 1, "msg": "重抽成功", "data": { "status": 0, "order_num": "MH_20260103120000001234", "prizes": [ { "id": 10001, "title": "限定手办A", "img_url": "奖品图片", "shang_id": 34, "shang_title": "A赏", "shang_color": "#FF0000", "price": "299.00", "sc_money": "150.00", "prize_code": "P202601031200001234", "luck_no": 1 } ], "remaining_cards": 2 } } ``` ## 6. 盒柜(仓库)相关接口 ### 6.1 获取仓库首页 ```http POST /warehouse_index ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/warehouse_index` **请求参数:** ```json { "page": 1, "status": 0 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | page | int | 是 | 页码 | | status | int | 否 | 状态:0-待选择,1-回收,2-发货,3-集市 | **响应示例:** ```json { "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 回收奖品 ```http POST /warehouse_recovery ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/warehouse_recovery` **请求参数:** ```json { "order_list_ids": "20001,20002" } ``` ### 6.3 发货奖品 ```http POST /warehouse_send ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/warehouse_send` **请求参数:** ```json { "order_list_ids": "20001,20002", "name": "张三", "mobile": "13800138000", "address": "北京市朝阳区xxx街道xxx号", "message": "请小心轻放" } ``` ### 6.4 确认发货 ```http POST /warehouse_send_confirm ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/warehouse_send_confirm` **请求参数:** ```json { "id": 70001 } ``` ### 6.5 获取发货记录 ```http POST /warehouse_send_record ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/warehouse_send_record` **请求参数:** ```json { "page": 1 } ``` ### 6.6 获取发货记录详情 ```http POST /warehouse_send_record_detail ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/warehouse_send_record_detail` **请求参数:** ```json { "id": 70001 } ``` ### 6.7 获取回收记录 ```http POST /warehouse_recovery_record ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/warehouse_recovery_record` **请求参数:** ```json { "page": 1 } ``` ### 6.8 获取物流信息 ```http POST /warehouse_order_logistics ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/warehouse_order_logistics` **请求参数:** ```json { "id": 70001 } ``` ## 7. 财务相关接口 ### 7.1 获取资金明细 ```http POST /profitMoney ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/profitMoney` **请求参数:** ```json { "page": 1, "type": 0 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | page | int | 是 | 页码 | | type | int | 否 | 类型:0-全部,1-收入,2-支出,3-提现 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "list": [ { "changeMoney": "+150.00", "content": "背包回收", "addTime": "2024-01-01 10:30:00" } ], "lastPage": 10, "currentPage": 1, "total": 100 } } ``` ### 7.2 获取吧唧币明细 ```http POST /profitIntegral ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/profitIntegral` **请求参数:** ```json { "page": 1, "type": 0 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | page | int | 是 | 页码 | | type | int | 否 | 类型:0-全部,1-收入,2-支出 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "list": [ { "changeMoney": "+50.00", "content": "任务奖励", "addTime": "2024-01-01 10:30:00" } ], "lastPage": 5, "currentPage": 1, "total": 50 } } ``` ### 7.3 获取积分明细 ```http POST /profitScore ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/profitScore` **请求参数:** ```json { "page": 1, "type": 0 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | page | int | 是 | 页码 | | type | int | 否 | 类型:0-全部,1-收入,2-支出 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "list": [ { "changeMoney": "+20.00", "content": "签到奖励", "addTime": "2024-01-01 10:30:00" } ], "lastPage": 3, "currentPage": 1, "total": 30 } } ``` ### 7.4 获取支付明细 ```http POST /profitPay ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/profitPay` **请求参数:** ```json { "page": 1 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | page | int | 是 | 页码 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "list": [ { "changeMoney": "-29.90", "content": "购买商品", "addTime": "2024-01-01 10:30:00" } ], "lastPage": 5, "currentPage": 1, "total": 50 } } ``` ### 7.4 获取优惠券列表 ```http POST /coupon_list ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/coupon_list` **请求参数:** ```json { "page": 1, "status": 1, "limit": 15 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | page | int | 是 | 页码 | | status | int | 否 | 状态:1-未使用,2-已分享 | | limit | int | 否 | 每页数量,默认15 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "list": [ { "id": 60001, "status": 1, "level": 3, "levelText": "高级赏券", "levelImg": "/storage/coupon/coupon_c.png", "title": "高级赏券", "num": "500", "klNum": 6, "klNum2": 6, "yiLing": 0 } ], "lastPage": 10, "yCount": 5, "zCount": 50, "userIntegral": 1000.00, "keHcCount": 20, "sunHao": "10%" } } ``` ### 7.4.1 获取优惠券详情 ```http POST /coupon_detail ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/coupon_detail` **请求参数:** ```json { "id": 60001 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | int | 是 | 优惠券ID | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "id": 60001, "level": 3, "levelText": "高级赏券", "levelImg": "/storage/coupon/coupon_c.png", "shareTime": "2024-01-01 10:30:00", "userId": 1001, "num": "500", "klNum2": 6, "own2": 100.00, "ylCount": 3, "ylIntegralCount": 150.00, "shareUserNickname": "用户昵称", "shareUserHeadimg": "头像URL", "ylList": [ { "userId": 1002, "nickname": "领取者昵称", "headimg": "头像URL", "lNum": 50.00, "addTime": "2024-01-01 11:00:00", "luckyKing": 1 } ] } } ``` ### 7.5 领取优惠券 ```http POST /coupon_ling ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/coupon_ling` **请求参数:** ```json { "id": 60001 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | int | 是 | 优惠券ID | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "amount": 50.00, "luckyKing": false } } ``` **错误码说明:** | 错误码 | 说明 | |--------|------| | 2222 | 请勿开启自己的劵 / 你已经领取过了 / 来晚了, 已经被人领完了 | | 0 | 每天最多领取N次 | ### 7.6 分享优惠券 ```http POST /coupon_share ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/coupon_share` **请求参数:** ```json { "id": 60001 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | int | 是 | 优惠券ID | **响应示例:** ```json { "status": 1, "msg": "分享成功" } ``` ### 7.7 合成优惠券 ```http POST /coupon_synthesis ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/coupon_synthesis` **请求参数:** ```json { "couponIds": "60001,60002,60003" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | couponIds | string | 是 | 优惠券ID列表,逗号分隔,最多20个 | **响应示例:** ```json { "status": 1, "msg": "合成成功" } ``` **错误说明:** - 特级、终极赏券不能合成 - 最多只能20个合成 ### 7.8 计算优惠券合成 ```http POST /coupon_ji_suan ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/coupon_ji_suan` **请求参数:** ```json { "couponIds": "60001,60002,60003" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | couponIds | string | 是 | 优惠券ID列表,逗号分隔,最多20个 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "coupon": { "title": "高级赏券", "level": 3 }, "sumNum": 1000.00, "shNum": 900.00 } } ``` **说明:** - sumNum: 原始总价值 - shNum: 合成后价值(扣除10%损耗) ## 8. 福利相关接口 ### 8.1 获取福利屋列表 ```http POST /welfare_house_list ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/welfare_house_list` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "type": 1, "page": 1, "limit": 15 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | type | int | 否 | 类型:1-进行中,3-已结束,默认1 | | page | int | 否 | 页码,默认1 | | limit | int | 否 | 每页数量,默认15 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "list": [ { "id": 1001, "title": "每日福利", "imgurl": "福利图片", "price": 0.00, "type": 15, "newIs": 0, "quanjuXiangou": 0, "choujiangXianzhi": 0, "goodsDescribe": "福利描述", "isOpen": 0, "unlockAmount": 0.00, "joinCount": 100, "flwStartTime": "2024-01-01 00:00:00", "flwEndTime": "2024-01-31 23:59:59", "openTime": "2024-02-01 10:00:00", "goodslist": [ { "title": "奖品名称", "imgurl": "奖品图片", "stock": 10, "price": 99.00, "scMoney": 50.00 } ] } ], "lastPage": 10, "total": 100 } } ``` ### 8.2 获取福利屋详情 ```http POST /fuliwu_detail ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/fuliwu_detail` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "goodsId": 1001 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | goodsId | int | 是 | 商品ID | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "goods": { "id": 1001, "title": "福利屋活动", "imgurl": "商品图片", "imgurlDetail": "详情图片", "price": 0.00, "type": 15, "newIs": 0, "quanjuXiangou": 0, "choujiangXianzhi": 0, "goodsDescribe": "活动描述", "isOpen": 0, "unlockAmount": 100.00, "sort": 0, "flwStartTime": "2024-01-01 00:00", "flwEndTime": "2024-01-31 23:59", "openTime": "2024-02-01 10:00" }, "goodslist": [ { "id": 2001, "title": "奖品名称", "imgurl": "奖品图片", "imgurlDetail": "奖品详情图", "stock": 10, "price": 99.00, "scMoney": 50.00, "shangId": 1, "surplusStock": 5, "sort": 0, "shangTitle": "特等奖", "shangColor": "#FF0000" } ], "joinCount": 100, "currentTime": "2024-01-15 10:30:00", "userCount": 5, "userConsumption": { "totalAmount": 500.00, "orderCount": 10 }, "status": "ongoing", "statusText": "进行中" } } ``` **状态说明:** | status | statusText | 说明 | |--------|------------|------| | waiting | 即将开始 | 当前时间 < 开始时间 | | ongoing | 进行中 | 开始时间 <= 当前时间 < 结束时间 | | ended | 已结束,等待开奖 | 结束时间 <= 当前时间 < 开奖时间 | | to_open | 待开奖 | 当前时间 >= 开奖时间 且 未开奖 | | opened | 已开奖 | 当前时间 >= 开奖时间 且 已开奖 | ### 8.3 获取福利屋参与者 ```http POST /fuliwu_participants ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/fuliwu_participants` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "goodsId": 1001, "page": 1, "limit": 15 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | goodsId | int | 是 | 商品ID | | page | int | 否 | 页码,默认1 | | limit | int | 否 | 每页数量,默认15 | **响应示例:** ```json { "status": 1, "msg": "success", "data": [ { "nickname": "用户昵称", "avatar": "头像URL", "createTime": "2024-01-15 10:30" } ] } ``` ### 8.4 获取福利屋开奖记录 ```http POST /fuliwu_records ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/fuliwu_records` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "goodsId": 1001, "page": 1, "limit": 15 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | goodsId | int | 是 | 商品ID | | page | int | 否 | 页码,默认1 | | limit | int | 否 | 每页数量,默认15 | **响应示例:** ```json { "status": 1, "msg": "success", "data": [ { "nickname": "用户昵称", "avatar": "头像URL", "goodslistTitle": "奖品名称", "shangId": 1, "createTime": "2024-01-15 10:30" } ] } ``` ### 8.5 获取用户福利屋参与记录 ```http GET /fuliwu_user_records ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `GET /api/fuliwu_user_records` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | page | int | 否 | 页码,默认1 | | limit | int | 否 | 每页数量,默认15 | **响应示例:** ```json { "status": 1, "msg": "success", "data": [ { "goodsId": 1001, "goodsTitle": "福利屋活动", "goodslistTitle": "奖品名称", "shangId": 1, "createTime": "2024-01-15 10:30" } ] } ``` ### 8.6 获取用户福利屋中奖记录 ```http GET /fuliwu_user_winning_records ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `GET /api/fuliwu_user_winning_records` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | page | int | 否 | 页码,默认1 | | limit | int | 否 | 每页数量,默认15 | **响应示例:** ```json { "status": 1, "msg": "success", "data": [ { "goodsId": 1001, "goodsTitle": "福利屋活动", "goodslistTitle": "奖品名称", "shangId": 1, "createTime": "2024-02-01 10:00" } ] } ``` ### 8.7 获取任务列表 ```http POST /task_list ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/task_list` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "type": 1 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | type | int | 否 | 任务类型:1-每日任务,2-每周任务,默认1 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "taskList": [ { "id": 1, "type": 1, "cate": 1, "title": "邀请1位好友注册", "number": 1, "zNumber": 10, "isComplete": 0, "percentage": 0, "ywcCount": 0 }, { "id": 2, "type": 1, "cate": 2, "title": "完成1次抽赏", "number": 1, "zNumber": 5, "isComplete": 1, "percentage": 100, "ywcCount": 1 } ] } } ``` **字段说明:** | 字段 | 说明 | |------|------| | id | 任务ID | | type | 任务类型:1-每日,2-每周 | | cate | 任务分类:1-邀请,2-抽赏 | | title | 任务标题 | | number | 目标完成数量 | | zNumber | 奖励欧气值 | | isComplete | 完成状态:0-未完成,1-已完成,2-已领取 | | percentage | 完成百分比(0-100) | | ywcCount | 已完成次数 | ### 8.8 领取任务奖励 ```http POST /ling_task ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/ling_task` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "taskListId": 1001 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | taskListId | int | 是 | 任务ID | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "reward": 10, "currentOuQi": 150 } } ``` **字段说明:** | 字段 | 说明 | |------|------| | reward | 本次获得的欧气值奖励 | | currentOuQi | 当前欧气值总数 | **错误说明:** - 任务不存在:返回 "任务不存在" - 任务未完成:返回 "任务未完成" - 已领取过:返回 "你已经领取过了" ## 9. 系统配置接口 ### 9.1 获取全局配置 ```http GET /config ``` **响应示例:** ```json { "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 获取轮播图 ```http GET /getAdvert ``` **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | type_id | int | 否 | 类型:1-首页轮播,2-抽卡机轮播 | **响应示例:** ```json { "status": 1, "msg": "success", "data": [ { "id": 1, "imgurl": "轮播图URL", "url": "跳转链接", "ttype": 2, "goods_id": 1001 } ] } ``` ### 9.3 获取单页内容 ```http GET /getDanye ``` **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | type | int | 是 | 页面类型:1-服务协议,2-隐私政策,3-公告 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "title": "用户协议", "content": "协议内容..." } } ``` ### 9.4 获取优惠券中心 ```http POST /coupon ``` **响应示例:** ```json { "status": 1, "msg": "success", "data": { "status": 1, "goods": { "list": [ { "id": 60001, "title": "新人券", "price": "5.00" } ] } } } ``` ### 9.5 领取优惠券 ```http POST /receive ``` **请求参数:** ```json { "coupon_id": "60001,60002" } ``` ### 9.6 添加收藏 ```http POST /addCollect ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/addCollect` **请求参数:** ```json { "goods_id": 1001, "goods_num": 0 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | goods_id | int | 是 | 商品ID | | goods_num | int | 否 | 箱号,默认0 | **响应示例:** ```json { "status": 1, "msg": "操作成功" } ``` ### 9.7 收藏列表 ```http POST /listCollect ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/listCollect` **请求参数:** ```json { "type": 0, "page": 1, "page_size": 100 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | type | int | 否 | 商品类型,0=全部 | | page | int | 否 | 页码,默认1 | | page_size | int | 否 | 每页数量,默认100 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "data": [ { "id": 1, "goods_id": 1001, "type": 1, "num": 0, "goods_title": "商品标题", "goods_price": "99.00", "imgurl": "图片URL", "stock": 100, "surplus_stock": 50 } ], "last_page": 1 } } ``` ### 9.8 删除收藏 ```http POST /delCollect ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/delCollect` **请求参数:** ```json { "id": 1 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | int | 是 | 收藏记录ID | **响应示例:** ```json { "status": 1, "msg": "删除成功" } ``` ## 10. 其他功能接口 ### 10.1 获取排行榜 ```http GET /getRankList ``` **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | type | string | 是 | 排行榜类型:invite-邀请榜,consume-消费榜 | ### 10.1.1 获取周榜 ```http GET /rank_week ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `GET /api/rank_week` **请求头:** ``` Authorization: Bearer {token} ``` **响应示例:** ```json { "status": 1, "msg": "success", "data": { "date": "01月01日-01月07日", "end_date": 1704643199, "my_rank": { "my_rank": 5, "my_prize_title": "限定手办", "my_prize_imgurl": "奖品图片URL", "my_order_total": 1500.00, "my_nickname": "用户昵称", "my_headimg": "头像URL" }, "data": [ { "rank": 1, "user_id": 1001, "nickname": "用户昵称", "headimg": "头像URL", "order_total": 5000.00, "prize_title": "特等奖", "prize_imgurl": "奖品图片URL" } ] } } ``` **字段说明:** | 字段 | 说明 | |------|------| | date | 周榜日期范围 | | end_date | 周榜结束时间戳 | | my_rank | 当前用户排名信息(未上榜时为"暂未上榜") | | my_prize_title | 当前用户对应奖品标题(未上榜时为0) | | my_prize_imgurl | 当前用户对应奖品图片(未上榜时为0) | | my_order_total | 当前用户本周消费金额 | | data | 排行榜前30名列表 | ### 10.1.2 获取月榜 ```http GET /rank_month ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `GET /api/rank_month` **请求头:** ``` Authorization: Bearer {token} ``` **响应示例:** ```json { "status": 1, "msg": "success", "data": { "date": "01月01日-01月31日", "end_date": 1706716799, "my_rank": { "my_rank": "暂未上榜", "my_prize_title": 0, "my_prize_imgurl": 0, "my_order_total": 500.00, "my_nickname": "用户昵称", "my_headimg": "头像URL" }, "data": [ { "rank": 1, "user_id": 1001, "nickname": "用户昵称", "headimg": "头像URL", "order_total": 15000.00, "prize_title": "月度特等奖", "prize_imgurl": "奖品图片URL" } ] } } ``` **字段说明:** | 字段 | 说明 | |------|------| | date | 月榜日期范围 | | end_date | 月榜结束时间戳 | | my_rank | 当前用户排名信息(未上榜时为"暂未上榜") | | my_prize_title | 当前用户对应奖品标题(未上榜时为0) | | my_prize_imgurl | 当前用户对应奖品图片(未上榜时为0) | | my_order_total | 当前用户本月消费金额 | | data | 排行榜前30名列表 | ### 10.2 获取邀请信息 ```http POST /invitation ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/invitation` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "page": 1 } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | page | int | 否 | 页码,默认1 | **响应示例:** ```json { "status": 1, "msg": "success", "data": { "share_title": "分享标题", "share_image": "", "count": 10, "money": 150.00, "data": [ { "id": 1002, "nickname": "被邀请用户", "headimg": "头像URL", "pid": 1001, "addtime": "2024-01-01 10:30:00", "commission_money": 15.00 } ], "last_page": 1 } } ``` **字段说明:** | 字段 | 说明 | |------|------| | share_title | 分享标题 | | share_image | 分享图片URL | | count | 总邀请人数 | | money | 总奖励金额 | | data | 邀请记录列表 | | last_page | 最后一页页码 | ### 10.3 绑定邀请码 ```http POST /bind_invite_code ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/bind_invite_code` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "invite_code": "ABC123" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | invite_code | string | 是 | 邀请码(邀请人的UID) | **响应示例:** ```json { "status": 1, "msg": "绑定成功" } ``` **错误说明:** - 用户不存在:返回 "用户不存在" - 已绑定过:返回 "您已绑定过邀请码" - 超过24小时:返回 "新用户注册24小时内才可以绑定邀请码" - 绑定自己:返回 "不能绑定自己" - 邀请码不存在:返回 "邀请码不存在" ### 10.4 获取VIP列表 ```http POST /vip_list ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/vip_list` **请求头:** ``` Authorization: Bearer {token} ``` **响应示例:** ```json { "status": 1, "msg": "success", "data": { "userinfo": { "nickname": "用户昵称", "headimg": "头像URL", "vip": 2, "upgrade_money": "500.00", "last_vip": 3, "jin_du": 60.5, "notice": "VIP2会员" }, "data": [ { "id": 1, "level": 1, "title": "VIP1", "imgurl": "", "condition": 100, "discount": 0, "notice": "VIP1会员" }, { "id": 2, "level": 2, "title": "VIP2", "imgurl": "", "condition": 500, "discount": 0, "notice": "VIP2会员" } ] } } ``` ### 10.5 使用兑换码 ```http POST /used ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/used` **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "code": "EXCHANGE123" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | code | string | 是 | 兑换码 | **响应示例:** ```json { "status": 1, "msg": "兑换成功,获得100吧唧币", "data": { "success": true, "message": "兑换成功,获得100吧唧币", "rewardType": "integral", "rewardAmount": 100.00 } } ``` **字段说明:** | 字段 | 说明 | |------|------| | success | 是否成功 | | message | 提示消息 | | rewardType | 奖励类型:money=余额, integral=吧唧币, score=积分 | | rewardAmount | 奖励数量 | **错误说明:** - 兑换码无效:返回 "兑换码无效" - 兑换码已被使用:返回 "兑换码已被使用" - 兑换码已过期:返回 "兑换码已过期" ## 11. 错误码说明 | 错误码 | 说明 | |--------|------| | 1 | 请求成功 | | 0 | 请求失败 | | -1 | 用户未登录 | | -9 | 需要绑定手机号 | | 2222 | 特殊状态(如已领取、已完成等) | ## 12. UniApp小程序接口调用示例 ### 12.1 请求封装使用 ```javascript // 在小程序页面中调用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 配置管理使用 ```javascript // 获取全局配置 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 路由跳转使用 ```javascript // 跳转到商品详情页 this.$c.to({ url: '/pages/shouye/detail', query: { goods_id: 1001, num: 0 } }); // 跳转到用户中心 this.$customRouter.navigateTo('/pages/user/index'); ``` ### 12.4 平台适配使用 ```javascript // 调起支付(自动适配不同平台) const payResult = await this.$platform.pay({ data: payParams }, this); // 平台特定功能 if (this.$platform.code === 'mp-weixin') { // 微信小程序特有功能 wx.requestPayment(payParams); } ``` 这份更新后的API文档基于小程序中实际使用的接口,包含了完整的请求参数、响应格式和使用示例,更贴近实际开发需求。 ## 13. 支付回调接口 ### 13.1 微信支付回调 ```http POST /api/notify/order_notify ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/notify/order_notify` **说明:** 此接口由微信支付服务器调用,用于通知支付结果。不需要前端调用。 **请求格式:** XML **请求示例:** ```xml 100 ``` **attach参数说明:** | attach值 | 订单类型 | 说明 | |----------|---------|------| | user_recharge | 余额充值 | 用户充值订单 | | order_yfs | 一番赏订单 | 一番赏抽奖订单 | | order_lts | 擂台赏订单 | 擂台赏抽奖订单 | | order_zzs | 转转赏订单 | 转转赏抽奖订单 | | order_flw | 福利屋订单 | 福利屋抽奖订单 | | order_scs | 商城赏订单 | 商城赏抽奖订单 | | order_wxs | 无限赏订单 | 无限赏抽奖订单 | | order_fbs | 翻倍赏订单 | 翻倍赏抽奖订单 | | order_ckj | 抽卡机订单 | 抽卡机抽奖订单 | | order_list_send | 发货运费 | 背包发货运费订单 | **响应格式:** XML **响应示例:** ```xml ``` **处理流程:** 1. 验证签名确保数据安全 2. 检查订单是否已处理(幂等性) 3. 根据attach类型路由到对应处理方法 4. 更新订单状态、扣减用户资产 5. 触发抽奖逻辑(如适用) 6. 返回XML响应给微信 ### 13.2 微信支付统一下单 ```http POST /api/pay ``` **迁移状态**: ✅ 已迁移到 .NET 8 **新接口地址**: `POST /api/pay` **说明:** 创建微信支付订单,返回支付参数供前端调起微信支付。 **请求头:** ``` Authorization: Bearer {token} ``` **请求参数:** ```json { "order_no": "YFS_20240101120000_1001", "amount": 9.90, "body": "一番赏抽奖", "attach": "order_yfs", "open_id": "" } ``` **参数说明:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | order_no | string | 是 | 订单号 | | amount | decimal | 是 | 支付金额(单位:元) | | body | string | 否 | 商品描述,默认"商品购买" | | attach | string | 是 | 订单类型(见attach参数说明) | | open_id | string | 否 | 用户OpenId,不传则从用户信息获取 | **响应示例(成功):** ```json { "status": 1, "msg": "success", "data": { "appId": "wx1234567890", "timeStamp": "1640995200", "nonceStr": "abc123def456", "package": "prepay_id=wx123456789", "signType": "MD5", "paySign": "SIGN_STRING", "is_weixin": 1 } } ``` **响应示例(失败):** ```json { "status": 0, "msg": "订单号不能为空", "data": null } ``` **前端调起支付示例:** ```javascript // 获取支付参数 const payResult = await request({ url: '/api/pay', method: 'POST', data: { order_no: orderNo, amount: totalPrice, body: '一番赏抽奖', attach: 'order_yfs' } }); if (payResult.status === 1 && payResult.data) { // 调起微信支付 wx.requestPayment({ timeStamp: payResult.data.timeStamp, nonceStr: payResult.data.nonceStr, package: payResult.data.package, signType: payResult.data.signType, paySign: payResult.data.paySign, success: function(res) { // 支付成功 }, fail: function(res) { // 支付失败 } }); } ```