API
Önemli
API’nin sandbox URL’i https://sandbox.akifast.com/api/v1/
dir.
Önemli
API’nin production URL’i https://akifast.com/api/v1/
dir.
Önemli
OAuth2 Sunucusunun sandbox URL’i https://oauth.sandbox.akifast.com/
dir.
Önemli
OAuth2 Sunucusunun production URL’i https://oauth.akifast.com/
dir.
Otorizasyon
Akifast Kullanıcısı Doğrulama
Akifast uygulaması, kullanıcılarının üye iş yeri sitelerine giriş yapması ve sitede özgürce dolaşıp
alışveriş yapmaları için gerekli otorizasyonu OAuth2 frameworkü kapsamında yapar. Akifast (Akinon)
kullanıcısının üye iş yerinin web sitesine girmesi için üye iş yeri OAuth2 frameworkündeki
authorization_code
akışını implement etmelidir. Bu akışta aşağıdaki adımlar gerçekleşir.
Kullanıcıyı Login Sayfasına Yönlendirme
Üye iş yeri, giriş sayfasına koyacağı Akifast ile Giriş
butonuyla akışı başlatır. Bu buton kullanıcıyı
Akifast OAuth2 Sunucundaki Giriş sayfasına yönlendirir. Buton tıklayınca aşağıdaki adrese, tabloda yer alan parametreleri
URI’ya ekleyerek yönlendirmelidir. Bu yönlendirme yeni bir sekmede olabileceği gibi pop-up sayfada da olabilir.
Metot |
URL |
Açıklama |
---|---|---|
GET |
/oauth/authorize |
Parametrelerle birlikte bu URL’e yönlendirilen kullanıcı buradan da Login ekranına yönlendirilir. |
Parametre |
Açıklama |
---|---|
grant_type |
Bu değerin |
response_type |
Bu değerin |
client_id |
Akifast’i kullanan üye iş yerinin |
state |
Yapılan isteğe gelen cevabın üye iş yeri tarafında karşılanması için kullanılacak boomerang değer. Zorunlu bir parametre değildir. |
Örnek İstek
https://oauth.sandbox.akifast.com/oauth/authorize?grant_type=authorization_code&response_type=code&client_id=9d36ec04-de2f-11ea-87d0-0242ac130003&state=HLa754Dj
Yukardaki URL’e yönlenen kullanıcı Akifast OAuth2 Sunucusunun Giriş sayfasına ulaşır. Kullanıcı bu sayfada doğrulama yapar ve üye iş yerine izin verir.
Kullanıcıyı Login Sayfasına Pop-Up ile Yönlendirme
Üye iş yeri, giriş sayfasına koyacağı Akifast ile Giriş(Pop-Up)
butonuyla akışı başlatır. Bu buton kullanıcıyı
Akifast OAuth2 Sunucundaki Giriş sayfasına yönlendirir. Butona tıklayınca aşağıdaki adrese, tabloda yer alan parametreleri
URI’ya ekleyerek yönlendirmelidir.
Metot |
URL |
Açıklama |
---|---|---|
GET |
/oauth/authorize |
Parametrelerle birlikte bu URL’e yönlendirilen kullanıcı buradan da Login ekranına yönlendirilir. |
Parametre |
Açıklama |
---|---|
grant_type |
Bu değerin |
response_type |
Bu değerin |
client_id |
Akifast’i kullanan üye iş yerinin |
state |
Yapılan isteğe gelen cevabın üye iş yeri tarafında karşılanması için kullanılacak boomerang değer. Zorunlu bir parametre değildir. |
Önemli
Akifast ile Giriş(Pop-Up)
butonu için pop-up özelliği eklenmelidir bunun için özelleştirilen buton aşağıdaki gibi olabilir.
<a href="#" class="btn btn-akinon" target="popup" onclick= 'login(); return false;'>
login()
fonksiyonu ise URI ye eklenen parametreler ile tetiklenir.
function login() {
window.open('https://oauth.sandbox.akifast.com/oauth/authorize?grant_type=authorization_code&response_type=code&client_id=9d36ec04-de2f-11ea-87d0-0242ac130003&state=HLa754Dj','login-popup','width=600,height=600');
}
Access Token Alma
Doğrulanan ve üye iş yerine izin veren kullanıcı adına access token
alınması için kullanıcı üye iş yerinin sağladığı aşağıdaki parametreleri alan bir URL’ye yönlendirilir.
Parametre |
Açıklama |
---|---|
code |
Bir sonraki adımda acess token almak için gönderilecek kod değeri |
state |
Kullanıcının ilk yönlendirilmesi yapılırken gönderilen boomerang değeri. |
Üye iş yerinin sağlayacağı URL’e yukardaki parametreler URI Query ile gönderilecektir. URL aşağıdaki örnekteki gibi olacaktır.
https://test-merchant.com/oauth-code-handler?code=yCcm1Z&state=HLa754Dj
Kendisine gelen istekteki code
parametresi ile otorizasyon kodunu alan üye iş yeri kullanıcı adına access token almak için aşağıdaki URL’e aşağıdaki parametrelerle istek atmalıdır.
Önemli
Yapılan isteğin Authorization
headerında Basic Authenticatin metodu ile merchant id ve şifre gönderilmelidir.
Metot |
URL |
Content Type |
---|---|---|
POST |
${oauth_server_url}/oauth/token |
application/x-www-form-urlencoded |
Parametre |
Örnek Değer |
Açıklama |
---|---|---|
grant_type |
authorization_code |
OAuth2 Sunucuyua iletilen istekte grant_type değeri |
code |
yCcm1Z |
Redirect URL’de gelen kod değerinin gönderilmesi gerekmektedir. |
Dönüş Değeri |
Açıklama |
Örnek Değer |
---|---|---|
access_token |
Kullanıcı adına istek yapılırken kullanılacak token bilgisi. JWT olarak dönülür |
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImQ3OTdmZDA2LTQ2NmQtNGM1MS05N2RmLWZlYzdmZjAwMjlmOCJ9.eyJleHAiOjE2NDkyOTYzOTEsInVzZXIiOnsiYWtpbm9uX3VzZXJfaWQiOiJGNjFDOEJGMDBCRkQ0NEM3QUZFNDU5RjI0QTM1OEYyQiIsInBob25lX251bWJlciI6Iis5MDUzMDkzMTM5MDcifSwidXNlcl9uYW1lIjoiKzkwNTMwOTMxMzkwNyIsImp0aSI6IjJxTVE0ZVpEMkNlX3MxTDc3U19KeWdjcllldyIsImNsaWVudF9pZCI6IjlkMzZlYzA0LWRlMmYtMTFlYS04N2QwLTAyNDJhYzEzMDAwMyIsInNjb3BlIjpbInJlYWQiLCJ3cml0ZSIsInVwZGF0ZSIsImRlbGV0ZSJdfQ.XfnzxFtaxs8DlA3IP_4n9peBKLNCYGSEJc-A_oO4wZ5v5VUTckBwjnYwrpkcl-ExUDO2FqkoTevLcpIstyXvNd1HejhxDq3t3uC5modp9mGdRZgmYH2zWMtAVVkEd-URQv0tgelWDsNG91iJ2Dw-ozIJnjIcPgtwjNqR_OXznyiJ4VSakRXpDv9eANQPrHkZ7GxND4PeUN5Xby-SNWHftAxB5BMGEdVbtCwctQyRSi1eDGH_P_kllNjFw_LOk4W0fcQ9atNUHFVOUZ1_TRXKERX0R7bhOKhs6mDcdDDrMX45qVDSKMd1lmlXfxU0Q5OQQN_NPAsfGhdDxKEmMjnNrA |
token_type |
Dönen token’ın tipini belirten değerdir. |
bearer |
refresh_token |
Kullanıcının access_token’ının süresi bittiğinde access_token’ı yenilemek için kullanılan token değeridir. Access Token’dan daha uzun süreli olarak üretilir. Access Token süresi bittiğinde refresh token ile yenilenebilir. |
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImQ3OTdmZDA2LTQ2NmQtNGM1MS05N2RmLWZlYzdmZjAwMjlmOCJ9.eyJ1c2VyX25hbWUiOiIrOTA1MzA5MzEzOTA3Iiwic2NvcGUiOlsicmVhZCIsIndyaXRlIiwidXBkYXRlIiwiZGVsZXRlIl0sImF0aSI6IjJxTVE0ZVpEMkNlX3MxTDc3U19KeWdjcllldyIsImV4cCI6MTY1Mjg5NjM5MSwidXNlciI6eyJha2lub25fdXNlcl9pZCI6IkY2MUM4QkYwMEJGRDQ0QzdBRkU0NTlGMjRBMzU4RjJCIiwicGhvbmVfbnVtYmVyIjoiKzkwNTMwOTMxMzkwNyJ9LCJqdGkiOiJwUmhncTNEa3YzSm5TcE9lMFlaMHVFcFJUcVEiLCJjbGllbnRfaWQiOiI5ZDM2ZWMwNC1kZTJmLTExZWEtODdkMC0wMjQyYWMxMzAwMDMifQ.WaiUh8XHrwbW7hSFbkttE__uQsQJ2MbsAJRvTDHVqZtpJqc0ZL3X4kHn5qz-oKSLZFeEOjxax7cCzZ3RrYVGdRzUHfhU5koWsRhRnxXYIOI6KXLj__X3BXAav64psg45VlWMBipbjFmgk0o_1knTXCaglg4j3kk3xtwfmEVOkzqkj0dvJ2hYF61AvilSPcQV0lM1oUk-a3goiSQaI8oYzNUYWKBHgEJSDgOmWRwKKNHYk8Iy8ZmvJnRg1MybxymJP0UOYka64m2CHrqm_8mEWe46jjYCvICXdxS-N9jJKcYDX_y2CHSPGgESLxXthVOdZc_iuhop6qIuKYd92Nz-Hg |
expires_in |
3599999 |
Access Token’ın saniye cinsinden sonra erme zamanı |
scope |
read write update delete |
Access Token’ın geçerli olduğu scope’lar. Sembolik bir bilgidir. |
user.akinon_user_id |
F61C8BF00BFD44C7AFE459F24A358F2B |
Token sahibi kullanıcının Akinon User Id değeridir. |
user.phone_number |
+900000000000 |
Token sahibi kullanıcının telefon numarası |
user.email |
Token sahibi kullanıcının e-mail adresidir. |
|
jti |
İstek için üretilen tekil değer |
2qMQ4eZD2Ce_s1L77S_JygcrYew |
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImQ3OTdmZDA2LTQ2NmQtNGM1MS05N2RmLWZlYzdmZjAwMjlmOCJ9.eyJleHAiOjE2NDkyOTYzOTEsInVzZXIiOnsiYWtpbm9uX3VzZXJfaWQiOiJGNjFDOEJGMDBCRkQ0NEM3QUZFNDU5RjI0QTM1OEYyQiIsInBob25lX251bWJlciI6Iis5MDUzMDkzMTM5MDcifSwidXNlcl9uYW1lIjoiKzkwNTMwOTMxMzkwNyIsImp0aSI6IjJxTVE0ZVpEMkNlX3MxTDc3U19KeWdjcllldyIsImNsaWVudF9pZCI6IjlkMzZlYzA0LWRlMmYtMTFlYS04N2QwLTAyNDJhYzEzMDAwMyIsInNjb3BlIjpbInJlYWQiLCJ3cml0ZSIsInVwZGF0ZSIsImRlbGV0ZSJdfQ.XfnzxFtaxs8DlA3IP_4n9peBKLNCYGSEJc-A_oO4wZ5v5VUTckBwjnYwrpkcl-ExUDO2FqkoTevLcpIstyXvNd1HejhxDq3t3uC5modp9mGdRZgmYH2zWMtAVVkEd-URQv0tgelWDsNG91iJ2Dw-ozIJnjIcPgtwjNqR_OXznyiJ4VSakRXpDv9eANQPrHkZ7GxND4PeUN5Xby-SNWHftAxB5BMGEdVbtCwctQyRSi1eDGH_P_kllNjFw_LOk4W0fcQ9atNUHFVOUZ1_TRXKERX0R7bhOKhs6mDcdDDrMX45qVDSKMd1lmlXfxU0Q5OQQN_NPAsfGhdDxKEmMjnNrA",
"token_type": "bearer",
"refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImQ3OTdmZDA2LTQ2NmQtNGM1MS05N2RmLWZlYzdmZjAwMjlmOCJ9.eyJ1c2VyX25hbWUiOiIrOTA1MzA5MzEzOTA3Iiwic2NvcGUiOlsicmVhZCIsIndyaXRlIiwidXBkYXRlIiwiZGVsZXRlIl0sImF0aSI6IjJxTVE0ZVpEMkNlX3MxTDc3U19KeWdjcllldyIsImV4cCI6MTY1Mjg5NjM5MSwidXNlciI6eyJha2lub25fdXNlcl9pZCI6IkY2MUM4QkYwMEJGRDQ0QzdBRkU0NTlGMjRBMzU4RjJCIiwicGhvbmVfbnVtYmVyIjoiKzkwNTMwOTMxMzkwNyJ9LCJqdGkiOiJwUmhncTNEa3YzSm5TcE9lMFlaMHVFcFJUcVEiLCJjbGllbnRfaWQiOiI5ZDM2ZWMwNC1kZTJmLTExZWEtODdkMC0wMjQyYWMxMzAwMDMifQ.WaiUh8XHrwbW7hSFbkttE__uQsQJ2MbsAJRvTDHVqZtpJqc0ZL3X4kHn5qz-oKSLZFeEOjxax7cCzZ3RrYVGdRzUHfhU5koWsRhRnxXYIOI6KXLj__X3BXAav64psg45VlWMBipbjFmgk0o_1knTXCaglg4j3kk3xtwfmEVOkzqkj0dvJ2hYF61AvilSPcQV0lM1oUk-a3goiSQaI8oYzNUYWKBHgEJSDgOmWRwKKNHYk8Iy8ZmvJnRg1MybxymJP0UOYka64m2CHrqm_8mEWe46jjYCvICXdxS-N9jJKcYDX_y2CHSPGgESLxXthVOdZc_iuhop6qIuKYd92Nz-Hg",
"expires_in": 3599999,
"scope": "read write update delete",
"user": {
"akinon_user_id": "F61C8BF00BFD44C7AFE459F24A358F2B",
"phone_number": "+900000000000",
"email": "john.doe@example.com"
},
"jti": "2qMQ4eZD2Ce_s1L77S_JygcrYew"
}
Bu cevapla birlikte alınan access_token
değeri Akinon kullanıcısı adına yapılacak olan tüm istekler için Akinon-User-Access-Token
headerıyla Akifast API’ye
gönderilecektir. access_token
üye iş yeri tarafında kullanıcının oturumu boyunca saklanabilir, access_token
süresi dolduğunda refresh_token
ile 1 defa yenilenebilir.
Pop-Up İle Access Token Alma
Pop-up ile access token alma işlemi Access Token Alma işlemi ile aynıdır.
Önemli
Burada dikkat edilmesi gereken husus login esnasında açılan pop-up ın kapatılması ve ana ekrandan işlemlerin devam etmesi kısmıdır. Redirect
https://test-merchant.com/oauth-code-handler
end-pointinde yazacağınız view da aşağıda eklenen JavaScript code bloğu ilebody onload
sırasında pop-up ı rahatça kapatabilir ve herhangi bir sayfadan işlemlerinize devam edebilirsiniz.
if (window.parent.name === "login-popup") {
window.opener.location.href = "/dashboard";
window.close();
}
Ödeme Oturumu Oluşturma
Sistemde Akinon User ya da Akinon User olmadan da bir ödeme oturumu oluşturulabilir. Eğer üye iş yeri, bir Akinon kullanıcısı için oturum oluşturur ise, ödeme oturumu sadece ilgili Akinon kullanıcısı tarafından kullanılabilir.
Önemli
Giriş yapmış Akinon User ile işlem yapılacaksa Akinon User’ın access token’ı Akinon-User-Access-Token
headerına setlenmelidir.
Ödeme Oturumu Oluşturma Öncesi Bilinmesi Gereken Maddeler
1) Kullanıcı Tahsisi
Ödeme oturumu oluştururken, kullanıcı tahsisi konusunda bilinmesi gereken maddeler aşağıda belirtilmiştir.
Önemli
İstekte kullanıcıyı temsil eden parametrelerden hiçbiri geçilmezse ödeme oturumu ziyaretçi modunda oluşturulur. Böyle bir oturum ortak ödeme sayfasında giriş yapacak ilk kullanıcıya tahsis edilecektir. İlgili parametreler öncelik sırasına göre aşağıda belirtilmiştir.
Akinon-User-Access-Token
: Kullanıcıyı temsil eden tüm parametrelerin geçilmesi durumunda sadece bu parametre baz alınır.session_owner_id
: Parametrenin kullanılması içinAkinon-User-Access-Token
parametresinin geçilmemesi gerekir.merchant_customer_id
: Parametrenin kullanılması içinAkinon-User-Access-Token
vesession_owner_id
parametrelerinin geçilmemesi gerekir.merchant_customer_email
: Yardımcı parametredir.merchant_customer_id
ile sistemde bir kullanıcı bulunamaması durumunda e-mail adresi kullanılır.
İstekte kullanıcıyı temsil eden sadece
Akinon-User-Access-Token
parametresi geçilirse, oluşturulan ödeme oturumuAkinon-User-Access-Token
’ın bağlı bulunduğu kullanıcıya tahsis edilir.Böyle bir oturumu, kullanıcı ortak ödeme sayfasında tekrar giriş yapmadan kullanabilir.
Akinon-User-Access-Token
ilesession_owner_id
parametresinin birlikte geçilmesine gerek yoktur. Geçilmesi durumunda,Akinon-User-Access-Token
’a ait kullanıcının idsi vesession_owner_id
’da geçilen değer aynı değilse sistem hata cevabı döner.
İstekte kullanıcıyı temsilen sadece
session_owner_id
parametresi geçilirse ve sistemde bu id’li kullanıcının bulunması durumunda, oluşturulan ödeme oturumu o kullanıcıya tahsis edilir.Böyle bir oturum ile ortak ödeme sayfasında, sadece ilgili kullanıcının e-posta adresi ile giriş işlemi yapılabilir.
Kullanıcı, direkt olarak OTP kodunu girebildiği sayfaya yönlendirilir.
İlk başarılı giriş işleminden sonra, tekrar giriş işlemi gerektirmez.
- Kullanıcı bulunmazsa sistem hata cevabı döner.
İstekte kullanıcıyı temsilen sadece
merchant_customer_id
parametresi geçilirse; ödeme oturumu, ilgili kullanıcının sistemde bulunması durumunda o kullanıcıya tahsis edilir.Böyle bir oturum ile ortak ödeme sayfasında, sadece ilgili kullanıcının e-posta adresi ile giriş işlemi yapılabilir.
Kullanıcı, direkt olarak OTP kodunu girebildiği sayfaya yönlendirilir.
İlk başarılı giriş işleminden sonra, tekrar giriş işlemi gerektirmez.
- Kullanıcı bulunmazsa
merchant_customer_email
parametresi ödeme oturumuna kullanıcı olarak tahsis edilir. Ortak ödeme sayfasında, eğer e-posta adresine ait sistemde kullanıcı varsa OTP giriş ekranı, yoksa üye olma ekranı açılır. Eğermerchant_customer_email
gönderilmemişse ödeme oturumu ziyaretçi modunda oluşturulur.
2) Sepet Özelliği ve Amount Parametresi
Sepet özelliği ve amount parametresi hakkında bilinmesi gereken maddeler aşağıda belirtilmiştir.
Önemli
Bu özelliği kullanmak için istekte yer alan
basket
parametresi, istek parametreleri tablosunda belirtilen formatta oluşturulmalıdır.amount
vebasket
parametrelerinin birlikte geçilmesi durumunda, sepette hesaplanan toplam tutar,amount
parametresinde gönderilen tutara eşit olmak zorundadır. Aksi durumda ödeme oturumu oluşturma sırasında hata alınacaktır.basket
parametresi içinde yer alandiscounts
parametresinde gönderilen objeler, indirimi temsil ettiğinden dolayı toplam tutara negatif yönlü etki yapar.
3) Üye İş Yerine Ait Sözleşmelerin Sağlanması
Ortak ödeme sayfasında, sözleşmelerin görüntülenebilmesi için, üye iş yerinin kendi sisteminde 2 farklı servis hazırlaması zorunludur. İlgili servislerin hazırlanması hakkında detaylı bilgi için tıklayınız.
Önemli
Üye iş yerinin sağlaması zorunlu olan servis URL’leri aşağıdaki parametreler de geçilmelidir. Bu parametreler geçilirken bir validasyon uygulanmıştır. Bu validasyona göre ya
agreements_iframe_url
alanı dolu olmalıdır. Ya daquery_agreement_types_url
vequery_agreements_url
alanlarının ikisi birlikte dolu olmalıdır.query_agreement_types_url
: Sözleşme tiplerinin sağlanacağı servis URL’idir.query_agreements_url
: Sözleşmelerin sağlanacağı servis URL’idir.agreements_iframe_url
: Sözleşmelerin sağlanacağı iframe URL’idir.
4) Teslimat Seçeneklerinin Sağlanması
Ortak ödeme sayfasında, kullanıcının seçtiği adrese göre teslimat seçeneklerinin sorgulanıp görüntülenmesi için, üye iş yerinin kendi sisteminde bir servis hazırlaması zorunludur. İlgili servisin hazırlanması hakkında detaylı bilgi için tıklayınız.
Önemli
Üye iş yerinin sağlaması zorunlu olan servis URL’i aşağıdaki parametrede geçilmelidir.
query_shipping_option_url
: Kullanıcının adresine göre teslimat seçeneklerinin sağlanacağı servis URL’idir.
5) Başarılı Ödeme Sonucu Yapılan Bildirim
Ödeme akışının sorunsuz tamamlanabilmesi için, üye iş yerinin kendi sisteminde bildirim isteğini karşılayacak bir servis hazırlaması zorunludur. İlgili servisin hazırlanması hakkında detaylı bilgi için tıklayınız.
Önemli
Üye iş yerinin sağlaması zorunlu olan servis URL’i aşağıdaki parametrede geçilmelidir.
notification_url
: Başarılı ödeme sonucu üye iş yerinin sistemini besleyecek olan servis URL’idir.
6) Ödeme Oturumu Niyet Bildirim
Akifast ile ödeme oturumu oluşturulurken, ödeme işleminin doğruluğunu sağlamak için kullanılır. İlgili servisin hazırlanması hakkında detalı bilgi için tıklayınız.
Önemli
Üye iş yerinin sağlaması zorunlu olmayan bu servis URL’i aşağıdaki parametrede geçilmelidir.
payment_intent_url
: Ödeme işleminin doğruluğunu sağlamak için kullanılacak olan servis URL’idir.
7) Ödeme Oturumunun State Diagramı
Önemli
Ödeme Oturumu oluşturulduğunda oturumun statusü
ACTIVE
olarak işaretlenir eğer 1 saatlik bir süreçte herhangi bir işlem gerçekleştirilmezse statü değeri joblar ileEXPIRED
olarak işaretlenir.Eğer Başarılı bir şekilde ödeme işlemi gerçekleştirilir ise statü değeri
ACTIVE
‘denCOMPLETED
değerine çekilir.Başarılı bir ödemeden sonra üye iş yerine bildirim sağlanamadığında statü değeri
ACTIVE
‘denQUARANTINE
değerine çekilir.Ödeme oturumunun statüsü
QUARANTINE
‘da iken, joblar belli aralıklar ile üye iş yerine bildirim sağlamaya çalışır eğer başarılı olamaz ise statü değeriQUARANTINE
‘danWAITING_FOR_VOID
değerine çekilir.Ödeme oturumunun statüsü
WAITING_FOR_VOID
statüsünde iken başarılı bir void işlemi gerçekleştirildiğinde statü değeriFAILED_AFTER_VOID
değerine çekilir.Ödeme oturumunun statüsü
WAITING_FOR_VOID
statüsünde iken başarısız void işlemleri sonucunda statü değeriMANUAL_REVIEW
değerine çekilir.
Ödeme Oturumu Oluşturma İsteği ve Cevabı
Metot |
URL |
Açıklama |
---|---|---|
POST |
/processor/payment-sessions |
Akinon User Access Token ile yada Token olmadan istek atılır. |
Parametre |
Tip |
Zorunlu |
Açıklama |
---|---|---|---|
customer_id |
string |
opsiyonel |
customer’a ait kimlik bilgisi. |
amount |
bigdecimal |
zorunlu |
sepetteki ürünlerin tutarı. |
currency |
currency |
opsiyonel |
ödeme oturumunun para birimi. Currency değeri eklenmezse default olarak TRY atanır. |
description |
string |
opsiyonel |
sepete eklenen ürünlerin detaylı açıklaması. |
order_id |
string |
zorunlu |
sepete eklenen ürünlerin siparişi için oluşturulan unique bir id. |
conversation_id |
string |
opsiyonel |
Üye iş yeri tarafından gönderilecek iletişim numarası, bumerang değer |
cvv_required |
boolean |
opsiyonel |
kartın cvv değernin kullanılması gerektiği bilgisi. |
order_date |
string |
zorunlu |
sipariş tarihi |
cancel_url |
string |
zorunlu |
sipariş iptal edildiğinde yada başarısız bir ödeme sonrasında yönlendirilen url dir. |
success_url |
string |
zorunlu |
başarılı bir ödeme işlemi sonrasında yönlendirilen url. |
notification_url |
string |
zorunlu |
ödeme işlemi başarılı bir şekilde bittikten sonra tüccarın bilgilendirileceği url. |
payment_intent_url |
string |
opsiyonel |
sipariş bilgilerinin, doğruluğunu sağlamak için kullanılır. |
query_shipping_option_url |
string |
zorunlu |
kargo bilgilerinin sorgulanacağı url. |
query_agreements_url |
string |
eğer |
sözleşmelerin sorgulanacağı url. |
query_agreement_types_url |
string |
eğer |
sözleşme tiplerinin sorgulanacağı url. |
agreements_iframe_url |
string |
eğer |
sözleşme tiplerinin sorgulanacağı iframe url’i. |
preauth |
boolean |
opsiyonel |
ödeme işleminin ön otorizasyonlu olup olmadığını belirler. Default olarak false değeri atanır. |
is_threed |
boolean |
opsiyonel |
ödeme işleminin 3D ile gerçekleştirilmesini belirler. Default olarak false değeri atanır. |
enable_installments |
boolean |
opsiyonel |
varsa taksitlerin uygulanması için kullanılır. Default olarak true atanır. |
merchant_customer_id |
string |
opsiyonel |
üye iş yerine ait müşteri kimlik numarası. Parametrenin geçilmesi durumunda ödeme oturumunun sahipliği belirlenir. |
merchant_customer_phone_number |
string |
opsiyonel |
üye iş yerine ait müşteri telefon numarası. |
merchant_customer_email |
string |
opsiyonel |
üye iş yerine ait müşteri e-mail adresi. |
basket |
object |
opsiyonel |
ödeme oturumu sırasında seçilen ürünlerin tutulduğu sepettir. |
basket.basket_id |
string |
zorunlu |
sepetin kimlik numarası. |
basket.total_product_amount |
bigdecimal |
zorunlu |
sepetteki ürünlerin toplam tutarı. |
basket.total_discount_amount |
bigdecimal |
zorunlu |
sepetteki ürünlere uygulanan toplam indirim tutarı. |
basket.total_amount |
bigdecimal |
zorunlu |
sepetteki ürünlerin hesaplanmış toplam tutarı. |
basket.currency |
currency |
opsiyonel |
sepete eklenen ürünün para birimi. Currency değeri eklenmezse default olarak TRY atanır. |
basket.basket_items[0].sku |
string |
zorunlu |
ürünün stok kodudur. |
basket.basket_items[0].basket_item_id |
string |
zorunlu |
sepetteki her bir ürünün kendine özgü kimlik numarası. |
basket.basket_items[0].unit_price |
bigdecimal |
zorunlu |
sepetteki her bir ürünün birim fiyatı. |
basket.basket_items[0].quantity |
long |
zorunlu |
sepetteki her bir ürünün miktarı |
basket.basket_items[0].price |
bigdecimal |
zorunlu |
sepetteki her bir ürünün hesaplanan tutarı. |
basket.basket_items[0].name |
string |
zorunlu |
sepetteki her bir ürünün ismi. |
basket.basket_items[0].image_url |
string |
opsiyonel |
sepetteki her bir ürün resminin url. |
basket.basket_items[0].base_code |
string |
opsiyonel |
ana ürün kodu, ürüne yorum yapılırken kullanılacak alan. |
basket.discounts[0].description |
string |
opsiyonel |
sepetteki ürünlere uygulanacak indirimin açıklaması. |
basket.discounts[0].amount |
bigdecimal |
zorunlu |
sepetteki ürünlere uygulanacak indirimin oranı. |
session_owner_id |
string |
opsiyonel |
Akinon sisteminde yer alan bir kullanıcı id. Parametrenin geçilmesi durumunda, ödeme oturumu sadece bu kullanıcı için tahsis edilir. |
Dönüş Değeri |
Tip |
Açıklama |
---|---|---|
merchant_id |
string |
oturum oluşturulurken yönlendirildiği tüccarın kimlik numarası. |
customer_id |
string |
customer’a ait kimlik bilgisi. |
amount |
bigdecimal |
sepetteki ürünlerin tutarı. |
currency |
currency |
ödeme oturumunun para birimi. |
description |
string |
sepete eklenen ürünlerin detaylı açıklaması. |
order_id |
string |
sepete eklenen ürünlerin siparişi için oluşturulan unique bir id. |
cvv_required |
boolean |
kartın cvv değernin kullanılması gerektiği bilgisi. |
order_date |
string |
sipariş tarihi. |
cancel_url |
string |
sipariş iptal edildiğinde yada başarısız bir ödeme sonrasında yönlendirilen url. |
success_url |
string |
başarılı bir ödeme işlemi sonrasında yönlendirilen url. |
notification_url |
string |
ödeme işlemi başarılı bir şekilde bittikten sonra tüccarın bilgilendirileceği url. |
payment_intent_url |
string |
sipariş bilgilerinin, doğruluğunu sağlamak için kullanılır. |
query_shipping_option_url |
string |
kargo bilgilerinin sorgulanacağı url. |
query_agreements_url |
string |
sözleşmelerin sorugulanacağı url. |
query_agreement_types_url |
string |
sözleşme tiplerinin sorugulanacağı url. |
agreements_iframe_url |
string |
sözleşme tiplerinin sorugulanacağı iframe url’i. |
shipping_address |
string |
kargonun gideceği adresi gösteren key. |
billing_address |
string |
faturanın gideceği adresi gösteren key. |
shipping_option_key |
string |
kargolara özel kimlik numarası. |
shipping_amount |
bigdecimal |
kargo tutarı. |
total_amount |
bigdecimal |
sepetteki ürünlerin ve kargonun toplam tutarı. |
preauth |
boolean |
ödeme işleminin ön otorizasyonlu olup olmadığını belirler. Default olarak false değeri atanır. |
is_threed |
boolean |
ödeme işleminin 3D ile gerçekleştirilmesini belirler. Default olarak false değeri atanır. |
enable_installments |
boolean |
varsa taksitlerin uygulanması için kullanılır. Default olarak true atanır. |
session_token |
string |
oturum için oluşturulan benzersiz bir key. |
transaction_token |
string |
oturum için oluşturulan benzersiz bir key. |
akinon_user_id |
string |
akinon user için oluşturulan kimlik numarası. |
created_date |
string |
oturumun oluşturulduğu tarih. |
expiry_date |
string |
oturumun sonlanacağı tarih. |
status |
enum |
oturumun durumu SessionTokenStatus |
merchant_customer_id |
string |
üye iş yerine ait müşteri kimlik numarası. |
merchant_customer_phone_number |
string |
üye iş yerine ait müşteri telefon numarası. |
merchant_customer_email |
string |
üye iş yerine ait müşteri e-mail adresi. |
basket |
object |
ödeme oturumu sırasında seçilen ürünlerin, indirimlerin tutulduğu sepettir. |
basket.basket_id |
string |
sepetin kimlik numarası. |
basket.total_product_amount |
bigdecimal |
sepetteki ürünlerin toplam tutarı. |
basket.total_discount_amount |
bigdecimal |
sepetteki ürünlere uygulanan toplam indirim tutarı. |
basket.total_amount |
bigdecimal |
sepetteki ürünlerin hesaplanmış toplam tutarı. |
basket.currency |
currency |
sepete eklenen ürünün para birimi. Currency değeri eklenmezse default olarak TRY atanır. |
basket.basket_items[0].sku |
string |
ürünün stok kodudur. |
basket.basket_items[0].basket_item_id |
string |
sepetteki her bir ürünün kendine özgü kimlik numarası. |
basket.basket_items[0].unit_price |
bigdecimal |
sepetteki her bir ürünün birim fiyatı. |
basket.basket_items[0].quantity |
long |
sepetteki her bir ürünün miktarı. |
basket.basket_items[0].price |
bigdecimal |
sepetteki her bir ürünün hesaplanan tutarı.(quantity * unit_price) |
basket.basket_items[0].name |
string |
sepetteki her bir ürünün ismi. |
basket.basket_items[0].image_url |
string |
sepetteki her bir ürün resminin url. |
basket.basket_items[0].base_code |
string |
ana ürün kodu, ürüne yorum yapılırken kullanılacak alan. |
basket.discounts[0].description |
string |
sepetteki ürünlere uygulanacak indirimin açıklaması. |
basket.discounts[0].amount |
bigdecimal |
sepetteki ürünlere uygulanacak indirimin oranı. |
session_owner_email |
string |
Parametrenin dolu gelmesi, ilgili ödeme oturumunun sadece bu kullanıcıya ait olduğunu gösterir. |
Örnek İstek:
{
"customer_id" : "CUSTOMER_060916",
"amount" : "80",
"currency" : "TRY",
"description": "test description",
"order_id" : "280220221430",
"conversation_id": "JHsxbsW280220221430",
"order_date" : "2021-12-16T15:01:23.51+03:00",
"cancel_url" : "http://localhost:7005/cancel-order/20220228143627",
"success_url" : "http://localhost:7005/success-order/20220228143627",
"notification_url" : "http://localhost:7005/notify-url/20220228143627",
"payment_intent_url" : "http://localhost:7005/payment-intent-url",
"preauth" : false,
"is_threed": false,
"query_shipping_option_url": "https://61c1c3459dbcca0017c82102.mockapi.io/api/shipping_options",
"query_agreements_url": "https://61dd7bc1f60e8f0017668849.mockapi.io/agreements",
"query_agreement_types_url": "http://localhost:7005/query-agreement-types",
"agreements_iframe_url": "http://localhost:7005/agreements-iframe-url",
"enable_installments" : true,
"merchant_customer_id": null,
"merchant_customer_phone_number": null,
"merchant_customer_email": null,
"session_owner_id": "C2C0CE12F64B4103809BB854D08706F5",
"basket" : {
"basket_id" : "B-202111191524",
"total_product_amount": "100",
"total_discount_amount" : "20",
"total_amount" : "80",
"currency" : "TRY",
"total_quantity" : 1,
"basket_items" : [
{
"sku": "2100123574",
"base_code": "base_code_1",
"basket_item_id" : "P-B-202111191524-1",
"unit_price": "100",
"quantity" : 1,
"price": "100",
"brand" : "test brand",
"name" : "test name",
"image_url" : "test image url"
}
],
"discounts" : [
{
"description" : "test description",
"amount" : "20"
}
]
}
}
Örnek Cevap:
{
"trace_id": "a4dde67e-2ee5-417e-980d-45c7aa0e088f",
"response": {
"merchant_id": "9d36ec04-de2f-11ea-87d0-0242ac130003",
"customer_id": "CUSTOMER_060916",
"amount": 80,
"currency": "TRY",
"description": "test description",
"order_id": "280220221430",
"cvv_required": true,
"order_date": "2021-12-16T15:01:23.51+03:00",
"cancel_url": "http://localhost:7005/cancel-order/20220228143627",
"success_url": "http://localhost:7005/success-order/20220228143627",
"query_shipping_option_url": "https://61c1c3459dbcca0017c82102.mockapi.io/api/shipping_options",
"query_agreements_url": "https://61dd7bc1f60e8f0017668849.mockapi.io/agreements",
"query_agreement_types_url": "http://localhost:7005/query-agreement-types",
"agreements_iframe_url": "http://localhost:7005/agreements-iframe-url",
"payment_intent_url": "http://localhost:7005/payment-intent-url",
"shipping_address": null,
"billing_address": null,
"shipping_option_key": null,
"shipping_amount": null,
"total_amount": 100,
"preauth": false,
"is_threed": false,
"enable_installments": true,
"session_token": "e7d624f0-c842-4826-a344-8c05cc6d6114",
"transaction_token": "JGmhG9bOro82/84JdjAWNflDH2dynHsckkrpRRO9pc73NLwSSe5+dzHa9JxdpIBKnWtAEfGhaYpFGrEoBQJlyg==",
"akinon_user_id": "C2C0CE12F64B4103809BB854D08706F5",
"created_date": "2022-03-01T11:08:29.67+03:00",
"expiry_date": "2022-03-01T12:08:29.66+03:00",
"status": "ACTIVE",
"merchant_customer_id": null,
"merchant_customer_phone_number": null,
"merchant_customer_email": null,
"session_owner_email": "john.doe@example.com",
"basket": {
"basket_id": "B-202111191524",
"total_product_amount": 100,
"total_discount_amount": 20,
"total_amount": 80,
"currency": "TRY",
"basket_items": [
{
"sku": "2100123574",
"base_code": "base_code_1",
"basket_item_id": "P-B-202111191524-1",
"unit_price": 100,
"quantity": 1,
"price": 100,
"name": "test name",
"image_url": "test image url"
}
],
"discounts": [
{
"description": "test description",
"amount": 20
}
]
}
}
}
Ödeme Oturumu Oluşturma Esnasında Karşılaşılabilecek Hatalar
Bu bölümde ödeme oturumu oluşturma esnasında karşılaşılabilecek belli başlı hatalara yer verilmiştir. Genel olarak tüm API hata kodlarına erişmek için tıklayınız.
1) Kullanıcı Tahsisi Hataları
Kullanıcı tahsisi hakkında aşağıdaki hatalar alınabilir.
Önemli
İstekte hem
Akinon-User-Access-Token
hem desession_owner_id
geçilirse veAkinon-User-Access-Token
’ye ait kullanıcı idsisession_owner_id
’ye eşit değilse aşağıdaki hata alınır.{ "trace_id": "fc3ffea0-7261-4eb7-b3e1-db4f4079afed", "response": { "errors": [ { "error_code": "INVALID_USER_FOR_PAYMENT_SESSION", "message": "Kullanıcı adı ödeme oturumu için geçerli değil.", "argument": null } ] } }
İstekte sadece
session_owner_id
parametresi geçilirse ve bu idye ait sistemde bir kullanıcı bulunamazsa aşağıdaki hata alınır.{ "trace_id": "35ec0c18-7f7f-404a-8dd0-7921a97b1d42", "response": { "errors": [ { "error_code": "USER_NOT_FOUND", "message": "Kullanıcı bulunamadı.", "argument": null } ] } }
2) Sepet ile Tutar Arasındaki Uyuşmazlık
Önemli
- İstekte
basket
parametresi altında gönderilen ürünlerin toplam tutarı ileamount
parametresinde gönderilen tutarın aynı olmaması durumunda aşağıdaki hata cevabı döner. discounts
parametresi içinde gönderilen indirimler eksi yönde etkiye sahiptir.
{
"trace_id": "ef7c0a36-c8ae-46ce-adfb-39a3ea40ac2b",
"response": {
"errors": [
{
"error_code": "AMOUNTS_DONT_MATCH",
"message": "Sepet ve Sipariş tutarları örtüşmüyor.",
"argument": null
}
]
}
}
3) Sepet içindeki Tutarların Arasındaki Uyuşmazlık
Sepet içinde gönderilen tutar parametrelerin uyuşmazlığı sonucu aşağıdaki hatalar alınır.
Önemli
total_product_amount
parametresinde,basket_items
içindeki ürünlerin toplam tutarından farklı değer gönderilirse aşağıdaki hata döner. Bu tutardadiscounts
içindeki indirimler hesaba katılmaz.
{
"trace_id": "5b426641-7853-429b-9ffe-08be01bfdf55",
"response": {
"errors": [
{
"error_code": "INVALID_TOTAL_PRODUCT_AMOUNT",
"message": "Toplam ürün bedeli (total_product_amount) parametresi hatalı",
"argument": null
}
]
}
}
total_amount
parametresinde,basket_items
içindeki ürünlerin toplam tutarından farklı değer gönderilirse aşağıdaki hata döner. Bu tutardadiscounts
içindeki indirimler hesaba katılır.
{
"trace_id": "8a4ca0f9-9d28-4d27-a585-1d49475967d0",
"response": {
"errors": [
{
"error_code": "INVALID_TOTAL_AMOUNT",
"message": "Sepet toplam tutar (total_amount) parametresi hatalı",
"argument": null
}
]
}
}
total_discount_amount
parametresinde,discounts
içindeki indirimlerin toplam tutarından farklı değer gönderilirse aşağıdaki hata döner.
{
"trace_id": "b001f490-38b7-450c-81a9-b863d63846e5",
"response": {
"errors": [
{
"error_code": "INVALID_TOTAL_DISCOUNT_AMOUNT",
"message": "Toplam indirim tutarı (total_discount_amount) parametresi hatalı",
"argument": null
}
]
}
}
basket.total_discount_amount
,basket.basket_items[i].unit_price
,basket.basket_items[i].price
,basket.discounts[i].amount
değerleri 0’a eşit olabilirler.
Bu durumda hata alınmaz. Ama bu değerler sıfıra eşitse ve sepette yalnızca 1 tane ürün varsa, amount değeri de 0 olur ve ancak bu şekilde aşağıdaki hata alınır.
{ "trace_id": "4f58e075-345e-488f-8855-9453ceef7ee0", "response": { "errors": [ { "error_code": "INVALID_AMOUNT_VALUE", "message": "Invalid amount. Please provide a valid, positive value.", "argument": "basket.totalProductAmount" }, { "error_code": "INVALID_AMOUNT_VALUE", "message": "Invalid amount. Please provide a valid, positive value.", "argument": "basket.totalAmount" }, { "error_code": "INVALID_AMOUNT_VALUE", "message": "Invalid amount. Please provide a valid, positive value.", "argument": "amount" } ] } }
4) Aynı Sipariş Numarasının Kullanılması
Önemli
İstekte daha önceden başka bir ödeme oturumunda kullanılmış bir sipariş numarası kullanılması durumunda aşağıdaki hata cevabı döner.
{
"trace_id": "8bc1d536-a1f6-4e18-835b-73125b28d081",
"response": {
"errors": [
{
"error_code": "ORDER_ID_EXISTS",
"message": "Bu Order Id ile daha önceden bir oturum oluşturulmuş.",
"argument": null
}
]
}
}
Ödeme Sayfasına Yönlendirme
Ödeme Sayfasına Yönlendirme
Ödeme oturumu oluşturulduktan sonra elde edilen session_token
ve transaction_token
ile ödeme sayfası için bir url oluşturulur. Elde edilen transaction_token
url-encoded hale getirilir ve yeni oluşturulan URL’e eklenir. Bu adımdan sonra artık ödeme sayfasına yönlendirilebilir.
Önemli
Elde edilen transaction_token
url-encoded hale getirmek için internette herhangi bir siteden bu işlem için yardım alınabilir.
Metot |
URL |
Açıklama |
---|---|---|
GET |
/hpp?session_token=e7d624f0-c842-4826-a344-8c05cc6d6114&transaction_token=JGmhG9bOro82%2F84JdjAWNflDH2dynHsckkrpRRO9pc73NLwSSe5%2BdzHa9JxdpIBKnWtAEfGhaYpFGrEoBQJlyg%3D%3D |
Parametrelerle birlikte bu URL’e yönlendirilen kullanıcı buradan da ödeme ekranına yönlendirilir. |
Pop-Up İle Ödeme Sayfasına Yönlendirme
Pop-up ile ödeme sayfasına yönlendirme Ödeme Sayfasına Yönlendirme işlemi ile aynıdır.
Önemli
Burada dikkat edilmesi gereken husus yönlendirme işlemini bir pop-up içinde gerçekleştirme kısmıdır. Yukarıda anlatılan kısımları yaptıktan sonra oluşturulan URL’i aşağıdaki code bloğundaki gibi kullanarak pop-up ile açabilirsiniz.
<a href="#" class="popup-btn" target="popup" onclick= 'checkOutWithPopup(); return false;'>Hpp Popup</a>
checkOutWithPopup()
fonksiyonu ile yukarıda oluşturulan urlde pop-up window kolayca açılabilir
function checkOutWithPopup() {
window.open('/hpp?session_token=e7d624f0-c842-4826-a344-8c05cc6d6114&transaction_token=JGmhG9bOro82%2F84JdjAWNflDH2dynHsckkrpRRO9pc73NLwSSe5%2BdzHa9JxdpIBKnWtAEfGhaYpFGrEoBQJlyg%3D%3D','hpp-popup','width=600,height=600');
}
Başarılı İşlemlerin Sorgulanması
Başarılı İşlemlerin Sorgulaması
Ödeme oturumundaki başarılı işlemleri sorgulamak için, istekte session_token
ve transaction_token
parametreleri ya da biliniyorsa sadece akipay_transaction_id
parametresi geçilmelidir.
Önemli
session_token
vetransaction_token
parametreleri ya daakipay_transaction_id
parametresi geçilmediği zaman işlem bulunamadı hatası alınır.Sorgu sonucu liste dönmektedir. Dönen işlemlerin tipleri: TransactionType
Metot |
URL |
Açıklama |
---|---|---|
POST |
/payment-sessions/transactions/successful |
Üye iş yerine ait kullanıcı adı ve şifre bilgileriyle, Basic Authentication yöntemiyle istek atılmalıdır. |
Parametre |
Tip |
Zorunlu |
Açıklama |
---|---|---|---|
session_token |
string |
opsiyonel |
ödeme oturumuna ait oturum tokenı. |
transaction_token |
string |
opsiyonel |
ödeme oturumuna ait işlem tokenı. |
akipay_transaction_id |
string |
opsiyonel |
sorgulanmak istenen işlemin Akifast tarafındaki benzersiz idsi. |
Önemli
Aşağıda belirtilen dönüş değerleri liste içinde dönmektedir.
Parametre |
Tip |
Açıklama |
---|---|---|
order_id |
string |
akinon da kayıtlı olan sipariş numarası. |
is_successful |
boolean |
işlemin başarılı olduğunun bilgisini verir. |
merchant_id |
string |
üye iş yerine ait akinon kimlik numarası. |
akipay_user_id |
string |
Akifast kullanıcısının Akinon kimlik numarası. |
transaction |
obje |
ödeme işlemi sırasında oluşturulan ödeme ye ait bilgilerin tutulduğu obje. |
transaction.transaction_date |
string |
başarılı ödeme işleminin tutulduğu kayıtın tarihi. |
transaction.is_preauth |
boolean |
başarılı ödeme işleminin ön otorizasyon bilgisi. |
transaction.is_threed |
boolean |
başarılı ödeme işleminin 3D ödeme bilgisi. |
transaction.currency |
currency |
ödeme para birimi. |
transaction.order_amount |
bigdecimal |
siparişin tutarı. |
transaction.total_paid_amount |
bigdecimal |
toplam ödenen tutar. |
transaction.installment_count |
long |
taksit sayısı. |
transaction.installment_amount |
bigdecimal |
taksit tutarı. |
transaction.interest_rate |
bigdecimal |
faiz oranı. |
transaction.interest_amount |
bigdecimal |
faiz tutarı. |
transaction.shipping_amount |
bigdecimal |
siparişin kargo tutarı. |
transaction.shipping_option_key |
string |
kargo seçeneğinin akinonda ki key karşılığı. |
transaction.akipay_transaction_id |
string |
başarılı ödeme işleminin akinon kimliği. |
transaction.payment_system_raw_response |
string |
ödeme sisteminden dönen ham cevap. |
payment_info |
object |
başarılı ödeme işleminin geçtiği sistem bilgileri. |
payment_info.payment_system_name |
string |
ödeme işleminin geçtiği sistemin ismi. |
payment_info.payment_system_code |
string |
ödeme işleminin geçtiği sistemin kodu. |
payment_info.payment_system_bank |
string |
ödeme işleminin geçtiği banka ismi. |
payment_info.payment_system_eftcode |
string |
ödeme işleminin geçtiği bankanın eft kodu. |
payment_info.pg_transaction_id |
string |
ödeme sistemindeki bilgilerin tutulduğu benzersiz kimlik numarası. |
payment_info.pg_reference_id |
string |
ödeme sisteminin referans numarası. |
payment_info.pg_auth_code |
string |
ödeme sisteminin authentication kodu. |
payment_info.pg_settlement_number |
string |
ödeme sistemi gün sonu numarası. |
payment_info.pg_order_id |
string |
pos sipariş numarası. |
payment_info.pg_group_id |
string |
pos grup numarası. |
payment_info.pg_proc_return_code |
string |
pos işlem dönüş kodu. |
payment_info.pg_merchant_id |
string |
pos üye iş yeri idsi. |
payment_info.pg_terminal_id |
string |
pos terminal idsi. |
payment_info.pg_transaction_date |
string |
pos işlem tarihi. |
payment_info.pg_system_error_message |
string |
pos sistem hata mesajı. |
card_info[0].masked_card_number |
string |
başarılı ödeme işleminin geçildiği kartın maskeli numarası. |
card_info[0].masked_card_holder_name |
string |
başarılı ödeme işleminin geçildiği kartın üzrindeki maskeli isim. |
card_info[0].bin |
string |
başarılı ödeme işleminin geçildiği kartın bin numarası. |
card_info[0].card_type |
enum |
başarılı ödeme işleminin geçildiği kartın tipi CardType . |
card_info[0].card_brand |
enum |
başarılı ödeme işleminin geçildiği kartın markası CardBrand . |
card_info[0].card_network |
string |
başarılı ödeme işleminin geçildiği kartın bağlı olduğu sistem. |
card_info[0].issuer |
string |
ödeme işleminde kullanılan kartın bankası. |
card_info[0].is_commercial |
boolean |
ödeme işleminde kullanılan kartın ticari bilgisi. |
card_info[0].saved_card |
boolean |
ödeme işleminde kullanılan kartıl kaytılı kart bilgisi. |
shipping_address |
object |
kargo adresi (Obje detayları kargo sorgulamadaki ile aynıdır.) |
billing_address |
object |
fatura adresi (Obje detayları kargo sorgulamadaki ile aynıdır.) |
akipay_user |
object |
akinon kullanıcısın’a ait bilgilerin dönüldüğü obje. |
akipay_user.name |
string |
Akifast kullanıcısının ismi. |
akipay_user.surname |
string |
Akifast kullanıcısının soyismi. |
akipay_user.gender |
string |
Akifast kullanıcısının cinsiyeti. |
akipay_user.email |
string |
Akifast kullanıcısının e-posta adresi |
akipay_user.birth_date |
date |
Akifast kullanıcısının doğum tarihi. |
akipay_user.identity_number |
string |
Akifast kullanıcısının kimlik numarası. |
akipay_user.phone_number |
string |
Akifast kullanıcısının telefon numarası(ülke kodu + telefon numarası). |
akipay_user.phone.country_phone_code |
string |
Akifast kullanıcısının telefon numarasının ülke kodu Örn: +90. |
akipay_user.phone.national_phone_number |
string |
Akifast kullanıcısının telefon numarası Örn: 5554447788. |
akipay_user.akinon_user_id |
string |
Akifast kullanıcısının Akinon kimlik numarası. |
akipay_user.status |
enum |
Akifast kullanıcısının statüsü değerlerini içerebilir. UserStatus. |
akipay_user.verification_date |
date |
Akifast kullanıcısının Akinon hesabını doğrulama tarihi. |
akipay_user.email_verified |
boolean |
Akifast kullanıcısının emailinin doğrulandığının bilgisi. |
agreements |
boolean |
sözleşme onay bilgisi. |
merchant_customer_id |
string |
üye iş yerine ait kullanıcı kimlik numarası. |
merchant_customer_phone_number |
string |
üye iş yerine ait kullanıcı telefon numarası. |
merchant_customer_email |
string |
üye iş yerine ait kullanıcı email adresi. |
basket_id |
string |
sepet kimlik numarası. |
conversation_id |
string |
özel iletişim kimlik numarası. |
Örnek İstek 1:
{
"session_token": "7d432237-6886-49c1-b4ed-afbdf7cf8ca5",
"transaction_token": "PJU6xGn4moOW7MWmiDFrRSbzMefpsgUCvq1yQjirQoi40Wzwlrek0nJnuJnTlwAR2hUp69fpBFmZaFEjtl7f0Q=="
}
Örnek İstek 2:
{
"akipay_transaction_id": "1a5ca128-e5d6-465e-9d60-f05a82c5ba97"
}
Örnek Cevap:
{
"trace_id": "c4b294e4-5e7c-4ba3-8fb6-b8eca777ee06",
"response": [
{
"order_id": "myorderid202208107",
"is_successful": true,
"merchant_id": "9d36ec04-de2f-11ea-87d0-0242ac130003",
"akipay_user_id": "BEF5606EC00040B09EAE5A31EE912C2D",
"transaction": {
"transaction_date": "2022-06-06T16:15:01.03+03:00",
"is_preauth": false,
"is_threed": true,
"currency": "TRY",
"order_amount": 80.0,
"total_paid_amount": 89.9,
"installment_count": 1,
"installment_amount": 89.9,
"interest_rate": 0.0,
"interest_amount": 0.0,
"shipping_amount": 9.9,
"shipping_option_key": "12",
"akipay_transaction_id": "1a5ca128-e5d6-465e-9d60-f05a82c5ba97",
"payment_system_raw_response": "<?xml version=\"1.0\" encoding=\"ISO-8859-9\"?>\n<CC5Response>\n <OrderId>ORDER-22157QPfI14158</OrderId>\n <GroupId>ORDER-22157QPfI14158</GroupId>\n <Response>Approved</Response>\n <AuthCode>025144</AuthCode>\n <HostRefNum>215716864074</HostRefNum>\n <ProcReturnCode>00</ProcReturnCode>\n <TransId>22157QPfI14160</TransId>\n <ErrMsg></ErrMsg>\n <Extra>\n <SETTLEID>2072</SETTLEID>\n <TRXDATE>20220606 16:15:31</TRXDATE>\n <ERRORCODE></ERRORCODE>\n <CEVAPALTKODUACIKLAMA>ACIKLAMA</CEVAPALTKODUACIKLAMA>\n <CARDISSUER>T. IS BANKASI A.S.</CARDISSUER>\n <CAVVRESULTCODE>3</CAVVRESULTCODE>\n <PARAPUAN>000000000831</PARAPUAN>\n <SEYAHATAVANSPUANVADETARIHI>20151010</SEYAHATAVANSPUANVADETARIHI>\n <KULLANILABILIRBONUS>000000000831</KULLANILABILIRBONUS>\n <KULLANILANPARAPUANTRL>-110.1</KULLANILANPARAPUANTRL>\n <CEVAPALTKODU>0000</CEVAPALTKODU>\n <CARDBRAND>VISA</CARDBRAND>\n <KULLANILANSEYAHATAVANSPUANTRL>200.0</KULLANILANSEYAHATAVANSPUANTRL>\n <SGKKOMISYON>000000001000</SGKKOMISYON>\n <NUMCODE>00</NUMCODE>\n <SEYAHATAVANSPUANTRL>000000000908</SEYAHATAVANSPUANTRL>\n </Extra>\n</CC5Response>\n"
},
"payment_info": {
"payment_system_name": "Finansbank Nestpay",
"payment_system_code": "FINANSBANK",
"payment_system_bank": "NESTPAY",
"payment_system_eftcode": null,
"pg_transaction_id": "22157QPfI14160",
"pg_reference_id": "215716864074",
"pg_auth_code": "025144",
"pg_settlement_number": "2072",
"pg_order_id": "ORDER-22157QPfI14158",
"pg_group_id": "ORDER-22157QPfI14158",
"pg_proc_return_code": "00",
"pg_merchant_id": null,
"pg_terminal_id": null,
"pg_transaction_date": "20220606 16:15:31",
"pg_system_error_message": null
},
"card_info": [
{
"masked_card_number": "45080345********",
"masked_card_holder_name": null,
"bin": "45080345",
"card_type": "CREDIT",
"card_brand": "VISA",
"card_network": "MAXIMUM",
"issuer": null,
"is_commercial": false,
"saved_card": false
}
],
"shipping_address": {
"name": "John",
"surname": "Doe",
"phone_number": "00000000000",
"postal_code": null,
"notes": null,
"company_name": null,
"address_title": "test address",
"tax_no": null,
"tax_office": null,
"is_default": true,
"line": "test 123",
"address_type": "CUSTOMER",
"country": {
"name": "Türkiye",
"code": "TR"
},
"city": {
"name": "İSTANBUL",
"code": "ISTANBUL"
},
"town": {
"name": "BAKIRKÖY",
"code": "ISTANBUL_BAKIRKOY"
},
"district": {
"name": "ATAKÖY 1. KISIM MAH",
"code": "89069285"
},
"status": "ACTIVE",
"hash_data": "A8781D1441A184136477A826B30AE3ECA083E6C55731A0E7FA89E8148C7B60C9"
},
"billing_address": {
"name": "John",
"surname": "Doe",
"phone_number": "00000000000",
"postal_code": null,
"notes": null,
"company_name": null,
"address_title": "test address",
"tax_no": null,
"tax_office": null,
"is_default": true,
"line": "test 123",
"address_type": "CUSTOMER",
"country": {
"name": "Türkiye",
"code": "TR"
},
"city": {
"name": "İSTANBUL",
"code": "ISTANBUL"
},
"town": {
"name": "BAKIRKÖY",
"code": "ISTANBUL_BAKIRKOY"
},
"district": {
"name": "ATAKÖY 1. KISIM MAH",
"code": "89069285"
},
"status": "ACTIVE",
"hash_data": "A8781D1441A184136477A826B30AE3ECA083E6C55731A0E7FA89E8148C7B60C9"
},
"akipay_user": {
"name": "John",
"surname": "Doe",
"gender": "M",
"email": "john.doe@example.com",
"birth_date": "1990-01-01",
"identity_number": "11111111111",
"phone_number": "+900000000000",
"phone": {
"country_phone_code": "+90",
"national_phone_number": "0000000000"
},
"akinon_user_id": "BEF5606EC00040B09EAE5A31EE912C2D",
"status": "ACTIVE",
"verification_date": "2021-12-22T16:07:01.58+03:00",
"email_verified": false
},
"agreements": true,
"merchant_customer_id": "123",
"merchant_customer_phone_number": null,
"merchant_customer_email": null,
"basket_id": "B-202111191524",
"conversation_id": null
}
]
}
Ödeme İptal
Ödeme İptal
Başarılı sonuçlanan ödemelerin iptal işlemleri yapılabilir.
Not
Bu endpoint kullanılarak yapılan iptal işleminden sonra Payment Integration servisine eklenen
outbox_event
tablosuna kayıt atılacaktır.Bu kayıt daha sonra bir job ile okunarak Processor servisindeki Transaction tablosuna iptal edilen işlemin transaction kaydı atılacak ve Payment Session statüsü
VOID
olarak güncellenecektir.
Önemli
İptal edilecek tutarın belirtilmediği durumda tüm tutar iptal edilir, eğer tutar belirtilmişse belirtilen tutar db’de kayıtlı tutar ile karşılaştırılır ve tutar uyuşmazlığı durumda Karşılaşılabilecek Hatalar bölümünde belirtilen hata alınır.
Metot |
URL |
Açıklama |
---|---|---|
POST |
/processor/payment-sessions/voids |
Üye iş yerine ait kullanıcı adı ve şifre bilgileriyle, Basic Authentication yöntemiyle istek atılmalıdır. |
Parametre |
Tip |
Zorunlu |
Açıklama |
---|---|---|---|
amount |
bigdecimal |
opsiyonel (iptal edilecek tutar gönderilmediği durumda da tüm tutarın iptali yapılır.) |
iptal edilecek tutar. |
akipay_transaction_id |
string |
koşullu zorunlu (order_id yoksa) |
iptal edilecek satış işleminin Akifast sistemindeki idsi. |
order_id |
string |
koşullu zorunlu (akipay_transaction_id yoksa) |
iptal edilecek satış işleminin sipariş numarası. |
Dönüş Değeri |
Tip |
Açıklama |
---|---|---|
status |
enum |
oturumun durumu PaymentResponseStatus |
pos_response |
object |
pos tarafından dönen cevap. |
pos_response.pg_group_id |
string |
pos grup numarası. |
pos_response.pg_auth_code |
string |
pos güvenlik kodu. |
pos_response.pg_reference_id |
string |
pos referans numarası. |
pos_response.pg_transaction_id |
string |
pos işlem numarası. |
pos_response.pg_error_code |
string |
pos hata kodu. |
pos_response.pg_error_message |
string |
pos hata mesajı. |
pos_response.pg_settlement_number |
string |
pos anlaşma numarası. |
pos_response.pg_order_id |
string |
pos sipariş numarası. |
pos_response.pg_proc_return_code |
string |
pos işlem dönüş kodu. |
pos_response.pg_merchant_id |
string |
pos üye iş yeri idsi. |
pos_response.pg_terminal_id |
string |
pos terminal idsi. |
pos_response.pg_transaction_date |
string |
pos işlem tarihi. |
pos_response.pg_system_error_message |
string |
pos sistem hata mesajı. |
pos_response.card_brand |
enum |
kart markası CardBrand |
pos_response.card_issuer |
string |
kart sahibi banka. |
pos_response.is_threed |
boolean |
3D ödeme aktifliği. |
pos_response.installment_count |
long |
taksit sayısı. |
pos_response.installment_amount |
bigdecimal |
taksit tutarı. |
pos_response.total_paid_amount |
bigdecimal |
toplam ödenen tutar. |
pos_response.interest_rate |
bigdecimal |
işlem vergi oranı. |
pos_response.interest_amount |
bigdecimal |
işlem vergi tutarı. |
pos_response.payment_system_name |
string |
ödeme sistemi. |
pos_response.payment_system_type |
string |
ödeme sistemi tipi. |
pos_response.payment_system_eft_code |
string |
ödeme sistemi eft kodu. |
pos_response.payment_system_code |
string |
ödeme sistemi kodu. |
transaction_type |
enum |
işlem tipi (VOID/REFUND). |
akipay_transaction_id |
string |
iptal işleminin Akifast sistemindeki idsi. |
Örnek İstek 1:
{
"akipay_transaction_id": "b57ad4e9-55e6-49f3-91b5-47e251ce9459"
}
Örnek İstek 2:
{
"order_id": "20220404114340"
}
Örnek Cevap:
{
"trace_id": "9406a813-969f-41fc-bc3c-7393e7d6dc1d",
"response": {
"status": "SUCCESS",
"pos_response": {
"pg_group_id": "20220404114340",
"pg_auth_code": "342754",
"pg_reference_id": "209411635676",
"pg_transaction_id": "22094Lr4C19696",
"pg_error_code": "",
"pg_error_message": "",
"pg_settlement_number": "2009",
"pg_order_id": "20220404114340",
"pg_proc_return_code": 00,
"pg_merchant_id": null,
"pg_terminal_id": null,
"pg_transaction_date": "20220602 15:10:14",
"pg_system_error_message": null,
"card_brand": "VISA",
"card_issuer": "FINANSBANK A.S.",
"is_threed": false,
"installment_count": 1,
"installment_amount": 109.9,
"total_paid_amount": 0.0,
"interest_rate": 0.0,
"interest_amount": 0.0,
"payment_system_name": "Finansbank Nestpay",
"payment_system_type": "NESTPAY",
"payment_system_eft_code": null,
"payment_system_code": "FINANSBANK",
"transaction_card": null
},
"transaction_type": "VOID",
"akipay_transaction_id": "aa6ca43f-a877-4091-aa95-a1c3d57a2681"
}
}
İptal Esnasında Karşılaşılabilecek Hatalar
Bu bölümde ödeme iptali esnasında karşılaşılabilecek belli başlı hatalara yer verilmiştir. Genel olarak tüm API hata kodlarına erişmek için tıklayınız.
Önemli
İptal edilmek istenen işlemin bulunmaması durumunda aşağıdaki hata cevabı dönmektedir. Gönderilen
order_id
veyaakipay_transaction_id
değerlerine ait bir işlem bulunamadığı durumda alınan hatadır.
{
"trace_id": "58c4ea60-fc1b-410b-b5ff-d327902375de",
"response": {
"errors": [
{
"error_code": "TRANSACTION_NOT_FOUND",
"message": "İşlem bulunamadı.",
"argument": null
}
]
}
}
Önemli
İptal edilmek istenen işlemin daha önceden iptali yapılmış olması durumunda aşağıdaki hata cevabı dönmektedir. Teknik olarak bu işlemin daha önceden iptali yapıldıysa db’de kayıtlı
total_paid_amount
değeri 0 olacağı için aşağıdaki hata mesajı döner.
{
"trace_id": "3d15ecdf-8811-4798-80d4-43a16c4e0ffc",
"response": {
"errors": [
{
"error_code": "TRANSACTION_ALREADY_REFUNDED",
"message": "Ödeme iadesi zaten gerçekleşmiş.",
"argument": null
}
]
}
}
Önemli
Gönderilen
akipay_transaction_id
veyaorder_id
değerlerine ait birden fazla transaction kaydı bulunması durumunda aşağıdaki hata döner.
{
"trace_id": "1c43af02-98d5-479a-9a74-389a6967ca7d",
"response": {
"errors": [
{
"error_code": "MULTIPLE_REFUNDABLE_TRANSACTIONS_FOUND",
"message": "Birden fazla geri iade edilebilir işlem bulunamaz.",
"argument": null
}
]
}
}
Önemli
Db’de kayıtlı olan
total_paid_amount
değeri db’de kayıtlı olanoriginal_amount
değerine eşit değilse aşağıdaki hata alınır. Çünkü void işlemi partial void işlemini desteklememektedir, sadece ödenen tutarın tamamının iptali yapılabilmektedir.
{
"trace_id": "1c43af02-98d5-479a-9a74-389a6967ca7d",
"response": {
"errors": [
{
"error_code": "PARTIAL_VOID_NOT_SUPPORTED",
"message": "Kısmi iptal işlemi desteklenmemektedir.",
"argument": null
}
]
}
}
Önemli
Void isteğinde
amount
parametresi gönderildiyse ve gönderilen amount değeri db’de kayıtlı olantotal_paid_amount
değerine eşit değilse aşağıdaki hata alınır.
{
"trace_id": "1c43af02-98d5-479a-9a74-389a6967ca7d",
"response": {
"errors": [
{
"error_code": "THE_AMOUNT_DOES_NOT_MATCH_TO_TOTAL_PAID_AMOUNT",
"message": "İptal edilecek tutar toplam ödenen tutara eşit değil.",
"argument": null
}
]
}
}
Ödeme İade
Ödeme İade
Başarılı sonuçlanan ödemelerin iade işlemleri yapılabilir.
Not
Bu endpoint kullanılarak yapılan iade işleminden sonra Payment Integration servisine eklenen
outbox_event
tablosuna kayıt atılacaktır.Bu kayıt daha sonra bir job ile okunarak, Processor servisindeki Transaction tablosuna iade edilen işlemin transaction kaydı atılacak ve Payment Session statüsü
REFUND
olarak güncellenecektir.İade işleminin tipine bağlı olarak da payment_session tablosuna eklenen yeni alan (refund_type)
PARTIAL
ya daFULL
olarak güncellenecektir.
Metot |
URL |
Açıklama |
---|---|---|
POST |
/processor/payment-sessions/refunds |
Üye iş yerine ait kullanıcı adı ve şifre bilgileriyle, Basic Authentication yöntemiyle istek atılmalıdır. |
Parametre |
Tip |
Zorunlu |
Açıklama |
---|---|---|---|
amount |
bigdecimal |
zorunlu |
iade edilecek tutar. |
akipay_transaction_id |
string |
koşullu zorunlu (order_id yoksa) |
iade edilecek satış işleminin Akifast sistemindeki idsi. |
order_id |
string |
koşullu zorunlu (akipay_transaction_id yoksa) |
iade edilecek satış işleminin sipariş numarası. |
Dönüş Değeri |
Tip |
Açıklama |
---|---|---|
status |
enum |
oturumun durumu PaymentResponseStatus |
pos_response |
object |
pos tarafından dönen cevap. |
pos_response.pg_group_id |
string |
pos grup numarası. |
pos_response.pg_auth_code |
string |
pos güvenlik kodu. |
pos_response.pg_reference_id |
string |
pos referans numarası. |
pos_response.pg_transaction_id |
string |
pos işlem numarası. |
pos_response.pg_error_code |
string |
pos hata kodu. |
pos_response.pg_error_message |
string |
pos hata mesajı. |
pos_response.pg_settlement_number |
string |
pos anlaşma numarası. |
pos_response.pg_order_id |
string |
pos sipariş numarası. |
pos_response.pg_proc_return_code |
string |
pos işlem dönüş kodu. |
pos_response.pg_merchant_id |
string |
pos üye iş yeri idsi. |
pos_response.pg_terminal_id |
string |
pos terminal idsi. |
pos_response.pg_transaction_date |
string |
pos işlem tarihi. |
pos_response.pg_system_error_message |
string |
pos sistem hata mesajı. |
pos_response.card_brand |
enum |
kart markası CardBrand |
pos_response.card_issuer |
string |
kart sahibi banka. |
pos_response.is_threed |
boolean |
3D ödeme aktifliği. |
pos_response.installment_count |
long |
taksit sayısı. |
pos_response.installment_amount |
bigdecimal |
taksit tutarı. |
pos_response.total_paid_amount |
bigdecimal |
toplam ödenen tutar. |
pos_response.interest_rate |
bigdecimal |
işlem vergi oranı. |
pos_response.interest_amount |
bigdecimal |
işlem vergi tutarı. |
pos_response.payment_system_name |
string |
ödeme sistemi. |
pos_response.payment_system_type |
string |
ödeme sistemi tipi. |
pos_response.payment_system_eft_code |
string |
ödeme sistemi eft kodu. |
pos_response.payment_system_code |
string |
ödeme sistemi kodu. |
transaction_type |
enum |
işlem tipi (VOID/REFUND). |
akipay_transaction_id |
string |
iade işleminin Akifast sistemindeki idsi. |
Örnek İstek 1:
{
"akipay_transaction_id": "b57ad4e9-55e6-49f3-91b5-47e251ce9459",
"amount": "109.9"
}
Örnek İstek 2:
{
"order_id": "20220404114340",
"amount": "109.9"
}
Örnek Cevap:
{
"trace_id": "9406a813-969f-41fc-bc3c-7393e7d6dc1d",
"response": {
"status": "SUCCESS",
"pos_response": {
"pg_group_id": "20220404114340",
"pg_auth_code": "342754",
"pg_reference_id": "209411635676",
"pg_transaction_id": "22094Lr4C19696",
"pg_error_code": "",
"pg_error_message": "",
"pg_settlement_number": "2009",
"pg_order_id": "20220404114340",
"pg_proc_return_code": 00,
"pg_merchant_id": null,
"pg_terminal_id": null,
"pg_transaction_date": "20220602 15:10:14",
"pg_system_error_message": null,
"card_brand": "VISA",
"card_issuer": "FINANSBANK A.S.",
"is_threed": false,
"installment_count": 1,
"installment_amount": 109.9,
"total_paid_amount": 0.0,
"interest_rate": 0.0,
"interest_amount": 0.0,
"payment_system_name": "Finansbank Nestpay",
"payment_system_type": "NESTPAY",
"payment_system_eft_code": null,
"payment_system_code": "FINANSBANK",
"transaction_card": null
},
"transaction_type": "REFUND",
"akipay_transaction_id": "aa6ca43f-a877-4091-aa95-a1c3d57a2681"
}
}
İade Esnasında Karşılaşılabilecek Hatalar
Bu bölümde ödeme iadesi esnasında karşılaşılabilecek belli başlı hatalara yer verilmiştir. Genel olarak tüm API hata kodlarına erişmek için tıklayınız.
Önemli
İade edilmek istenen işlemin bulunmaması durumunda aşağıdaki hata cevabı dönmektedir. Gönderilen
order_id
veyaakipay_transaction_id
değerlerine ait bir işlem bulunamadığı durumda alınan hatadır.
{
"trace_id": "58c4ea60-fc1b-410b-b5ff-d327902375de",
"response": {
"errors": [
{
"error_code": "TRANSACTION_NOT_FOUND",
"message": "İşlem bulunamadı.",
"argument": null
}
]
}
}
Önemli
İade edilmek istenen işlemin daha önceden iadesi yapılmış olması durumunda aşağıdaki hata cevabı dönmektedir. Teknik olarak bu işlemin daha önceden iadesi yapıldıysa db’de kayıtlı
total_paid_amount
değeri 0 olacağı için aşağıdaki hata mesajı döner.{ "trace_id": "3d15ecdf-8811-4798-80d4-43a16c4e0ffc", "response": { "errors": [ { "error_code": "TRANSACTION_ALREADY_REFUNDED", "message": "Ödeme iadesi zaten gerçekleşmiş.", "argument": null } ] } }
Önemli
Gönderilen
akipay_transaction_id
veyaorder_id
değerlerine ait birden fazla transaction kaydı bulunması durumunda aşağıdaki hata döner.
{
"trace_id": "1c43af02-98d5-479a-9a74-389a6967ca7d",
"response": {
"errors": [
{
"error_code": "MULTIPLE_REFUNDABLE_TRANSACTIONS_FOUND",
"message": "Birden fazla geri iade edilebilir işlem bulunamaz.",
"argument": null
}
]
}
}
Önemli
Gönderilen
amount
değeri 0 ise aşağıdaki hata alınır.
{
"trace_id": "1c43af02-98d5-479a-9a74-389a6967ca7d",
"response": {
"errors": [
{
"error_code": "TRANSACTION_CAN_NOT_BE_REFUNDED",
"message": "Ödeme iadesi gerçekleştirilemiyor.",
"argument": null
}
]
}
}
Önemli
Gönderilen
amount
değeri db’de kayıtlı olantotal_paid_amount
değerinden büyükse aşağıdaki hata alınır.
{
"trace_id": "1c43af02-98d5-479a-9a74-389a6967ca7d",
"response": {
"errors": [
{
"error_code": "REFUND_AMOUNT_CANNOT_EXCEED_TRANSACTION_AMOUNT",
"message": "İade tutarı, işlem tutarını aşamaz.",
"argument": null
}
]
}
}
Önemli
Atılan istekte``amount`` değeri yoksa aşağıdaki hata alınır.
{
"trace_id": "b081670e-bab4-40b3-beb9-96603bf38325",
"response": {
"errors": [
{
"error_code": "INVALID_REFUND_AMOUNT",
"message": "Geçersiz iade tutarı.",
"argument": null
}
]
}
}
Mobil Uyumluluk İçin Müşteriye Çoklu Yönlendirme Url’i Eklenebilmesi
Mobil Uyumluluk İçin Müşteriye Çoklu Yönlendirme Url’i Eklenebilmesi
Mobil uyumluluk kapsamında, client’a yönlendirilebilecekleri url’in çoklu olarak eklenebilmesi için aşağıdaki endpointler kullanılabilir.
Önemli
Tüm isteklerde header’da Client-Id’nin gönderilmesi gerekmektedir.
Client Redirect Uri Oluşturma
Verilen client’a yönlendirilebilecekleri url’in eklenmesi için kullanılır.
Metot |
URL |
Açıklama |
---|---|---|
POST |
/client-redirect-uris |
Oauth-server’a redirect_uri ve Header’a eklenen Client-Id ile birlikte, Basic Authentication yöntemiyle istek atılmalıdır. |
Parametre |
Tip |
Zorunlu |
Açıklama |
---|---|---|---|
redirect_uri |
String |
Zorunlu |
Yönlendirilecek url. |
Dönüş Değeri |
Tip |
Açıklama |
---|---|---|
client_id |
String |
Müşteri id’si |
redirect_uri_token |
String |
Eklenen yönlendirme url’i için oluşturulmuş token. |
redirect_uri |
String |
Eklenen yönlendirme url’i. |
Örnek İstek:
{
"redirect_uri": "http://localhost1"
}
Örnek Cevap:
{
"client_id": "qib4lK31Z1XkAGNEt6pd",
"redirect_uri_token": "41S9X1GLGK1Q03NWQZFQUC4MEM01KALL",
"redirect_uri": "http://localhost5"
}
Client Redirect Uri Sorgulama
Verilen redirect_token ile yönlendirilecek url sorgulaması yapmak için kullanılır.
Metot |
URL |
Açıklama |
---|---|---|
GET |
/client-redirect-uris/{{redirect_uri_token}} |
Oauth-server’a header’a eklenen Client-Id ile birlikte, Basic Authentication yöntemiyle istek atılmalıdır. |
Dönüş Değeri |
Tip |
Açıklama |
---|---|---|
client_id |
String |
Müşteri id’si |
redirect_uri_token |
String |
Eklenen yönlendirme url’i için oluşturulmuş token. |
redirect_uri |
String |
Eklenen yönlendirme url’i. |
Örnek İstek:
GET /client-redirect-uris/EOO4GFGPX9AKFBTSEOTZ4QUHFF346K69
curl --location 'http://localhost:9090/client-redirect-uris/EOO4GFGPX9AKFBTSEOTZ4QUHFF346K69' \
--header 'Client-Id: qib4lK31Z1XkAGNEt6pd' \
--header 'Authorization: Basic cWliNGxLMzFaMVhrQUdORXQ2cGQ6bUR5b0Vlenkyd0N4VG1HbkNFRDB2Ym1hZHZ0bVQzdXJFSWFu' \
--header 'Cookie: SESSION=ZTBkMjNiNjEtM2Y4Yi00OTQyLWJjYmUtOTY1NWNkYTNlOWFh'
Örnek Cevap:
{
"client_id": "qib4lK31Z1XkAGNEt6pd",
"redirect_uri_token": "41S9X1GLGK1Q03NWQZFQUC4MEM01KALL",
"redirect_uri": "http://localhost5"
}
Client Redirect Uri Listeleme
Yönlendirilecek tüm url’lerin listelenmesi için kullanılır.
Metot |
URL |
Açıklama |
---|---|---|
GET |
/client-redirect-uris |
Oauth-server’a header’a eklenen Client-Id ile birlikte, Basic Authentication yöntemiyle istek atılmalıdır. |
Dönüş Değeri |
Tip |
Açıklama |
---|---|---|
client_id |
String |
Müşteri id’si |
redirect_uri_token |
String |
Eklenen yönlendirme url’i için oluşturulmuş token. |
redirect_uri |
String |
Eklenen yönlendirme url’i. |
Örnek İstek:
GET /client-redirect-uris
curl --location 'http://localhost:9090/client-redirect-uris' \
--header 'Client-Id: qib4lK31Z1XkAGNEt6pd' \
--header 'Authorization: Basic cWliNGxLMzFaMVhrQUdORXQ2cGQ6bUR5b0Vlenkyd0N4VG1HbkNFRDB2Ym1hZHZ0bVQzdXJFSWFu' \
--header 'Cookie: SESSION=ZTBkMjNiNjEtM2Y4Yi00OTQyLWJjYmUtOTY1NWNkYTNlOWFh'
Örnek Cevap:
{
"count": 7,
"redirect_uris": [
{
"client_id": "qib4lK31Z1XkAGNEt6pd",
"redirect_uri_token": "33D154C43843B0781E827F51CF8C50F4",
"redirect_uri": null
},
{
"client_id": "qib4lK31Z1XkAGNEt6pd",
"redirect_uri_token": "6OVCE5RX50PXIP0UCVHBI8NYLG7ESDLK",
"redirect_uri": "http://localhost"
},
{
"client_id": "qib4lK31Z1XkAGNEt6pd",
"redirect_uri_token": "OR5FIP5NHY868XMFWD5UKJB3FNBFTHBM",
"redirect_uri": "http://localhost2"
},
{
"client_id": "qib4lK31Z1XkAGNEt6pd",
"redirect_uri_token": "1RBSAJEXPLCZEAXUNTCJSXGIDOVVR9IG",
"redirect_uri": "http://localhost3"
},
{
"client_id": "qib4lK31Z1XkAGNEt6pd",
"redirect_uri_token": "AGMZO3ZBXGOOKTQGQGY1C7D5YLPCAMUW",
"redirect_uri": "http://localhost4"
},
{
"client_id": "qib4lK31Z1XkAGNEt6pd",
"redirect_uri_token": "41S9X1GLGK1Q03NWQZFQUC4MEM01KALL",
"redirect_uri": "http://localhost5"
},
{
"client_id": "qib4lK31Z1XkAGNEt6pd",
"redirect_uri_token": "AFGTGU1KXNWDZGLTP6OJ9CGBDN55X9NY",
"redirect_uri": "http://localhost6"
}
]
}
Client Redirect Uri Silme
Verilen redirect_token ile silme işleminin yapılması için kullanılır.
Metot |
URL |
Açıklama |
---|---|---|
DELETE |
/client-redirect-uris/{{redirect_uri_token}} |
Oauth-server’a header’a eklenen Client-Id ile birlikte verilen redirect_uri_token ve Basic Authentication yöntemiyle istek atılmalıdır. |
Örnek İstek:
DELETE /client-redirect-uris/EOO4GFGPX9AKFBTSEOTZ4QUHFF346K69
curl --location --request DELETE 'http://localhost:9090/client-redirect-uris/AFGTGU1KXNWDZGLTP6OJ9CGBDN55X9NY' \
--header 'Client-Id: qib4lK31Z1XkAGNEt6pd' \
--header 'Authorization: Basic cWliNGxLMzFaMVhrQUdORXQ2cGQ6bUR5b0Vlenkyd0N4VG1HbkNFRDB2Ym1hZHZ0bVQzdXJFSWFu' \
--header 'Cookie: SESSION=ZTBkMjNiNjEtM2Y4Yi00OTQyLWJjYmUtOTY1NWNkYTNlOWFh'
Örnek Cevap:
HTTP 204 No Content
Önemli
redirect_uri
verilenClient-Id
için zaten mevcutsa durumunda aşağıdaki hata cevabı dönmektedir.
{
"errors": [
{
"error_code": "CLIENT_REDIRECT_URI_ALREADY_EXISTS_WITH_CLIENT",
"message": "Müşteri yönlendirme url'i verilen client için zaten mevcut.",
"argument": null
}
]
}
Önemli
Client-Id
parametresinin yanlış gönderilmesi durumunda aşağıdaki hata cevabı dönmektedir.
{
"errors": [
{
"error_code": "CLIENT_NOT_FOUND",
"message": "Müşteri bulunamadı.",
"argument": null
}
]
}