适用主题: Zibll (子比) 8.7 Word󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄧󠄞󠄡󠄤󠄢󠅬󠄼󠄿󠄳󠄱󠅄󠄹󠄿󠄾󠄪󠄳󠅟󠅜󠅥󠅝󠅒󠅥󠅣󠄜󠄐󠄿󠅘󠅙󠅟󠄜󠄐󠅅󠅃󠅬󠅅󠅃󠄵󠅂󠄪󠇖󠆨󠆨󠇕󠆞󠆒󠅬󠅄󠄹󠄽󠄵󠄪󠄢󠄠󠄢󠄦󠄝󠄠󠄥󠄝󠄠󠄦󠄐󠄡󠄩󠄪󠄣󠄢󠄪󠄤󠄦󠅬󠇕󠆁󠅶󠇗󠆚󠆍󠇔󠆪󠆁󠄐󠄝󠄐󠇔󠆨󠅽󠇖󠆈󠅾󠇖󠅹󠅰󠇔󠆫󠆕󠇕󠆁󠅶󠄐󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄐󠇗󠅹󠅸󠇖󠆍󠅳󠇖󠅹󠅰󠇖󠆌󠅹󠅬󠅅󠅂󠄼󠄪󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄣󠄡󠄨Press 6.9
一、功能概述
1.1 API 自动发货
为 Zibll 商城商品添加通过 HTTP 请求第三方 API 接口实现自动󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄧󠄞󠄡󠄤󠄢󠅬󠄼󠄿󠄳󠄱󠅄󠄹󠄿󠄾󠄪󠄳󠅟󠅜󠅥󠅝󠅒󠅥󠅣󠄜󠄐󠄿󠅘󠅙󠅟󠄜󠄐󠅅󠅃󠅬󠅅󠅃󠄵󠅂󠄪󠇖󠆨󠆨󠇕󠆞󠆒󠅬󠅄󠄹󠄽󠄵󠄪󠄢󠄠󠄢󠄦󠄝󠄠󠄥󠄝󠄠󠄦󠄐󠄡󠄩󠄪󠄣󠄢󠄪󠄤󠄦󠅬󠇕󠆁󠅶󠇗󠆚󠆍󠇔󠆪󠆁󠄐󠄝󠄐󠇔󠆨󠅽󠇖󠆈󠅾󠇖󠅹󠅰󠇔󠆫󠆕󠇕󠆁󠅶󠄐󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄐󠇗󠅹󠅸󠇖󠆍󠅳󠇖󠅹󠅰󠇖󠆌󠅹󠅬󠅅󠅂󠄼󠄪󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄣󠄡󠄨发货的能力:
- 支持 GET/POST 请求方式
- POST 数据支持变量模板替换󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄧󠄞󠄡󠄤󠄢󠅬󠄼󠄿󠄳󠄱󠅄󠄹󠄿󠄾󠄪󠄳󠅟󠅜󠅥󠅝󠅒󠅥󠅣󠄜󠄐󠄿󠅘󠅙󠅟󠄜󠄐󠅅󠅃󠅬󠅅󠅃󠄵󠅂󠄪󠇖󠆨󠆨󠇕󠆞󠆒󠅬󠅄󠄹󠄽󠄵󠄪󠄢󠄠󠄢󠄦󠄝󠄠󠄥󠄝󠄠󠄦󠄐󠄡󠄩󠄪󠄣󠄢󠄪󠄤󠄦󠅬󠇕󠆁󠅶󠇗󠆚󠆍󠇔󠆪󠆁󠄐󠄝󠄐󠇔󠆨󠅽󠇖󠆈󠅾󠇖󠅹󠅰󠇔󠆫󠆕󠇕󠆁󠅶󠄐󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄐󠇗󠅹󠅸󠇖󠆍󠅳󠇖󠅹󠅰󠇖󠆌󠅹󠅬󠅅󠅂󠄼󠄪󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄣󠄡󠄨([input]-[input4], [name], [price], [num], [time])
- 4种成功条件判断模式 + 自定义关键词
- 发货成功/失败均发送邮件通知管理员
- 错误日志记录到 Wor󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄧󠄞󠄡󠄤󠄢󠅬󠄼󠄿󠄳󠄱󠅄󠄹󠄿󠄾󠄪󠄳󠅟󠅜󠅥󠅝󠅒󠅥󠅣󠄜󠄐󠄿󠅘󠅙󠅟󠄜󠄐󠅅󠅃󠅬󠅅󠅃󠄵󠅂󠄪󠇖󠆨󠆨󠇕󠆞󠆒󠅬󠅄󠄹󠄽󠄵󠄪󠄢󠄠󠄢󠄦󠄝󠄠󠄥󠄝󠄠󠄦󠄐󠄡󠄩󠄪󠄣󠄢󠄪󠄤󠄦󠅬󠇕󠆁󠅶󠇗󠆚󠆍󠇔󠆪󠆁󠄐󠄝󠄐󠇔󠆨󠅽󠇖󠆈󠅾󠇖󠅹󠅰󠇔󠆫󠆕󠇕󠆁󠅶󠄐󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄐󠇗󠅹󠅸󠇖󠆍󠅳󠇖󠅹󠅰󠇖󠆌󠅹󠅬󠅅󠅂󠄼󠄪󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄣󠄡󠄨dPress Transient
1.2 补单功能
对已通过 API 发货(含失败󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄧󠄞󠄡󠄤󠄢󠅬󠄼󠄿󠄳󠄱󠅄󠄹󠄿󠄾󠄪󠄳󠅟󠅜󠅥󠅝󠅒󠅥󠅣󠄜󠄐󠄿󠅘󠅙󠅟󠄜󠄐󠅅󠅃󠅬󠅅󠅃󠄵󠅂󠄪󠇖󠆨󠆨󠇕󠆞󠆒󠅬󠅄󠄹󠄽󠄵󠄪󠄢󠄠󠄢󠄦󠄝󠄠󠄥󠄝󠄠󠄦󠄐󠄡󠄩󠄪󠄣󠄢󠄪󠄤󠄦󠅬󠇕󠆁󠅶󠇗󠆚󠆍󠇔󠆪󠆁󠄐󠄝󠄐󠇔󠆨󠅽󠇖󠆈󠅾󠇖󠅹󠅰󠇔󠆫󠆕󠇕󠆁󠅶󠄐󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄐󠇗󠅹󠅸󠇖󠆍󠅳󠇖󠅹󠅰󠇖󠆌󠅹󠅬󠅅󠅂󠄼󠄪󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄣󠄡󠄨)的订单重新调用 API 接口:
- 弹窗式确认界面(商品摘要󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄧󠄞󠄡󠄤󠄢󠅬󠄼󠄿󠄳󠄱󠅄󠄹󠄿󠄾󠄪󠄳󠅟󠅜󠅥󠅝󠅒󠅥󠅣󠄜󠄐󠄿󠅘󠅙󠅟󠄜󠄐󠅅󠅃󠅬󠅅󠅃󠄵󠅂󠄪󠇖󠆨󠆨󠇕󠆞󠆒󠅬󠅄󠄹󠄽󠄵󠄪󠄢󠄠󠄢󠄦󠄝󠄠󠄥󠄝󠄠󠄦󠄐󠄡󠄩󠄪󠄣󠄢󠄪󠄤󠄦󠅬󠇕󠆁󠅶󠇗󠆚󠆍󠇔󠆪󠆁󠄐󠄝󠄐󠇔󠆨󠅽󠇖󠆈󠅾󠇖󠅹󠅰󠇔󠆫󠆕󠇕󠆁󠅶󠄐󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄐󠇗󠅹󠅸󠇖󠆍󠅳󠇖󠅹󠅰󠇖󠆌󠅹󠅬󠅅󠅂󠄼󠄪󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄣󠄡󠄨 + 数量输入 + 原因选择)
- 5 种预设原因 + 自定义输入
- 操作日志记录(30天/100条)+󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄧󠄞󠄡󠄤󠄢󠅬󠄼󠄿󠄳󠄱󠅄󠄹󠄿󠄾󠄪󠄳󠅟󠅜󠅥󠅝󠅒󠅥󠅣󠄜󠄐󠄿󠅘󠅙󠅟󠄜󠄐󠅅󠅃󠅬󠅅󠅃󠄵󠅂󠄪󠇖󠆨󠆨󠇕󠆞󠆒󠅬󠅄󠄹󠄽󠄵󠄪󠄢󠄠󠄢󠄦󠄝󠄠󠄥󠄝󠄠󠄦󠄐󠄡󠄩󠄪󠄣󠄢󠄪󠄤󠄦󠅬󠇕󠆁󠅶󠇗󠆚󠆍󠇔󠆪󠆁󠄐󠄝󠄐󠇔󠆨󠅽󠇖󠆈󠅾󠇖󠅹󠅰󠇔󠆫󠆕󠇕󠆁󠅶󠄐󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄐󠇗󠅹󠅸󠇖󠆍󠅳󠇖󠅹󠅰󠇖󠆌󠅹󠅬󠅅󠅂󠄼󠄪󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄣󠄡󠄨 邮件通知
- 权限控制(administrator / manage_sho󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄧󠄞󠄡󠄤󠄢󠅬󠄼󠄿󠄳󠄱󠅄󠄹󠄿󠄾󠄪󠄳󠅟󠅜󠅥󠅝󠅒󠅥󠅣󠄜󠄐󠄿󠅘󠅙󠅟󠄜󠄐󠅅󠅃󠅬󠅅󠅃󠄵󠅂󠄪󠇖󠆨󠆨󠇕󠆞󠆒󠅬󠅄󠄹󠄽󠄵󠄪󠄢󠄠󠄢󠄦󠄝󠄠󠄥󠄝󠄠󠄦󠄐󠄡󠄩󠄪󠄣󠄢󠄪󠄤󠄦󠅬󠇕󠆁󠅶󠇗󠆚󠆍󠇔󠆪󠆁󠄐󠄝󠄐󠇔󠆨󠅽󠇖󠆈󠅾󠇖󠅹󠅰󠇔󠆫󠆕󠇕󠆁󠅶󠄐󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄐󠇗󠅹󠅸󠇖󠆍󠅳󠇖󠅹󠅰󠇖󠆌󠅹󠅬󠅅󠅂󠄼󠄪󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄣󠄡󠄨p_orders)
二、文件变更总览
| # | 文件路径 | 变更类型 | 新增行数 | 关键内容 |
|---|---|---|---|---|
| 1 | inc/functions/shop/admin/options/meta-option.php | 修改 | +110 | API发货配置字段(7个) + 变量说明表 |
| 2 | inc/functions/shop/inc/shipping.php | 修改 | +520 | 10个后端函数(API发货7个 + 补单3个) |
| 3 | zibpay/page/template/order.php | 修改 | +4 | 待发货/已发货区各加1个补单按钮 |
| 4 | zibpay/page/template/shipping.php | 修改 | +16 | vue_data 新增 reorder_dialog 数据 |
| 5 | zibpay/page/template/shipping-dialog.php | 修改 | +66 | 补单弹窗 el-dialog UI |
| 6 | zibpay/assets/js/admin-page.js | 修改 | +76 | showReorderDialog + reorderSubmit 方法 |
| 7 | zibpay/assets/js/admin-page.min.js | 修改 | 同步 | 压缩版同步更新 |
| 8 | zibpay/functions/admin/admin-ajax.php | 修改 | +34 | admin_reorder_submit AJAX处理 + is_api_delivery字段 |
| 9 | apics.php (根目录) | 新增 | ~600 | API测试服务端 |
三、meta-option.php — 商品配置UI
文件位置
wp-content/themes/zibll/inc/functions/shop/admin/options/meta-option.php3.1 在 auto_delivery button_set 中添加 “API发货” 选项
位置: 第 316 行
3.2 新增 API 配置字段组(依赖 type == ‘api’)
位置: 第 319-421 行
四、shipping.php — 核心后端逻辑(完整源码)
文件位置
wp-content/themes/zibll/inc/functions/shop/inc/shipping.php4.1 修改点A: delivery_type 名称映射
位置: 第 540 行
4.2 修改点B: auto_delivery switch 增加 case ‘api’
位置: 第 59 行附近 (zib_shop_get_auto_delivery_content 函数内)
4.3 新增函数1: zib_shop_get_auto_delivery_api_content() — API发货主入口
位置: 第 550-643 行
4.4 新增函数2: zib_shop_api_replace_variables() — 变量替换引擎
位置: 第 645-656 行
4.5 新增函数3: zib_shop_send_api_request() — HTTP 请求封装
位置: 第 658-713 行
4.6 新增函数4: zib_shop_check_api_response_success() — 成功条件判断
位置: 第 715-737 行
4.7 新增函数5: zib_shop_update_order_api_shipping_status() — 状态更新
位置: 第 739-765 行
4.8 新增函数6: zib_shop_api_shipping_notify_admin() — API发货邮件通知
位置: 第 767-808 行
4.9 新增函数7: zib_shop_log_api_shipping_error() — 错误日志
位置: 第 810-832 行
4.10 新增函数8: zib_shop_process_reorder() — 补单核心处理 ⭐
位置: 第 834-984 行 (这是最核心的函数之一)
4.11 新增函数9: zib_shop_log_reorder_operation() — 补单操作日志
位置: 第 986-1016 行
4.12 新增函数10: zib_shop_reorder_notify_admin() — 补单邮件通知
位置: 第 1018-1076 行
五、order.php — 订单列表补单按钮
文件位置
zibpay/page/template/order.php5.1 修改点1: 待发货区域 — “立即发货”旁添加”补单”按钮
位置: 第 422-424 行
5.2 修改点2: 已发货区域 — 添加”补单”按钮
位置: 第 430-433 行
六、shipping.php(模板) — Vue数据初始化
文件位置
zibpay/page/template/shipping.php修改位置: batch_shipping_dialog_data 之后
位置: 第 117-131 行
七、shipping-dialog.php — 弹窗UI
文件位置
zibpay/page/template/shipping-dialog.php7.1 修改点1: 物流详情抽屉中添加补单按钮
位置: 第 434-435 行 (details_drawer 内)
7.2 新增: 补单弹窗完整 HTML
位置: 第 548-609 行 (el-drawer 结束标签之后)
八、admin-page.js — 前端JS
文件位置
zibpay/assets/js/admin-page.js8.1 修改点1: loading 对象新增 reorder_submit_but
位置: 第 64 行 loading 对象内
8.2 新增方法1: showReorderDialog(row)
位置:第 665 – 696行 showShippingDialog 方法之后
8.3 新增方法2: reorderSubmit()
位置: showReorderDialog 方法之后
九、admin-page.js — 前端JS
文件位置
zibpay/assets/js/admin-page.min.js9.1 修改点1
十、admin-ajax.php — AJAX处理与权限控制
文件位置
zibpay/functions/admin/admin-ajax.php10.1 修改点1: 订单列表增加 is_api_delivery 字段
位置: 第 802-804 行 (admin_shipping_table_list 函数内)
10.2 新增: admin_reorder_submit AJAX 处理函数
位置: 第 339-371 行
十一、apics.php — API测试接口
文件位置
/apics.php (网站根目录)用途
开发和测试阶段的模拟 API 服务端,用于接收 Zibll 发送的 API 发货/补单󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄧󠄞󠄡󠄤󠄢󠅬󠄼󠄿󠄳󠄱󠅄󠄹󠄿󠄾󠄪󠄳󠅟󠅜󠅥󠅝󠅒󠅥󠅣󠄜󠄐󠄿󠅘󠅙󠅟󠄜󠄐󠅅󠅃󠅬󠅅󠅃󠄵󠅂󠄪󠇖󠆨󠆨󠇕󠆞󠆒󠅬󠅄󠄹󠄽󠄵󠄪󠄢󠄠󠄢󠄦󠄝󠄠󠄥󠄝󠄠󠄦󠄐󠄡󠄩󠄪󠄣󠄢󠄪󠄤󠄦󠅬󠇕󠆁󠅶󠇗󠆚󠆍󠇔󠆪󠆁󠄐󠄝󠄐󠇔󠆨󠅽󠇖󠆈󠅾󠇖󠅹󠅰󠇔󠆫󠆕󠇕󠆁󠅶󠄐󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄐󠇗󠅹󠅸󠇖󠆍󠅳󠇖󠅹󠅰󠇖󠆌󠅹󠅬󠅅󠅂󠄼󠄪󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄣󠄡󠄨请求。
工作模式
| URL 参数 | 行为 |
|---|---|
| (无参数) | 默认返回成功 ({"status":"success","code":200}) |
?mode=success | 同上 |
?mode=fail | 返回错误 (HTTP 400/422/500/504) |
?mode=fail&error_type=insufficient_stock | 库存不足 (400) |
?mode=fail&error_type=invalid_param | 参数无效 (422) |
?mode=fail&error_type=server_error | 服务器错误 (500) |
?mode=fail&error_type=timeout | 网关超时 (504) |
?mode=echo | 原样回显所有收到的数据 |
?mode=random | 随机返回成功或失败 |
管理后台
访问 https://你的域名/apics.php?admin=1
默认密码: dwoyun2026
日志存储
/api-cs-logs.json (最多100条)十二、数据流与交互流程图
12.1 补单完整流程
┌──────────────────────────────────────────────────────────────┐
│ 用户操作流程 │
├──────────────────────────────────────────────────────────────┤
│ │
│ [订单列表页] │
│ │ │
│ ├── status==0 (待发货) ──→ [立即发货][★补单] │
│ │ ↑ │
│ │ is_api_delivery=true │
│ │ │
│ └── status==1 (已发货) ──→ [物流信息][★补单] │
│ ↑ │
│ is_api_delivery=true │
│ │
│ 点击 [补单] │
│ │ │
│ ▼ │
│ showReorderDialog(row) │
│ │ │
│ ├── 校验 delivery_type=='api' || is_api_delivery │
│ ├── 校验 status==1 || status==-1 │
│ ├── 填充 reorder_dialog_data │
│ └── 显示 el-dialog 弹窗 │
│ │
│ [补单弹窗] │
│ │ │
│ ├── ⚠️ 警告提示 │
│ ├── 📦 商品信息卡片 │
│ ├── 📊 原订单数量 (只读) │
│ ├── 🔢 补单数量 (el-input-number, 1~9999) │
│ ├── 📝 原因选择 (5种预设 + 自定义) │
│ ├── 💬 备注输入 │
│ └── [取消] [确认补单] │
│ │
│ 点击 [确认补单] │
│ │ │
│ ▼ │
│ reorderSubmit() │
│ │ │
│ ├── 前端验证: 原因/数量 │
│ ├── 构建 ajax_data │
│ ├── loading.reorder_submit_but = true │
│ └── AJAX → admin_reorder_submit │
│ │
└──────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ 后端处理流程 │
├──────────────────────────────────────────────────────────────┤
│ │
│ admin-ajax.php: zibpay_ajax_admin_reorder_submit() │
│ │ │
│ ├── current_user_can() 权限检查 │
│ ├── 参数清洗 & 范围校验 │
│ └── 调用 zib_shop_process_reorder() │
│ │
│ shipping.php: zib_shop_process_reorder() │
│ │ │
│ ├── ① 获取订单对象 │
│ ├── ② 校验 delivery_type=='api' │
│ ├── ③ 读取商品 API 配置 │
│ ├── ④ 构建变量表 ([num]=reorder_count) │
│ ├── ⑤ 变量替换 URL + POST data │
│ ├── ⑥ 发送 HTTP 请求 (wp_remote_request) │
│ │ │
│ ├── ⑦ 判断 API 响应是否成功 │
│ │ │ │
│ │ ┌────┴────┐ │
│ │ ↓ ↓ │
│ │ 成功 失败 │
│ │ │ │ │
│ │ ▼ ▼ │
│ │ 更新 记录日志 │
│ │ shipping_ zib_shop_log_ │
│ │ data reorder_operation │
│ │ + │
│ │ 写入 发邮件 │
│ │ reorder_ zib_shop_reorder_ │
│ │ records notify_admin │
│ │ + │
│ │ 更新订单 返回 failure │
│ │ 状态=已发 │
│ │ 货 │
│ │ │ │ │
│ │ ▼ ▼ │
│ │ 记录日志 返回 success/failure │
│ │ + 发邮件 到前端 │
│ │ │
│ └─────────────────────────────────────────────────────────│
│ │
│ 响应回到前端: │
│ ├── success → 关闭弹窗 + refreshTheTableList() │
│ └── failure → 显示 ElementPlus.ElNotification 错误提示 │
│ │
└──────────────────────────────────────────────────────────────┘12.2 错误传播链
API 请求异常 (网络超时/DNS失败/SSL错误等)
│
▼
wp_remote_request() 抛出 WP_Error
│
▼
zib_shop_send_api_request() 捕获 → return ['success'=>false, 'error_message'=>'...']
│
▼
zib_shop_process_reorder() 进入 else 分支
│
├─→ zib_shop_log_reorder_operation(..., 'failed', operator, error_msg)
│ │
│ └─→ 写入 Transient: zib_shop_reorder_operation_logs
│ └─→ 写入 WordPress error_log: [ZibShop Reorder]
│
├─→ zib_shop_reorder_notify_admin(..., false, error_msg)
│ │
│ └─→ wp_mail() → 发送失败通知邮件给管理员
│
└─→ return ['success'=>false, 'message'=>'补单失败:...']
│
▼
zibpay_ajax_admin_reorder_submit() → zib_send_json_error(message)
│
▼
前端 ElNotification.error(message) 显示给用户十三、调试排错指南
13.1 常见问题速查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 补单按钮不显示 | 商品未设为API类型 | 后台编辑商品 → 自动发货 → 选「API发货」 |
| 补单按钮不显示(历史订单) | delivery_type 为 NULL | 已修复: is_api_delivery 兼容判断 |
showReorderDialog is not a function | 只改了 .js 未改 .min.js | 同步更新 admin-page.min.js |
您没有补单操作权限 | 当前用户权限不足 | 使用 administrator 或添加 manage_shop_orders 能力 |
非API发货类型,无法补单 | 商品 auto_delivery.type != api | 检查商品后台配置 |
| API 发货一直失败 | 成功条件不匹配 | 检查 api_success_condition 配置 |
| API 请求超时 | 接口响应慢 | 默认30秒超时,可在代码中调整 |
13.2 数据库查询调试
// 查看 order 28 的完整 shipping_data
require "wp-load.php";
$m = zibpay::get_meta(28, "order_data");
print_r($m["shipping_data"]);
// 查看商品 310 的 API 配置
$c = zib_shop_get_product_config(310, "auto_delivery");
print_r($c);
// 查看 Transient 日志
print_r(get_transient("zib_shop_reorder_operation_logs"));
print_r(get_transient("zib_shop_api_shipping_errors"));13.3 测试检查清单
- 商品后󠄹󠅀󠄪󠄢󠄡󠄦󠄞󠄧󠄣󠄞󠄢󠄡󠄧󠄞󠄡󠄤󠄢󠅬󠄼󠄿󠄳󠄱󠅄󠄹󠄿󠄾󠄪󠄳󠅟󠅜󠅥󠅝󠅒󠅥󠅣󠄜󠄐󠄿󠅘󠅙󠅟󠄜󠄐󠅅󠅃󠅬󠅅󠅃󠄵󠅂󠄪󠇖󠆨󠆨󠇕󠆞󠆒󠅬󠅄󠄹󠄽󠄵󠄪󠄢󠄠󠄢󠄦󠄝󠄠󠄥󠄝󠄠󠄦󠄐󠄡󠄩󠄪󠄣󠄢󠄪󠄤󠄦󠅬󠇕󠆁󠅶󠇗󠆚󠆍󠇔󠆪󠆁󠄐󠄝󠄐󠇔󠆨󠅽󠇖󠆈󠅾󠇖󠅹󠅰󠇔󠆫󠆕󠇕󠆁󠅶󠄐󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄐󠇗󠅹󠅸󠇖󠆍󠅳󠇖󠅹󠅰󠇖󠆌󠅹󠅬󠅅󠅂󠄼󠄪󠅘󠅤󠅤󠅠󠅣󠄪󠄟󠄟󠅔󠅧󠅟󠅩󠅥󠅞󠄞󠅓󠅟󠅝󠄟󠄣󠄡󠄨台能正确配置 API 发货选项(URL、POST数据、成功条件)
- 创建测试订单,支付后触发 API 发货
- 检查
shipping_data.api_shipping_status更新正确 - 检查管理员收到发货结果邮件
- 订单列表看到黄色「补单」按钮
- 点击补单弹出对话框,信息填充正确
- 修改数量、选择原因、点击确认
- 成功后弹窗关闭、列表刷新
reorder_records有新记录- 管理员收到补单结果邮件
- 无权限用户看不到补单按钮
- 各种异常都有友好提示
附录: 完整函数索引
API 发货相关 (7个)
| 函数名 | 文件 | 行号 | 功能 |
|---|---|---|---|
zib_shop_get_auto_delivery_api_content() | shipping.php | 550-643 | API 发货主入口 |
zib_shop_api_replace_variables() | shipping.php | 645-656 | 变量替换 |
zib_shop_send_api_request() | shipping.php | 658-713 | HTTP 请求 |
zib_shop_check_api_response_success() | shipping.php | 715-737 | 成功判断 |
zib_shop_update_order_api_shipping_status() | shipping.php | 739-765 | 状态更新 |
zib_shop_api_shipping_notify_admin() | shipping.php | 767-808 | 邮件通知 |
zib_shop_log_api_shipping_error() | shipping.php | 810-832 | 错误日志 |
补单相关 (3个)
| 函数名 | 文件 | 行号 | 功能 |
|---|---|---|---|
zib_shop_process_reorder() | shipping.php | 834-984 | 补单核心处理 |
zib_shop_log_reorder_operation() | shipping.php | 986-1016 | 补单操作日志 |
zib_shop_reorder_notify_admin() | shipping.php | 1018-1076 | 补单邮件通知 |
AJAX 相关 (1个)
| 函数名 | 文件 | 行号 | 功能 |
|---|---|---|---|
zibpay_ajax_admin_reorder_submit() | admin-ajax.php | 339-371 | AJAX 入口+权限 |
前端 JS (2个)
| 方法名 | 文件 | 功能 |
|---|---|---|
showReorderDialog() | admin-page.js/.min.js | 打开补单弹窗 |
reorderSubmit() | admin-page.js/.min.js | 提交补单请求 |
演示图
![图片[1]-Zibll 商城 API 发货 & 补单功能 完整代码开发文档-呆窝云 - 不明所以呆](http://ts.dwoyun.com/wp/2026/05/a246035e0220260506035213.png)
![图片[2]-Zibll 商城 API 发货 & 补单功能 完整代码开发文档-呆窝云 - 不明所以呆](http://ts.dwoyun.com/wp/2026/05/3a9b565a3c20260506035228.png)
![图片[3]-Zibll 商城 API 发货 & 补单功能 完整代码开发文档-呆窝云 - 不明所以呆](http://ts.dwoyun.com/wp/2026/05/464e05631f20260506035349.png)
![图片[4]-Zibll 商城 API 发货 & 补单功能 完整代码开发文档-呆窝云 - 不明所以呆](http://ts.dwoyun.com/wp/2026/05/951b30365520260506035400.png)








暂无评论内容