Files
zyt/server/test_logistics.php
T
2026-04-07 18:13:03 +08:00

136 lines
4.2 KiB
PHP

<?php
/**
* 物流查询测试脚本
*
* 使用方法:
* php test_logistics.php
*
* 功能:
* 1. 测试快递100配置是否正确
* 2. 测试顺丰和京东快递查询
* 3. 生成官网查询链接
*/
require __DIR__ . '/vendor/autoload.php';
use app\common\service\ExpressTrackService;
echo "===========================================\n";
echo "物流查询测试脚本\n";
echo "===========================================\n\n";
// 测试运单号(请替换为真实运单号)
$testCases = [
[
'company' => 'sf',
'number' => 'SF1234567890',
'phone' => '13800138000',
'label' => '顺丰速运'
],
[
'company' => 'jd',
'number' => 'JD1234567890',
'phone' => '13800138000',
'label' => '京东快递'
],
];
echo "1. 检查快递100配置\n";
echo "-------------------------------------------\n";
$config = \think\facade\Config::get('logistics.kuaidi100', []);
$enabled = !empty($config['enable']);
$customer = $config['customer'] ?? '';
$key = $config['key'] ?? '';
if ($enabled && $customer !== '' && $key !== '') {
echo "✓ 快递100已配置\n";
echo " Customer: " . substr($customer, 0, 4) . "****\n";
echo " Key: " . substr($key, 0, 4) . "****\n";
} else {
echo "✗ 快递100未配置或已关闭\n";
echo " 提示:请在 .env 文件中配置 LOGISTICS_KUAIDI100_CUSTOMER 和 LOGISTICS_KUAIDI100_KEY\n";
}
echo "\n2. 测试官网查询链接生成\n";
echo "-------------------------------------------\n";
foreach ($testCases as $case) {
echo "\n{$case['label']} ({$case['number']}):\n";
$urls = ExpressTrackService::officialUrls($case['number']);
echo " 顺丰官网: {$urls['sf']}\n";
echo " 京东官网: {$urls['jd']}\n";
}
echo "\n3. 测试快递查询(需要真实运单号)\n";
echo "-------------------------------------------\n";
if (!$enabled) {
echo "✗ 跳过:快递100未配置\n";
echo " 提示:配置后可测试实时查询功能\n";
} else {
echo "提示:请将上面的测试运单号替换为真实运单号后再测试\n";
echo "是否继续测试?(y/n): ";
$handle = fopen("php://stdin", "r");
$line = fgets($handle);
fclose($handle);
if (trim($line) === 'y') {
foreach ($testCases as $case) {
echo "\n测试 {$case['label']} ({$case['number']}):\n";
try {
$result = ExpressTrackService::query(
$case['company'],
$case['number'],
$case['phone']
);
echo " 承运商: {$result['carrier_label']}\n";
echo " 状态: {$result['state_text']}\n";
echo " 数据源: {$result['source']}\n";
if (!empty($result['hint'])) {
echo " 提示: {$result['hint']}\n";
}
if (!empty($result['traces'])) {
echo " 轨迹节点数: " . count($result['traces']) . "\n";
echo " 最新轨迹: {$result['traces'][0]['time']} - {$result['traces'][0]['context']}\n";
} else {
echo " 轨迹: 暂无\n";
}
} catch (\Exception $e) {
echo " ✗ 查询失败: {$e->getMessage()}\n";
}
}
} else {
echo "已跳过实时查询测试\n";
}
}
echo "\n===========================================\n";
echo "测试完成\n";
echo "===========================================\n\n";
echo "故障排查提示:\n";
echo "1. 如果顺丰查询失败,请确认:\n";
echo " - 运单号格式正确(通常以SF开头)\n";
echo " - 收件人手机号后4位正确\n";
echo " - 快递已揽收\n\n";
echo "2. 如果京东查询失败,请确认:\n";
echo " - 运单号格式正确(通常以JD开头)\n";
echo " - 快递已揽收\n\n";
echo "3. 如果快递100返回错误,请检查:\n";
echo " - Customer 和 Key 是否正确\n";
echo " - 账户余额是否充足\n";
echo " - 网络连接是否正常\n\n";
echo "更多帮助请查看:LOGISTICS_INTEGRATION_GUIDE.md\n";