Zibll 商城 API 发货 & 补单功能 完整代码开发文档

适用主题: 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)

二、文件变更总览

#文件路径变更类型新增行数关键内容
1inc/functions/shop/admin/options/meta-option.php修改+110API发货配置字段(7个) + 变量说明表
2inc/functions/shop/inc/shipping.php修改+52010个后端函数(API发货7个 + 补单3个)
3zibpay/page/template/order.php修改+4待发货/已发货区各加1个补单按钮
4zibpay/page/template/shipping.php修改+16vue_data 新增 reorder_dialog 数据
5zibpay/page/template/shipping-dialog.php修改+66补单弹窗 el-dialog UI
6zibpay/assets/js/admin-page.js修改+76showReorderDialog + reorderSubmit 方法
7zibpay/assets/js/admin-page.min.js修改同步压缩版同步更新
8zibpay/functions/admin/admin-ajax.php修改+34admin_reorder_submit AJAX处理 + is_api_delivery字段
9apics.php (根目录)新增~600API测试服务端

三、meta-option.php — 商品配置UI

文件位置

wp-content/themes/zibll/inc/functions/shop/admin/options/meta-option.php

3.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.php

4.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.php

5.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.php

7.1 修改点1: 物流详情抽屉中添加补单按钮

位置: 第 434-435 行 (details_drawer 内)

7.2 新增: 补单弹窗完整 HTML

位置: 第 548-609 行 (el-drawer 结束标签之后)


八、admin-page.js — 前端JS

文件位置

zibpay/assets/js/admin-page.js

8.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.js

9.1 修改点1

十、admin-ajax.php — AJAX处理与权限控制

文件位置

zibpay/functions/admin/admin-ajax.php

10.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.php550-643API 发货主入口
zib_shop_api_replace_variables()shipping.php645-656变量替换
zib_shop_send_api_request()shipping.php658-713HTTP 请求
zib_shop_check_api_response_success()shipping.php715-737成功判断
zib_shop_update_order_api_shipping_status()shipping.php739-765状态更新
zib_shop_api_shipping_notify_admin()shipping.php767-808邮件通知
zib_shop_log_api_shipping_error()shipping.php810-832错误日志

补单相关 (3个)

函数名文件行号功能
zib_shop_process_reorder()shipping.php834-984补单核心处理
zib_shop_log_reorder_operation()shipping.php986-1016补单操作日志
zib_shop_reorder_notify_admin()shipping.php1018-1076补单邮件通知

AJAX 相关 (1个)

函数名文件行号功能
zibpay_ajax_admin_reorder_submit()admin-ajax.php339-371AJAX 入口+权限

前端 JS (2个)

方法名文件功能
showReorderDialog()admin-page.js/.min.js打开补单弹窗
reorderSubmit()admin-page.js/.min.js提交补单请求

演示图

图片[1]-Zibll 商城 API 发货 & 补单功能 完整代码开发文档-呆窝云 - 不明所以呆
图片[2]-Zibll 商城 API 发货 & 补单功能 完整代码开发文档-呆窝云 - 不明所以呆
图片[3]-Zibll 商城 API 发货 & 补单功能 完整代码开发文档-呆窝云 - 不明所以呆
图片[4]-Zibll 商城 API 发货 & 补单功能 完整代码开发文档-呆窝云 - 不明所以呆

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容