|
|
vor 7 Monaten | |
|---|---|---|
| .. | ||
| Urs | vor 7 Monaten | |
| README.md | vor 7 Monaten | |
此目录用于存放第三方服务对接包,每个包都遵循ThirdParty模块的标准化规范。
ThirdParty/
├── README.md # 本说明文件
├── Urs/ # URS包示例
│ ├── UrsRequest.php # URS请求类
│ ├── UrsWebhook.php # URS Webhook处理器
│ └── UrsServiceProvider.php # URS服务提供者
└── [其他包]/ # 其他第三方服务包
ThirdParty\{包名} 命名空间Urs、Alipay、Wechat每个包至少包含以下文件:
{包名}Request.php)App\Module\ThirdParty\Services\BaseRequesthandler(array $params): array 方法{包名}Webhook.php)App\Module\ThirdParty\Services\BaseWebhookhandler(string $action, Request $request): array 方法{包名}ServiceProvider.php)Illuminate\Support\ServiceProviderboot() 方法中注册Webhook处理器thirdparty_services 表中注册服务配置config 字段中(JSON格式)<?php
namespace ThirdParty\YourPackage;
use App\Module\ThirdParty\Services\BaseRequest;
class YourPackageRequest extends BaseRequest
{
public function __construct()
{
parent::__construct('your_package'); // 服务代码
}
protected function handler(array $params): array
{
// 实现具体的请求逻辑
$config = $this->getConfig();
// ... 业务逻辑
return $result;
}
}
<?php
namespace ThirdParty\YourPackage;
use App\Module\ThirdParty\Services\BaseWebhook;
use Illuminate\Http\Request;
class YourPackageWebhook extends BaseWebhook
{
public function __construct(Request $request)
{
parent::__construct('your_package', $request);
}
protected function handler(string $action, Request $request): array
{
// 实现具体的Webhook处理逻辑
switch ($action) {
case 'notify':
return $this->handleNotify($request);
// ... 其他操作
}
}
}
<?php
namespace ThirdParty\YourPackage;
use Illuminate\Support\ServiceProvider;
use App\Module\ThirdParty\Services\WebhookDispatchService;
class YourPackageServiceProvider extends ServiceProvider
{
public function boot()
{
WebhookDispatchService::registerPackageHandlers('your_package', [
'notify' => YourPackageWebhook::class,
// ... 其他处理器
]);
}
}
{
"autoload": {
"psr-4": {
"ThirdParty\\YourPackage\\": "ThirdParty/YourPackage/"
}
}
}
'providers' => [
// ...
ThirdParty\YourPackage\YourPackageServiceProvider::class,
],
INSERT INTO `kku_thirdparty_services` (
`name`, `code`, `type`, `provider`, `description`,
`base_url`, `auth_type`, `status`, `config`
) VALUES (
'您的服务名称', 'your_package', 'CUSTOM', 'YOUR_PROVIDER', '服务描述',
'https://api.yourservice.com', 'API_KEY', 'ACTIVE',
JSON_OBJECT(
'api_url', 'https://api.yourservice.com',
'app_id', 'your_app_id',
'app_secret', 'your_app_secret'
)
);
所有Webhook请求都通过以下路由格式访问:
POST /thirdParty/webhook/{包名}/{处理器路由}
例如:
/thirdParty/webhook/urs/register - URS注册通知/thirdParty/webhook/alipay/notify - 支付宝支付通知/thirdParty/webhook/wechat/callback - 微信回调所有包的请求和Webhook处理都会自动记录到 thirdparty_logs 表中,可以通过后台管理界面查看:
如有问题,请参考:
app/Module/ThirdParty/Docs/基础架构使用示例.md - 详细使用示例app/Module/ThirdParty/Docs/第三方包.md - 规范说明app/Module/ThirdParty/README.md - 模块文档