Толук иш жүрүшү · Жол башчылары
Веб-хок жана иш-чараларга негизделген интеграция
Чыгуучу веб-чатак орнотуу, коопсуз кабыл алуучу, дубликат коргоо жана API аркылуу жоголгон окуяларды калыбына келтирүү.
Веб-хоктор өзгөрүүлөрдүн кечиктирүүсүн азайтат, бирок чындыктын булагын алмаштырышпайт.
Иш-чараларга негизделген интеграциялар жана арткы чегиндеги кызматтар1
Окуяларды жана менчик укуктарын аныктоо
Жаңы же өзгөртүлгөн буйрук, запас өзгөрүшү же баа өзгөрүшү сыяктуу бир иш-чарадан баштоо. Ар бир иш чара үчүн маалыматтардын ээси жана алуучунун аракетин аныктоо.
Негизги веб-хок жүктөрүн нормалдаштырылган моделден бөлүп, чектелген убакытка сактаңыз.
Жаңы тандоо талаасы белгилүү окуялар структурасынын талдоону бузууга тийиш эмес.
API менен байланышкан чектөөлөр
POST/api/webhook/Веб-чатак түзүүGET/api/webhook/Веб- кутуча орнотууларын тизмелөө
2
HTTP кабыл алуучусун орнотуу
- 1
Суроону чектөө
Тек гана талап кылынган ыкмаларды жана мазмун түрлөрүн кабыл ал, дене өлчөмүнүн чегин күчөт жана кыска убакыттан кийин окууга убакыт бөл.
- 2
Чыгарманы текшерүү
X-SelSup-Signature текшерүү үчүн веб-хауктын ар бир кол тамгасы менен Сактык: HMAC-SHA256 ASCII(t + "." + id + ".") жана чийки дене байттери менен.
- 3
Иш-чара улантылсын
Пайдалуу жүктү жана дедупликация ачкычын бир транзакцияга сактоо, андан кийин тез арада ийгиликтүү жооп кайтаруу.
- 4
Процесс асинхрондук
ЭРП, WMS жана башка системаларды HTTP өтүнүчүнүн ордуна кезектен чалуу.
Тез жооп берүү убакыттын өтүшү жана эки жолу жеткирүү коркунучун жогорулатат.
const crypto = require('node:crypto');
const signingSecret = process.env.SELSUP_WEBHOOK_SECRET;
// Register this route before express.json() so req.body is a Buffer.
app.post('/selsup/events', express.raw({type: 'application/json'}), async (req, res) => {
const header = req.get('X-SelSup-Signature') || '';
const match = /^t=(\d+),id=([0-9a-f-]{36}),v1=([0-9a-f]{64})$/.exec(header);
if (!match) return res.sendStatus(401);
const [, timestamp, deliveryId, hex] = match;
if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return res.sendStatus(401);
const signed = Buffer.concat([
Buffer.from(`${timestamp}.${deliveryId}.`, 'ascii'), req.body
]);
const expected = crypto.createHmac('sha256', Buffer.from(signingSecret, 'hex'))
.update(signed).digest();
const actual = Buffer.from(hex, 'hex');
if (actual.length !== expected.length || !crypto.timingSafeEqual(actual, expected)) {
return res.sendStatus(401);
}
const inserted = await inbox.insertOnce(deliveryId, req.body);
return res.sendStatus(inserted ? 202 : 200);
});
3
Дубликат, тартип жана дедубликат
Дубликат берүү нормалдуу түрдө колдонулат. Бар болгондо туруктуу окуяны идентификаторду колдонуңуз; болбосо ачкычты субъекттин түрүнөн, субъекттин идентификаторунан, өзгөртүү убактысынан жана маанилуу маалыматтардын хэшинен алыңыз.
Окуялар тартипте болбошу мүмкүн. API аркылуу учурдагы түзүлүштү жазуудан мурун өзгөртүлгөн датаны салыштыруу же кайра жүктөө.
Иш-чаранын ийгиликтүү абалын кайтаруу. Болбосо жөнөтүүчү аяктаган ишти кайра аракет кыла берет.
Өзгөчө окуялар ачкычы, абалы жана аракет саноосу менен кирген окуялар таблицасы дедупликацияны, ойнотууну жана аудитти жөнөкөйлөтөт.
4
Калган окуяларды калыбына келтирүү
Убактылуу API шайкештигин иштеп чыгуу, ал тургай, веб-хоуктар ден-соолукка пайдалуу.
Алуучунун өчүрүлгөндөн кийин, кире турган кутучаны агызыңыз жана толук өчүрүү терезеси үчүн өзгөртүүлөрдү өтүнүңүз.
API менен байланышкан чектөөлөр
GET/api/order/findТоктомдун өзгөрүүлөрүн калыбына келтирүүGET/api/wms/stock/findАкциялык өзгөрүүлөрдү шайкештирүү
5
Веб- кучактагы жашоо циклин башкаруу
Активдүү URL, иш-чаранын түрү, акыркы ийгиликтүү кабыл алуу жана интеграцияңыздагы акыркы error көрсөтүңүз. Бул түздөн-түз серверге кирүүсүз диагноз коюуга мүмкүндүк берет.
URLди алмаштыруудан же жок кылуудан мурун жаңы кабыл алуучу окуяларды кабыл алганын текшериңиз.
API менен байланышкан чектөөлөр
GET/api/webhook/Конфигурацияланган веб- кутучаларды карап чыгууDELETE/api/webhook/{webhookId}Веб-чатактарды өчүрүү