Better Payment
Plugin'ler

Bildirimler

Satışları, iadeleri ve hataları Slack, Discord, Telegram veya e-postaya gönderin.

Henüz yayınlanmadı

Küçük ekipler satışları, iadeleri ve başarısız ödemeleri bir webhook alıcısı yazmadan, zaten kullandıkları sohbet uygulamasında görmek ister. notifications plugin'i ödeme olaylarını kısa ve okunur mesajlara çevirir ve Slack, Discord, Telegram veya kendi kanalınıza (e-posta, SMS, bir kuyruk) gönderir.

Kurulum

import { betterPayment, iyzico } from 'better-payment';
import { notifications } from 'better-payment/plugins';

const payment = betterPayment({
  providers: { iyzico: iyzico({ /* ... */ }) },
  plugins: [
    notifications({
      locale: 'tr',
      minAmount: 100,
      channels: [
        { type: 'slack', webhookUrl: process.env.SLACK_WEBHOOK!, events: ['payment.succeeded', 'refund.succeeded'] },
        { type: 'discord', webhookUrl: process.env.DISCORD_WEBHOOK!, events: ['payment.failed'] },
        { type: 'telegram', botToken: process.env.TG_TOKEN!, chatId: '-1001234567890' },
        { type: 'custom', name: 'email', send: (message) => sendEmail('sales@shop.com', message) },
      ],
    }),
  ],
});

Başarılı bir ödeme şu mesajı gönderir:

✅ Ödeme alındı: 150.00 TRY (iyzico)
Ödeme: 23456789 · Sipariş: order-1001

Kanallar

TürAlanlarNereden alınır
slackwebhookUrlBir Slack uygulamasının incoming webhook adresi
discordwebhookUrlKanal ayarları → Entegrasyonlar → Webhook'lar
telegrambotToken, chatId@BotFather ile oluşturulup sohbete eklenen bir bot
customsend(message, event), nameKendi fonksiyonunuz: e-posta, SMS, bir kuyruk...

Her kanal events alır: alacağı olay türleri, varsayılan ['*'] (hepsi).

Seçenekler

SeçenekVarsayılanAçıklama
channels—Mesajların gideceği yerler
locale'en'Mesajların dili: localizedErrors gibi 'en', 'tr', 'de', 'ru' veya 'ar'
format—(event) => string: varsayılan mesaj yerine kendi mesajınızı oluşturur
minAmount—Tutarı bundan küçük olayları atlar. Para biriminden bağımsız olarak sayı olarak karşılaştırılır; tutarı olmayan olaylar gönderilir.
filter—(event) => boolean: bir olayı atlamak için false döndürün
waitUntil—Serverless bir fonksiyonu mesajlar gönderilene kadar ayakta tutar (aşağıya bakın)
onErrorlogger(error, channel, event) => void, bir kanal başarısız olduğunda çağrılır
timeout10000Bir kanaldan vazgeçilmeden önceki milisaniye
fetchglobal fetchSlack, Discord ve Telegram için kullanılan fetch

Kart verisi yok

format, filter ve custom kanallar olayı request ve result olmadan alır; böylece kart numaraları hiçbir mesaja ulaşamaz. Olay türünü, sağlayıcıyı, işlemi, ödeme id'sini, sipariş id'sini (conversationId), tutarı, para birimini ve hata code değerini alırlar.

Ödemeler mesajları beklemez

Mesajlar arka planda gönderilir: ödeme onları beklemeden döner. Başarısız olan, zaman aşımına uğrayan veya hata fırlatan bir kanal onError'a (veya ödeme logger'ına) bildirilir ve ödemeyi asla etkilemez.

Serverless platformlarda fonksiyon yanıt gönderilince durabilir. Mesajların yine de gönderilmesi için waitUntil verin:

import { waitUntil } from '@vercel/functions';

notifications({ waitUntil, channels: [/* ... */] });

Cloudflare Workers'ta ödeme nesnesini her istekte oluşturun ve waitUntil: (p) => ctx.waitUntil(p) verin.

Testlerde mesajları flush() ile bekleyin:

await payment.createPayment(request);
await payment.notifications.flush();

Bu sayfada