Skip to content

Commit

Permalink
chore: improve README
Browse files Browse the repository at this point in the history
  • Loading branch information
kravetsone committed Jul 10, 2024
1 parent 47c5090 commit f2fb861
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 2 deletions.
57 changes: 57 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,69 @@ console.log(result);
### Фичи

- Генерируется исходя из **OpenAPI** спецификации
- Очень удобная работа с нотификацией (webhook) с умными фильтрами
- Имеет в себе [webhook адаптеры для самых популярных фреймворков](#поддерживаемые-webhook-адаптеры)
- Отличная документация кода с помощью **JSDoc** (сгенерировано из **OpenAPI**)
- Современная и **type-safe**
- 0 зависимостей
- Берёт работу с [подписью запроса](https://www.tbank.ru/kassa/dev/payments/index.html#section/Podpis-zaprosa) на себя
- [Есть на JSR](https://jsr.io/@kravets/t-kassa-api)

### Webhook

Пример использования webhook с фреймворком [Hono](https://hono.dev/)

```ts
import { Hono } from "hono";
import { TKassa, webhookHandler, filters } from "t-kassa-api";

const ткасса = new TKassa(process.env.TERMINAL_KEY, process.env.PASSWORD);

ткасса.on(
filters.and(
filters.equal("Status", "SUCCESS"),
filters.notNullable("RebillId")
),
(context) => {
// при этом типы понимают фильтры
}
);

const app = new Hono();

app.get("/", webhookHandler("hono"));
```

### Поддерживаемые webhook адаптеры

- [Elysia](https://elysiajs.com/)
- [Fastify](https://fastify.dev/)
- [Hono](https://hono.dev/)
- [Express](https://expressjs.com/)
- [Koa](https://koajs.com/)
- [node:http](https://nodejs.org/api/http.html)
- [Bun.serve](https://bun.sh/docs/api/http)
- [std/http (Deno.serve)](https://docs.deno.com/runtime/manual/runtime/http_server_apis#http-server-apis)

или любой другой фреймворк

```ts
// a non-existing framework for the example
import { App } from "some-http-framework";
import { TKassa } from "t-kassa-api";

const ткасса = new TKassa(process.env.TERMINAL_KEY, process.env.PASSWORD, {
server: "https://rest-api-test.tinkoff.ru",
});

const app = new App().post("/t-kassa", async (req) => {
// req.body must be json equivalent to Webhook notification body
await ткасса.emit(req.body);
});

app.listen(80);
```

### TODO:

- поддержать `application/x-www-form-urlencoded`
3 changes: 1 addition & 2 deletions examples/simple.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ const ткасса = new TKassa(
ткасса.on(
filters.and(
filters.equal("Status", "SUCCESS"),
filters.equal("ErrorCode", "1"),
filters.notNullable("FnNumber"),
filters.notNullable("RebillId"),
),
(context) => {
// ^?
Expand Down

0 comments on commit f2fb861

Please sign in to comment.