Ortak Ödeme Sayfası
Gönderilecek Adres
https://clientwebpos.moka.com/Api/WebPos/CreateWebPosRequest
İstenen Parametreler
PaymentDealerAuthentication
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. |
WebPosRequest
Parametre | Açıklama | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Amount (decimal) | Ödeme tutarı (Kuruş kısmı nokta ile yazılır. Örn: 27.50) | ||||||||||||||||||||
Currency (string) | Para birimi. Opsiyonel alandır, hiç gönderilmezse veya boş gönderilirse, default’ u TL dir, Diğer değerler : USD, EUR, GBP | ||||||||||||||||||||
InstallmentNumber (integer) | Taksit Sayısı. Opsiyonel alandır, hiç gönderilmezse, boş gönderilirse, 0 veya 1 gönderilirse Peşin satış demektir, Taksit için 2 ile 12 arasında bir değer gönderilmelidir. | ||||||||||||||||||||
OtherTrxCode (string) | Mütabakat sağlamak için kendi Unique Transaction (İşlem) Kodunuzu bu alanda gönderebilirsiniz. (Boş da gönderilebilir). Not : Bayi ödeme detay listesi alırken bu kodunuzu kullanarak Ödeme durumunu öğrenebilirsiniz. | ||||||||||||||||||||
ClientWebPosTypeId (integer) | Ortak ödeme olabilmesi için bu alanın değeri "1" olarak gönderilmelidir. | ||||||||||||||||||||
IsThreeD (bool) | 0: Doğrudan ödeme için ortak ödeme sayfası oluşturulur. 1: 3D ödeme için ortak ödeme sayfası oluşturulur. Doğrudan satış yetkisi yok ise, 3D ödeme olarak kabul edilip ödeme oluşturulur. |
||||||||||||||||||||
IsPoolPayment (tinyint) | Havuz ödemesi mi ? 0 : Hayır - Karttan çekilen tutar, Moka ile bayi arasındaki anlaşmaya göre ertesi gün veya daha sonra bayinin hesabına yatırılır. 1 : Evet - Para kredi kartından çekilecek fakat havuzda bekletilecek. Bayi, müşteri hizmet veya ürünü teslim aldıktan sonra ödemeyi onaylayacak ve bu işlemle ilgili ödeme onaydan sonra bayinin ekstresine yansıyacak. Bayi, havuz ödemesini onaylayıncaya kadar, bu ödeme ekstreye dahil edilmez. Havuz sisteminde bir ödeme göndermek için bu alanı 1 yapınız. |
||||||||||||||||||||
IsPreAuth (tinyint) | Ön provizyon işlemi mi ? 0 : Hayır - Doğrudan Çekim İşlemi 1 : Evet - Ön Provizyon Alma İşlemi (Bir süre sonra DoCapture servisi ile ödemeye dönüştürülmeli) |
||||||||||||||||||||
IsTokenized (tinyint) | Ödeme için girilen kart Moka sisteminde saklanacak mı ? (Kart saklayabilmek için bayinin kart saklama hizmeti alıyor olması gerekir) 0 : Kart saklanmayacak 1 : Kart mutlaka saklanacak 2 : Kartının saklanıp saklanmayacağına ödeme yapan müşteri karar verecek |
||||||||||||||||||||
Language (string) (opsiyonel) | Kullanıcıya gösterilecek arayüzün dili. İngilizce dil seçeneği için "en", varsayılan olarak gelen dil seçeneği türkçe için "tr" yazılır veya alan boş gönderilir | ||||||||||||||||||||
SubMerchantName (string) (opsiyonel) | Ekstrede görünmesini istediğiniz isim – Moka'ya önceden bildirilmeli | ||||||||||||||||||||
Description (string)(opsiyonel) | Açıklama alanıdır. Ödemeye ilişkin bir açıklama yazmak istenirse bu alana yazılabilir.(200 karaktere kadar yazılabilir.) | ||||||||||||||||||||
NewUI (bool)(opsiyonel) | Kullanıcıya gösterilecek arayüzü kontrol eden parametredir. 0 gönderilirse eski sistemden devam edilir. 1 gönderilirse Yeni UI tasarımlar gösterilir. Bu parametre 0 gönderildiğinde yeni eklenen diğer parametreler geçerli olmaz sistem eskisi gibi işlemeye devam eder. |
||||||||||||||||||||
ShowCardBinInstallment (bool)(opsiyonel) | Taksit seçenekleri bölümünün UI da görünümünü kontrol eden parametredir. 0 gönderilirse taksit seçenekleri gözükmez. 1 gönderilirse taksit seçenekleri gözükür. |
||||||||||||||||||||
InstallmentList (Array)(opsiyonel) | UI'da gösterilecek taksit sayılarını kontrol eden parametredir. Eğer boş liste [] gönderilirse, mümkün olan (tanımlı taksit sayısı, kısıtlara takılmayan taksit sayısı) bütün taksit seçeneklerini getirir. Eğer liste içerisine herhangi bir değer verirse [1,2,3,4,7,8] mümkün olan (eğer belirtilen taksit, kısıtlara takılıyorsa o taksit seçeneği de UI’da gösterilmez.) taksit seçeneklerini listeler. Önemli Not: InstallmentList → ShowCardBinInstallments = 1 ise InstallmentList boş ise tüm taksit seçenekleri gösterilir. Bu alan int dizi şeklinde girilmelidir. Sıralı olmak zorunda değildir. Dizi içerisinde 0 gönderilirse dikkate alınmaz. |
||||||||||||||||||||
IsIncludedCommissionAmount (bool)(opsiyonel) | Taksit seçeneklerinde gösterilen tutarlardaki komisyon oranını kontrol eden parametredir. 0 gönderilirse, payloadda gönderilen tutarı taksit sayılarına bölerek (küsürat yukarı yuvarlanır) gösterir. 1 gönderilirse, BIN’e tanımlı komisyon oranlarını taksit sayılarına yansıtır. Eğer Sanal pos BIN numarasına göre yönlendiriliyorsa tanımlı banka oranları geçerlidir Eğer BIN numarasına göre seçilmiyorsa ve tanımlı sanal pos oranı da bayide tanımlı değilse genel komisyon oranları yansıtılır. Önemli Not: IsIncludedCommissionAmount -> ShowCardBinInstallments = 1 ise bu alan zorunludur. |
||||||||||||||||||||
ReturnHash (tinyint) | Değeri 1 olarak verilmek zorundadır. 3D Ödeme akışı tamamlandığında, RedirectURL' nize, işlemin başarılı olup olmadığı bu servisin cevabında dönen CodeForHash kodunun sonuna, T veya F harfi eklenerek hash' lenmesi ile bildirilecektir. | ||||||||||||||||||||
RedirectUrl (string) | 3D işlemi sonucunda, başarılı ya da başarısız işlem sonucunun döndürüldüğü ve kullanıcının yönlendirildiği bayi web sayfası.
Bu URL’ yi verirken, sonuna parametre olarak kendi işlem ID’ nizi yazarsanız, hangi işleminizin sonucunu aldığınızı belirlemiş olursunuz. Örnek : https://www.mysite.com/PayResult?MyTrxId=1A2B3C4DF5R Önemli Not : URL sonuna yazdığınız kendinize ait işlem kodunun, güvenliğiniz için, tahmin edilemez bir kod olmasını tercih ediniz. |
||||||||||||||||||||
RedirectType (integer) | Sonucun yönlendirileceği sayfanın tipi – Opsiyonel alandır Default değeri 0 (sıfır) dır. | ||||||||||||||||||||
BuyerInformation (Array)(opsiyonel) | Bayimizden Ürün/Hizmet satın alan müşterisi ile ilgili alanlardır. Bu alanların gönderilmesi zorunlu olmamasına karşın, Moka ile paylaşılması,
ileride ödemeyle ilgili oluşabilecek sorunlara karşı, hem bayimizin hem de Moka' nın menfaatinedir.
|
||||||||||||||||||||
BasketProduct (Array)(opsiyonel) |
|
||||||||||||||||||||
CustomerInformation (Array)(opsiyonel) | Ödeme esnasında, kart bilgileri de saklanmak isteniyorsa ve Moka tarafında bayinin kart saklama hizmeti aktive edilmişse, o zaman bu bilgi bloğu
gönderilerek, müşteri oluşturulup, ödeme için kullanılan kart numarası bu müşteri altına eklenebilir.
|
Örnek İstek (JSON)
{
"PaymentDealerAuthentication":{
"DealerCode":"xxx",
"Username":"xxx",
"Password":"xxx",
"CheckKey":"28ba1f316e661ee7a0477a13aa30613da548c94a8098829af9255b04d7e916e3"
},
"WebPosRequest":{
"Amount":185,
"Currency":"TL",
"InstallmentNumber":1,
"OtherTrxCode":"3D5ABC24-456",
"ClientWebPosTypeId":1,
"IsThreeD":1,
"IsPoolPayment":0,
"IsPreAuth":0,
"IsTokenized":0,
"Language":"",
"SubMerchantName":"",
"Description":"test açıklama",
"ReturnHash":1,
"RedirectUrl":"https:/pos.testmoka.com/CheckoutResult?MyId=3D5ABC24-456",
"RedirectType":0,
"BuyerInformation":{
"BuyerFullName":"Elif Yetimoğlu",
"BuyerGsmNumber":"1111111111",
"BuyerEmail":"elif@elif.com",
"BuyerAddress":"Cumhuriyet Mahallesi Taşdelen/Çekmeköy"
},
"CustomerInformation":{
"DealerCustomerId":"",
"CustomerCode":"H11",
"FirstName":"Zeynep",
"LastName":"Hashan",
"Gender":"2",
"BirthDate":"19901218",
"GsmNumber":"5555555555",
"Email":"zeynep.hashan@moka.com",
"Address":"Ümraniye/İstanbul",
"CardName":""
}
}
}
Başarılı İstek Sonucu
- Gönderilen istek verileri Moka’ da başarılı bir şekilde işlenmişse, geri dönüş nesnesinin nesnesinin "ResultCode" alanında "Success" bilgisi yazar, "Data" alanında ise bir link bulunur.
- Kullanıcı, kart bilgilerini girebilmesi ve ödeme başlatarak bankadan şifre talep edebilmesi ve SMS ile gelen şifreyi girerek kredi kartı doğrulaması yapabilmesi için bu linke yönlendirilmelidir.
- Data bloğu içerisindeki CodeForHash verisini ise, Moka, ödeme sonucunu bildirmek için kullanacaktır. Bu değeri de veri tabanınızda saklayınız ve bu ödeme isteğiyle ilişkilendiriniz.
- Kullanıcı kart doğrulama işlemini tamamladıktan sonra, servis çağrılırken gönderilen "RedirectUrl" linkine otomatik olarak geri yönlendirilir. Yani sizin verdiğiniz URL’ ye Post atılır
- Bu yönlendirme sırasında "hashValue", "resultCode", "resultMessage", "trxCode" ve "OtherTrxCode" form alanları okunarak işlemin sonucuna göre gerekli işlemler gerçekleştirilebilir.
- Bankadan başarılı işlem dönmesi durumunda trxCode alanı içinde dönen OrderId saklanmalıdır. İptal, iade veya havuz ödeme onayı işlemleri, bu kod kullanılarak gerçekleştirilecektir.
- Ödemenin başarısız olması durumunda ise başarısızlık nedeni "resultCode" ve "resultMessage" alanları kullanılarak öğrenilebilir.
- hashValue nasıl hesaplanır ve kontrol edilir ?
-
3D Onaylama sonucu sizin RedirectURL’ nize TEXT POST atılarak dönen değerler:
Key : hashValue         Value : cdb7869505bdaaac2f4c891fc9ed889885fd7a0c880127ab5d508883efa3ee83
Key : resultCode         Value :
Key : resultMessage   Value :
Key : trxCode               Value : ORDER-17131QQFG04026575
Key : OtherTrxCode     Value : Your-Transaction-Code -
Ödeme sonucunu ayrıca başka bir URL' ye TEXT POST atmamızı isterseniz, bunu Moka operasyon ekibine bildirebilirsiniz.
Post attığımız URL' den text olarak "OK" cevabı gelirse ödeme sonucunun üye işyerine Post atılabildiği anlaşılır, diğer türlü Post işlemi 2 kez daha denenir.
Sizin vereceğiniz bir URL' ye, her ödemenin tamamlanmasında şu bilgiler POST atılır :
Key : hashValue         Value : cdb7869505bdaaac2f4c891fc9ed889885fd7a0c880127ab5d508883efa3ee83
Key : resultCode         Value :
Key : resultMessage   Value :
Key : trxCode               Value : ORDER-17131QQFG04026575
Key : OtherTrxCode     Value : Your-Transaction-Code
Başarılı Sonuç Örneği
{
"Data":{
"Url":"https://clientwebpos.moka.com/commonpaymentpage/b078b5b7-ed93-4b59-9eaf-e1a30536ef85?Lang=En",
"CodeForHash":"9FDFBDFC-42C5-417E-AA93-E4D9D5312AAC"
},
"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 |
---|---|
ClientWebPos.CreateWebPosRequest.InvalidRequest | Geçersiz istek |
ClientWebPos.CreateWebPosRequest.InvalidAccount | Böyle bir bayi bulunamadı. |
ClientWebPos.CreateWebPosRequest.InvalidAmount | Geçersiz tutar |
ClientWebPos.CreateWebPosRequest.RedirectURLNotGiven | Redirect URL verilmemiş. |
ClientWebPos.CreateWebPosRequest.IpAddressNotAllowed | Bu Ip adresine izin verilmiyor. |
ClientWebPos.CreateWebPosRequest.ForeignCurrencyNotAvailableForThisDealer | Yabancı para ile ödeme bayi için tanımlı değil. |
ClientWebPos.CreateWebPosRequest.InstallmentNumberNotAvailableForDealer | Bu taksit sayısı bu bayi için yapılamaz. |
ClientWebPos.CreateWebPosRequest.InvalidInstallmentNumber | Taksit sayısı 2 ile 12 arasıdır. |
ClientWebPos.CreateWebPosRequest.DailyDealerLimitExceeded | Bayi için tanımlı günlük limitlerden herhangi biri aşıldı. |
ClientWebPos.CreateWebPosRequest.MonthlyDealerLimitExceeded | Bayi için tanımlı aylık limitlerden herhangi biri aşıldı. |
ClientWebPos.CreateWebPosRequest.ChannelPermissionNotAvailable | Kanal izni tanımlı değil. |
ClientWebPos.CreateWebPosRequest.InvalidSubMerchantName | Bayiye tanımlanmış submerchant var ve hatalıysa |
ClientWebPos.CreateWebPosRequest.InvalidBuyerEmail | Geçersiz alıcı e-maili |
ClientWebPos.CreateWebPosRequest.InvalidBuyerGsmNumber | Geçersiz alıcı telefon numarası |
ClientWebPos.CreateWebPosRequest.InvalidUnitPrice | Geçersiz birim fiyat |
ClientWebPos.CreateWebPosRequest.InvalidQuantityValue | Geçersiz miktar |
ClientWebPos.CreateWebPosRequest.BasketProductNotFoundInYourProductList | Sepetinizde ürün bulunamadı. |
ClientWebPos.CreateWebPosRequest.MustBeOneOfProductIdOrProductCode | Ürün Id veya ürün kodundan biri olmalıdır. |
ClientWebPos.CreateWebPosRequest.BasketProductNotFound | Sepete eklenen ürün bulunamadı. |
ClientWebPos.CreateWebPosRequest.BasketAmountIsNotEqualPaymentAmount | Sepetteki tutarla ödeme tutarı eşit değil. |
ClientWebPos.CreateWebPosRequest.PaymentMustBeAuthorization | Ödeme yetkilendirilmeli. |
ClientWebPos.CreateWebPosRequest.AuthorizationForbiddenForThisDealer | Bu bayi için yetki kaldırılmıştır. |
ClientWebPos.CreateWebPosRequest.PoolPaymentNotAvailableForDealer | Bu bayi için havuz ödemesi tanımlı değil. |
ClientWebPos.CreateWebPosRequest.PoolPaymentRequiredForDealer | Bu bayi için havuz ödemesi zorunlu |
ClientWebPos.CreateWebPosRequest.TokenizationNotAvailableForDealer | Bu bayi için kart saklama izni tanımlı değil. |
ClientWebPos.CreateWebPosRequest.CustomerInfoIsRequiredToSaveTheCard | Kartı kaydetmek için müşteri bilgisi gerekiyor. |
ClientWebPos.CreateWebPosRequest.FirstNameIsRequiredToSaveTheCard | Kartı kaydetmek için adınız gerekiyor. |
ClientWebPos.CreateWebPosRequest.InvalidGsmNumber | Geçersiz telefon numarası |
ClientWebPos.CreateWebPosRequest.InvalidEmail | Geçersiz e-mail |
ClientWebPos.CreateWebPosRequest.DealerCustomerNotExists | Bayi müşterisi yok. |
ClientWebPos.CreateWebPosRequest.DealerCustomerIdAndCustomerCodeConflicted | Bayi müşteri Id ve müşteri kodu uyuşmuyor. |
EX | Beklenmeyen bir hata oluştu. |
Başarısız Sonuç Örneği
{
"Data":null,
"ResultCode":"ClientWebPos.CreateWebPosRequest.ForeignCurrencyNotAvailableForThisDealer",
"ResultMessage":"",
"Exception":null
}
Ödeme Sonuçlarını Ek olarak Aşağıdaki servislerimizden kontrol edebilirsiniz.
Bilgi Alma İşlemleri - Ödeme ListesiBilgi Alma İşlemleri - Ödeme Transaction Listesi