> For the complete documentation index, see [llms.txt](https://docs.mavibot.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mavibot.ai/doc/tr/integrations/payment/prodamus-blr/prodamus.md).

# Prodamus (KZ)

## **Prodamus nasıl bağlanır**

Prodamus'u bağlamak için ödeme formunun URL adresi ve gizli anahtar gerekir.

Ödeme formunun URL adresi kayıt sonrasında verilir, örneği: `demo.payform.ru`.

Gizli anahtarı kişisel hesabınızdan alabilirsiniz; ayrıca bildirimlerin gönderileceği URL adresini de orada belirtmeniz gerekir.

<div data-with-frame="true"><figure><img src="/files/c6e8e1110b83a8bbf190de08a496e88736567689" alt=""><figcaption><p>«Prodamus» ödeme sisteminin kişisel hesabında ödeme formu ayarlarında gizli anahtar</p></figcaption></figure></div>

[**Bunu nasıl yapacağınıza dair ayrıntılı kılavuz**](https://help.prodamus.ru/payform.ru-onlain-oplaty/prochee/url-dlya-uvedomlenii-i-sekretnyi-klyuch)

Bildirim adresi:\
<https://chatter.mavibot.ai/prodamus\\_callback/result>

Bu adresi ayarlarda iki yerde belirtmek gerekir.

Ayarların ana sayfasında ödeme formunun çalışma modunu seçebilirsiniz: ödemesiz demo modu veya ödeme kabul etme modu.

<div data-with-frame="true"><figure><img src="/files/bf571406c24c6100a1d39abac0e0a034d0f3e3fa" alt=""><figcaption></figcaption></figure></div>

Bildirim adresini ödeme sisteminin ayarlarında iki yerde belirtmek gerekir: **«Formu ayarla»** sekmesinde — tek seferlik (normal) ödemeler için ve **«Abonelikler»** sekmesinde — abonelik ödemeleri için.

<div data-with-frame="true"><figure><img src="/files/b972bf10d11ee5f35b22b1a261da9590d1142d08" alt=""><figcaption></figcaption></figure></div>

**Bildirim adresi:**\
<https://chatter.mavibot.ai/prodamus\\_callback/result>

Abonelik ödemeleriyle çalışmayı ayarlamak için **«Abonelikler»** sekmesine gidin ve bildirim adresini belirtin:

<https://chatter.mavibot.ai/prodamus\\_callback/result>

<div data-with-frame="true"><figure><img src="/files/96ede380b92916b3dc680ed1a00e836f0a8992c9" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
**Dikkat!** URL adresini girdikten sonra mutlaka **«Kaydet»** düğmesine tıklayın.
{% endhint %}

Prodamus'u bağlamak için **«Ekvayring»** bölümüne geçmek gerekir.

<div data-with-frame="true"><figure><img src="/files/596d608117561346112759ec663d3318af22991a" alt=""><figcaption></figcaption></figure></div>

Sonra yukarıda belirtilen verileri forma girmek yeterlidir:

<div data-with-frame="true"><figure><img src="/files/00293387fa04b90305fcbcb4fe4fad898948cf12" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
**Önemli!** Ödeme formunun URL adresini belirtirken **https\://** eklemeyin.
{% endhint %}

Böylece bağlantı tamamlandı. Şimdi bu işlevselliğin nasıl kullanılacağına bakalım.

## Ödeme bağlantısı nasıl oluşturulur

### «Öde» işlevine sahip düğme

**Ödeme bağlantısı, «Öde» işlevine sahip bir düğmede oluşturulabilir.**

{% hint style="info" %}
[Böyle bir düğmenin nasıl oluşturulacağı bu makalede anlatılmıştır.](/doc/tr/chatbot/builder/butonlar/odeme-butonu.md)
{% endhint %}

Şimdi bu düğmenin tüm olası parametrelerini inceleyelim.

### Prodamus için «Öde» düğmesinin zorunlu parametreleri

**Ödeme bağlantısı oluşturmak için düğme ayarlarında zorunlu parametreleri belirtmek gerekir:**\
«Tutar», «Ürün adı» ve ayrıca «Ödenen içerik» parametresi — kendi çevrim içi kasanız yoksa ve Prodamus'tan makbuz almak istiyorsanız.

Sipariş sayfasına geçildiğinde ürün ve fiyat bilgisi önceden gösterilir, müşteri yalnızca iletişim bilgilerini girer.

Düğme ayarlarında kullanıcının E-posta ve/veya telefonu belirtilmişse, sipariş sayfasında ödeyenin iletişim bilgileri ile ürün ve fiyat bilgisi gösterilir.

<div data-with-frame="true"><figure><img src="/files/a21bbb89499043a07a7c7a5cc2028b43c0f31bf4" alt="" width="563"><figcaption><p>Düğme ayarları penceresi</p></figcaption></figure></div>

**«Metin» alanı** — bu metin, ödeme bağlantısı olan düğmede mesajda gösterilir.

**«İşlev» alanı** — ödeme bağlantısı veren bir düğme oluşturmak için «Öde» işlevini seçiyoruz.

**«Ödeme sistemi» alanı** — projeye bağlı ödeme sistemleri listede gösterilir.\
Projeye hiç ödeme sistemi bağlı değilse, bu düğme türü kullanılamaz olacaktır.

**«Ürün adı» alanı (zorunlu)** — ürünün tam adını belirtmek gerekir. Örneğin: «Telefon» değil, «Xiaomi akıllı telefon, model …».\
Not: Ürün adında çift tırnak işaretleri kullanmayın; kaldırın ya da tek tırnakla değiştirin.

**«Tutar» alanı (zorunlu)** — ürünün fiyatını giriyoruz.

**«Ek bilgi» menüsü** — bu düğmeye tıkladığınızda bağlantı oluşturmak için ek alanlar açılır:

* Sipariş açıklaması
* Ruble cinsinden indirim
* Alıcının E-posta değişkeni
* Alıcının telefon numarası değişkeni
* Bağlantının geçerlilik süresi
* Abonelik için ürün ID'si (otomatik ödeme için)
* Ödenen içerik

**«Tıklama bildirimi» onay kutusu** — ödeme bağlantısına geçişi izlemek için işaretlenebilir. Bu durumda düğmeye tıklandığında, MaviBot'taki müşteri diyaloguna bağlantıya geçiş yapıldığına dair bir bildirim gelir.

<div data-with-frame="true"><figure><img src="/files/ebaa57adf8b99ea44b163b5081220af5801c8403" alt="" width="431"><figcaption></figcaption></figure></div>

Bu bildirime göre botun sonraki çalışma mantığını ayarlayabilirsiniz.\
Birçok ödeme sistemi, 54-FZ gerekliliklerine göre gerekli olan bulut tabanlı çevrim içi kasaları destekler.

Vergi dairesiyle sorun yaşamamak için seçilen ödeme sisteminin sitesinde fiş düzenleme özelliklerini okuyun.

İşte «Öde» düğmesindeki bağlantıya geçildiğinde açılan ödeme sayfası böyle görünür:

<div data-with-frame="true"><figure><img src="/files/2d76588057ba358db23e51249271320c3cdb551e" alt="" width="375"><figcaption><p>Ödeme sayfası: düğmede yalnızca temel parametreler doldurulmuş</p></figcaption></figure></div>

### Ödeme bağlantısı oluşturmak için ek ayarlar

<div data-with-frame="true"><figure><img src="/files/e4c393be5a7f308cb09233390196291c524f407a" alt="" width="563"><figcaption></figcaption></figure></div>

**«Sipariş açıklaması» alanı** — bu alana girilen bilgiler ödeme sayfasında **Ek veriler** alanında gösterilir.

**«İndirim» alanı** — burada indirim miktarını ruble veya ruble ve kuruş olarak belirtebilirsiniz. Kuruşları göstermek için ayırıcı olarak nokta kullanın: 50.99\
Ödeme sayfasında **Ödenecek tutar** alanında indirim dikkate alınarak gösterilir, ana ürün fiyatı ise üzeri çizili olur.

**«Alıcının E-posta değişkeni» alanı** (zorunlu değil, telefon numarası belirtilmişse) — burada kullanıcının (müşterinin) E-postası belirtilir. Saklanan E-posta değişkenini de kullanabilirsiniz, örneğin: `#{email}`

**«Alıcının telefon numarası değişkeni» alanı** (zorunlu değil, E-posta belirtilmişse) — burada alıcının telefon numarasını içeren bir değişken kullanılabilir, format: 79000000000, örneğin: `#{phone}`\
Mutlaka E-posta ve/veya telefon olmalıdır.

**«Bağlantının geçerlilik süresi» alanı** — tarihi `gg.aa.yyyy ss:dk` formatında gösterebilirsiniz (örneğin, 25.01.2021 11:00) veya bağlantının bitiş tarihini değişken ile belirleyebilirsiniz. Örneğin: `#{link_expired}`

**«Abonelik için ürün ID'si» alanı** — otomatik ödeme oluşturmak için ürün ID değerini girin. Abonelik oluşturmak için abonelik ürünü oluşturmanız gerekir.\
Ayrıntılı kılavuz: [Prodamus abonelikleri oluşturma ve ayarlama](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)\
Abonelik için ürün ID'si belirtilirse, ödeme tutarı dikkate alınmaz. Ürün hakkındaki bilgiler Prodamus panelindeki ürün kartından alınır.\
Ödemede belirtilen telefon numarası aboneliği yönetmek için gerekli olacaktır.\
Abonelik için ürün ID'si belirtilirse, başarılı ödeme durumunda callback'te bu ürünün ID'si iletilir.

**«Ödenen içerik» alanı** (şartlı zorunlu) — kendi çevrim içi kasanız yoksa, Prodamus üzerinden ödemeyi fiskalleştirmek için bu veriler gerekir. Bu alana satın alma açıklaması, fiyatı ve içeriğe bağlantı belirtilir.\
Örneğin: Kurs 'Saç Örgüsü Yapma', fiyatı 3000 ruble, kurs sayfasına bağlantı: `https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911`

### «Öde» işlevine sahip düğme

Bağlantının geçerlilik süresini belirtirseniz, şu durum olur:\
Kullanıcı, ödeme bağlantısını geçerlilik süresi içinde (yani bağlantının süresi henüz dolmamışken) ister ve sohbet içindeyse, ödeme yapılamaz ve ona şu mesaj gösterilir:

<div data-with-frame="true"><figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcA1KJHoyMF5WmLMZiJPJrQEGJs79zxoXK5U3E9k4mVus-Fg0tI-djr6QTagp5ulwposSxmJ-aq8trUQOslQyE0UeaREuM6-T5Ongn-E5tACdVmypFXBtgOJDmVvHRgOdATChhnBQ?key=OB7qKicH0kn-_i_EzQLdRA" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
Bağlantının geçerlilik tarihi mevcut tarihten sonra olmalıdır; aksi takdirde müşteri bu bağlantıyla ödeme yapamaz.
{% endhint %}

**2. Kullanıcı bağlantıyı isterken, eğer şu anda aktif değilse**\
Bu durumda düğme görünmez. Müşterinin değişkenlerinde `"error_payment_button"` değişkeni görünür ve değeri şöyle olur:\
\&#xNAN;**"Hata: Bağlantının geçerlilik süresi mevcut tarihten sonra olmalıdır"**.

{% hint style="success" %}
Kullanıcının ödemeyi doğru yapabilmesi için bu durumu ayrıca işlemeniz önerilir.
{% endhint %}

Şu koşullu bloğu oluşturun:\
Aşağıdaki mesaj gelirse:\
`error_payment_button == "Hata: Bağlantının geçerlilik süresi mevcut tarihten sonra olmalıdır"`

O zaman şu metni gösterin:\
\&#xNAN;**"Üzgünüz, ödemeyi zamanında yapamadınız, ödeme bağlantısı geçersizdi"**.

<div data-with-frame="true"><figure><img src="/files/1aabd3fa98a7b9d3d51dedc2aad087e3358156f0" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/09f2af2e4467f496129d635d04fbda27adaa8670" alt=""><figcaption></figcaption></figure></div>

### «Öde» işlevine sahip düğme kullanıldığında otomatik olarak oluşturulan müşteri değişkenleri

Kullanıcı «Öde» düğmeli bloğu aldığı anda, müşteri için otomatik olarak değişkenler oluşturulur:

**Hizmet müşteri değişkeni `__payments`** — bu değişken tutarı ve oluşturulan bağlantının kimliğini saklar ve ödeme sisteminden gelen webhook'u belirlemek için gereklidir.

{% hint style="danger" %}
Hizmet müşteri değişkeni `__payments`-ı silinemez veya değiştirilemez!
{% endhint %}

**`error_payment_button` müşteri değişkeni** düğme oluşturulurken hata oluşursa otomatik olarak oluşturulur.\
Bu değişkene hata metni veya ödeme sisteminden gelen hata yanıtı yazılır.

{% hint style="warning" %}
Değişkenlerin değerleri bir sonraki bloğa geçildiğinde güncel olur.
{% endhint %}

## Sonuç nasıl işlenir

**Başarılı ödeme**\
Başarılı ödeme yapıldıktan sonra bot'a **OTOMATİK olarak CALLBACK** gelir; bu, ödeme sisteminin gizli anahtarının ilk 10 karakterinden, `_success` sözünden ve ödeme tutarından oluşur.\
Şemayı ayarlamada kullanmak için kopyalamanız yeterlidir.

Örneğin: `ovg58keefc_success 44`, burada:

* `ovg58keefc` — ödeme sisteminin gizli anahtarının ilk 10 karakteri
* `_success` — isteğin işlenme sonucu (başarılı ödeme)
* `44` — ödeme tutarı

{% hint style="info" %}
Kullanıcı, ödeme sisteminden gelen **callback'leri (bildirimleri) GÖRMEZ**. Bunlar yalnızca **«Müşteriler»** sekmesinde gösterilir ve operatöre görünür.
{% endhint %}

**Kullanım örneği:**\
**1. adım.** «Öde düğmeli» bloğa «Öde» işlevine sahip düğmeler ekliyoruz.\
**2. adım.** Bu bloktan «Başarılı ödeme» bloğuna geçen **Bağlantı koşulu** alanında callback'i belirtiyoruz.\
Aynı şekilde, eğer «Başlangıç koşulu» bloğunun koşulunda başarılı ödeme callback'i belirtilirse, çalışma benzer şekilde gerçekleşir.

{% hint style="warning" %}
**Önemli:** «Tam eşleşme» veya «Anahtar kelimelere göre» seçeneğini seçmek.
{% endhint %}

❗️Eğer ödemeyi, tam koşulda belirtilen oku kullanarak kontrol etmeye karar verirseniz, şemanızın mantığını dikkatlice düşünün. Müşteri callback ile koşul üzerinden geçen bloğu terk ederse, bloğa geçiş olmayacaktır. Böyle bir kontrol yöntemini yalnızca müşteri hunideki yerini değiştirmemişse kullanmak daha iyidir.

Müşterinin bloklar arasında hareket ettiği şemalarda callback'i **«Başlangıç koşulu»** bloğunda belirtme seçeneğini kullanmak daha avantajlıdır.<br>

<div data-with-frame="true"><figure><img src="/files/c433c8c45dcfbb688ea87367291588958f0f0f16" alt=""><figcaption><p>Başarılı ödeme için callback, bloğun Koşul alanında.</p></figcaption></figure></div>

### Otomatik aboneliği olan ürünler için başarılı ödeme

Başarılı ödeme yapıldıktan sonra bot'a **OTOMATİK olarak CALLBACK** gelir; bu, ödeme sisteminin gizli anahtarının ilk 10 karakterinden, `_success` sözünden ve abonelik ürününün ID'sinden oluşur.

Örneğin: `214009eefc_success 618117`, burada:

* `009eefc` — ödeme sisteminin gizli anahtarının ilk 10 karakteri
* `_success` — isteğin işlenme sonucu (başarılı ödeme)
* `618117` — abonelik ürününün ID'si

<div data-with-frame="true"><figure><img src="/files/ec1849078451b74fe33850e4690bcefe86541e1c" alt=""><figcaption><p>Otomatik aboneliği olan ürünler için Prodamus'tan callback örneği</p></figcaption></figure></div>

**Başarısız ödeme**\
Ödeme gerçekleştirilirken hata oluşursa bot'a **OTOMATİK olarak CALLBACK** gelir; bu, ödeme sisteminin gizli anahtarının ilk 10 karakterinden, `_fail` sözünden ve ödeme tutarından oluşur.

Örneğin: `ovg58keefc_fail 44`, burada:

* `ovg58keefc` — ödeme sisteminin gizli anahtarının ilk 10 karakteri
* `_fail` — isteğin işlenme sonucu (ödeme gerçekleşmedi veya hata oluştu)
* `44` — ödeme tutarı

{% hint style="warning" %}
Bu, ödeme sistemine bağlıdır. Tüm ödeme sistemleri ödeme hatası hakkında callback göndermez.
{% endhint %}

Düğme ayarlarında belirtilen tutar, müşterinin ödediği tutardan farklıysa, bot'a **OTOMATİK olarak CALLBACK** gelir. Bu, ödeme sisteminin gizli anahtarının ilk 10 karakterinden, `_different_amounts` sözünden ve ödemenin benzersiz ID'sinden oluşur.

Örneğin: `ovg58keefc_different_amounts 123456`, burada:

* `ovg58keefc` — ödeme sisteminin gizli anahtarının ilk 10 karakteri
* `_different_amounts` — isteğin işlenme sonucu (ödeme tutarı bağlantıdaki tutardan farklı)
* `123456` — ödemenin benzersiz ID'si

## Hesaplayıcıdaki `get_prodamus_payment_url` fonksiyonu

Ödeme bağlantısı oluşturmak için **Hesaplayıcı bloğundaki `get_prodamus_payment_url` fonksiyonunu** kullanabilirsiniz.\
**Hesaplayıcı alanında** değişkene bu fonksiyonun değerini atıyoruz: `get_prodamus_payment_url`.&#x20;

{% hint style="info" %}
Değişken adını kendiniz seçersiniz. Ekran görüntülerinde değişken adlandırma örnekleri gösterilmiştir.
{% endhint %}

Bu değişkene ödeme için bağlantı yazılır. Değişkeni mesajda bağlantı olarak gösterebilir veya «Öde» metni olan düğmeye yerleştirebilirsiniz.

**Ödeme bağlantısı örneği:** [https://payform.kz/7p3JR8/](https://payform.ru/7p3JR8/)

{% tabs %}
{% tab title="Hesaplayıcı" %}
Örnek 1:

<figure><img src="/files/d7ac19a24afccf46b15d965a1e346cf99ab39ed7" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Parametrelerin açıklaması" %}
&#x20;`your_variable =`` `**`get_prodamus_payment_url(amount, product_name, expired, customer_phone, customer_email, discount, description, extra_params, products_for_receipt)`**

Fonksiyon parametreleri:

<table><thead><tr><th width="253">Parametre</th><th>Parametre değeri</th></tr></thead><tbody><tr><td><strong><code>amount</code></strong></td><td><strong>Ödeme tutarı</strong> — tam sayı veya noktayla ayrılmış sayı olarak verilebilir. Örneğin: <code>25</code> veya <code>52.5</code>. (zorunlu parametre)</td></tr><tr><td><strong><code>product_name</code></strong></td><td><strong>Ürün adı</strong> (zorunlu parametre)</td></tr><tr><td><strong><code>expired</code></strong></td><td><p><strong>Ödeme bağlantısının geçerlilik süresi</strong> – <code>gg.aa.yyyy</code> formatında (örneğin, 25.01.2021).<br>Ayrıca, <strong>Hesaplayıcı</strong> alanında şöyle gösterebilirsiniz:<br><code>expired = current_date + 2</code> (bağlantı 2 gün boyunca 00:00'a kadar geçerli olur).</p><p>Kesin saat belirtmek de mümkündür: <code>gg.aa.yyyy ss:dk</code> (örneğin, 25.01.2021 12:23).</p><p>Standart değişkenler de kullanılabilir; örneğin, bağlantının geçerliliğini 30 dakika olarak ayarlamak:</p><pre class="language-python"><code class="lang-python">time = current_time + 30
expired = "#{current_date} #{time}"
</code></pre><p>Bu parametreyi atlamak isterseniz, yerine tek tırnak, çift tırnak veya <code>None</code> değerini verebilirsiniz.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><strong>Alıcının telefon numarası</strong> — zorunlu değil, eğer <code>customer_email</code> parametresi verilmişse.<br>Bu parametreyi atlamak isterseniz, yerine tek tırnak veya çift tırnak verebilirsiniz.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td><strong>Alıcının E-posta adresi</strong> — zorunlu değil, eğer <code>customer_phone</code> parametresi verilmişse.<br>Bu parametreyi atlamak isterseniz, yerine tek tırnak veya çift tırnak verebilirsiniz.</td></tr><tr><td><strong><code>discount</code></strong></td><td><strong>İndirim tutarı</strong> — parametreyi tam sayı veya noktalı sayı olarak verebilirsiniz: <code>25</code> veya <code>63.5</code>.<br>Bu parametreyi atlamak isterseniz, yerine tek tırnak veya çift tırnak verebilirsiniz.</td></tr><tr><td><strong><code>description</code></strong></td><td><strong>Ürün açıklaması</strong> (belirtilmezse, otomatik olarak <code>'Fatura ödemesi order_id'</code> doldurulur).<br>Bu parametreyi atlamak isterseniz, yerine tek tırnak veya çift tırnak verebilirsiniz.</td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Ek parametreler</strong>, bu fonksiyonda olmayan parametreler.<br>Kullanılabilir ek parametreleri ödeme sisteminin API ile çalışma dokümantasyonunda görebilirsiniz: <a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">Prodamus REST API</a></p><p>Örneğin:</p><pre class="language-python"><code class="lang-python">extra_params = {"payments_limit": "3", "payment_method": "vsegdada_installment_0_0_6"}
</code></pre><p>Bu parametreyi atlamak isterseniz, yerine tek tırnak/çift tırnak veya <code>None</code> değerini verebilirsiniz.</p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>50 ila 4000 karakterlik dize</strong> formatında <code>"sipariş açıklaması - fiyat - satın alınan kaynağa bağlantı"</code>.<br>Örneğin:<br><code>“‘Leş balığı avlama’ kursu, fiyatı 4999 ruble, kurs sayfasına bağlantı: https://www.lovilescha.ru/courses/poimai_kilogram/"</code></p><p>Bu parametre zorunludur; kendi çevrim içi kasanız yoksa, Prodamus üzerinden ödemeyi fiskalleştirmek için gerekir.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Örnek" %}
extra\_params = {"payments\_limit": "3"}&#x20;

products\_for\_receipt = "‘Leş balığı avlama’ kursu, fiyatı 4999 tenge, kurs sayfasına bağlantı: <https://www.lovilescha.ru/courses/poimai\\_kilogram/"&#x20>;

link\_prodamus\_url = get\_prodamus\_payment\_url( 4999, '‘Leş balığı avlama’ kursu', '27.03.2023 17:00', '79167777771', '<mail@mail.com>', 20, 'Pazardaki en iyi kurs', extra\_params, products\_for\_receipt

Bu örnekte:

* `extra_params` — ek parametreler (örneğin, ödeme limiti).
* `products_for_receipt` — fişte gösterilecek ürün bilgisi.
* `get_prodamus_payment_url` fonksiyonu aracılığıyla ödeme bağlantısı oluşturulur.
  {% endtab %}
  {% endtabs %}

{% hint style="warning" %}
Blokta birkaç bağlantı alma fonksiyonu varsa ve hata oluşursa, hata değeri **`error_payment_func`** değişkenine yazılır.

Hata, son fonksiyon için Hesaplayıcıda yazılır.
{% endhint %}

## `payment_sum` değişkeni ve ek parametreler aracılığıyla bağlantı oluşturma

{% hint style="info" %}
**Dikkat:** `payment_sum` değişkenine değer son değişkenden verilir; yani zorunlu olmayan değişkenlerden sonra: `payment_description`, `product_name` vb.
{% endhint %}

Ödeme bağlantısı oluşturmak için **Hesaplayıcı alanında `payment_sum` değişkeninin değerini ayarlamak yeterlidir**.\
Bundan sonra otomatik olarak **`prodamus_pay_url`** değişkeni oluşur.

**Ödeme bağlantısı örneği:** `https://payform.ru/7p3JR8/`

Bu değişkeni mesajda bağlantı olarak gösterebilir veya «Öde» metni olan düğmeye yerleştirebilirsiniz.

`payment_sum` değişkenini bildirmeden önce şu zorunlu olmayan değişkenleri belirtebilirsiniz:

| Fonksiyon parametreleri    | Parametre açıklaması                                                                                                                                                                                                                                                                                                                                                                                                       |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **product\_name**          | **Ürün adı** (belirtilmezse, otomatik olarak "Fatura ödemesi order\_id" doldurulur) – aşağıdaki ekran görüntüsünde nerede gösterildiği belirtilmiştir.                                                                                                                                                                                                                                                                     |
| **payment\_description**   | **Ürün açıklaması** (belirtilmezse, otomatik olarak `'Fatura ödemesi order_id'` doldurulur) – aşağıdaki ekran görüntüsünde nerede gösterildiği belirtilmiştir.                                                                                                                                                                                                                                                             |
| **discount\_value**        | **İndirim tutarı** (örneğin, `discount_value = 25` veya `discount_value = 50.25`)                                                                                                                                                                                                                                                                                                                                          |
| **customer\_phone**        | **Alıcının telefon numarası** — başka bir parametre verilmişse zorunlu değildir.                                                                                                                                                                                                                                                                                                                                           |
| **customer\_email**        | Alıcının E-posta adresi                                                                                                                                                                                                                                                                                                                                                                                                    |
| **link\_expired**          | <p><strong>Ödeme bağlantısının geçerlilik süresi</strong> – <code>gg.aa.yyyy</code> formatında (örneğin, 25.01.2021).<br>Ayrıca, <strong>Hesaplayıcı</strong> alanında şöyle gösterebilirsiniz:<br><code>link\_expired = current\_date + 2</code> (bağlantı 2 gün boyunca 00:00'a kadar geçerli olur).</p>                                                                                                                 |
| **link\_expired**          | <p>Ayrıca, tam saat belirtilebilir, format: <code>gg.aa.yyyy ss:dk</code> (örneğin, <code>25.01.2021 12:23</code>).<br>Standart değişkenler de kullanılabilir; örneğin bağlantının geçerlilik süresini 30 dakika olarak ayarlamak:<br>time = current\_time + 30 link\_expired = "#{current\_date} #{time}"</p>                                                                                                             |
| **currency**               | <p><strong>Ödeme para birimi</strong>, varsayılan olarak <code>"rub"</code>.<br>Parametrelerin tam listesi:</p><ul><li><code>rub</code></li><li><code>usd</code></li><li><code>eur</code></li><li><code>kzt</code></li></ul><p>Bu parametre küçük harflerle verilmelidir.</p>                                                                                                                                              |
| **payment\_title**         | <p><strong>Ödeme başlığı</strong> (127 karaktere kadar). Belirtilmezse, otomatik olarak şu metinle doldurulur:<br>“<strong>Fatura ödemesi payment\_id</strong>” (<code>payment\_id</code> — MaviBot'taki sipariş kimliği).</p>                                                                                                                                                                                             |
| **payment\_description**   | **Ödemenin kısa açıklaması** (127 karaktere kadar)                                                                                                                                                                                                                                                                                                                                                                         |
| **locale**                 | <p><strong>Ödeme sayfasının dili</strong> – <code>en-US</code>, <code>fr-XC</code> vb. formatında gösterilir. Varsayılan değer – <code>ru-RU</code>.<br>Tam listeye şu bağlantıdan bakabilirsiniz</p>                                                                                                                                                                                                                      |
| **products\_for\_receipt** | <p><strong>50 ila 4000 karakterlik dize</strong> formatında <code>"sipariş açıklaması - fiyat - satın alınan kaynağa bağlantı"</code>.<br>Örneğin:<br><code>“Çipura avı kursu”, fiyatı 4999 tenge, kurs sayfası bağlantısı: <https://www.lovilescha.ru/courses/poimai_kilogram/>"</code></p><p>Bu zorunlu bir parametredir; kendi çevrimiçi kasanız yoksa, Prodamus üzerinden ödemeyi fiskalleştirmek için gereklidir.</p> |
| **payment\_sum**           | (zorunlu) ödeme tutarı                                                                                                                                                                                                                                                                                                                                                                                                     |

<div data-with-frame="true"><img src="https://lh3.googleusercontent.com/3FazAmQkph5i0_iKy4G_HNerzVQP9Bg3_PRB_5rHZQ6vAZB_1Hxv1imi3gJCl7pU_GY7eAiiwZExJA-i4Ps5PgSJt7OXKbSL-GT27gWca_u7rFM8YEsNJ7Z-VVXTAR-jSw_-p2I0" alt="" width="563"></div>

{% hint style="success" %}
`discount_value`, `customer_phone`, `customer_email` ve `link_expired` değişkenleri abonelikler için de geçerlidir.
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/af70d13260a6bfef40a9f95129ffdc9de51e0324" alt="" width="524"><figcaption></figcaption></figure></div>

**Uygulama örneği.**\
İlk blokta ödeme tutarını ayarlıyoruz:

<div data-with-frame="true"><figure><img src="/files/faed4622601f92dd69e87b205deb5602e2293eaf" alt=""><figcaption></figcaption></figure></div>

Sonraki adımda gerekli yerde **`prodamus_pay_url`** bağlantısını çıkarıyoruz:

<div data-with-frame="true"><figure><img src="/files/4aeef3ef9f30c74a2583783c68c389f7906843bd" alt=""><figcaption></figcaption></figure></div>

**`prodamus_available_payment_methods`** değişkeni **`payment_sum`** yayınlamadan önce belirlenir.\
Olası değerler:

<table><thead><tr><th width="323"></th><th></th></tr></thead><tbody><tr><td><strong>AC</strong></td><td>Rusya Federasyonu'nda çıkarılmış kartla ödeme</td></tr><tr><td><strong>ACkz</strong> </td><td>Kazakistan kartıyla ödeme</td></tr><tr><td><strong>ACf</strong></td><td>BDT ülkelerinin kartlarıyla ödeme, Rusya Federasyonu hariç</td></tr><tr><td><strong>ACEURNMBX</strong></td><td>Rusya ve Belarus hariç tüm ülkelerin EUR kartıyla ödeme</td></tr><tr><td><strong>SBP</strong></td><td>Kart bilgisi girmeden hızlı ödeme. Rus kartları için</td></tr><tr><td><strong>QW</strong> </td><td>Qiwi cüzdanı </td></tr><tr><td><strong>PC</strong></td><td>YuMoney</td></tr><tr><td><strong>GP</strong></td><td>Ödeme terminali</td></tr><tr><td><strong>sbol</strong></td><td>Sberbank Online </td></tr><tr><td><strong>invoice</strong> </td><td>Fatura ile ödeme</td></tr><tr><td><strong>installment</strong> </td><td>Prodamus üzerinden taksit</td></tr><tr><td><strong>installment_5_21</strong></td><td>Prodamus üzerinden 3 aylık taksit</td></tr><tr><td><strong>installment_6_28</strong></td><td>Prodamus üzerinden 6 aylık taksit</td></tr><tr><td><strong>installment_10_28</strong></td><td>Prodamus üzerinden 10 aylık taksit</td></tr><tr><td><strong>installment_12_28</strong> </td><td>Prodamus üzerinden 12 aylık taksit</td></tr><tr><td><strong>installment_0_0_3</strong></td><td>Tinkoff üzerinden 3 aylık taksit</td></tr><tr><td><strong>installment_0_0_4</strong> </td><td>Tinkoff üzerinden 4 aylık taksit</td></tr><tr><td><strong>installment_0_0_6</strong></td><td>Tinkoff üzerinden 6 aylık taksit</td></tr><tr><td><strong>installment_0_0_10</strong></td><td>Tinkoff üzerinden 10 aylık taksit</td></tr><tr><td><strong>installment_0_0_12</strong></td><td>Tinkoff üzerinden 12 aylık taksit</td></tr><tr><td><strong>installment_0_0_24</strong> </td><td>Tinkoff üzerinden 24 aylık taksit</td></tr><tr><td><strong>installment_0_0_36</strong></td><td>Tinkoff üzerinden 36 aylık taksit</td></tr><tr><td><strong>credit</strong> </td><td>Tinkoff üzerinden kredi</td></tr><tr><td><strong>vsegdada_installment_0_0_4</strong></td><td><strong>“ВсегдаДа” üzerinden 4 aylık taksit</strong> (available_payment_methods ile çalışmaz)</td></tr><tr><td>vs<strong>egdada_installment_0_0_6</strong></td><td><strong>“ВсегдаДа” üzerinden 6 aylık taksit</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_10</strong></td><td><strong>“ВсегдаДа” üzerinden 10 aylık taksit</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_12</strong></td><td><strong>“ВсегдаДа” üzerinden 12 aylık taksit</strong> </td></tr><tr><td>vs<strong>egdada_installment_0_0_24</strong></td><td><strong>“ВсегдаДа” üzerinden 24 aylık taksit</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_36</strong> </td><td><strong>“ВсегдаДа” üzerinden 36 aylık taksit</strong> </td></tr><tr><td><strong>sbrf_installment_0_0_6</strong></td><td>Sberbank üzerinden 6 aylık taksit</td></tr><tr><td><strong>sbrf_installment_0_0_10</strong></td><td>Sberbank üzerinden 10 aylık taksit</td></tr><tr><td><strong>sbrf_installment_0_0_12</strong></td><td>Sberbank üzerinden 12 aylık taksit</td></tr><tr><td><strong>sbrf_installment_0_0_24</strong></td><td>Sberbank üzerinden 24 aylık taksit</td></tr><tr><td><strong>sbrf_installment_0_0_36</strong> </td><td>Sberbank üzerinden 36 aylık taksit</td></tr><tr><td><strong>otp_installment_0_0_6</strong></td><td>«OTP Bankası» üzerinden 6 aylık taksit</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>«OTP Bankası» üzerinden 10 aylık taksit</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>«OTP Bankası» üzerinden 12 aylık taksit</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>«OTP Bankası» üzerinden 24 aylık taksit</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>«OTP Bankası» üzerinden 36 aylık taksit</td></tr><tr><td><strong>mts_installment_0_0_6</strong></td><td>«MTS Bankası» üzerinden 6 aylık taksit</td></tr><tr><td><strong>mts_installment_0_0_10</strong> </td><td>«MTS Bankası» üzerinden 10 aylık taksit</td></tr><tr><td><strong>mts_installment_0_0_12</strong> </td><td>«MTS Bankası» üzerinden 12 aylık taksit</td></tr><tr><td><strong>mts_installment_0_0_24</strong></td><td>«MTS Bankası» üzerinden 24 aylık taksit</td></tr><tr><td> <strong>mts_installment_0_0_36</strong> </td><td>«MTS Bankası» üzerinden 36 aylık taksit</td></tr><tr><td><strong>monetaworld</strong></td><td>Dünya bankalarının kartları, Rusya hariç</td></tr><tr><td><strong>sbrf_bnpl</strong></td><td>Sber üzerinden taksit</td></tr></tbody></table>

Birden fazla değerli **dikey çizgiyle** ayrılmasına izin verilir.\
Örneğin:

```python
prodamus_available_payment_methods = "AC|PC|QW"
```

`prodamus_currency` – bu, tutarı belirli bir para biriminde göstermeye olanak tanıyan başka bir ek parametredir.

Olası para birimleri:

* `kzt` – tenge için
* `eur` – euro için
* `usd` – dolar için

Böylece bağlantıda belirtilen tutar seçilen para biriminde olacaktır.

**Callback `payment_callback` alındığında** `currency` ve `currency_sum` parametrelerine dikkat etmek gerekir; burada para birimi ve tutar belirtilir.

{% hint style="warning" %}
Belirtilmezse, ödeme yöntemleri olmayan sayfaya yönlendirilir.\
Ödeme yöntemlerini destekleyerek ekleyebilirsiniz. Eklenen yöntemleri sayfa ayarlarından veya ödeme bağlantısını deneyerek görebilirsiniz.
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/fdeef3242e153cd34e9994977b87f3a2e997cfa7" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/2941091c06b501a20b3ac7cc68e4b42515034c66" alt="" width="563"><figcaption></figcaption></figure></div>

### Sonuç nasıl işlenir

**Başarılı ödeme**

**Önemli:** Başarılı veya başarısız ödemeden sonra bot'a callback'ler gelir; bunlar sayesinde ödemenin başarıyla yapılıp yapılmadığını anlayabilirsiniz.

Callback'ler sistemde kullanıcıdan gelen mesajlar gibi görünür, ancak kullanıcı tarafından gönderilemezler. Gizli anahtar ve durumun birleşimi şeklinde olurlar. Örneğin:

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_success
```

veya

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_fail
```

Başarılı ödemeden sonra **prodamus\_payment\_completed** değişkeni otomatik olarak `True` değerini alır.

**Not:** Callback'ler biraz gecikmeli gelir, bu yüzden bağlantıyı kullanıcıya gönderdikten sonra bir mesaj göndermek daha iyidir:

> “Ödeme yaptıktan sonra ödemenin başarıyla tamamlanmasını bekleyin.”

***

**Callback yapısı**

Ödeme butonu üzerinden veya Hesaplayıcıdaki fonksiyon aracılığıyla oluşturulan bağlantılar için, ödemeden sonra bot'a otomatik olarak callback gelir. İçeriği şöyledir:

```
<gizli_anahtar>_success <ödeme_tutarı>
```

Örneğin:

```
ovg58keefc_success
```

* `ovg58keefc` – ödeme sisteminin tam gizli anahtarı
* `_success` — isteğin işlenme sonucu (başarılı ödeme)

***

**Pratik kullanım**

Başarılı ödemeyi koşullu blokla işleyip kullanıcıya uygun mesaj gösterebilirsiniz.

<div data-with-frame="true"><figure><img src="/files/f825eed5e58048cc1183114ae11559c4d9bff02d" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="danger" %}
Karşılaştırma türü "Full match" / "Tam eşleşme" olmalıdır

Yeniden ödeme yapmak için mutlaka **payment\_sum** değişkenini sıfırlayıp daha önce oluşturulan bağlantıyı silmek gerekir. Ancak ondan sonra **payment\_sum** değişkenine yeni değer verip güncellenmiş bağlantıyı alabilirsiniz.
{% endhint %}

#### Aboneliği devre dışı bırakma/yeniden etkinleştirme

Ayrıca, Prodamus sisteminde aboneliğin etkinleştirildiği veya durdurulduğu hakkında bildirimler vardır:

<div data-with-frame="true"><figure><img src="/files/2e3f4720c7d694ec8d00e50bb6e6cd6c0f225c53" alt=""><figcaption></figcaption></figure></div>

**«Aboneliği kullanıcı devre dışı bıraktı»** – abonelik manuel olarak durdurulursa (örneğin abonelik iptal edildiğinde).\
Bu bildirim, mevcut ödenmiş dönem bitmeden önce gelebilir. Yapılacak işlem sizin kararınıza bağlıdır: yok saymak, izlemeye almak veya kullanıcıyı geri kazanmaya çalışmak.

**«Aboneliği kullanıcı yeniden etkinleştirdi»** – abonelik geri yüklenmiştir.\
Bu bildirim, mevcut ödenmiş dönem bitmeden önce kullanıcı aboneliği geri yüklerse gelebilir. Yapılacak işlem sizin kararınıza bağlıdır: yok saymak veya izleme listesinden çıkarmak.

**«Aboneliği devre dışı bırakma»** – birkaç başarısız ödemeden sonra abonelik durdurulduğunda.

### Callback'ten değerleri kaydetme

Başarılı ödeme bildirimi geldikten sonra **payment\_callback** değişkenine Prodamus'tan callback yazılır; içinde tüm ödeme verileri bulunur. Bu verileri kaydedip kendi istediğiniz şekilde kullanabilirsiniz.

Callback örneği:

```json
{
  "date": "2021-03-30T11:44:43+03:00",
  "order_id": "757679",
  "order_num": "",
  "domain": "demo.payform.ru",
  "sum": "14.50",
  "customer_phone": "+77777777777",
  "customer_extra": "Ürün",
  "payment_type": "Visa, MasterCard, MIR plastik kartı",
  "commission": "3.5",
  "commission_sum": "0.51",
  "attempt": "1",
  "discount_value": "10.5",
  "products[0][name]": "Eğitim materyallerine erişim",
  "products[0][price]": "14.50",
  "products[0][quantity]": "1",
  "products[0][sum]": "14.50",
  "payment_status": "success",
  "payment_status_description": "Başarılı ödeme",
  "payment_init": "manual"
}
```

Bağlantı oluştururken **product\_name** ve **payment\_description** değişkenlerini belirtebilirsiniz. O zaman callback geldiğinde bunları şöyle alabilirsiniz:

```python
product = get(payment_callback,'products[0][name]')
description = get(payment_callback,'customer_extra')
```

<div data-with-frame="true"><figure><img src="/files/9b099f8ab9500adf46f8045edf4e9d9de3ae1e95" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Dikkat: **payment\_sum** değişkenine son değer verilir, bu da **zorunlu olmayan değişkenlerden** sonra gelir: **payment\_description**, **product\_name**.
{% endhint %}

Tutar şu şekilde alınabilir:

```python
summa = get(payment_callback, 'sum')
```

### **Mevcut callback'ler**

Ana başarılı ödeme callback'lerinden ayrı olarak, sohbet içinde kullanıcının görmediği mesajlar şunlardır:

<details>

<summary>callback'ler</summary>

* Aboneliği kullanıcı devre dışı bıraktı ([daha fazla bilgi burada](#deaktivaciya-reaktivaciya-podpiski))
* Aboneliği kullanıcı yeniden etkinleştirdi ([daha fazla bilgi burada](#deaktivaciya-reaktivaciya-podpiski))
* Abonelik tamamlandı
* Başarısız ödeme - açıklamalı ek not (yukarıdaki ekran görüntüsünde)
* Yaklaşan tahsilat bildirimi - yaklaşan tahsilatın tarih ve saati
* Durumlu taksit başvurusu

</details>

<details>

<summary><strong>Müşteriyle diyaloğdaki callback örnekleri</strong></summary>

* **Aboneliği kullanıcı devre dışı bıraktı**
* **Aboneliği kullanıcı yeniden etkinleştirdi**
* **Abonelik tamamlandı**
* **Başarısız ödeme - Yetersiz bakiye.**
* **Başarısız ödeme - Kartın kullanım süresi doldu.**
* **Başarısız ödeme - Kart limiti aşıldı.**
* **Başarısız ödeme - Kart kayıp**
* **Başarısız ödeme - Sistem hatası**&#x20;
* **Başarısız ödeme - İşlem reddedildi. Kartı çıkaran bankayla iletişime geçin.**&#x20;
* **Başarısız ödeme - İşlemin gerçekleştirilmesi kartı çıkaran banka tarafından reddedildi.**
* **Başarısız ödeme - İşlemin gerçekleştirilmesi banka tarafından reddedildi.**&#x20;
* **Yaklaşan tahsilat bildirimi - gg.aa.yyyy ss:dd**
* **Taksit başvurusu onaylandı**
* **Taksit başvurusu iptal edildi**
* **Taksit başvurusu reddedildi**

</details>

İsteğe bağlı olarak kullanıcıya herhangi bir mesaj gönderimini ayarlayabilirsiniz. Örneğin, otomatik ödeme başarısız olduğunda mesaj göndermek.

Başarısız ödeme için belirli bir nedene göre mesaj yanıt bloklarını şu şekilde ayarlayabilirsiniz:

<div data-with-frame="true"><figure><img src="/files/2cf257dd0c5b263dd94cf29b949fe7f53e0078bb" alt=""><figcaption></figcaption></figure></div>

Sebebi ne olursa olsun tüm başarısız ödemelere mesaj göndermek için şu şekilde ayarlayabilirsiniz:

<div data-with-frame="true"><figure><img src="/files/86d3425c3a09159d28a2234b744735732d8dfea8" alt=""><figcaption></figcaption></figure></div>

Tüm callback'lerde, eğer metinde **«Ödeme başarısız»** ifadesi varsa, kullanıcıya sizin belirlediğiniz metinle mesaj gönderilir.

## **Abonelikle ödeme nasıl yapılır**

### **Abonelik nasıl oluşturulur**

Abonelik oluşturmak için önce **abonelik ürünü** oluşturmak gerekir.\
Tam rehber: [Abonelik nasıl oluşturulur ve ayarlanır](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)

Daha sonra abonelik ürününün **ID'sini** kopyalarız. Örneğin, aşağıda nereden alınacağı gösterilmiştir:

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/YuaI5KhrMPHNozN0JNOE9kD_Jcw7a8LE6GigaM0vrVtmsDBvlHvK8GCX5IcNvaJuSQE8iWWYl0KCgR5JpYpcp9Sa2531RGDYWVLjhE72ipScrpodUWeb4KDrECRbBhz4kO-3lMvs" alt="Abonelik ürünü oluşturma"></div>

Abonelik ödeme bağlantısı oluşturmak için, **prodamus\_subscription** değişkenine abonelik ürününün **ID'sini** ayarlamak gerekir. Bundan sonra otomatik olarak **prodamus\_pay\_url** değişkeni oluşur.

<div data-with-frame="true"><figure><img src="/files/ede5653ccb31ddd2227bdbf894ef5136581a4dba" alt="" width="563"><figcaption></figcaption></figure></div>

Kazakçaya çeviri (resmî üslup):

`prodamus_pay_url` değişkenini ekranda bağlantı olarak gösterebilir veya üzerinde «Öde» yazan bir butona yerleştirebilirsiniz. Bağlantı örneği: <https://payform.kz/7p3JR8/>

Sonucun işlenmesi tek seferlik ödemedeki gibi gerçekleşir (yukarıda okuduğunuz gibi).

Başarılı abonelikten sonra kullanıcıya ödeme sırasında girilen **customer\_phone** değişkeni eklenir. Telefon numarası aboneliği yönetmek için gereklidir.

Eğer **customer\_email** verilmezse, aboneliği yönetmek için **customer\_phone** zorunludur.

### **`get_prodamus_subscription_url` fonksiyonuyla abonelik bağlantısı nasıl oluşturulur**

Ürün için abonelik ödeme bağlantısı oluşturmanın başka bir yöntemine bakalım.

1. Prodamus panelinden abonelik ürünü oluşturulur.\
   Tam rehbere şu bağlantıdan bakabilirsiniz:\
   [Abonelik nasıl oluşturulur ve ayarlanır](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)
2. Daha sonra abonelik ürününün **ID'sini** kopyalarız. Örneğin, aşağıda nereden alınacağı gösterilmiştir:

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/YuaI5KhrMPHNozN0JNOE9kD_Jcw7a8LE6GigaM0vrVtmsDBvlHvK8GCX5IcNvaJuSQE8iWWYl0KCgR5JpYpcp9Sa2531RGDYWVLjhE72ipScrpodUWeb4KDrECRbBhz4kO-3lMvs" alt="Abonelik ürünü oluşturma"></div>

Abonelikle ürün ödeme bağlantısını almak için Hesaplayıcıda şu fonksiyonu belirtiriz:&#x20;

`get_prodamus_subscription_url`(subscription\_id, product\_name, expired, customer\_phone, customer\_email, discount, description, extra\_params, products\_for\_receipt)

{% tabs %}
{% tab title="Hesaplayıcı" %}
**Örnek 1:** Abonelik ürününe ödeme bağlantısı

<figure><img src="/files/607abf836895917a174006a4487c6f7a8136d657" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Parametre açıklaması" %}
`link = get_prodamus_subscription_url`(subscription\_id, product\_name, expired, customer\_phone, customer\_email, discount, description, extra\_params, products\_for\_receipt)

Fonksiyonun parametreleri:

<table><thead><tr><th width="253">Parametre</th><th>Parametre değeri</th></tr></thead><tbody><tr><td><strong><code>subscription_id</code></strong></td><td><strong>Abonelik ürününün ID'si</strong> – Prodamus panelinden kopyalanabilir (zorunlu parametre).</td></tr><tr><td><strong><code>product_name</code></strong></td><td><strong>Ürünün adı</strong> (zorunlu parametre).</td></tr><tr><td><strong><code>expired</code></strong></td><td><p><strong>Ödeme bağlantısının geçerlilik süresi</strong> – gg.aa.yyyy formatında (örneğin, 25.01.2021).</p><p>Ayrıca, «Hesaplayıcı» alanında da belirtilebilir:</p><pre class="language-python"><code class="lang-python">expired = current_date + 2  # bağlantı 2 gün geçerli olur, saat 00:00'a kadar
</code></pre><p><code>expired</code> parametresi gerçek saatle de belirtilebilir; format: gg.aa.yyyy ss:dd (örneğin, 25.01.2021 12:23).</p><p>Standart değişkenler de kullanılabilir; örneğin bağlantının geçerlilik süresini 30 dakikaya ayarlamak:</p><pre class="language-python"><code class="lang-python">time = current_time + 30
expired = "#{current_date} #{time}"
</code></pre><p>Bu parametreyi atlamak isterseniz, yerine tek veya çift tırnak ya da <code>None</code> değerini verebilirsiniz.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><p><strong>Ödeme yapan kişinin telefon numarası</strong> — zorunlu değil, eğer <code>customer_email</code> parametresi verilir.</p><p>Bu parametreyi atlamak isterseniz, yerine tek veya çift tırnak verin.</p></td></tr><tr><td><strong><code>customer_email</code></strong></td><td><p><strong>Ödeme yapan kişinin e-postası</strong> — zorunlu değil, eğer <code>customer_phone</code> parametresi verilir.</p><p>Bu parametreyi atlamak isterseniz, yerine tek veya çift tırnak verin.</p></td></tr><tr><td><strong><code>discount</code></strong></td><td><p><strong>İndirim tutarı</strong> – parametre tam sayı ya da ondalık sayı olarak verilebilir: 25 veya 63.5.</p><p>Bu parametreyi atlamak isterseniz, yerine tek veya çift tırnak verin.</p></td></tr><tr><td><strong><code>description</code></strong></td><td><p><strong>Ürünün açıklaması</strong> – belirtilmezse varsayılan olarak <code>'Fatura ödemesi order_id'</code> doldurulur.</p><p>Bu parametreyi atlamak isterseniz, yerine tek veya çift tırnak verin.</p></td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Ek parametreler</strong>, bu fonksiyonda bulunmayan parametrelerdir.<br>Olası ek parametreleri ödeme sisteminin API dokümantasyonunda görebilirsiniz:<br><a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">Prodamus REST API kılavuzu</a></p><p><strong>Örnek:</strong></p><pre class="language-python"><code class="lang-python">extra_params = {"payments_limit": "3"}
</code></pre><p>Bu parametreyi atlamak isterseniz, yerine tek/çift tırnak veya <code>None</code> değerini verebilirsiniz.</p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>50–4000 karakterden oluşan bir dize</strong>, formatı: <code>"sipariş açıklaması - fiyat - satın alınan kaynağa bağlantı"</code></p><p>Örnek:<br>«Çipura avı kursu», fiyatı 4999 tenge, kurs sayfası bağlantısı: <a href="https://www.lovilescha.ru/courses/poimai_kilogram/">https://www.lovilescha.ru/courses/poimai_kilogram/</a>.</p><p>Bu parametre <strong>zorunludur</strong>, kendi çevrimiçi kasanız yoksa, ödemeleri Prodamus üzerinden fiskalleştirmek için gereklidir.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Kopyalamak için kod örneği" %}
extra\_params = {"payments\_limit": "3"}&#x20;

products\_for\_receipt = "‘Çipura avı kursu’ kursu, aylık abonelik fiyatı 2000 tenge, kurs sayfası bağlantısı: <https://www.lovilescha.ru/courses/poimai\\_kilogram/"&#x20>;

link\_prodamus\_sub = get\_prodamus\_subscription\_url(618988, 'Çipura avı kursu', '27.03.2023 17:02', '79167777771', '<mail@mail.com>', 20, 'Piyasadaki en iyi kurs', extra\_params, products\_for\_receipt)
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Blokta birkaç fonksiyon aracılığıyla bağlantı alma sırasında hata olursa, **hata değeri `error_payment_func` değişkenine** yazılır.

Hata, son fonksiyon için Hesaplayıcıda yazılır.
{% endhint %}

### **Abonelik durumu nasıl yönetilir**

Bu yöntem yalnızca gerçek abonelikler içindir; demo modunda kart bağlantısı yoktur.

Aboneliği yönetmek için mutlaka **`customer_phone`** veya **`customer_email`** parametrelerinden biri verilmelidir.

Kullanıcıyı abonelikten çıkarmak için bir blok oluşturup aşağıdaki fonksiyonu çağırmak gerekir:\
[delete\_subscription\_prodamus](https://store.salebot.pro/function/delete_subscription_prodamus)

**Parametreler örneği:**

```json
{
  "customer_phone": "#{customer_phone}",
  "id_subscription":"#{prodamus_subscription}",
  "url":"https://demo.payform.ru/",
  "secret_key":"453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66",
  "switcher":"0",
  "profile_id":"12345"
}
```

* `url` – ödeme formasının URL'si, oluşturucudaki ayarlardan alınan
* `secret_key` – ayarlardan alınan gizli anahtar
* `id_subscription` – abonelik ürününün ID'si
* `customer_phone` – abonelik sahibinin telefon numarası
* `switcher` – aboneliği yönetme: `0` – aboneliği durdurma, `1` – aboneliği yeniden etkinleştirme
* `profile_id` – Prodamus sistemindeki profil ID'si

**Not:**\
Eğer profil ID gelirse, o **`profile_id`** değişkenine kaydedilir.\
`profile_id` fonksiyonuna **`customer_phone`** veya **`customer_email`** yerine verilip abonelik durdurulabilir.

**Örnek:** abonelik bloklarını yapılandırma

<div data-with-frame="true"><figure><img src="/files/b82e250ac413e8ceaaf47c1ee47c492dbc916a03" alt=""><figcaption></figcaption></figure></div>

Dikkat edin, fonksiyon **status** döndürür, onu kaydedip kendi isteğinize göre işleyebilirsiniz. Abonelik başarıyla durdurulduğunda veya yeniden etkinleştirildiğinde **status = ok** olur.

### Aboneliği yönetme fonksiyonu

prodamus\_subscription\_switch\_status(subscription\_id, switcher, customer\_phone, customer\_email, profile\_id) Parametreleri:

subscription\_id – abonelik ürününün ID'si

switcher – aboneliği yönetme: 0 – aboneliği durdurma, 1 – aboneliği yeniden etkinleştirme

customer\_phone – abonelik sahibinin telefon numarası; customer\_email belirtilmişse zorunlu değil

customer\_email – abonelik sahibinin e-posta adresi; customer\_phone belirtilmişse zorunlu değil

profile\_id – Prodamus sistemindeki profil ID'si

<div data-with-frame="true"><figure><img src="/files/9a736977e60b32096b359c09d1e4fc7fb3af0d3b" alt=""><figcaption><p>prodamus_subscription_switch_status fonksiyonunun kullanım örneği</p></figcaption></figure></div>

Kazakçaya çeviri (resmî üslup):

**Örnek 1:** `customer_phone` parametresi verilmiş, `customer_email` atlanmış:

```python
stat = prodamus_subscription_switch_status('618117', '0', '75431312321')
```

**Örnek 2:** `customer_email` parametresi verilmiş, `customer_phone` atlanmış:

```python
stat = prodamus_subscription_switch_status('618117', '0', '', 'examp@mail.com')
```

{% hint style="success" %}
Fonksiyon, tüm işlemler başarıyla tamamlanırsa **`ok`** döndürür veya hata durumunda hata açıklamasını döndürür.
{% endhint %}

## Abonelikte indirimleri yönetme

Bu fonksiyon, abonelik için sonraki ödemelere uygulanacak indirim tutarını ayarlar. İndirim **sınırlı veya sınırsız** sayıda ödemeye uygulanabilir.

```python
prodamus_subscription_discount(subscription_id, discount, customer_phone, num, profile_id)
```

Parametreleri:

* `subscription_id` – aboneliğin ID'si
* `discount` – nokta sonrası iki haneli hassasiyete sahip ondalık sayı; değer sıfırdan büyük olmalı ve aboneliğin temel maliyetini aşmamalıdır
* `customer_phone` – müşterinin telefon numarası, format: `+79999999999` (zorunlu değil, eğer `customer_email` değişkeni varsa; ilk ödemeden sonra oluşur)
* `num` – indirimin uygulanacağı ödeme sayısı (zorunlu değil; belirtilmezse indirim tüm ödemelere uygulanır)
* `profile_id` – Prodamus sistemindeki profil ID'si

İstek başarıyla gerçekleştirilirse, fonksiyon `'ok'` döndürür; hata oluşursa, fonksiyon hata açıklamasını döndürür.

{% hint style="warning" %}
**İndirim tutarı ve aralık yalnızca fonksiyon yeni değerlerle yeniden çağrılırsa yeniden yazılır!**
{% endhint %}

**Örnekler:**

**1. Sonraki tüm otomatik ödemelerde 1₽ indirim verme** (telefon numarası belirtilmez, çünkü otomatik olarak `customer_phone` değişkeninden alınır; indirim tutarı varsayılan olarak aboneliğin tüm süresine uygulanır):

```python
r = prodamus_subscription_discount('624034', '1')
```

<div data-with-frame="true"><img src="https://lh3.googleusercontent.com/_4i_sKKn39tHVdnb47xgj8fxfP_x9UGMWLaierBnpup9LCZMdVT0G9AmIOa8S_uMrVXWQIH6rvZnujCYPGcphkYvwFbCXEh819tWIjGIM4mHvd3afSlPzhZfcWk6D1z1tyBwFrZV" alt="" width="563"></div>

**2. Sonraki 3 ödeme için 2₽ indirim verme örneği** (telefon numarası boş tırnaklarla verilir, çünkü otomatik olarak `customer_phone` değişkeninden alınır):

```python
r = prodamus_subscription_discount('624034', '2', '', '3')
```

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/IgutVRIqTFbaof9A14qdQRLCB6oop4mSAIew5s3lz62Kb4YVHdHJEt6GuC7AACStDgRiR1d_XEG1k5Dj7c2M-VNtci16JbklMTEla8_RNWD7wBNeG649g0lnFiMZilhri3phwKr-" alt="" width="563"></div>

**3. İndirimi ondalık kesirle gösterme örneği** (ayırıcı nokta, değerler tırnaksız gösterilir), telefon numarası değişken aracılığıyla verilebilir.

<div data-with-frame="true"><figure><img src="/files/229e20cb85ac8794ca95c2671b2c011563943f8f" alt="" width="563"><figcaption></figcaption></figure></div>

r = prodamus\_subscription\_discount(#{prodamus\_subscription}, 10.25, #{customer\_phone}, 3)

<div data-with-frame="true"><img src="https://lh3.googleusercontent.com/xJVbZ3Q5f6LzCsYtuX-JqaKYPc69lS6Wi4yA0ui2vBxmFkXXGIHSqgO2VoK0rzDPdNG-HxVpAnpRcmbZXQ_oSrtT7ijJcQA6ZOwjXLbKP8WsCFBip-4DwRnVHpz-fIPRt_Wldo0h" alt="" width="563"></div>

## **Abonelik için sonraki ödemenin tarihini nasıl ayarlayabilirsiniz**

Bu yöntemle aboneliğe ait bir sonraki ödeme tarihi taşınabilir. Tarih yalnızca mevcut ayarlanmış sonraki ödeme tarihinden **geleceğe** taşınabilir, böylece kulüpteki üyelik süresi uzatılabilir.

Örneğin, bu abonelere bonus olarak uygulanabilir.

Bunun için aşağıdaki fonksiyonu kullanmanız gerekir:

```python
prodamus_subscription_payment_date(subscription_id, date, customer_phone, profile_id)
```

Parametreleri:

* `subscription_id` – aboneliğin tanımlayıcısı
* `date` – gg.aa.yyyy ss:dd veya gg.aa.yyyy formatında tarih; yalnızca gg.aa.yyyy verilirse saat 00:00 olur
* `customer_phone` – zorunlu değil; belirtilmezse, `customer_phone` değişkeninden alınır; bulunamazsa fonksiyon çalışmaz
* `profile_id` – Prodamus sistemindeki profilin ID'si

### Parametreler Prodamus'a nasıl gönderilir

Gerekli parametreleri (örneğin abonelik başlangıç tarihi, taksitli ödemeyi kapatma vb.) Prodamus sistemine göndermek için değişken adının başına **`prodamus_`** önekini ekleyin.

Sonra ödeme bağlantısı oluşturulduğunda, bu değişkendeki parametreler otomatik olarak ödeme sistemine gönderilecektir.

## Ödeme nasıl test edilir

{% hint style="info" %}
Sadece ödemeyi test ediyoruz!
{% endhint %}

Entegrasyonları ve ödeme hunilerini yapılandırırken hesabınızdan para çekilmemesi için **test kartları kullanılabilir**.

{% hint style="warning" %}
Önce ödeme sayfanızı **DEMO moduna** geçirin ⤵\
«Kaydet» düğmesine basmayı unutmayın.
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/9a84b3bc41fd5c35995ea1d40f4b2f4e7bcbe169" alt=""><figcaption></figcaption></figure></div>

#### Test ödemesi yapmak için test hesapları kullanılabilir.

**Sberbank test kartları:**

**MIR**\
Kart numarası: 2202 2050 0001 2424\
Son kullanma tarihi: 05/35\
Arka yüzdeki doğrulama kodu (CVV): 669

**MasterCard**\
Kart numarası: 5469 9801 0004 8525\
Son kullanma tarihi: 05/26\
Arka yüzdeki doğrulama kodu (CVV): 041\
3‑D Secure doğrulama kodu: 111111

**Visa**\
Kart numarası: 4006 8009 0096 2514\
Son kullanma tarihi: 05/26\
Arka yüzdeki doğrulama kodu (CVV): 941\
3‑D Secure doğrulama kodu: 111111

{% hint style="success" %}
❗️Test hesaplarıyla ödeme yaparken, tüm yapılandırılmış huniler ve entegrasyonlar **normal ödemedeki gibi çalışır**❗️
{% endhint %}

Form doğrulanmıştır

{% hint style="danger" %}
Gerçek ödemeleri kabul etmek için formun **çalışma moduna** geçmesi gerekir. Yani demo modunun anahtarını **açık kırmızı** duruma getirmek gerekir.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/tr/integrations/payment/prodamus-blr/prodamus.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
