Ana içeriğe geç

YKB WorldPay Ödeme Yöntemi ile Ödeme Alma

WorldPay ödeme akışı, ödemenin gerçekleştiği mobil ve web ortamlarına göre değişiklik göstermektedir. Tüm ödeme akışları YKB WorldPay Ödeme Başlatma adımında belirtildiği gibi başlatılır. Web üzerinden ilerleyen WEB2QR ve WEB2APP akışlarında kullanıcı mobil uygulamada ödeme işlemini ilerlettikten sonra ödeme finansallaşarak merchant callback adresine ödeme sonucu dönülür. Mobil uygulamaya yönlendirilmiş olan APP2APP akışında ise; Ödeme, kullanıcı tarafından mobil uygulama üzerinde ilerletildikten sonra doğrudan banka tarafından üye işyerinin belirttiği redirectUrl adresine yönlendirilir. Bankanın callback dönüşü sonrası YKB WorldPay Ödeme Tamamlama servisi çağrılarak ödemenin finansallaşması sağlanır.

not

WorldPay alışveriş kredisi ile ödeme alınmak isteniyorsa paymentProvider alanında YKB_WORLD_PAY_SHOPPING_LOAN değeri, additionalParams içerisinde shoppingLoanProductCode değeri iletilmelidir.

YKB WorldPay Ödeme Başlatma

YKB WorldPay için POS APM Ödeme servisine gelinmesi gerekir. POS APM ödeme başlatma isteğinin içerisinde yer alan additionalParams ve paymentProvider alanları aşağıdaki gibi doldurulmalıdır.

URL

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

POST/payment/v1/pos-apm-payments/init

Ödeme Başlatma İsteği Parametreleri

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.

posAlias
string

Ödemenin geçmesi gereken posun ismi. Ödemenin geçeceği pos'a kendiniz karar verdiyseniz bu parametre ile ilgili posdan ödeme alabilirsiniz.

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
KWD
SAR
BHD
RUB
JPY
EGP
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

callbackUrl
string
zorunlu

Bankadan dönen sonucu üye işyerine iletmek için kullanılacak adres

paymentGroup
PaymentGroup
Değerler:
PRODUCT
LISTING_OR_SUBSCRIPTION
paymentPhase
PaymentPhase
zorunlu

Sadece AUTH desteklenmektedir. bkz: Payment Phases

Değerler:
AUTH
PRE_AUTH
POST_AUTH
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.

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

bankOrderId
string

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

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

additionalParams
map
zorunlu

Gerekli olan ekstra parametreler burada gönderilmelidir

installments
PosApmInstallment[]

Kullanıcıya sunulacak olan taksit seçenekleri. Gönderilmez ise posa tanımlı olan komisyon oranları üzerinden taksit seçenekleri kullandırılır

paymentProvider
PaymentProvider
zorunlu
Değerler:
YKB_WORLD_PAY
YKB_WORLD_PAY_SHOPPING_LOAN
fraudParams
FraudCheckParameters

Fraud kontrolü için gönderilebilecek ek parametreler

Dönüş Parametreleri

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

htmlContent
string

Web akışında kullanıcıya gösterilecek World Pay formunun HTML kod içeriği. Bu değer Base64-encoded olarak gönderilmekte olup, gösterimden önce üye işyeri tarafindan Base64 decode edilmelidir

paymentId
number

Ödemeye ilişkin olarak Craftgate API tarafından türetilen ödeme ID'si

paymentStatus
PaymentStatus
Değerler:
FAILURE
SUCCESS
INIT_THREEDS
CALLBACK_THREEDS
WAITING
additionalAction
AdditionalAction

Bir sonraki aşamada yapılması gereken adım ile alakalı yönlendirici değerler

Değerler:
CONTINUE_IN_CLIENT
SHOW_HTML_CONTENT
REDIRECT_TO_URL
NONE
additionalData
map<string, map>

Ödeme sonucuna ilişkim ek bilgiler.

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

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

callbackStatus
string

Ödemeyi doğrulaması sonucu ödemenin 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.

paymentId
number

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

conversationData
string

Başarılı responselarda dönülen güvenli iletişim datasıdır. Bu parametrenin döndüğü durumda doğrulamanın sağlanması amacıyla complete aşamasında gönderilmeli.

conversationId
string

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

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###conversationData###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": "d1811bb0-25a2-40c7-ba71-c8b605259611",
"paymentId": 317832,
"callbackStatus": null,
"conversationData": null,
"hash": "919401dcdd7f45bb258759d783e7e88d2ea60144925fb90520ad78e64eb5b427"
}

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

TjaHHdMbguUSonMEUr4tR42IC0UEtHPb###SUCCESS###317832######d1811bb0-25a2-40c7-ba71-c8b605259611###

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

Loading..

YKB WorldPay Ödeme Tamamlama

Web akışlarında kullanıcı mobil uygulamaya yönlenip ödeme tamamlandıktan sonra Pos Apm yönlendirmesi sonrasında 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/pos-apm-payments/complete

Ödeme Tamamlama İsteği Parametreleri

Mobil ödeme akışında, kullanıcı mobil uygulamadan ödeme sürecini tamamladığında init request parametrelerinde belirtilen redirectUrl adresine dönüş sağlanır. Bu dönüş sonrası complete servisi çağrılarak ödeme tamamlanır.

paymentId
number
zorunlu

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

Dönüş Parametreleri

POS 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:

id
number

Ödemenin ID'si. Bu değer ödeme isteği için Craftgate tarafından belirlenen eşsiz değerdir. Veritabanınızda sipariş bilgileri ile eşleştirip saklamayı unutmayınız.

createdDate
date

Ödemenin gerçekleştirildiği tarih

price
decimal

Ödemenin toplam sepet tutarı

paidPrice
decimal

Müşterinin ödediği toplam tahsilat tutarı. Tamamı ya da bir kısmı cüzdandan tahsil edilen ödemelerde cüzdandan tahsil edilecek tutar da bu tutara dahildir

walletPrice
decimal

Cüzdandan tahsil edilen tutar

currency
Currency

Ödemeye ilişkin para birimi. bkz: Para Birimleri

Değerler:
TRY
USD
EUR
GBP
CNY
ARS
BRL
AED
IQD
AZN
KZT
KWD
SAR
BHD
RUB
JPY
EGP
buyerMemberId
number

Alıcı üyeyle ilişkilendirilmiş ödemelerde yer alan, ilgili üyenin ID'sini belirten değer

installment
number

Ödemenin taksit sayısı

conversationId
string

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

externalId
string

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

paymentType
PaymentType
Değerler:
CARD_PAYMENT
DEPOSIT_PAYMENT
WALLET_PAYMENT
CARD_AND_WALLET_PAYMENT
BANK_TRANSFER
APM
paymentGroup
PaymentGroup
Değerler:
PRODUCT
LISTING_OR_SUBSCRIPTION
paymentSource
PaymentSource
Değerler:
API
CHECKOUT_FORM
PAY_BY_LINK
paymentStatus
PaymentStatus
Değerler:
FAILURE
SUCCESS
INIT_THREEDS
CALLBACK_THREEDS
WAITING
paymentPhase
PaymentPhase
Değerler:
AUTH
PRE_AUTH
POST_AUTH
paymentChannel
string

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

isThreeDS
boolean

Ödemenin 3D Secure ile gerçekleştirilip gerçekleştirilmediği

merchantCommissionRate
decimal

Son kullanıcıya yansıtılan vade farkı oranı

merchantCommissionRateAmount
decimal

Son kullanıcıya yansıtılan vade farkı tutarı. paidPrice ile price arasındaki farka eşittir

bankCommissionRate
decimal

Banka komisyon oranı

bankCommissionRateAmount
decimal

Banka komisyon tutarı

cardUserKey
string

Ödeme esnasında kart saklanmak istenmiş ise kart saklanır ve bu alan dolu gelir. Başarılı ödeme sonrası kaydedilen kartın saklı kart kullanıcı anahtarını ifade eder. Üye işyeri tarafından müşteriyle ilişkilendirilerek saklanmalıdır

cardToken
string

Ödeme esnasında kart saklanmak istenmiş ise kart saklanır ve bu alan dolu gelir. Başarılı ödeme sonrası kaydedilen kartın saklı kart anahtarını ifade eder. Üye işyeri tarafından müşteriyle ilişkilendirilerek saklanmalıdır

paidWithStoredCard
boolean

Ödemenin saklı kartla gerçekleştirilip gerçekleştirilmediğini belirtir

binNumber
string

Kartın ilk 8 hanesini belirtir. Tamamı cüzdan ile ödenen ödemelerde boş gelir.

lastFourDigits
string

Kartın son 4 hanesini belirtir. Tamamı cüzdan ile ödenen ödemelerde boş gelir

cardHolderName
string

Kart sahibinin adı/soyadı

bankCardHolderName
string

Bankada kayıtlı olan kart sahibi adı/soyadı. Bazı durumlarda PF poslarında dönüş null olabilir

authCode
string

Ödemeye ilişkin banka tarafından verilen authCode değeri. Tamamı cüzdan ile ödenen ödemelerde boş gelir. Bazı durumlarda PF poslarında dönüş null olabilir

hostReference
string

Ödemeye ilişkin banka tarafından verilen hostReference değeri. Tamamı cüzdan ile ödenen ödemelerde boş gelir

transId
string

Ödemeye ilişkin banka tarafından verilen transId değeri. Tamamı cüzdan ile ödenen ödemelerde boş gelir. Bazı durumlarda PF poslarında dönüş null olabilir

orderId
string

Ödemeye ilişkin banka tarafından verilen orderId değeri

cardType
CardType

(bkz: Kart Tipleri) Kartın tipini ifade eder. Tamamı cüzdan ile ödenen ödemelerde boş gelir

Değerler:
CREDIT_CARD
DEBIT_CARD
PREPAID_CARD
cardAssociation
CardAssociation

Kartı sağlayan kart kuruluşuunu ifade eder. Tamamı cüzdan ile ödenen ödemelerde boş gelir

Değerler:
VISA
MASTER_CARD
AMEX
TROY
JCB
UNION_PAY
MAESTRO
DISCOVER
DINERS_CLUB
cardBrand
string

Ödemenin alındığı kartın ailesini belirtir. Tamamı cüzdan ile ödenen ödemelerde boş gelir

requestedPosAlias
string

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

pos
MerchantPos

Ödemenin alındığı pos bilgileri

loyalty
Loyalty

Ödemede kullanılmış olan ödül bilgileri (bkz: Ödül ve Puan Kullanımı)

fraudId
number

Şüpheli işlem olarak belirlenmesi durumunda şüpheli işlem kaydına ait id bilgisi (bkz: Şüpheli İşlem Yönetimi)

fraudAction
FraudAction

Şüpheli işlem olarak belirlenmesi durumunda şüpheli işlem kaydına ait aksiyon bilgisi (bkz: Şüpheli İşlem Aksiyonları)

Değerler:
BLOCK
REVIEW
paymentTransactions
PaymentTransaction[]

Ödeme isteği yapılırken gönderilen kırılım bilgileri ile, ödemenin bu kırılımlar bazındaki fiyatlama ve para gönderimi bilgilerini içerir

additionalData
map<string, map>

Ödeme sonucuna ilişkim ek bilgiler.

Örnek Kodlar

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

APM ile Ödeme Tamamlama

Loading..