3D Secure ile Ödeme
Servis Adresi
/PaymentDealer/DoDirectPaymentThreeD
İstek Parametreleri
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. |
PaymentDealerRequest
Parametre | Açıklama | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CardHolderFullName (string) | Kart sahibinin adı soyadı | ||||||||||||||||||||
CardNumber (string) | Kart numarası | ||||||||||||||||||||
ExpMonth (string) | Son kullanma tarihi ay bilgisi (MM) | ||||||||||||||||||||
ExpYear (string) | Son kullanma tarihi yıl bilgisi (YYYY) | ||||||||||||||||||||
CvcNumber (string) | Kart güvenlik numarası | ||||||||||||||||||||
CardToken (string) | Moka üzerinde Kart saklama özelliği kullanılıyorsa, Kartın Token’ ı verilerek çekim yapılabilir. Token verilmişse, kart numarası ve diğer kart bilgilerinin (son kul. tarihi, cvc) verilmesine gerek yoktur. Not : Token ile ödeme yapılırken NonSecure (Non-3D) işlem yapılmak isteniyorsa, Moka' dan bu parametrik yetki istenerek Non3D ödeme servisi de kullanılabilir. |
||||||||||||||||||||
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. | ||||||||||||||||||||
ClientIP (string) | Kart numarasının alındığı uygulamanın (desktop/web) çalıştırıldığı bilgisayarın IP bilgisi | ||||||||||||||||||||
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. |
||||||||||||||||||||
SubMerchantName (string) (opsiyonel) | Ekstrede görünmesini istediğiniz isim – Moka'ya önceden bildirilmeli | ||||||||||||||||||||
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 saklanacak |
||||||||||||||||||||
IntegratorId (tinyint) (opsiyonel) | Hazır ETicaret paketlerine Moka entegrasyonu yapan Sistem Entegratörü Firmanın ID si – (Entegratör firma değilseniz bu alanı göndermeyiniz !) | ||||||||||||||||||||
Software (string) | Moka ödeme sistemiyle entegre çalışan, bu servisi çağırdığınız Eticaret paketinin veya yazılımınızın ismi. (Max 30 karakter) | ||||||||||||||||||||
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.) | ||||||||||||||||||||
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) | Opsiyonel alandır. Default değeri 0 (sıfır) dır. Ödeme işleminin sonucu servisi çağıran web sitesinde ana sayfaya yönlendirme yapar. IFrame içerisinden bu servis çağrılmışsa ve sonuç IFrame içine redirect yapılsın isteniyorsa, bu alana 1 yazılmalı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"
},
"PaymentDealerRequest":{
"CardHolderFullName":"Ali Yılmaz",
"CardNumber":"5555666677778888",
"ExpMonth":"09",
"ExpYear":"2024",
"CvcNumber":"123",
"CardToken":"",
"Amount":0.01,
"Currency":"TL",
"InstallmentNumber":1,
"ClientIP":"192.168.1.116",
"OtherTrxCode":"20210114172139",
"SubMerchantName":"",
"IsPoolPayment":0,
"IsPreAuth":0,
"IsTokenized":0,
"IntegratorId":0,
"Software":"Possimulation",
"Description":"",
"ReturnHash":1,
"RedirectUrl":"https://service.TestMoka.com/PaymentDealerThreeD?MyTrxCode=20210114172139",
"RedirectType":0,
"BuyerInformation":{
"BuyerFullName":"Ali Yılmaz",
"BuyerGsmNumber":"5551110022",
"BuyerEmail":"aliyilmaz@xyz.com",
"BuyerAddress":"Tasdelen / Çekmeköy"
},
"CustomerInformation":{
"DealerCustomerId":"",
"CustomerCode":"1234",
"FirstName":"Ali",
"LastName":"Yılmaz",
"Gender":"1",
"BirthDate":"",
"GsmNumber":"",
"Email":"aliyilmaz@xyz.com",
"Address":"",
"CardName":"Maximum kartım"
}
}
}
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ı, 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
ÖNEMLİ NOT
3D Secure ile ödeme yapıldığında ödeme durumunu kontrol etmek için Get servislerimizi de kullanabilirsiniz.
Başarılı Sonuç Örneği
{
"Data":{
"Url":"https://service.testmoka.com/PaymentDealerThreeDProcess?threeDTrxCode=0cc02f5fac4f-47fb-aa94-167582552caa",
"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 |
---|---|
PaymentDealer.CheckPaymentDealerAuthentication.InvalidRequest | CheckKey hatalı ya da nesne hatalı ya da JSON bozuk olabilir. |
PaymentDealer.CheckPaymentDealerAuthentication.InvalidAccount | Böyle bir bayi bulunamadı. |
PaymentDealer.CheckPaymentDealerAuthentication.VirtualPosNotFound | Bu bayi için sanal pos tanımı yapılmamış. |
PaymentDealer.CheckDealerPaymentLimits.DailyDealerLimitExceeded | Bayi için tanımlı günlük limitlerden herhangi biri aşıldı. |
PaymentDealer.CheckDealerPaymentLimits.DailyCardLimitExceeded | Gün içinde bu kart kullanılarak daha fazla işlem yapılamaz. |
PaymentDealer.CheckCardInfo.InvalidCardInfo | Kart bilgilerinde hata var. |
PaymentDealer.DoDirectPayment3dRequest.InvalidRequest | JSON objesi yanlış oluşturulmuş. |
PaymentDealer.DoDirectPayment3dRequest.RedirectUrlRequired | 3D ödeme sonucunun döneceği RedirectURL verilmemiş. |
PaymentDealer.DoDirectPayment3dRequest.InvalidCurrencyCode | Para birimi hatalı. (TL, USD, EUR şeklinde olmalı) |
PaymentDealer.DoDirectPayment3dRequest.InvalidInstallmentNumber | Geçersiz taksit sayısı girilmiş 1-12 arası olmalıdır. |
PaymentDealer.DoDirectPayment3dRequest.InstallmentNotAvailableForForeignCurrencyTransaction | Yabancı para ile taksit yapılamaz. |
PaymentDealer.DoDirectPayment3dRequest.ForeignCurrencyNotAvailableForThisDealer | Bayinin yabancı parayla ödeme izni yok. |
PaymentDealer.DoDirectPayment3dRequest.PaymentMustBeAuthorization | Ön otorizasyon tipinde ödeme gönderilmeli. |
PaymentDealer.DoDirectPayment3dRequest.AuthorizationForbiddenForThisDealer | Bayinin ön otorizasyon tipinde ödeme gönderme izni yok. |
PaymentDealer.DoDirectPayment3dRequest.PoolPaymentNotAvailableForDealer | Bayinin havuzlu ödeme gönderme izni yok. |
PaymentDealer.DoDirectPayment3dRequest.PoolPaymentRequiredForDealer | Bayi sadece havuzlu ödeme gönderebilir. |
PaymentDealer.DoDirectPayment3dRequest.TokenizationNotAvailableForDealer | Bayinin kart saklama izni yok. |
PaymentDealer.DoDirectPayment3dRequest.CardTokenCannotUseWithSaveCard | Kart saklanmak isteniyorsa Token gönderilemez. |
PaymentDealer.DoDirectPayment3dRequest.CardTokenNotFound | Gönderilen Token bulunamadı. |
PaymentDealer.DoDirectPayment3dRequest.OnlyCardTokenOrCardNumber | Hem kart numarası hem de Token aynı anda verilemez. |
PaymentDealer.DoDirectPayment3dRequest.ChannelPermissionNotAvailable | Bayinin bu kanaldan ödeme gönderme izni yok. |
PaymentDealer.DoDirectPayment3dRequest.IpAddressNotAllowed | Bayinin IP kısıtlaması var, sadece önceden belirtilen IP den ödeme gönderebilir. |
PaymentDealer.DoDirectPayment3dRequest.VirtualPosNotAvailable | Girilen kart için uygun sanal pos bulunamadı. |
PaymentDealer.DoDirectPayment3dRequest.ThisInstallmentNumberNotAvailableForVirtualPos | Sanal Pos bu taksit sayısına izin vermiyor. |
PaymentDealer.DoDirectPayment3dRequest.ThisInstallmentNumberNotAvailableForDealer | Bu taksit sayısı bu bayi için yapılamaz. |
PaymentDealer.DoDirectPayment3dRequest.DealerCommissionRateNotFound | Bayiye bu sanal pos ve taksit için komisyon oranı girilmemiş. |
PaymentDealer.DoDirectPayment3dRequest.DealerGroupCommissionRateNotFound | Üst bayiye bu sanal pos ve taksit için komisyon oranı girilmemiş. |
PaymentDealer.DoDirectPayment3dRequest.InvalidSubMerchantName | Gönderilen bayi adı daha önceden Moka sistemine kaydedilmemiş. |
PaymentDealer.DoDirectPayment3dRequest.InvalidUnitPrice | Satılan ürünler sepete eklendiyse, geçerli birim fiyatı girilmelidir. |
PaymentDealer.DoDirectPayment3dRequest.InvalidQuantityValue | Satılan ürünler sepete eklendiyse, geçerli adet girilmelidir. |
PaymentDealer.DoDirectPayment3dRequest.BasketAmountIsNotEqualPaymentAmount | Satılan ürünler sepete eklendiyse, sepet tutarı ile ödeme tutarı eşleşmelidir. |
PaymentDealer.DoDirectPayment3dRequest.BasketProductNotFoundInYourProductList | Satılan ürünler sepete eklendiyse, geçerli ürün seçilmelidir. |
PaymentDealer.DoDirectPayment3dRequest.MustBeOneOfDealerProductIdOrProductCode | Satılan ürünler sepete eklendiyse, ürün kodu veya moka ürün ID si girilmelidir. |
EX | Beklenmeyen bir hata oluştu |
Başarısız Sonuç Örneği
{
"Data": null,
"ResultCode": "PaymentDealer.CheckPaymentDealerAuthentication.VirtualPosNotFound ",
"ResultMessage": "",
"Exception": null
}
3D Secure İşlem Akışı
Ödeme İşlemi Hata Kodları (Bankadan Alınan Hatalar)
resultCode | resultMessage |
---|---|
000 | Genel Hata |
001 | Kart Sahibi Onayı Alınamadı |
002 | Limit Yetersiz |
003 | Kredi Kartı Numarası Geçerli Formatta Değil |
004 | Genel Red |
005 | Kart Sahibine Açık Olmayan İşlem |
006 | Kartın Son Kullanma Tarihi Hatali |
007 | Geçersiz İşlem |
008 | Bankaya Bağlanılamadı |
009 | Tanımsız Hata Kodu |
010 | Banka SSL Hatası |
011 | Manual Onay İçin Bankayı Arayınız |
012 | Kart Bilgileri Hatalı - Kart No veya CVV2 |
013 | Visa MC Dışındaki Kartlar 3D Secure Desteklemiyor |
014 | Geçersiz Hesap Numarası |
015 | Geçersiz CVV |
016 | Onay Mekanizması Mevcut Değil |
017 | Sistem Hatası |
018 | Çalıntı Kart |
019 | Kayıp Kart |
020 | Kısıtlı Kart |
021 | Zaman Aşımı |
022 | Geçersiz İşyeri |
023 | Sahte Onay |
024 | 3D Onayı Alındı Ancak Para Karttan Çekilemedi |
025 | 3D Onay Alma Hatası |
026 | Kart Sahibi Banka veya Kart 3D-Secure Üyesi Değil |
027 | Kullanıcı Bu İşlemi Yapmaya Yetkili Değil |
028 | Fraud Olasılığı |
029 | Kartınız e-ticaret İşlemlerine Kapalıdır |
Ödeme Sonuçlarını Ek olarak Aşağıdaki servislerimizden kontrol edebilirsiniz.
Bilgi Alma İşlemleri - Ödeme ListesiBilgi Alma İşlemleri - Ödeme Transaction Listesi