Ana içeriğe geç

Alternatif Ödeme Yöntemiyle Ödeme

Alternatif Ödeme Yöntemi(APM) ile ödeme almak için ilk adım olarak Craftgate'de ödeme başlatılması gerekir. Sonrasında seçilen Alternatif ödeme yöntemine göre değişiklik gösterebilen, yöntemin ödeme adımları izlenerek ödeme tamamlanır. Akabinde ödeme başlatma isteği içerisinde verilmiş olan üye işyeri callback URL adresi ödeme durum bilgisi ile tetiklenir.

APM Ödeme Başlatma

APM Ödeme Başlatma isteğinin cevabında yer alan additionalAction ve paymentStatus alanlarındaki değerlere göre kullanıcınıza ek aksiyon aldırmanız gerekebilir. additionalAction parametresinin NONE ve paymentStatus parametresinin SUCCESS geldiği durumlarda APM ödemeniz başarıyla tamamlanmış demektir.

URL

APM ile ödeme işlemi için kullanılan endpoint ve http metod bilgisi aşağıda verilmiştir.

POST/payment/v1/apm-payments/init

Ödeme Başlatma İsteği Parametreleri

apmType
string
zorunlu

bkz: Alternatif Ödeme Yöntemleri Ödeme alınmak istenen alternatif ödeme yöntemi

Değerler:
PAPARA
PAYONEER
SODEXO
EDENRED
EDENRED_GIFT
ALIPAY
PAYPAL
KLARNA
AFTERPAY
STRIPE
KASPI
MASLAK
TOMPAY
ALFABANK
TOM_FINANCE
FUND_TRANSFER
CASH_ON_DELIVERY
merchantApmId
number

Ödeme alınmak istenen APM Id değeri. Merchant panelinde APM tanımlaması yapıldığında verilen ID değeridir. Birden fazla aynı tipte APM olduğu durumda gönderilmelidir

conversationId
string

İstekle beraber gönderilip, cevapla birlikte alınabilecek, "bumerang" değer. Farklı istekleri birbirleriyle ilişkilendirmek için kullanılabilir. Genellikle üye işyerinin ödemeye ilişkin sipariş numarası kullanılır. Sipariş numarası ile kullanmanız sonradan işlemleri incelemenize yardımcı olacaktır.

externalId
string

Üye işyeri tarafından ödeme isteği içerisinde gönderilen externalId değeri

price
decimal
zorunlu

Toplam ödeme tutarı. Sepetteki ürün/hizmet tutarları toplamının bu tutara eşit olması gerekmektedir

paidPrice
decimal
zorunlu

Komisyon ve indirim gibi farklar dahil edilerek hesaplanan, karttan çekilecek nihai tutar. Tamamı ya da bir kısmı cüzdandan tahsil edilen ödemelerde cüzdandan tahsil edilecek tutar da bu tutara dahildir. İşlemde vade farkı var ise vade farkı eklenmiş tutar bu parametreye girilmelidir.

buyerMemberId
number

Ödemenin ilişkilendirildiği alıcı ID'si. Üye işyerinin kendi sistemlerindeki ID değerini değil, Craftgate sistemlerindeki ID değerini ifade eder

currency
Currency
zorunlu

bkz: Para Birimleri Ödemenin tahsil edileceği para birimi

Değerler:
TRY
USD
EUR
GBP
CNY
ARS
BRL
AED
IQD
AZN
KZT
paymentGroup
PaymentGroup
zorunlu
Değerler:
PRODUCT
LISTING_OR_SUBSCRIPTION
paymentChannel
string

Genellikle üye işyeri tarafındaki, ödemenin alındığı kanal veya ödemeye özel bir bilgi tutmak için kullanılır. Daha sonradan sorgulama servislerini kullanarak bu değer ile sorgulama yapabilirsiniz.

callbackUrl
string

APM'den dönen sonucu üye işyerine iletmek için kullanılacak callback adresi

apmOrderId
string

Ödeme alınırken APM'e iletilecek orderId parametresi. Opsiyonel olduğu için gönderilmemesi ve orderId değerinin Craftgate tarafından üretilmesi önerilir.

apmUserIdentity
string

Ödeme yapacak olan kullanıcının APM sistemindeki eşsiz değeri.

additionalParams
map

Gerekli olan ekstra parametreler burada gönderilebilir. Ilgili APM tipine göre gönderilecek parametreler değilebilir. Detay için bkz. Alternatif Ödeme Yöntemleri

clientIp
string

Ödeme yapan alıcının IP adresi.

items
PaymentItem[]
zorunlu

Ödemeye ilişkin kırılım bilgileri. En az bir kırılım gönderilmesi ve gönderilen kırılımların tutarlarının toplamının price alanına eşit olması zorunludur

Dönüş Parametreleri

APM ile ödeme işleminin sonucunda dönen parametreler API dokümantasyonu giriş sayfasındaki Dönüş Formatları bölümünde belirtilen kurallara tabidir. Sistemsel ya da kurgusal bir hata bulunmadığı durumda data parametresinde dönen objenin alt parametreleri aşağıdaki gibidir:

paymentId
number

Bekleme durumunda oluşturulan ödemenin id bilgisi

paymentStatus
PaymentStatus

Ödeme durumunu ifade eder. WAITING olduğu durumlarda yönlendirme bekleniyordur, SUCCESS ise ödeme tamamlanmış demektir.

Değerler:
FAILURE
SUCCESS
INIT_THREEDS
CALLBACK_THREEDS
WAITING
additionalAction
AdditionalAction

Bazı APM entegrasyonlarında ekstra yapılması gereken işlemler olabildiği gibi bazılarında ise bu işleme gerek yoktur. NONE dönüldüğü durumlarda APM ödemesi için ekstra bir işlem yapılmasına gerek yoktur. Bkz. APM Ek Aksiyonlar

Değerler:
REDIRECT_TO_URL
OTP_REQUIRED
NONE
redirectUrl
string

APM tarafından dönülen, ödeme işleminin devam edeceği URL bilgisi

paymentError
PaymentError

Ödeme aşamasında herhangi bir hata oluşursa hataya ait detayları içerir

Callback URL'e İletilen Parametreler

Aşağıdaki parametreler form variable olarak HTTP POST metodu kullanılarak iletilir. Doğrulama sonrası Craftgate tarafından callbackUrl'e yapılacak istekte yer alan parametreler aşağıdaki gibidir:

status
string

APM ödemenin doğrulamasının durumunu ifade eden değer. Doğrulama başarılıysa SUCCESS, değilse FAILURE değerini alacaktır

conversationId
string

Ödeme başlatma isteğinde gönderilen conversationId parametresinin değeri

paymentId
number

Doğrulama başarılı olduğu durumda gönderilir. Ödemeye ilişkin Craftgate API tarafından türetilen ID değeridir

callbackStatus
string

APM'in veya son kullanıcının APM doğrulama adımını tekrar tetiklemesi durumunda, ödeme daha önceden doğrulanmış ise gönderilir. Status alanı FAILURE değerini alırken, callbackStatus değeri ALREADY_RETURNED olarak gönderilecektir. Bu alan ALREADY_RETURNED değeriyle geldiği durumda, sisteminizde ödemenin durumu kontrol edilmeli ve tamamlanmışsa bir aksiyon alınmamalıdır.

hash
string

Ödeme sonucu dönülen parametrelerin Sha-256 Hex algoritması ile şifrelenmesi sonucu oluşan değerdir. Detaylı açıklama aşağıda, "Hash Değerinin Oluşurulması" başlığında mevcuttur.

Hash Değerinin Oluşurulması

Response içerisinde bulunan hash değeri, dönülen parametrelerin doğrulamasını sağlamak amacıyla Sha-256 Hex algoritması ile hashlenerek oluşturulur.

  • İşlem için gerekli 32 Haneli key değerine şuradan ulaşılabilir: Panel üzerinde bulunan Yönetim -> Üye İşyeri Ayarları arayüzündeki "Üye İşyeri Callback Key"
  • Hash algoritmasına sokulacak değer aşağıdaki sırayla her parametrenin arasına delimiter olarak "###" eklenerek oluşturulmalıdır
  • null değerlerin yerine empty string ("") yazılmalıdır.

threedSecureCallbackKey###status###paymentId###conversationId###callbackStatus

Örnek olarak aşağıdaki response'u hash algoritmasına sokalım ve Üye İşyeri Callback Key değerinin "merchantCallbackKeySandbox" olduğunu varsayalım.

{
"status": "SUCCESS",
"conversationId": "456d1297-908e-4bd6-a13b-4be31a6e47d5",
"paymentId": 1,
"callbackStatus": null,
"hash": "3a3f520be02eaca2e689d1db855af3925cbdd8db5f850b2b9e61f7ccb9d997b4"
}

Hash algoritmasına sokulacak değer şu şekilde oluşmalı:

merchantCallbackKeySandbox###SUCCESS###1###456d1297-908e-4bd6-a13b-4be31a6e47d5###

Oluşturulan değerin "Üye İşyeri Callback Key" ile Sha-256 Hex algoritamsına sokularak hashlenmesi ile response'da bulunan "hash" parametresinin eşitliği karşılaştılarak validasyon sağlanabilir.

Örnek Kodlar

Açık kaynak kodlu Craftgate API client'larındaki örnek kodları inceleyebilirsiniz.

APM ile Ödeme Başlatma

APM Ödeme Tamamlama

APM Ödeme Başlatma isteğinin cevabında yer alan paymentStatus parametresinin WAITING, additionalAction parametresinin de NONE olmadığı durumlarda APM ödemesinin tamamlanması için bu servis kullanılmalıdır.

URL

APM ile ödeme tamamlama işlemi için kullanılan endpoint ve http metod bilgisi aşağıda verilmiştir.

POST/payment/v1/apm-payments/complete

Ödeme Tamamlama İsteği Parametreleri

paymentId
number
zorunlu

APM Ödeme başlatma isteğinin cevabında yer alan ödeme ID değeri

additionalParams
map
zorunlu

Gerekli olan ekstra parametreler burada gönderilebilir. Ilgili APM tipine göre gönderilecek parametreler değilebilir. Detay için bkz. Alternatif Ödeme Yöntemleri

Dönüş Parametreleri

APM ile ödeme tamamlama işleminin sonucunda dönen parametreler API dokümantasyonu giriş sayfasındaki Dönüş Formatları bölümünde belirtilen kurallara tabidir. Sistemsel ya da kurgusal bir hata bulunmadığı durumda data parametresinde dönen objenin alt parametreleri aşağıdaki gibidir:

paymentId
number

Ödemenin id bilgisi.

paymentStatus
PaymentStatus

Ödeme durumunu ifade eder. SUCCESS veya FAILURE olabilir.

Değerler:
FAILURE
SUCCESS
INIT_THREEDS
CALLBACK_THREEDS
WAITING
paymentError
PaymentError

APM tarafından bir hata oluşursa hataya ait detayları içerir.

Örnek Kodlar

Açık kaynak kodlu Craftgate API client'larındaki örnek kodları inceleyebilirsiniz.

APM ile Ödeme Tamamlama