Satış Ekleme
Servis Adresi
/DealerSale/AddSale
İstek Parametreleri
DealerSaleAuthentication
Parametre | Açıklama |
---|---|
DealerCode(string) | Moka sistemi tarafından verilen bayi kodu |
Username (string) | Moka sistemi tarafından verilen Api kullanıcı adı |
Password (string) | Moka sistemi tarafından verilen Api şifresi |
CheckKey (string) | Kontrol anahtarı (DealerCode + "MK" + Username + "PD" + Password) String olarak birleştirilen bu bilgilerin SHA-256 hash algoritmasından geçirilmesiyle oluşturulur. Buraya tıklayarak deneme ekranına gidebilirsiniz. |
DealerSaleRequest
Parametre | Açıklama |
---|---|
CustomerCode (string) | DealerCustomerId gönderilirse zorunlu değil. Satış bu müşteriye yapılacak. |
DealerCustomerId (integer) | CustomerCode gönderilirse zorunlu değil. |
ProductCode (string) | DealerProductId gönderilirse zorunlu değil. |
DealerProductId (integer) | ProductCode gönderilirse zorunlu değil. |
SaleCode (string) | Zorunlu değil, gönderilmezse yeni guid oluşturulur (Max 100 chars) |
SaleCode (string) | Zorunlu değil, gönderilmezse yeni guid oluşturulur (Max 100 chars) |
Amount (decimal) | Her ödemede tahsil edilecek tutar. (Not: toplam satış tutarı değildir!) (örn: 25.45 formatında yazılır.) |
Currency (string) | Zorunlu değil, gönderilmezse TL kabul edilir (TL, USD, EUR) |
InstallmentNumber (integer) | Zorunlu değil, gönderilmezse tek çekim kabul edilir (1..12) |
DealerSaleScheduleId (integer) | Zaman programının ID si (PlanType : 2 verilecekse, bu alana değer girilse de sistem sıfıra çeker, bu yüzden hiç gönderilmese de olur) |
SaleDate (date) | Satışın yapıldığı tarih (YYYYMMDD formatında, örn: "20170918") |
BeginDate (date) | Bu satışa ait ödemeler hangi tarihten itibaren başlayacak. (YYYYMMDD formatında, örn: "20170918") |
EndDate (date) | Bu satışa ait ödemeler hangi tarihte son bulacak. Eğer bir bitiş tarihi verilmezse (boş string gönderilirse veya bu alan hiç gönderilmezse), satış silinene kadar veya EndDate güncellenene kadar düzenli çekimler devam eder.(YYYYMMDD formatında, örn: "19901218") |
HowManyTrial (integer) | Zorunlu değil, gönderilmezse 1 kabul edilir. (Karttan çekim yapıldığında başarısız olunursa kaç gün daha çekim denenecek) |
Description (string) | Zorunlu değil, açıklama detay alanı (Max 200 chars) |
PlanType (integer) | Zorunlu değil, gönderilmezse 1 kabul edilir (1: Ödeme adımları, verilen zaman programına göre otomatik oluşturulur, 2: Ödeme adımları manuel oluşturulmak zorunda, 3: Ödeme adımları hem manuel hem de otomatik oluşturulabilir.) Ödeme adımı manuel oluşturulacaksa, bu servis DealerSaleScheduleId : 0‘ a çeker. |
DealerCustomerTypeId (integer) | Saklı karttan değil de, müşteriye ödeme isteği göndererek ödeme yaptırılacaksa bu alana müşteri tipi ID si girilir. Bayiye özel Müşteri tipi Moka tarafından oluşturulur ve ödeme isteği gönderecek bayiye bu Id önceden iletilir. |
DefaultCard1Token (guid) | Ödeme hangi karttan yapılacak. |
DefaultCard2Token (guid) | İlk karttan ödeme yapılamazsa, hangi kart denenecek. |
DefaultCard3Token (guid) | İlk 2 kart çalışmazsa, son olarak hangi kart denenecek. |
Örnek İstek (JSON)
{
"DealerSaleAuthentication": {
"DealerCode": "xxx",
"Username": "xxx",
"Password": "xxx",
"CheckKey": "aabbccddeeff"
},
"DealerSaleRequest": {
"CustomerCode": "Customer",
"DealerCustomerId": "",
"ProductCode": "Product01",
"DealerProductId": "",
"SaleCode": "satis",
"Amount": "0.01",
"Currency": "TL",
"InstallmentNumber": "1",
"DealerSaleScheduleId": "1005",
"BeginDate": "20170821",
"EndDate": "20171230",
"HowManyTrial": "1",
"Description": "",
"PlanType": "1",
"DealerCustomerTypeId": "",
"DefaultCard1Token": "{9DE41BB0-E82F-4670-B36B-D71FF27A3111}",
"DefaultCard2Token": "",
"DefaultCard3Token": "",
"SaleDate": "20170821"
}
}
Başarılı İstek Sonucu
Gönderilen istek verileri Moka’ da başarılı bir şekilde işlenmişse, geri dönüş nesnesinin "ResultCode" alanında "Success" bilgisi yazar.
"Data" alanında ise dönen işlem sonucu bulunur. "Data" içinde yer alan bilgileri kontrol ederek akışlarınızı devam ettirebilirsiniz.
Satış eklendikten sonra, belirtilen zamanlamaya göre, Moka, otomatik olarak karttan tahsilatları yapacaktır.
Gün içerisinde 2 kez tahsilat denemesi yapılır ve dilerseniz bu çekim sonuçlarını Moka' ya bir URL bildirerek anında
kendi sunucunuza Post attırabilirsiniz.
Vereceğiniz URL' ye, bu ödeme adımı ile ilgili bütün bilgiler TEXT POST olarak gönderilecektir.
Gönderilecek parametreler ve açıklamaları şu şekildedir :
Post Alanı | Açıklama |
---|---|
DealerPaymentPlanHistoryId | Ödeme adımı için yapılan her bir çekim denemesi bir HistoryId üretir |
DealerPaymentPlanId | Ödeme adımı ID sidir. Otomatik veya manuel oluşturulan her bir ödeme adımı, bir ID üretir |
DealerCustomerId | Bu çekimin yapılması için daha önceden eklenmiş işyerinin müşterisinin (kart sahibinin) Moka tarafındaki ID sidir |
CustomerCode | İşyerinin müşterisinin, işyeri tarafındaki kodudur |
DeaerSaleId | Bu çekimin yapılabilmesi için önceden eklenmiş satışın Moka tarafındaki ID sidir |
SaleCode | Satışın, işyeri tarafındaki kodudur |
DealerPaymentId | Çekim işlemi sonucu oluşan Ödeme ID sidir |
DealerId | Çekim işlemini yapan işyeri ID sidir |
Amount | Çekim tutarıdır |
HistoryStatus | Bu çekim işleminin durumunu gösterir.   0: Basarisiz Çekim    1: Basarili Çekim |
VirtualPosOrderId | Bu çekime ait, bankadan dönen ödeme numarasıdır. Bu ID kullanılarak ödeme iptal edilebilir veya iade talebinde bulunulabilir |
ResultCode | Bir hata alınması durumunda, Moka nın döneceği hata kodudur |
ResultMessage | Bir hata alınması durumunda, Moka nın döneceği hata mesajıdır |
PostToken | HashInfo yu oluşturmak için kullanılacak olan bir koddur |
HashInfo | SHA256(DealerCode + Username + Password + PostToken) İşyeri, kendi API erişim bilgilerini ve PostToken alanını String Concatenate yaparak bir SHA256 fonksiyonuna sokar ve bir Hash kodu oluşturur. Oluşan hash kodu, bu alan içinde gelen değerle aynı mı diye kontrol edilir. Değer aynıysa, bu POST işleminin Moka tarafından gönderildiğinden emin olunur |
Parametre | Açıklama |
---|---|
DealerSaleId (integer) | Moka tarafında, satışın Unique ID sidir. |
SaleCode (string) | Bayi tarafında, satışın kodudur. |
CustomerCode (string) | Bayi tarafında, müşterinin kodudur. DealerCustomerId gönderilirse zorunlu değil. |
DealerCustomerId (integer) | Moka tarafında, müşterinin Unique ID sidir. CustomerCode gönderilirse zorunlu değil. |
ProductCode (string) | Bayi tarafında, ürünün kodudur. DealerProductId gönderilirse zorunlu değil. |
DealerProductId (integer) | Moka tarafında, ürünün Unique ID sidir. ProductCode gönderilirse zorunlu değil |
SaleCode (string) | Zorunlu değil, gönderilmezse yeni guid oluşturulur (Max 100 chars) |
Amount (decimal) | Her ödemede tahsil edilecek tutar. (Not: toplam satış tutarı değildir!) (örn: 25.45 formatında yazılır.) |
Currency (string) | Zorunlu değil, gönderilmezse TL kabul edilir (TL, USD, EUR) |
InstallmentNumber (integer) | Zorunlu değil, gönderilmezse tek çekim kabul edilir (1..12) |
DealerSaleScheduleId (integer) | Zaman programının ID si (PlanType : 2 verilecekse, bu alana değer girilse de sistem sıfıra çeker, bu yüzden hiç gönderilmese de olur) |
SaleDate (date) | Satışın yapıldığı tarih (YYYYMMDD formatında, örn: "20170918") |
BeginDate (date) | Bu satışa ait ödemeler hangi tarihten itibaren başlayacak. (YYYYMMDD formatında, örn: "20170918") |
EndDate (date) | Bu satışa ait ödemeler hangi tarihte son bulacak. Eğer bir bitiş tarihi verilmezse (boş string gönderilirse veya bu alan hiç gönderilmezse), satış silinene kadar veya EndDate güncellenene kadar düzenli çekimler devam eder.(YYYYMMDD formatında, örn: "19901218") |
HowManyTrial (integer) | Zorunlu değil, gönderilmezse 1 kabul edilir. (Karttan çekim yapıldığında başarısız olunursa kaç gün daha çekim denenecek) |
Description (string) | Zorunlu değil, açıklama detay alanı (Max 200 chars) |
PlanType (integer) | Zorunlu değil, gönderilmezse 1 kabul edilir (1: Ödeme adımları, verilen zaman programına göre otomatik oluşturulur, 2: Ödeme adımları manuel oluşturulmak zorunda, 3: Ödeme adımları hem manuel hem de otomatik oluşturulabilir.) Ödeme adımı manuel oluşturulacaksa, bu servis DealerSaleScheduleId : 0‘ a çeker. |
DealerCustomerTypeId (integer) | Saklı karttan değil de, müşteriye ödeme isteği göndererek ödeme yaptırılacaksa bu alana müşteri tipi ID si girilir. Bayiye özel Müşteri tipi Moka tarafından oluşturulur ve ödeme isteği gönderecek bayiye bu Id önceden iletilir. |
DefaultCard1Token (guid) | Ödeme hangi karttan yapılacak. |
DefaultCard2Token (guid) | İlk karttan ödeme yapılamazsa, hangi kart denenecek. |
DefaultCard3Token (guid) | İlk 2 kart çalışmazsa, son olarak hangi kart denenecek. |
Başarılı Sonuç Örneği
{
"Data": {
"DealerSaleId": 1003,
"SaleCode": "satis",
"DealerCustomerId": 1034,
"CustomerCode": "Customer",
"DealerProductId": 1009,
"ProductCode": "Product01",
"Amount": 0.01,
"Currency": "TL",
"InstallmentNumber": 1,
"DealerSaleScheduleId": 1005,
"SaleDate": "20170821",
"BeginDate": "20170821",
"EndDate": "20171230",
"HowManyTrial": 1,
"Description": "",
"PlanType": 1,
"DealerCustomerTypeId": 0,
"DefaultCard1Token": "9de41bb0-e82f-4670-b36b-d71ff27a3111",
"DefaultCard2Token": "",
"DefaultCard3Token": ""
},
"ResultCode": "Success",
"ResultMessage": "",
"Exception": null
}
Başarısız İstek Sonucu
Gönderilen istek verileri Moka akışları içerisinde işlenemediyse, geri dönüş nesnesinin "ResultCode" alanında alttaki tablodaki hata kodlarından birisi bulunur.
Beklenmeyen yazılımsal bir hata oluştuğunda ise, "ResultCode" alanında EX yazar ve "ResultMessage" alanında alınan hata mesajı (Exception) yer alır.
Her iki durumda da, "Data" nesnesi null olarak gelir.
ResultCode | Açıklama |
---|---|
DealerSale.AddSale.InvalidRequest | CheckKey hatalı ya da nesne hatalı ya da JSON bozuk olabilir. |
DealerSale.AddSale.CustomerCodeOrDealerCustomerIdMustBeGiven | Müşteri kodu veya bayi müşteri id girilmelidir. |
DealerSale.AddSale.ProductCodeOrDealerProductIdMustBeGiven | Ürün kodu veya bayi ürün id girilmelidir. |
DealerSale.AddSale.SaleDateIsRequired | Satış tarihi gerekli. |
DealerSale.AddSale.AmountIsRequired | Tutar bilgisi gerekli. |
DealerSale.AddSale.DealerSaleScheduleIdIsRequired | Zaman programı id gerekli. |
DealerSale.AddSale.BeginDateIsRequired | Satışın hangi tarihte ödemelere başlacağı bilgisi gerekli. |
DealerSale.AddSale.EndDateIsRequired | Satışın hangi tarihte ödemelerin son bulacağı bilgisi gerekli. |
DealerSale.AddSale.DefaultCard1TokenIsRequired | Ödemenin hangi karttan yapılacağı bilgisi gerekli. |
DealerSale.AddSale.DealerProductIdNotFound | Müşterinin ürün id bulunamadı. |
DealerSale.AddSale.ProductCodeDoesntMatchDealerProductId | Ürün koduyla bayi ürün id eşleşmiyor. |
DealerSale.AddSale.DealerCustomerIdNotFound | Bayi müşteri id bulunamadı. |
DealerSale.AddSale.CustomerCodeDoesntMatchDealerCustomerId | Müşteri koduyla bayi müşteri id eşleşmiyor. |
DealerSale.AddSale.SaleDateAlreadyPassed | Satışın yapıldığı tarih geçti. |
DealerSale.AddSale.BeginDateAlreadyPassed | Satışa ait ödemelerin başladığı tarih geçti. |
DealerSale.AddSale.EndDateAlreadyPassed | Satışa ait ödemelerin bittiği tarih geçti. |
DealerSale.AddSale.BeginSaleEndDateException | Başlangıç ve bitiş satış tarihi istisnası. |
DealerSale.AddSale.DealerSaleScheduleNotFound | Zaman programı bulunamadı. |
DealerSale.AddSale.InvalidCardToken | Kart Token bilgisi geçersiz. |
DealerSale.AddSale.InvalidDefaultCard2Token | Varsayılan 2. kart Token bilgisi geçersiz. |
DealerSale.AddSale.InvalidDefaultCard3Token | Varsayılna 3. kart Token bilgisi geçersiz. |
DealerSale.AddSale.InvalidDealerCustomerTypeId | Müşteri tipi id geçersiz. |
DealerSale.AddSale.InvalidCurrencyCode | Para birimi kodu geçersiz. |
EX | Beklenmeyen bir hata oluştu |
Başarısız Sonuç Örneği
{
"Data": null,
"ResultCode": "DealerSale.AddSale.DefaultCard1TokenIsRequired",
"ResultMessage": "",
"Exception": null
}