рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рдЪрд▓реА рдЧрдИ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдореИрдВ рдЙрд╕ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрдм рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреА рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрддреНрдкрд╛рдж рдХреИрдЯрд▓реЙрдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ред
рдХрд╛рд░реНрдп
рдПрдХ рдЯреНрд░реЗрдбрд┐рдВрдЧ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИ рдЬреЛ WEB рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рдж рдЖрдзрд╛рд░ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рд╛рдЗрдЯ рдХреЗ рдкрд╛рд░реНрдЯрдирд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд┐рдХрд▓реНрдк
рд╣рдо рдЕрдкрдиреЗ рд╕рднреА рднрд╛рдЧреАрджрд╛рд░реЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╣рдо рдЙрдирдХреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рд╣рдорд╛рд░реЗ рднрд╛рдЧреАрджрд╛рд░реЛрдВ рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрддреНрдкрд╛рдж рд╕реВрдЪреА рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп, рдЙрдиреНрд╣реЗрдВ рд╕реАрдзреЗ рд╕реВрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдкреНрд░рддреНрдпреЗрдХ рдирдП рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЬреБрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рднрд╛рдЧреАрджрд╛рд░ рдиреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореЗрдВ рдХреБрдЫ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЕрддрд┐рд░рд┐рдХреНрдд рдЦрд░реНрдЪ рдФрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖реЗрддреНрд░ред
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕реЗ рддрдВрдЧ рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░реЗрдВрдЧреЗред
рдЖрдЗрдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ "рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ" рдкреИрдЯрд░реНрди рд▓реЗрдВред рд╣рдорд╛рд░реЗ рд╕рд╣рдпреЛрдЧреА рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдХрд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рднрдВрдбрд╛рд░рдг рдХрд╛ рдкреНрд░рдХрд╛рд░ рдмрдирд╛ рд░рд╣реЗрдЧрд╛ред рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ред рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреА рдШрдЯрдирд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рд╕рднреА рдХреЛ рдЕрд▓рд░реНрдЯ рди рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рд╕рдиреЗ рдХреНрдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
- URL. . HTTP- URL. , .
- . , ( , , ). , . - . .
, PHP.
, POST- URL. , b2b.api.my-soft.ru/event-subscription. URL event( ).
( Laravel):
public function subscribe()
{
$request = $this->getRequest();
$eventName = $request->input('event');
$url = $request->input('callback');
$validator = \Validator::make([
'url' => $url,
'event' => $eventName
], [
'url' => 'url|required',
'event' => 'required'
]);
if ($validator->fails()) {
throw new BadRequestHttpException($validator->errors()->first());
}
$repository = $this->getRepository();
if (!$repository->eventAvailable($eventName)) {
throw new BadRequestHttpException(trans('api.error.eventSubscription.wrongEvent'));
}
if (!$repository->canAddEvent($eventName)) {
throw new BadRequestHttpException(trans('api.error.eventSubscription.maxCallbacks'));
}
$model = $repository->createModel([
'client_id' => $request->attributes->get('client')->id,
'event' => $eventName,
'url' => $url
]);
if ($repository->save($model)) {
return $this->response($model);
}
throw new \Exception();
}
:
.
. , . , .. . .
, , .
.
, , . , , .
, . .
$subscribersRepository->with(['event' => $event->getEventName()])->getActive()->each(function ($model) use ($event) {
$this->dispatch(new \Commands\RemoteCallback(
$model->id,
$model->url,
$event->getData()->toArray()
));
});
.
RemoteCallback :
public function handle(EventSubscriptionRepository $subscriptionRepository)
{
$client = new \Guzzle\Http\Client();
$res = $client->post($this->url, [], $this->data, ['connect_timeout' => 3, 'timeout' => 3]);
try {
if ($res->send()->getStatusCode() !== 200) {
throw new \Exception();
}
$subscriptionRepository->dropErrors($this->subscriptionId);
} catch (\Exception $e) {
$subscriptionRepository->incrementError($this->subscriptionId);
}
}
. POST- URL. , , .
. . HTTP != 200, . , 3 3 . , .
рд╕рджрд╕реНрдпрддрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рдЗрд╕ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ (canAddEvent рд╡рд┐рдзрд┐)ред рдпрд╣ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕реАрдорд╛ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП 3 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдРрд╕реЗ рдПрдкреАрдЖрдИ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╡рд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рд╣реИред рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк SOAP рдпрд╛ рд╕реЙрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢ рдХреЛ рдлрд┐рд░ рд╕реЗ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрджрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдлрд▓ рдирд╣реАрдВ рдереАред