# 5.3. Yeni İşlem Oluşturma

Limiti olan (Kkb sorgusuna ihtiyaç olmayan) bir müşterinin CustomerId’si ile yeni işlem oluşturabilmek için kullanılır. Gönderilen sipariş tutarına göre müşteri ve satıcı limitleri ile diğer validasyonlar kontrol edilerek uygunluk sağlanırsa işlem sonucunda Ödeme Planı servis edilir. Aksi durumda hata mesajı kontrol edilmelidir.

Servis Url: <mark style="color:red;">{SERVIS\_URL}/RequestV2/CreateTransaction</mark>

#### Giriş Parametreleri

<table data-full-width="true"><thead><tr><th width="213">Parametre adı </th><th width="148">Parametre  Tipi</th><th width="63">Z/O</th><th>Açıklama</th></tr></thead><tbody><tr><td>merchantId</td><td>String</td><td>Z</td><td>Haso tarafından size verilen sabit parametredir.</td></tr><tr><td>ipAddress</td><td>String</td><td>O</td><td>İstek yapan istemcinin ip adresi</td></tr><tr><td>orderAmount</td><td>String</td><td>Z</td><td>Sipariş tutarı. 100 ile çarparak gönderiniz. Ondalık basamak olmamalıdır.</td></tr><tr><td>selectedInstallment</td><td>İnt</td><td>Z</td><td>Müşterinin seçtiği taksit kaydının <strong>InstallmentNo</strong> değeridir.</td></tr><tr><td>customerId</td><td>String(10)</td><td>Z</td><td>Haso sisteminde müşterinin sahip olduğu unique değerdir. Limit tanımında size gönderilmişti.</td></tr><tr><td>basketList</td><td>List model</td><td>O</td><td>Sipariş içeriğindeki ürün bilgileri şu modelde gönderilebilir. Her ne kadar opsiyonel olsa da gönderilmesi durumunda peşinat gibi çeşitli kontroller daha iyi yapılabilmektedir.<br>"basketList": [ { "skuCode": "Barkod veya Ürün Kodu", "skudefinitionId": "Kategori", "skuAmount": 71999, "skuMerchant": "Marka veya Satıcı", "skuMerchantContributionRate": 0, "productName": "Ürün İsmi", "productUrl": "Ürünün Satıcının sitesindeki url adresi", "productImage": "Ürünün görseli url adresi" }, { "skuCode": "Barkod veya Ürün Kodu", "skudefinitionId": "Kategori", "skuAmount": 71999, "skuMerchant": "Marka veya Satıcı", "skuMerchantContributionRate": 0, "productName": "Ürün İsmi", "productUrl": "Ürünün Satıcının sitesindeki url adresi", "productImage": "Ürünün görseli url adresi" } ]</td></tr><tr><td>notCalculateFees</td><td>Bool</td><td>O</td><td>Ekstra ücret hesaplanmaması isteniyorsa true gönderilmeli.</td></tr><tr><td>forceRiskFreeEvaluate</td><td>Bool</td><td>O</td><td>true geldiğinde riskli müşterilerden ilk taksiti peşin olarak almayacak şekilde ayarlanır.</td></tr><tr><td>PostponeSelected</td><td>bool</td><td>O</td><td>Taksitler ertelemeli olarak hesaplanacak ise true gönderilir. False ise taksitlerde erteleme yapılmaz.</td></tr><tr><td>RevisedFeeRate</td><td>İnt</td><td>O</td><td>Fee değerinde yapılacak değişikliği belirten değerdir. 100 ile çarparak gönderiniz. Ondalık basamak olmamalıdır. 0 gönderilirse veya gönderilmezse fee değerinde değişiklik yapılmaz. 20 gönderilirse yeni fee değeri orjinal feenin %20’sidir.</td></tr><tr><td>availableLimit</td><td>int</td><td>0</td><td>Satıcı tarafında müşterinin anlık limiti tutuluyorsa peşin ödeme hesabı için <strong>availableLimit</strong> hasoya bu parametre ile gönderilir. Ondalık sayıdan kurtarmak için 100 ile çarparak gönderiniz.<br><mark style="color:purple;"><strong>Dikkat</strong>: Bu parametre 0'dan büyük gönderilirse Haso tarafında limit kontrolü yapılmaz.</mark> Sadece limit aşımı peşin ödeme hesaplaması yapılır.</td></tr><tr><td>requestToken</td><td>String</td><td>Z</td><td><mark style="color:red;">merchantId + customerId + merchantOid + selectedInstallment + ipAddress + orderAmount + merhant_salt</mark> parametreleri ile sha256 algoritması ve HMAC(http://en.wikipedia.org/wiki/Hash-based_message_authentication_code) yöntemi ile şifreleyerek token oluşturur. Sonrasında token'ı base64 hale dönüştürür. Örnek token oluşturma için örnek kodlarımızı inceleyiniz.</td></tr><tr><td>merchantOid</td><td>String(20)</td><td>Z</td><td>Kendi sisteminizde oluşturduğunuz sipariş için unique verdiğiniz sipariş numaranızdır.</td></tr><tr><td>userAddress</td><td>Model</td><td>O</td><td>Siparişin teslimat adresi bilgileri şu modelde gönderilebilir. Her ne kadar optiyonel olsa da gönderilmesi durumunda fraud kontrolleri daha iyi yapılabilmektedir.<br>"userAddress": { "userNameSurname": "Nilüfer Bursalı", "countryName": "TÜRKİYE", "cityName": "BURSA", "townName": "NİLÜFER", "detail": "Abc Mahallesi Abc Caddesi Abc Sitesi B Blok D:1", "postalCode": "16240", "phone": "+90 516 111 22 33" }</td></tr></tbody></table>

Giriş parametreleri Servis Url adresine WebRequest ile post isteği yapılır. İstek sonucunda Json olarak response döner.

#### Çıkış Parametreleri

<table data-full-width="true"><thead><tr><th width="168">Parametre adı </th><th width="222">Tipi</th><th>Açıklama</th></tr></thead><tbody><tr><td>Form["<mark style="color:red;">Success</mark>"]</td><td><mark style="color:blue;">bool</mark></td><td>işlemin başarılı sonuç dönüp dönmediğini bildirir. False dönerse Errors parametresi doludur. True dönerse ödeme planını kendi veritabanınıza kaydedebilir ve siparişinizi aktif edebilirsiniz.</td></tr><tr><td>Form["<mark style="color:red;">Errors</mark>"]</td><td>List&#x3C;<mark style="color:blue;">string</mark>></td><td>Success=false ise işlem ile ilgili hataları liste şeklinde getirir.</td></tr><tr><td>Form["<mark style="color:red;">Data</mark>"]</td><td>Dictionary&#x3C;<mark style="color:blue;">string</mark>, <mark style="color:blue;">object</mark>></td><td>Eğer success=true ise key-value şeklinde data döner.</td></tr></tbody></table>

Success=true olduğunda Form\["<mark style="color:red;">Data</mark>"]\["<mark style="color:red;">TransactionPayments</mark>"] parametresi içeriği şöyledir.

<table data-full-width="true"><thead><tr><th width="386">Parametre adı </th><th width="104">Tipi</th><th>Açıklama</th></tr></thead><tbody><tr><td>TransactionCode</td><td>String</td><td>Haso sistemindeki işlem numarası.Bu numarayı kendi sipariş numaranız ile birlikte kendi veritabanınızda saklamanızı tavsiye ederiz.</td></tr><tr><td>MerchantOid</td><td>String</td><td>Başvuru esnasında gönderdiğiniz kendi sipariş numaranız.</td></tr><tr><td>CustomerId</td><td>String</td><td>İşlemin sahibi olan müşteriyi tanımlayan unique bir değerdir.</td></tr><tr><td>TotalAmount</td><td>Decimal</td><td>Toplam işlem tutarıdır.</td></tr><tr><td>downPayment</td><td>Decimal</td><td>Bu işlem için müşteriden alınması gereken peşinat tutarını gösterir.</td></tr><tr><td>downPaymentType</td><td>String</td><td>Peşinat alınacaksa hangi kuraldan dolayı alınacağı belirtilir.</td></tr><tr><td>Fee</td><td>Decimal</td><td>Sipariş tutarı haricinde ödenecek toplam ekstra tutardır.</td></tr><tr><td>TransactionPayments</td><td>List</td><td>İşleminize ait ödeme planınızdır. Liste halinde aşağıdaki alanları içerir.</td></tr><tr><td>TransactionPayments.InstallmentNo</td><td>Int</td><td>Taksit numarasıdır.</td></tr><tr><td>TransactionPayments.InstallmentPayment</td><td>Decimal</td><td>Ödenmesi gereken taksit tutarıdır.</td></tr><tr><td>TransactionPayments.TermDate</td><td>DateTime</td><td>Taksitin vade tarihidir.</td></tr><tr><td>TransactionPayments.PaymentCode</td><td>String</td><td>Her ödeme kaydı için verilen unique bir değer.</td></tr><tr><td>TransactionPayments.fee</td><td>Decimal</td><td>Taksit kaydına düşen fee değeridir.</td></tr><tr><td>TransactionPayments.feeDiscountCampaigns</td><td>List</td><td>Fee indirimi uygulanan kampanya adı ve indirim oranlarını listeler</td></tr></tbody></table>

ÖNEMLİ: Bu aşamada yani Başvuru isteğini gönderip success aldığınızda Haso tarafında işlem henüz aktiflenmemiştir. İşlem “Sipariş Durumu Bekleniyor” durumunda olacaktır. Başvuru isteğinden success aldıktan sonra kendi siparişinizi sisteminizde aktif edip sonrasında Hasoya <mark style="color:red;">UpdateTransaction</mark> ile tekrar bir istekde bulunarak işlemi aktif etmeniz gerekmektedir. Aksi halde işlem Haso tarafında işlem aktif olmayacak ve müşteri limiti düşmeyecektir.
