136 lines
4.2 KiB
PHP
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";
|