Callback

ВСхнология Callbacks

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Callback ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ свСдСний ΠΎ Π·Π°ΠΊΠ°Π·Π΅ ΠΈΠ»ΠΈ статичных Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Ρƒ, пассаТиру, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈ Π΄Ρ€.Β Β 

Настройка

Π Π°Π·Π΄Π΅Π» настройки Callback находится Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "Настройки - Настройки Callbacks":

ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Callback осущСствляСтся ΠΏΠΎΒ HTTPΒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈΒ GETΒ ΠΈΠ»ΠΈΒ POST. Π’Π΅Π»ΠΎ сообщСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любой Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ значСния ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π° мСсто ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²-Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅Π»Π΅ΠΉ:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΒ Callback – Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΒ Callback;

  • АдрСс Callback – URL получатСля сообщСний (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€);

  • CallbackΒ HTTPΒ Headers – список Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²Β HTTP:

Accept-Encoding: gzip,deflate

Content-Type: text/xml;charset=UTF-8

SOAPAction: http://sap.com/xi/WebService/soap1.1

User-Agent: Corteos

Cookie2: $Version=1

Authorization: Basic QsdfgSDGHFasdfSADFxaWM=

  • CallbackΒ method (POST/GET) – HTTP-ΠΌΠ΅Ρ‚ΠΎΠ΄ (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€). НСобходимо ввСсти β€œPOST” ΠΈΠ»ΠΈ β€œGET” Π±Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ;

  • CallbackΒ body – Ρ‚Π΅Π»ΠΎ сообщСния.

Callback ΠΏΠΎ статикС

MetaDictionaryOnReserveTypeDependency - MetaDictionaryOnReserveTypeDependency

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ xml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

<SimpleMetaDictionary> <id_Relation /> <Type>Relate</Type> <id_MetaDictionary>0</id_MetaDictionary> <id_RealMetaDictionary /> <id_MetaDictionaryType>0</id_MetaDictionaryType> <id_BindingType>0</id_BindingType> <Name /> <NameLatin /> <id_Group>0</id_Group> <Tag /> <SelectorMode>0</SelectorMode> <SequenceNumber>0</SequenceNumber> <ValidationRegex /> <ValidationText /> <ValidationTextLatin /> </SimpleMetaDictionary>



MetaDictionaryOnCodeDependency - MetaDictionaryOnCodeDependency

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ xml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

<SimpleMetaDictionary> <id_Relation /> <Type /> <id_MetaDictionary>0</id_MetaDictionary> <id_RealMetaDictionary /> <id_MetaDictionaryType>0</id_MetaDictionaryType> <id_BindingType>0</id_BindingType> <Name /> <NameLatin /> <id_Group>0</id_Group> <Tag /> <SelectorMode>0</SelectorMode> <SequenceNumber>0</SequenceNumber> <ValidationRegex /> <ValidationText /> <ValidationTextLatin /> </SimpleMetaDictionary>



MetaCodeOnCodeDependency - MetaCodeOnCodeDependency

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ xml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

<SimpleMetaCode> <id_MetaCode>0</id_MetaCode> <id_Relation /> <Type /> <Name /> <NameLatin /> <Tag /> <CodeValue /> <id_MetaDictionary>0</id_MetaDictionary> </SimpleMetaCode>



MetaCodeOnReserveTypeDependency - MetaCodeOnReserveTypeDependency

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ xml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:



MetaCodeOnOrganizationDependency - MetaCodeOnOrganizationDependency

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ xml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:



MetaDictionaryForOrganization - MetaDictionaryForOrganization

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ xml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:



MetaCodeForPerson - ΠŸΠ΅Ρ€ΡΠΎΠ½Π° - структурныС ΠΊΠΎΠ΄Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ xml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:



SimpleMetaDictionary - SimpleMetaDictionary

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ xml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:



SimpleMetaCode - SimpleMetaCode

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ xml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:



Person - ΠŸΠ΅Ρ€ΡΠΎΠ½Π° - Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (ЀИО, Π΄Π°Ρ‚Π° роТдСния)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ xml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:



MileCard - ΠŸΠ΅Ρ€ΡΠΎΠ½Π° - ΠΌΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ бонусныС ΠΊΠ°Ρ€Ρ‚Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ xml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:



Document - ΠŸΠ΅Ρ€ΡΠΎΠ½Π° - Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ xml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:



Contact - ΠŸΠ΅Ρ€ΡΠΎΠ½Π° - контактная информация

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ xml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:



Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сСбС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

  • @Type

    • Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°;

  • @Before

    • ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°;

  • @After

    • Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.



CallbackΒ  ΠΏΠΎΒ  Π·Π°ΠΊΠ°Π·Π°ΠΌ


CallbacksΒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡΒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ заказам для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… событий (@EventType):

  • Π·Π°ΠΊΠ°Π· создан (@EventType=NewOrder);

  • Π·Π°ΠΊΠ°Π· ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Β (выписан Π±ΠΈΠ»Π΅Ρ‚ ΠΈΠ»ΠΈ сформирован Π²Π°ΡƒΡ‡Π΅Ρ€) (@EventType=OrderTicketed);

  • Π·Π°ΠΊΠ°Π· ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ (@EventType=OrderCanceled);

  • Π² Π·Π°ΠΊΠ°Π· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π°ΠΉΠ» (@EventType=OrderPushStaticFile);

  • Ρƒ Π·Π°ΠΊΠ°Π·Π° измСнился статус (@EventType=OrderStateChanged);
    ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для ΠΎΡ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΠ³Π΄Π° статус "Π£ поставщика" мСняСтся Π½Π° "Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½" ΠΈΠ»ΠΈ "ΠžΡ‚ΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ" = "ΠžΡ‚ΠΌΠ΅Π½Π΅Π½";

  • Ρƒ Π·Π°ΠΊΠ°Π·Π° измСнилась ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ (@EventType=OrderPriceChanged);

  • Π² Π·Π°ΠΊΠ°Π· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π°ΠΉΠ» (@EventType = OrderPushStaticFile).

Π”Π°Π½Π½ΠΎΠ΅ callback-сообщСниС отправляСтся ΠΏΠΎ адрСсу, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π² настройках, Π² Ρ‚ΠΎΠΌ случаС, Ссли Π·Π°ΠΊΠ°Π· ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» свой статус.Β 

Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: ΠΏΡ€ΠΈ Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ любой услуги (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅Π»Π΅Ρ‚Π° Π² Π³ΠΎΡ€ΠΎΠ΄ Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³), сначала создаСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ€ΠΎΠ²ΠΊΠ° Π² статусС "Π§Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ" ΠΈ Π΄Π°Π»Π΅Π΅ Π² Π½Π΅Π΅ добавляСтся Π·Π°ΠΊΠ°Π· ΠΏΠΎ этой услугС (Ρ‚ΠΎΠΆΠ΅ Π² статусС "Π§Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊ").
Бронирования ΠΏΡ€ΠΈ этом Π½Π΅ происходит. По Ρ„Π°ΠΊΡ‚Ρƒ создания Π·Π°ΠΊΠ°Π·Π° ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ callback.

ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ callback.

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ бронирования Π±Ρ€ΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ всС услуги Π² ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅. ПослС проставлСния Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅, Ссли ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ,Β ΠΌΠΎΠΆΠ½ΠΎ пСрСвСсти ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ Π² "Чистовик".Β Π”Π°Π»Π΅Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ – Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΈΡΠ°Ρ‚ΡŒ всС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ услуги.Β 

На ΠΊΠ°ΠΆΠ΄ΡƒΡŽ смСну статуса Π·Π°ΠΊΠ°Π·Π° формируСтся callback.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΒ SOAPΒ ΠΈΠ»ΠΈΒ REST

  • ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ для сообщСния. Π’ 1-ΠΌ случаС Π² Ρ‚Π΅Π»Π΅ сообщСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ всю структуру SOAP-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Β β€“ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,Β 

Envelope,Β BodyΒ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. РСкомСндуСтся ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ тСстовоС сообщСниС ΠΊ своСму сСрвису ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈΒ SOAP UIΒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ структуру сообщСния.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌΒ callback:

  • @id_ReserveΒ β€“Β ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ систСмный Π½ΠΎΠΌΠ΅Ρ€ Π·Π°ΠΊΠ°Π·Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ событиС;

  • @id_ComplexReserve – идСнтификатор ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ;

  • @EventType – тип события (см. Π²Ρ‹ΡˆΠ΅ доступныС Ρ‚ΠΈΠΏΡ‹);

  • @ReserveState – тСкущСС состояниС Π·Π°ΠΊΠ°Π·Π°, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π°:

    • creating – создаСтся;

    • draft – чСрновик;

    • readyforissuance – готов ΠΊ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΡŽ;

    • inprocess – в ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅;

    • finished – выполнСн;

    • canceled – отмСнСн;

    • queued – оТидаСт Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π°Π³Π΅Π½Ρ‚Π°;

    • onconfirmation – у поставщика;

    • needswork – оТидаСт Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°;

    • errorΒ β€“Β ΠΎΡˆΠΈΠ±ΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°ΠΊΠ°Π·Π°.

  • @ComplexState – тСкущСС состояниС ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π°:

    • draft – чСрновик;

    • authorizing – идСт авторизация;

    • cleancopy – чистовик;

    • forexecution – на исполнСнии;

    • canceled – отмСнСна;

    • finishedΒ β€“Β Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°.

  • @EventDescription – тСкстовоС описаниС события;

  • @CallbackId – timestamp сСрвСра, сформированный Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСния.

____