--- title: payment --- Ödeme Bileşeni Nedir? === Ödeme bileşeni, Mini Uygulama'ların ödeme işlemlerinde kullanmanız için hazırlanmış olan bir **template UI bileşenidir**. Bu bileşen aracılığı ile Mini Uygulama'larınızın kabuk uygulamadan alınacak kart bilgileri aracılığı ile ödeme işlemlerini yürütebilirsiniz. :::info Not Bu bileşeni kullanabilmeniz için Plateau Studio'da ödeme bileşeninin bulunduğu organizasyon grubuna dahil olmanız gerekir. Plateau Studio'da **organizasyon ve organizasyon grup yapıları** hakkında detaylı bilgi için **[tıklayın.](https://docs.onplateau.com/Getting-Started/creating-organisation)** ::: Ödeme Bileşeni Mini Uygulama'ya Nasıl Eklenir? === Ödeme bileşenini uygulamanıza nasıl ekleyeceğinize **[buradan](https://docs.onplateau.com/Getting-Started/miniApp-development-starter-quide#using-the-payment-component-in-miniapps)** ulaşabilirsiniz. Ödeme Bileşeni Nasıl Kullanılır? === **Uygulamanıza eklediğiniz ödeme bileşenini kullanmak için:** - Ödeme bileşeni üzerinde bulunan **SubProps** altındaki **miniappId** kısmına gidin. - SuperApp Portal üzerinde oluşturduğunuz uygulamaya ait **id** bilgisini **String** olarak ilgili **prop** üzerinde tanımlayın. - Ödeme bileşeninin kullanıldığı ekranda herhangi bir başka komponent üzerinden, ödeme bileşeninde tanımlı olan **doPayment** methodunu çağırın. İlgili method içerisine ödemeye ilişkin **required** olarak 2 parametre vardır: **sipariş numarası** ve **tutar**. **Örnek:** Aşağıdaki gibi bir kod ile ödeme işlemini tetikleyebilirsiniz. ```typescript! (async () => { let paymentResponse; paymentResponse = await (<any>components.paymentCompQID.doPayment)({ amount: String, orderId: String }) }(); ``` Ödeme bileşeninde zorunlu olmayan, ödeme işleminin tipinin belirtildiği bir parametre daha bulunur: **paymentType** Aşağıdaki tablodaki şekilde eklendiği ve eklenmediği durumlarda nasıl kullanabileceğinizi bulabilirsiniz. | Ödeme Tipi | Parametre | Tutar | | --------------------- | --------- | -------------- | | Peşin | - | Zorunlu | | Peşin Auth | Auth | Zorunlu | | Ön Otorizasyon Açma | PreAuth | Zorunlu | | Ön Otorizasyon Kapama | PostAuth | İsteğe Bağlı | | Satış İptal | Void | Kullanılmamalı | | Satış İade | Refund | İsteğe Bağlı | ## Ödeme Tiplerinin Kullanım Örnekleri ### Peşin ```typescript! (async () => { let paymentResponse; paymentResponse = await (<any>components.paymentCompQID.doPayment)({ amount: String, orderId: String }) }(); ``` ### Peşin Auth ```typescript! (async () => { let paymentResponse; paymentResponse = await (<any>components.paymentCompQID.doPayment)({ amount: String, orderId: String, paymentType: 'Auth' }) }(); ``` ### Ön Otorizasyon Açma ```typescript! (async () => { let paymentResponse; paymentResponse = await (<any>components.paymentCompQID.doPayment)({ amount: String, orderId: String, installment: Number, paymentType: 'PreAuth' }) }(); ``` ### MiniApp Backend'i Üzerinden Ön Otorizasyon Kapama Miniapp sahipleri kendi backend'leri ile **Ön Otorizasyon Kapama** işlemi gerçekleştirebilirler. Bunun için yapılması gerekenler aşağıdaki gibidir: - https://mobil.isbank.com.tr/superapp-backend/pay adresine **Post** request ile işleme ait gerekli data'lar gönderilecektir. - Request'in body'sinde olması gereken bilgiler: - **MiniAppId (String)**: Portal üzerinde ki app'e ait id bilgisi - **OrderId (String)**: İşleme ait sipariş numarası - **Total (Double)**: Kısmi veya Tüm tutar bilgisi verilebilir, null olarak da gönderilebilir. - **Type (String)**: **PostAuth** olarak verilmelidir. ### Ön Otorizasyon Kapama ```typescript! (async () => { let paymentResponse; paymentResponse = await (<any>components.paymentCompQID.doPayment)({ orderId: String, paymentType: 'PostAuth' }) }(); ``` ### MiniApp Backend'i Üzerinden Satış İptal Miniapp sahipleri kendi backend'leri ile **Satış İptal** işlemi gerçekleştirebilirler. Bunun için yapılması gerekenler aşağıdaki gibidir: - https://mobil.isbank.com.tr/superapp-backend/pay adresine **Post** request ile işleme ait gerekli data'lar gönderilecektir. - Request'in body'sinde olması gereken bilgiler: - **MiniAppId (String)**: Portal üzerinde ki app'e ait id bilgisi - **OrderId (String)**: İşleme ait sipariş numarası - **Type (String)**: **Void** olarak verilmelidir. ### Satış İptal ```typescript! (async () => { let paymentResponse; paymentResponse = await (<any>components.paymentCompQID.doPayment)({ orderId: String, paymentType: 'Void' }) }(); ``` ### MiniApp Backend'i Üzerinden Satış İade Miniapp sahipleri kendi backend'leri ile **Satış İade** işlemi gerçekleştirebilirler. Bunun için yapılması gerekenler aşağıdaki gibidir: - https://mobil.isbank.com.tr/superapp-backend/pay adresine **Post** request ile işleme ait gerekli data'lar gönderilecektir. - Request'in body'sinde olması gereken bilgiler: - **MiniAppId (String)**: Portal üzerinde ki app'e ait id bilgisi - **OrderId (String)**: İşleme ait sipariş numarası - **Total (Double)**: Kısmi veya Tüm tutar bilgisi verilebilir, null olarak da gönderilebilir. - **Type (String)**: **Refund** olarak verilmelidir. ### Satış İade ```typescript! (async () => { let paymentResponse; paymentResponse = await (<any>components.paymentCompQID.doPayment)({ orderId: String, paymentType: 'Refund' }) }(); ``` Ödeme işlemini tetikledikten sonra, işlemin sonucu bileşen üzerinden döner. İşlem sonucuna göre, eklediğiniz ödeme bileşeni üzerinde **Events** kısmına gelin ve **Add Custom Event** butonu ile yeni event ekleyin. Yeni eklenecek event ve kullanım şekilleri aşağıda belirtildiği şekildedir. ## callParent Bu event sadece **doPayment** methodu tetiklendiğinde çalışır. Eğer ödeme işlemi başarılı olarak tamamlandıysa bu event üzerinden ödemenin başarılı olduğu durumda alınması gereken aksiyonlara ait kod içerikleri eklenebilir. **Event üzerinden erişilebilir olan bir adet parametre bulunmaktadır: customParam** ```typescript= ! declare var customParam; let orderId = customParam.orderId; let isSuccess = customParam.isSuccess; ``` - **orderId:** **doPayment** methodu ile gönderilmiş olan ilgili ödemeye ait **sipariş numarası**dır. - **isSuccess:** Ödemenin başarılı döndüğünü belirtir. **boolean** olarak **true** değer dönecektir. ## paymentFail Bu event sadece **doPayment** methodu tetiklendiğinde çalışır. Eğer ödeme işlemi başarısız olarak tamamlandıysa bu event üzerinden ödemenin başarısız olduğu durumda alınması gereken aksiyonlara ait kod içerikleri eklenebilir. **Event üzerinden erişilebilir olan bir adet parametre bulunmaktadır: customParam** ```typescript= ! declare var customParam; let orderId = customParam.orderId; let errors = customParam.errors; ``` - **orderId:** **doPayment** methodu ile gönderilmiş olan ilgili ödemeye ait **sipariş numarası**dır. - **errors:** Ödemenin neden başarısız döndüğünü belirtir. **String[]** olarak **hata mesajlarını** dönecektir. Diğer Kullanılabilir Event'ler === Aşağıda belirtilen event'ler de ödeme bileşeni üzerinde **events** kısmına gelindiğinde **Add Custom Event** butonu ile yeni event olarak eklemek gerekmektedir. ## isCardSelected Bu event, sadece kullanıcı ekranda listelenen kartlarından birini seçtiğinde tetiklenir. Ödeme işlemi tetiklenmeden önce bir kart seçilmiş olması gerektiğinden kullanıcının **kart seçimi yapma durumu** bu event içerisinde kontrol edilecektir. ## noAvailableCard Bu event, sadece kullanıcının ödeme işlemi için kullanılabilir bir kart bilgisi olmadığında tetiklenir. Kullanıcıya ödeme için gerekli kart bulunmadığına dair bilgi vermek için kullanılacaktır.