Cara menyambung pembekal pembayaran

Telegram mempunyai sistem pembayaran terbina dalam. Untuk menerima pembayaran dalam Telegram, anda perlu:

  1. Sambungkan pembekal pembayaran ke bot anda melalui BotFather.
  2. Buka tetapan bot anda dalam BotFather dan pilih Payments.

Ikut arahan untuk menyambung salah satu pembekal pembayaran yang tersedia, kemudian salin token pembekal yang dihasilkan.

Cara menghantar invois

Untuk menghantar invois dalam Telegram, gunakan fungsi berikut:

tg_send_invoice(
    provider_token,
    platform_id,
    title,
    description,
    currency,
    prices,
    photo_url,
    payload,
    protect_content,
    disable_notification,
    need_name,
    need_phone_number,
    need_email,
    reply_to_message_id,
    reply_markup,
    message_thread_id,
    provider_data
)
Parameter Penerangan
provider_token Wajib. Token pembekal yang diterima daripada BotFather selepas menyambung pembekal pembayaran anda.
platform_id Wajib. Pengecam penerima (ID pengguna, kumpulan, atau saluran).
title Wajib. Tajuk produk (1–32 aksara).
description Wajib. Penerangan produk (1–255 aksara).
currency Wajib. Mata wang pembayaran (contoh: EUR, USD, UAH). Lihat senarai mata wang yang disokong: https://core.telegram.org/bots/payments#supported-currencies
prices Tatasusunan yang menerangkan item invois. Setiap item mengandungi tajuk dan jumlah. Jumlah boleh menjadi integer atau nombor perpuluhan.

Contoh:
[["Product", 2000], ["VAT", 20.75], ["Packaging", 100]]
photo_url URL gambar produk.
payload Muatan tersuai yang dikembalikan dalam panggilan balik pembayaran. Lalai: tg_payment.
protect_content 1 — lindungi kandungan daripada penyalinan dan tangkapan skrin.
0 — tiada perlindungan.
disable_notification 1 — hantar secara senyap.
0 — hantar dengan pemberitahuan.
need_name 1 — minta nama penuh pelanggan.
0 — jangan minta.
need_phone_number 1 — minta nombor telefon pelanggan.
0 — jangan minta.
need_email 1 — minta alamat e-mel pelanggan.
0 — jangan minta.
reply_to_message_id ID mesej untuk dibalas. Gunakan '' untuk menghantar invois sebagai mesej berasingan.
reply_markup Konfigurasi papan kekunci. Butang pertama mesti mempunyai jenis pay.
message_thread_id ID topik untuk kumpulan super yang didayakan forum.
provider_data Objek JSON dengan data pembayaran khusus pembekal. Rujuk dokumentasi pembekal pembayaran anda untuk medan yang diperlukan.

Penting

Parameter mesti dihantar dalam susunan tepat seperti yang ditunjukkan di atas.

Jika anda perlu melangkau parameter pilihan, biarkan kosong atau hantar nilai lalai yang diterangkan dalam dokumentasi.

Contoh

Jika mana-mana parameter berikut diaktifkan:

  • need_name
  • need_phone_number
  • need_email

Telegram akan meminta pelanggan untuk maklumat yang diminta sebelum pembayaran.

Selepas pembayaran berjaya, maklumat yang dikumpul secara automatik disimpan ke pembolehubah pelanggan yang sepadan.

Contoh:

Panggilan balik pembayaran

Selepas pembayaran berjaya, Telegram menghantar panggilan balik berikut kepada bot:

tg_payment 1372995196 120.75 USD 2ff747b9-000f-5000-b000-16d7e3517aa9

Di mana:

  1. tg_payment — nilai muatan yang ditentukan semasa membuat invois.
  2. 1372995196 — ID sembang tempat invois asalnya dihantar.
  3. 120.75 — jumlah pembayaran.
  4. USD — mata wang pembayaran.
  5. 2ff747b9-000f-5000-b000-16d7e3517aa9 — ID pembayaran yang dikembalikan oleh pembekal pembayaran.

Jika maklumat pelanggan diminta, pembolehubah pelanggan berikut juga akan diisi secara automatik:

  • tg_payment_name
  • tg_payment_phone
  • tg_payment_email

Panggilan balik pembayaran dihantar ke sembang peribadi pengguna dengan bot.

Pengguna mesti sudah memulakan perbualan dengan bot sebelum membuat pembayaran. Jika tidak, Telegram tidak dapat menghantar mesej panggilan balik.

Selepas menerima webhook pembayaran, MaviBot secara automatik mengesahkan pembayaran menggunakan kaedah answerPreCheckoutQuery.

https://core.telegram.org/bots/api#answerprecheckoutquery

Menyemat mesej invois

Selepas menyambung pembekal pembayaran, anda boleh menyemat mesej invois.

Gunakan fungsi:

tg_pin_chat_message(platform_id, message_id, disable_notification)
Parameter Penerangan
platform_id ID sembang Telegram.
message_id ID mesej untuk disemat.
disable_notification Mengawal sama ada Telegram menghantar pemberitahuan tentang mesej yang disemat.

1 — tiada pemberitahuan.
0 — hantar pemberitahuan.

Pemberitahuan sentiasa dilumpuhkan dalam sembang peribadi dan saluran.

Contoh

Langkah 1

prices = [["Course", 100], ["VAT", 20.75]]

result = tg_send_invoice(
    '381764678:TEST:129736',
    platform_id,
    'Course',
    'Creating courses is easy',
    'USD',
    prices,
    'https://salebot.pro/promo.png',
    'course_pay',
    '0',
    '0',
    '1',
    '1',
    '1',
    '',
    '{"inline_keyboard":[[{"text":"Pay","pay":"True"}]]}'
)

Langkah 2

Ekstrak message_id daripada respons:

res = get(result, 'result')
m_id = get(res, 'message_id')

Kemudian semat mesej:

tg_pin_chat_message(#{platform_id}, #{m_id}, 1)

Contoh: parameter minimum yang diperlukan

prices = [["Super course", 100]]

result = tg_send_invoice(
    '381764678:TEST:129736',
    platform_id,
    'Course',
    'Creating courses is super easy',
    'USD',
    prices
)

Contoh: invois dengan papan kekunci sebaris

prices = [["Course", 100], ["VAT", 20.75]]

tg_send_invoice(
    '381764678:TEST:129736',
    platform_id,
    'Course',
    'Creating courses is easy',
    'USD',
    prices,
    'https://mavibot.ai/promo.png',
    'course_pay',
    '0',
    '0',
    '1',
    '1',
    '1',
    '',
    '{"inline_keyboard":[[{"text":"Pay","pay":"True"}],[{"text":"Another button","callback_data":"Another button"}]]}'
)