- خانه
- لاگ و مشاهدهپذیری
مفاهیم پایه
لاگ و مشاهدهپذیری
لاگر آرگومان دوم سازنده است و کاملاً اختیاری. UnoPay هرگز خودش console را صدا نمیزند.
import pino from 'pino';
import { UnoPay, ZarinpalAdapter } from 'unopay';
const log = pino({ name: 'payments' });
const unopay = new UnoPay(
{ zarinpal: new ZarinpalAdapter({ merchantId: process.env.ZARINPAL_MERCHANT_ID! }) },
{
// Pino takes (msg, obj); PaymentLogger hands you (event, context)
info: (event, ctx) => log.info(ctx ?? {}, event),
error: (event, ctx) => log.error(ctx ?? {}, event),
warn: (event, ctx) => log.warn(ctx ?? {}, event),
debug: (event, ctx) => log.debug(ctx ?? {}, event),
},
);
payment_started و provider_request_sent هر دو کل PaymentRequest را دریافت میکنند، یعنی metadata.mobile و هر چیز دیگری که آنجا گذاشتهاید عیناً وارد لاگ شما میشود. Pino، Winston و آبجکت ساده همه کار میکنند — این مسئله سیاست است، نه تایپ.
پنج رویداد چرخه حیات
از کلاینت منتشر میشوند، نه از آداپتورها، پس در همه درگاهها یکساناند. از lib/data/sdk_api.ts رندر میشود.
| رویداد | سطح | زمان وقوع | زمینه |
|---|---|---|---|
payment_started | info | در createPayment، پس از resolve شدن کلید درگاه و پیش از انتظار آداپتور. | { provider, request } — کل PaymentRequest شامل metadata. |
provider_request_sent | info | در createPayment، بلافاصله پس از payment_started و پیش از اجرای آداپتور. هیچ رویداد متناظری برای پاسخ موفق وجود ندارد. | { provider, request } |
payment_failed | error | در createPayment، داخل بلوک catch. مقدار پرتابشده در context پیچیده میشود. | { provider, error } |
verification_completed | info | در verifyCallback، پس از resolve شدن آداپتور. هم برای isSuccessful درست و هم نادرست رخ میدهد. | { provider, result } |
verification_failed | error | در verifyCallback، داخل بلوک catch. فقط خطای پرتابشده این را تولید میکند؛ پرداخت ردشده یعنی verification_completed با isSuccessful برابر false. | { provider, error } |
warn و debug در اینترفیس PaymentLogger الزامیاند ولی UnoPay در ۱٫۰٫۰ هیچکدام را صدا نمیزند. باز هم فراهمشان کنید؛ نسخه بعدی شروع به استفاده میکند.
هیچ رویدادی برای پاسخ موفق وجود ندارد. لاگی که payment_started و provider_request_sent را نشان میدهد و بعد سکوت است، همان مسیر عادی موفقیت است — نبود payment_failed همان تأیید است.
لاگر روی کانفیگ آداپتور هیچ کاری نمیکند
ZarinpalConfig فیلد اختیاری logger را اعلام میکند و ZarinpalAdapter هرگز آن را نمیخواند. دادنش هیچ خروجی و هیچ خطایی تولید نمیکند — یک بیاثر خاموش. رویدادهای چرخه حیات فقط از لاگری منتشر میشوند که به سازنده UnoPay دادهاید.