# Prodamus (KZ)

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

Prodamus’u bağlamak için ödeme formu URL’si ve gizli anahtar gerekir.

Ödeme formu URL’si kayıt sonrası verilir, örneği şöyledir: `demo.payform.ru`.

Gizli anahtar kişisel panelden alınabilir; ayrıca bildirimlerin (notification) gönderileceği URL adresini de orada belirtmek gerekir.

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

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

Bildirimler için adres:\
<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>

Bildirimler için adresi ö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>

**Bildirimler için adres:**\
<https://chatter.mavibot.ai/prodamus\\_callback/result>

Abonelik ödemeleriyle çalışmayı ayarlamak için **«Abonelikler»** sekmesine gidip bildirimler için adresi 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 basın.
{% endhint %}

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

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

Sonrasında 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 formu URL’sini 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şlevli buton

**Ödeme bağlantısı, «Öde» işlevine sahip butonda oluşturulabilir.**

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

Şimdi bu butonun tüm olası parametrelerini inceleyelim.

### Prodamus için «Öde» butonunun zorunlu parametreleri

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

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

Buton ayarlarında kullanıcının Email’i ve/veya telefonu belirtilirse, sipariş sayfasında ödeyenin iletişim bilgileri ve ürün ile fiyat bilgisi gösterilir.

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

**«Metin» alanı** – bu metin, ödeme bağlantılı butonda mesajda gösterilir.

**«Fonksiyon» alanı** – ödeme bağlantısı veren buton oluşturmak için «Öde» fonksiyonunu seçiyoruz.

**«Ödeme sistemi» alanı** – proje ile bağlı ödeme sistemleri listede gösterilir.\
Eğer projeye hiçbir ödeme sistemi bağlanmamışsa, bu buton türü kullanılamaz.

**«Ürün adı» alanı (zorunlu)** – ürünün gerçek adını belirtmek gerekir. Örneğin: «Telefon» değil, «Xiaomi akıllı telefon, model …».\
Not: ürün adında çift tırnak kullanılamaz; bunları kaldırın veya tek tırnakla değiştirin.

**«Tutar» alanı (zorunlu)** – ürünün fiyatını belirtiyoruz.

**«Ek bilgiler» 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 Email 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 oluşturmak 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 butona tıklandığında, Salesbot’taki müşteri sohbetine bağlantıya geçildiğine dair bir mesaj gelir.

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

Bu mesaja göre botun sonraki çalışma mantığı ayarlanabilir.\
Birçok ödeme sistemi, 54-FZ gerekliliklerine uygun olarak gerekli olan bulut tabanlı online kasaları destekler.

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

İşte «Öde» butonundaki bağlantı üzerinden gidildiğ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ı: butonda 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 bilgi ödeme sayfasında **Ek bilgiler** alanında gösterilir.

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

**«Alıcının Email değişkeni» alanı** (zorunlu değil, telefon numarası verilmişse) – burada kullanıcının (müşterinin) Email’i belirtilir. Email’in saklandığı değişken de kullanılabilir, örneğin: `#{email}`

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

**«Bağlantının geçerlilik süresi» alanı** – tarihi `gg.aa.yyyy ss:dd` formatında belirtebilirsiniz (örneğin, 25.01.2021 11:00) veya bağlantının bitiş süresini değişken ile ayarlayabilirsiniz. Ö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şturmak gerekir.\
Ayrıntılı kılavuz: [Prodamus aboneliklerini oluşturma ve ayarlama](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)\
Abonelik için ürün ID’si verilirse, ödeme tutarı dikkate alınmaz. Ürün bilgisi 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 verilirse, başarılı ödeme olduğunda callback’te bu ürünün ID’si iletilir.

**«Ödenen içerik» alanı** (koşullu zorunlu) – bu veriler, kendi online kasanız yoksa Prodamus üzerinden ödemeyi faturalamak için gereklidir. Bu alana satın alma açıklaması, fiyatı ve içeriğe bağlantı yazılır.\
Örneğin: «Saç örgüsü örme» kursu, fiyatı 3000 ruble, kurs sayfasına bağlantı: `https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911`

### «Öde» işlevli buton

Bağlantının geçerlilik süresini belirtirseniz şu durum meydana gelir:\
Kullanıcı ödeme bağlantısını geçerlilik süresi içinde (yani bağlantının süresi henüz dolmadan) isterse ve sohbet içindeyse, ödeme yapması mümkün olmaz 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 süresi mevcut tarihten sonra olmalıdır, aksi halde müşteri bu bağlantı ile ödeme yapamaz.
{% endhint %}

**2. Kullanıcı bağlantıyı isterken, eğer şu anda aktif değilse**\
Bu durumda buton просто görünmez. Müşterinin değişkenlerinde `"error_payment_button"` değişkeni oluşur ve değeri şu 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 şekilde yapabilmesi için böyle bir durumu ayrıca işlemeniz önerilir.
{% endhint %}

Şu şekilde bir koşul bloğu oluşturun:\
Şu 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» fonksiyonlu buton kullanıldığında otomatik oluşturulan müşteri değişkenleri

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

**Sistem 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 hook’u tanımlamak için gereklidir.

{% hint style="danger" %}
Sistem müşteri değişkeni `__payments`-ı silmek veya değiştirmek mümkün değildir!
{% endhint %}

**`error_payment_button` müşteri değişkeni** buton 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 geçerli olur.
{% endhint %}

## Sonuç nasıl işlenir

**Başarılı ödeme**\
Başarılı ödeme yapıldıktan sonra botta **OTOMATİK olarak CALLBACK** gelir; bu, ödeme sisteminin gizli anahtarının ilk 10 karakterinden, `_success` kelimesinden ve ödeme tutarından oluşur.\
Şemayı ayarlamada kullanmak için onu sadece 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 butonlu» bloğa «Öde» işlevli butonları ekliyoruz.\
**2. adım.** Bu bloktan «Başarılı ödeme» bloğuna geçiş yapan **Bağlantı koşulu** alanında callback’i gösteriyoruz.\
Aynı şekilde, «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çimini yapın.
{% endhint %}

❗️Eğer ödemeyi tam koşula göre belirtilen okta kontrol etmeye karar verirseniz, şemanızın mantığını dikkatlice düşünün. Müşteri callback’li koşula sahip bloğu terk ederse, bloğa geçiş olmaz. Böyle bir kontrol yöntemini yalnızca müşteri hunideki yerini değiştirmediyse kullanmak daha iyidir.

Müşterinin bloklar arasında hareket ettiği şemalarda callback’i **«Başlangıç koşulu»** bloğunda gösterme seçeneğini kullanmak daha uygundur.<br>

<div data-with-frame="true"><figure><img src="/files/c433c8c45dcfbb688ea87367291588958f0f0f16" alt=""><figcaption><p>Başarılı ödeme callback’i, blokun 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 botta **OTOMATİK olarak CALLBACK** gelir; bu, ödeme sisteminin gizli anahtarının ilk 10 karakterinden, `_success` kelimesinden 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 abonelikli ürünler için Prodamus callback örneği</p></figcaption></figure></div>

**Hatalı ödeme**\
Ödeme gerçekleştirilirken hata oluşursa botta **OTOMATİK olarak CALLBACK** gelir; bu, ödeme sisteminin gizli anahtarının ilk 10 karakterinden, `_fail` kelimesinden 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 %}

Buton ayarlarında belirtilen tutar, müşterinin ödediği tutardan farklıysa, botta **OTOMATİK olarak CALLBACK** gelir. Bu, ödeme sisteminin gizli anahtarının ilk 10 karakterinden, `_different_amounts` kelimesinden 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şkenin adını siz seçersiniz. Ekran görüntülerinde değişken adlandırma örnekleri verilmiştir.
{% endhint %}

Bu değişkene ödeme bağlantısı yazılır. Değişkeni mesajda bağlantı olarak gösterebilir veya «Öde» metni olan butona 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 noktalı 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 belirtebilirsiniz:<br><code>expired = current_date + 2</code> (bağlantı 2 gün boyunca 00:00’a kadar geçerli olur).</p><p>Kesin zamanı da belirtebilirsiniz: <code>gg.aa.yyyy ss:dd</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 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 istiyorsanız, 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ğildir, eğer <code>customer_email</code> parametresi verilmişse.<br>Bu parametreyi atlamak istiyorsanız, 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 Email adresi</strong> – zorunlu değildir, eğer <code>customer_phone</code> parametresi verilmişse.<br>Bu parametreyi atlamak istiyorsanız, yerine tek tırnak veya çift tırnak verebilirsiniz.</td></tr><tr><td><strong><code>discount</code></strong></td><td><strong>İndirim miktarı</strong> – parametre tam sayı veya noktalı sayı olarak verilebilir: <code>25</code> veya <code>63.5</code>.<br>Bu parametreyi atlamak istiyorsanız, 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 ödeme order_id'</code> doldurulur).<br>Bu parametreyi atlamak istiyorsanız, 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 parametreler, ödeme sisteminin API’si ile çalışma dokümantasyonunda görülebilir: <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 istiyorsanız, 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 karakter arasında bir string</strong> formatında <code>"sipariş açıklaması - fiyat - satın alınan kaynağa bağlantı"</code>.<br>Örneğin:<br><code>“‘Sazan Yakalama’ kursu, fiyatı 4999 ruble, kurs sayfasına bağlantı: https://www.lovilescha.ru/courses/poimai_kilogram/"</code></p><p>Bu parametre, kendi online kasanız yoksa Prodamus üzerinden ödemeyi faturalamak için gereklidir.</p></td></tr></tbody></table>
{% endtab %}

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

products\_for\_receipt = "‘Sazan Yakalama’ 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, '‘Sazan Yakalama’ 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 üzerinden ödeme bağlantısı oluşturulur.
  {% endtab %}
  {% endtabs %}

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

Hata, son fonksiyon üzerinden Hesaplayıcı’da yazılır.
{% endhint %}

## `payment_sum` değişkeni ve ek parametreler ile 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 butona yerleştirebilirsiniz.

`payment_sum` değişkenini tanımlamadan önce şu zorunlu olmayan değişkenleri belirtebilirsiniz:

| Fonksiyon parametreleri    | Parametre açıklaması                                                                                                                                                                                                                                                                                                                                                                                                         |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **product\_name**          | **Ürün adı** (belirtilmezse, otomatik olarak "Fatura ödeme 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 ödeme order_id'` doldurulur) – aşağıdaki ekran görüntüsünde nerede gösterildiği belirtilmiştir.                                                                                                                                                                                                                                                                 |
| **discount\_value**        | **İndirim miktarı** (ö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 Email 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 belirtebilirsiniz:<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 kesin zamanı da belirtebilirsiniz, format: <code>gg.aa.yyyy ss:dd</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 dakikaya 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>Tam argüman 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 ödeme 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. formatta belirtilir. 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 karakter arasında bir string</strong> formatında <code>"sipariş açıklaması - fiyat - satın alınan kaynağa bağlantı"</code>.<br>Örneğin:<br><code>“‘Sazan Yakalama’ kursu, fiyatı 4999 tenge, kurs sayfasına bağlantı: <https://www.lovilescha.ru/courses/poimai_kilogram/>"</code></p><p>Bu zorunlu parametre, kendi online kasanız yoksa Prodamus üzerinden ödemeyi faturalamak 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ı çıkartı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`** tanımlanmadan önce belirlenir.\
Olası değerler:

<table><thead><tr><th width="323"></th><th></th></tr></thead><tbody><tr><td><strong>AC</strong></td><td>RF’de çıkarılmış kart ile ödeme</td></tr><tr><td><strong>ACkz</strong> </td><td>Kazakistan kartı ile ödeme</td></tr><tr><td><strong>ACf</strong></td><td>RF hariç BDT ülkeleri kartları ile ödeme</td></tr><tr><td><strong>ACEURNMBX</strong></td><td>Rusya ve Belarus hariç tüm ülkelerin EUR kartı ile ödeme</td></tr><tr><td><strong>SBP</strong></td><td>Kart bilgisi girmeden hızlı ödeme. Rusya kartları için</td></tr><tr><td><strong>QW</strong> </td><td>Qiwi cüzdan </td></tr><tr><td><strong>PC</strong></td><td>Юmoney</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 ay 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>“Vsegdada” ü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>“Vsegdada” üzerinden 6 aylık taksit</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_10</strong></td><td><strong>“Vsegdada” üzerinden 10 aylık taksit</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_12</strong></td><td><strong>“Vsegdada” üzerinden 12 aylık taksit</strong> </td></tr><tr><td>vs<strong>egdada_installment_0_0_24</strong></td><td><strong>“Vsegdada” üzerinden 24 aylık taksit</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_36</strong> </td><td><strong>“Vsegdada” ü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 Bank» üzerinden 6 aylık taksit</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>«OTP Bank» üzerinden 10 aylık taksit</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>«OTP Bank» üzerinden 12 aylık taksit</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>«OTP Bank» üzerinden 24 aylık taksit</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>«OTP Bank» üzerinden 36 aylık taksit</td></tr><tr><td><strong>mts_installment_0_0_6</strong></td><td>«MTS Bank» üzerinden 6 aylık taksit</td></tr><tr><td><strong>mts_installment_0_0_10</strong> </td><td>«MTS Bank» üzerinden 10 aylık taksit</td></tr><tr><td><strong>mts_installment_0_0_12</strong> </td><td>«MTS Bank» üzerinden 12 aylık taksit</td></tr><tr><td><strong>mts_installment_0_0_24</strong></td><td>“MTS Bank” üzerinden 24 ay taksit</td></tr><tr><td> <strong>mts_installment_0_0_36</strong> </td><td>“MTS Bank” üzerinden 36 ay taksit</td></tr><tr><td><strong>monetaworld</strong></td><td>Rusya hariç dünya bankalarının kartları</td></tr><tr><td><strong>sbrf_bnpl</strong></td><td>Sber üzerinden taksit</td></tr></tbody></table>

Birden fazla değeri **dikey çizgi ile** bölmeye izin verilir.\
Örneğin:

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

`prodamus_currency` — 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 olur.

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

{% hint style="warning" %}
Belirtilmezse, ödeme yöntemleri olmayan sayfaya yönlendirilir.\
Ödeme yöntemleri desteklenerek eklenebilir. Eklenen yöntemleri sayfa ayarlarından veya ödeme bağlantısını açarak 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ı ya da başarısız ödemeden sonra bot’a callback’ler gelir; bunların yardımıyla ödemenin başarıyla yapılıp yapılmadığını belirleyebilirsiniz.

Callback’ler sistemde kullanıcıdan gelen mesajlar gibi görünür, ancak kullanıcı bunları gönderemez. Gizli anahtar ve durumun birleşimi şeklindedirler. Ö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 nedenle kullanıcıya bağlantıyı gönderdikten sonra şu mesajı göndermek daha iyidir:

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

***

**Callback yapısı**

Ödeme butonu aracılığıyla veya Hesaplayıcı’daki fonksiyonla oluşturulan bağlantılar için ödemeden sonra bot’a otomatik olarak bir 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 blok üzerinden 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 tipi "Full match" / "Tam eşleşme" olmalıdır

Yeniden ödeme yapmak için mutlaka **payment\_sum** değişkenini sıfıra eşitleyip daha önce oluşturulan bağlantıyı silmek gerekir. Ardından **payment\_sum** değişkenine yeni bir değer vererek 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 ile ilgili 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 durdurulduysa (örneğin abonelikten vazgeçildiğinde).\
Bu bildirim, mevcut ödenmiş dönem bitmeden önce gelebilir. Yapılacak işlem sizin kararınıza bağlıdır: yok sayma, izlemeye alma veya kullanıcıyı geri kazanmaya çalışma.

**“Aboneliği kullanıcı yeniden etkinleştirdi”** — abonelik geri yüklendi.\
Bu bildirim, kullanıcı mevcut ödenmiş dönem bitmeden önce aboneliği geri yüklerse gelebilir. Yapılacak işlem sizin kararınıza bağlıdır: yok sayma veya izleme listesinden çıkarma.

**“Aboneliği devre dışı bırakma”** — birkaç başarısız ödemeden sonra abonelik durdurulduysa.

### Callback’ten değerleri kaydetme

Başarılı ödeme bildirimi alındıktan sonra **payment\_callback** değişkenine Prodamus’tan bir callback yazılır; bunun içinde tüm ödeme verileri bulunur. Bu verileri kaydedip 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": "Plastik kart Visa, MasterCard, MIR",
  "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ı şu şekilde 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 değer **zorunlu olmayan değişkenlerden** sonra gelir: **payment\_description**, **product\_name**.
{% endhint %}

Tutarı şu şekilde alabilirsiniz:

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

### **Mevcut callback’ler**

Temel başarılı ödeme callback’lerine ek olarak, sohbet içinde kullanıcı tarafından görülmeyen mesajlar şunlardır:

<details>

<summary>callback’ler</summary>

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

</details>

<details>

<summary><strong>Müşteriyle diyalogdaki callback örnekleri</strong></summary>

* **Abone aboneliği devre dışı bıraktı**
* **Abone aboneliği yeniden etkinleştirdi**
* **Abonelik tamamlandı**
* **Başarısız ödeme - Yetersiz bakiye.**
* **Başarısız ödeme - Kartın süresi dolmuş.**
* **Başarısız ödeme - Kart limiti aşılmış.**
* **Başarısız ödeme - Kart kayboldu**
* **Başarısız ödeme - Sistem hatası**&#x20;
* **Başarısız ödeme - İşlem reddedildi. Kartı veren bankayla iletişime geçin.**&#x20;
* **Başarısız ödeme - İşlem, kartı veren banka tarafından reddedildi.**
* **Başarısız ödeme - İşlem 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 yapılandırabilirsiniz. Örneğin, otomatik ödeme başarısız olduğunda mesaj gönderme.

Başarısız ödeme için belirli bir nedene yönelik mesaj cevap bloklarını şu şekilde yapılandırabilirsiniz:

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

Tüm başarısız ödemeler için, nedenine bakılmaksızın, mesaj göndermek üzere şu şekilde yapılandırabilirsiniz:

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

Tüm callback’lerde, metinde **“Ödeme başarısız”** ifadesi varsa, kullanıcıya sizin belirlediğiniz metinle bir mesaj gönderilir.

## **Abonelik ödemesi nasıl yapılır**

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

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

Ardından 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ünün oluşturulması"></div>

Abonelik ödeme bağlantısı oluşturmak için, **prodamus\_subscription** değişkenine abonelik ürününün **ID’sini** atanması 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>

Türkçe çeviri (resmî üslup):

`prodamus_pay_url` değişkeni ekranda bağlantı olarak gösterilebilir veya “Öde” metinli bir butona yerleştirilebilir. Bağlantı örneği: <https://payform.kz/7p3JR8/>

Sonucun işlenmesi tek seferlik ödeme ile aynı şekilde yapılır (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** gerekir.

### **`get_prodamus_subscription_url` fonksiyonu ile 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 bir abonelik ürünü oluşturulur.\
   Detaylı kılavuza şu bağlantıdan ulaşılabilir:\
   [Abonelik nasıl oluşturulur ve ayarlanır](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)
2. Ardından 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ünün oluşturulması"></div>

Ürün aboneliği için ödeme bağlantısı almak amacıyla 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:** Abonelikli ürün için ö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 gösterilebilir:</p><pre class="language-python"><code class="lang-python">expired = current_date + 2  # bağlantı 2 gün geçerli olacak, saat 00:00’a kadar
</code></pre><p><code>expired</code> parametresi tam zamanla da 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 için:</p><pre class="language-python"><code class="lang-python">time = current_time + 30
expired = "#{current_date} #{time}"
</code></pre><p>Bu parametreyi atlamak istiyorsanız, 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ğildir, eğer <code>customer_email</code> parametresi verilirse.</p><p>Bu parametreyi atlamak istiyorsanız, 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-posta adresi</strong> – zorunlu değildir, eğer <code>customer_phone</code> parametresi verilirse.</p><p>Bu parametreyi atlamak istiyorsanız, yerine tek veya çift tırnak verin.</p></td></tr><tr><td><strong><code>discount</code></strong></td><td><p><strong>İndirim miktarı</strong> — parametre tam sayı veya ondalık sayı olarak verilebilir: 25 veya 63.5.</p><p>Bu parametreyi atlamak istiyorsanız, yerine tek veya çift tırnak verin.</p></td></tr><tr><td><strong><code>description</code></strong></td><td><p><strong>Ürün açıklaması</strong> — belirtilmezse, varsayılan olarak <code>'Fatura ödeme order_id'</code> doldurulur.</p><p>Bu parametreyi atlamak istiyorsanız, 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 parametreler.<br>Olası ek parametreleri ödeme sistemi 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 istiyorsanız, 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 metin</strong>, format: <code>"sipariş açıklaması - fiyat - satın alınan kaynağa bağlantı"</code></p><p>Örnek:<br>“Kefal Balıkçılığı Kursu” kursu, fiyatı 4999 tenge, kurs sayfasına bağlantı: <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 fişleş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 = "Kurs ‘Kefal Balıkçılığı Kursu’, aylık abonelik fiyatı 2000 tenge, kurs sayfasına bağlantı: <https://www.lovilescha.ru/courses/poimai\\_kilogram/"&#x20>;

link\_prodamus\_sub = get\_prodamus\_subscription\_url(618988, 'Kurs ‘Kefal Balıkçılığı 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 birden fazla fonksiyonla bağlantı alma sırasında hata olursa, **hata değeri `error_payment_func` değişkenine** yazılır.

Hata, son fonksiyon üzerinden 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)

**Parametre örnekleri:**

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

* `url` — ödeme formunun URL’si, oluşturucudaki ayarlardan alınır
* `secret_key` — ayarlardan alınan gizli anahtar
* `id_subscription` — abonelik ürününün ID’si
* `customer_phone` — abonelik sahibinin telefonu
* `switcher` — abonelik yönetimi: `0` — aboneliği durdurma, `1` — aboneliği yeniden etkinleştirme
* `profile_id` — Prodamus sistemindeki profil ID’si

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

**Örnek:** abonelik bloklarının ayarlanması

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

Dikkat edin, fonksiyon **status** döndürür; bunu kaydedip kendi istediğiniz şekilde işleyebilirsiniz. Aboneliği başarıyla durdurduğunuzda veya yeniden etkinleştirdiğinizde **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 – abonelik yönetimi: 0 – aboneliği durdur, 1 – aboneliği yeniden etkinleştir

customer\_phone – abonelik sahibinin telefonu; customer\_email belirtilmişse zorunlu değildir

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

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>

Türkçe çeviri (resmî üslup):

**Örnek 1:** `customer_phone` parametresi verilmiş, `customer_email` atlandığında:

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

**Örnek 2:** `customer_email` parametresi verilmiş, `customer_phone` atlandığında:

```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 olması durumunda hata açıklamasını döndürür.
{% endhint %}

## Abonelik indirimlerini yönetme

Bu fonksiyon, abonelikteki sonraki ödemeler için indirim tutarını belirler. İndirim **sınırlı veya sınırsız** ödeme sayısı için verilebilir.

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

Parametreleri:

* `subscription_id` — aboneliğin ID’si
* `discount` — ondalık sayı, noktadan sonra iki basamak hassasiyetle; değeri sıfırdan büyük olmalı ve aboneliğin temel ücretini 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` — indirim uygulanacak ödeme sayısı (zorunlu değil; belirtilmezse indirim tüm ödemelere uygulanır)
* `profile_id` — Prodamus sistemindeki profil ID’si

İstek başarıyla tamamlanırsa, 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 tekrar çağrılırsa üzerine yazılır!**
{% endhint %}

**Örnekler:**

**1. Tüm sonraki otomatik ödemeler için 1₽ indirim vermek** (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 olarak gösterme örneği** (ayırıcı nokta olmalıdır, değerler tırnaksız yazılır); telefon numarası değişken üzerinden 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 bir sonraki ödeme tarihini nasıl ayarlarsınız**

Bu yöntemle abonelikte bir sonraki ödeme tarihini ileri alabilirsiniz. Tarih yalnızca mevcut ayarlanmış sonraki ödeme tarihinden **“geleceğe”** doğru ileri alınabilir; böylece kulüpteki katılım süresi artırılabilir.

Örneğin, bu abonelere bonus olarak uygulanabilir.

Bunun için aşağıdaki fonksiyonu kullanmak 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 biçiminde 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 aboneliğin başlangıç tarihi, taksitli ödemeyi devre dışı bırakma vb.) Prodamus sistemine göndermek için değişken adının başına **`prodamus_`** ön ekini ekleyin.

Sonrasında ödeme bağlantısı oluştururken, bu değişkendeki parametreler otomatik olarak ödeme sistemine gönderilir.

## Ödeme nasıl test edilir

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

Entegrasyonu ve ödeme hunilerini ayarlarken hesabınızdan para çekilmemesi için **test kartlarını kullanabilirsiniz**.

{% 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\
Geçerlilik tarihi: 05/35\
Arka yüz doğrulama kodu (CVV): 669

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

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

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

Form test edildi

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


---

# Agent Instructions: 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.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.
