Yemek Kartı Saklama
Yemek kartı saklama çözümünde kullanılan endpoint, HTTP metod bilgisi, istek ve dönüş parametreleri bilgisi aşağıda verilmiştir.
Yemek Kartı Saklama Başlatma İstek Parametreleri
Yemek kartı kaydetme sürecinin başlatılabilmesi için init isteği aşağıdaki parametrelerle yapılmalıdır.
APM Tipi. See: Alternatif Ödeme Yöntemleri
Yemek kartı saklama bilgileri.
Kart numarası (APM tipi METROPOL ve EDENRED olanlar için gönderilmelidir.)
Kullanıcı referans numarası
Telefon numarası (APM tipi METROPOL ve TOKENFLEX olanlar için gönderilmelidir.)
Yemek kartı kaydetme sonucunu, gerekli bilgileri üye işyerine iletmek için kullanılacak adres.(APM tipi SETCARD, TOKENFLEX, MULTINET ve SODEXO olanlar için gönderilmelidir.)
Dönüş Parametreleri
İşleme ait benzersiz değer
Bir sonraki aşamada yapılması gereken adım ile alakalı yönlendirici değerler
Ödeme adımı için kullanıcıya gösterilecek HTML içeriği. Bu değer Base64-encoded olarak gönderilmekte olup, gösterimden önce üye işyeri tarafından Base64 decode edilmelidir. (APM Tipi MULTINET ve SETCARD olanlar için dönülecektir.)
Ödeme işleminin devam edeceği URL bilgisi. (APM Tipi SODEXO ve TOKENFLEX olanlar için dönülecektir.)
Yemek Kartı Saklama Hash Doğrulama
Yemek kartı kaydetme süreci başlatıldıktan sonra kullanıcı, saklamak istediği kartı seçerek işlemi ekranda tamamlar. İşlem tamamlandığında, kart saklama işleminin sonucu üye işyerinin init aşamasında ilettiği callback URL'ine gönderilir.
Callback URL'e İletilen Parametreler
İşleme ait benzersiz değer
Kart parmak izi
Maskelenmiş kart numarası
Yemek kartı saklama işleminin durumunu ifade eden değer. Doğrulama başarılıysa SUCCESS, değilse FAILURE değerini alacaktır
Hash hesaplamasında kullanılan parametrelerin sıralı olarak gönderildiği alandır. : karakterine göre parametreler ayrıştırılarak, ilgili parametre değerleri ard arda eklenerek hash hesaplamasına dahil edilmelidir.
Üye İşyeri Callback Key değerinin, hashParams alanında açıklandığı şekilde ilgili değerlerin oluşturularak birleştirilip Sha-256 Hex algoritması ile şifrelenmesi sonucu oluşan değerdir. Hash değerinin oluşturması için örnek kodlar aşağıda yer almaktadır.
Yemek Kartı Saklama için Mecburi Güvenlik Adımı: Hash Değerinin Oluşurulması ve Kontrolü
Üye işyerinin Callback URL'ine, Craftgate'in geldiği gibi kötü niyetli kişiler de istek atabilir. O nedenle CALLBACK URL'E GELEN HİÇBİR İSTEĞE, HASH KONTROLÜ YAPMADAN KESİNLİKLE GÜVENMEYİNİZ.
İşlem için gerekli 32 Haneli key değerine Panel üzerinde bulunan Yönetim -> Üye İşyeri Ayarları arayüzündeki "Üye İşyeri Callback Key" alanından ulaşabilirsiniz.
- Java
- Node.js
public boolean verifyHash(Map<String, String> callbackParams, String callbackKey) {
String hashValues = Arrays.stream(callbackParams.get("hashParams").split(":"))
.map(callbackParams::get)
.collect(Collectors.joining());
String calculatedHash = DigestUtils.sha256Hex(callbackKey + hashValues);
return calculatedHash.equals(callbackParams.get("hash"));
}
function verifyHash(callbackParams, callbackKey) {
const hashValues = callbackParams['hashParams'].split(':')
.map(param => callbackParams[param])
.join('');
const calculatedHash = crypto
.createHash('sha256')
.update(callbackKey + hashValues)
.digest('hex');
return calculatedHash === callbackParams['hash'];
}
Örnek olarak aşağıdaki callback içeriğinin iletildiğini ve Üye İşyeri Callback Key değerinin merchantDummyCallbackKeySandbox1 olduğunu varsayalım.
sessionId=60351fc9-c5ce-42a8-9332-6e15ebf5bbe8
status=SUCCESS
maskedCardNumber=7599********1920
fingerprint=ca31e9418f907fcfbb50fc7733ed2d93b83b30a05e49e64c83058813827a8426
hashParams=sessionId:status:maskedCardNumber:fingerprint
hash=095eb6428b6fd40543837ce009ede7c7f0a5b6006478e35825d8673fb3716b13
hashParams parametrelerinden null değerleri eleyip String olarak birleştirmelisiniz.
Örnekte, hash algoritmasına sokulacak değer şu şekilde oluşmalı:
merchantDummyCallbackKeySandbox160351fc9-c5ce-42a8-9332-6e15ebf5bbe8SUCCESS7599********1920ca31e9418f907fcfbb50fc7733ed2d93b83b30a05e49e64c83058813827a8426
Yukarıdaki algoritma kullanılarak oluşacak hash değeri aşağıdaki gibi olacaktır.
095eb6428b6fd40543837ce009ede7c7f0a5b6006478e35825d8673fb3716b13
Oluşturulan değerin istek içerisinde bulunan "hash" parametresine eşitliği karşılaştılarak validasyon sağlanmalıdır.
Yemek Kartı Saklama Tamamlama İstek Parametreleri
Yemek kartı kaydetme sürecinin tamamlanabilmesi için, init isteği sonucunda dönen sessionId kullanılarak aşağıdaki parametrelerle complete isteği gönderilmelidir.
Bu istek sadece APM tipi METROPOL olanlar için gönderilmelidir.
Doğrulama kodu
Dönüş Parametreleri
İşleme ait benzersiz değer
Maskelenmiş kart numarası
Kart parmak izi
Bakiye
Yemek Kartı Saklama İşleminin Yeniden Başlatılması
Herhangi bir nedenle yemek kartı kaydetme sürecinin yeniden başlatılması gerektiğinde, init isteği sonucunda dönen sessionId değeri kullanılarak süreç yeniden başlatılabilir.
Yeniden başlatma isteğinin ardından yalnızca METROPOL APM tipi için "Yemek Kartı Saklama Tamamlama" isteği gönderilebilir.
Yemek kartı saklama bilgileri.
Kart numarası (APM tipi METROPOL ve EDENRED olanlar için gönderilmelidir.)
Kullanıcı referans numarası
Telefon numarası (APM tipi METROPOL ve TOKENFLEX olanlar için gönderilmelidir.)
Yemek kartı kaydetme sonucunu, gerekli bilgileri üye işyerine iletmek için kullanılacak adres.(APM tipi SETCARD, TOKENFLEX, MULTINET ve SODEXO olanlar için gönderilmelidir.)
Dönüş Parametreleri
İşleme ait benzersiz değer
Bir sonraki aşamada yapılması gereken adım ile alakalı yönlendirici değerler
Ödeme adımı için kullanıcıya gösterilecek HTML içeriği. Bu değer Base64-encoded olarak gönderilmekte olup, gösterimden önce üye işyeri tarafından Base64 decode edilmelidir. (APM Tipi MULTINET ve SETCARD olanlar için dönülecektir.)
Ödeme işleminin devam edeceği URL bilgisi. (APM Tipi SODEXO ve TOKENFLEX olanlar için dönülecektir.)
Örnek Kodlar
Açık kaynak kodlu Craftgate API client'larındaki örnek kodları inceleyebilirsiniz.