sami özen
3 min readDec 2, 2018

Merchant Presented QR Code

Bu ödeme modelinde QR üyeişyeri tarafından gösterilir.

QR işlem ile hangi tür terminallerde işlem yapılabilir;

Pos’tan QR gösterilebilir veya ekran yeterli değil ise QR slip üzerine basılabilir.

ATM’den QR gösterilebilir.

Kağıda basılı QR kullanılabilir.

Tablet veya telefondaki uygulama üzerinden QR gösterilebilir.

QR için farklı işlem akışları var mı?

Gösterilen QR datası içinde olan bilgiler kullanılarak çeşitli işlem akışları kurgulanabilir. Bu kurgulardan ikisi ;

Model-1; Mevcut işlem akışlarını kullanmak (acquirer’dan issuer’a doğru bir işlem akışı), işlem akışını biraz uzatıyor ancak mevcut sistemler minimum etki ile kullanılabiliyor.

Model-2; P2P işlem akışı yapmak, işlemi başlatan issuer olduğundan ve kartlı ödeme sistemlerinde issuer’dan acquirer’a akış olmadığından bu akışa ait otorizasyon, takas ve mutabakat ve birçok alt bileşeni kurgulamak ve hayata geçirmek gerekecektir.

QR işlem akışı nasıldır?

Bu iki işlem akışı arasında bir tercih yapıp daha minimum etkiye sahip Model-1'i tercih edip bu akışı ele alacak olursak;

Bu modelde müşteri QR datasını telefonundaki bir uygulama ile okur.

Okunan QR datasını mobil uygulama parse edip ekranda bazı bilgileri gösterir.

o İşyeri adı

o İşlem tutarı

Mobil uygulama içinde işlemi yapacak kart müşteri tarafından seçilebilir veya default bir kart işlem için set edilebilir.

QR data içinde bir diğer önemli bilgi QR üretici bankayı temsil eder.

Seçilen karta ait bilgiler ile QR datası acquirer bankaya iletilir.

Acquirer banka aldığı kart bilgileri ile otorizasyon akışını başlatır.

Mobil uygulamaya otorizasyon sonucu dönülür.

Kart bilgilerinin taşınması akışı;

Otorizasyon akışı;

QR ile Kart Doğrulama nasıl yapılır ?

Bu işlem akışında müşteri doğrulaması nasıl yapılır ;

Müşteri mobil uygulamaya girerken bankanın cüzdan doğrulama sürecinden geçer;

o OTP

o Parmak izi

Bu doğrulamalardan sonra issuer acquirer’dan kendi belirlediği bir kart doğrulama metodunu talep eder. Bunlar aşağıdakiler olabilir;

· Şifre

· İmza

· No CVM

EMVCo QR standardı nedir ?

Tüm ödeme şemalarının ortak bir QRCode veri yapısı sunabilmeleri ve üye işyerlerinde her şema için ayrı ayrı QR karmaşası oluşturmamak için EMVCo QR deseni konusunda standart oluşturdu ve yayınladı. Temelde TLV formatında bir dizin ve dizinin sonunda CRC değeri bulunur.

EMVCo QR deseni ;

CRC Değeri nasıl hesaplanır ;

CRC değeri ISO/IEC 13219, polynomial ‘1021’, ilk değer ‘FFFF’ kullanılarak hesaplanmalı. Örnek olarak kullanabilecekler;

https://www.lammertbies.nl/comm/info/crc-calculation.html

https://crccalc.com/

.Net c# için Tako.CRC paketini NuGet package manager ile indirip kullanabilirsiniz.

Örnek dizin (CRC değeri hariç);

303030323031303130323132323933303030313244313536303030303030303030353130413933464F33323330513331323830303132443135363030303030303031303330383132333435363738353230343431313135383032434E3539313442455354205452414E53504F5254363030374245494A494E4736343230303030325A4830313034E69C80E4BDB3E8BF90E8BE9330323032E58C97E4BAAC3534303532332E373235333033313536353530323031363233333033303431323334303630332A2A2A303730384136303038363637303930324D4539313332303031364130313132323333343439393838373730373038313233343536373836333034

Bu dizin için hesaplanan değer A13A (41313341) bu durumda tüm dizin;

303030323031303130323132323933303030313244313536303030303030303030353130413933464F33323330513331323830303132443135363030303030303031303330383132333435363738353230343431313135383032434E3539313442455354205452414E53504F5254363030374245494A494E4736343230303030325A4830313034E69C80E4BDB3E8BF90E8BE9330323032E58C97E4BAAC3534303532332E373235333033313536353530323031363233333033303431323334303630332A2A2A303730384136303038363637303930324D453931333230303136413031313232333334343939383837373037303831323334353637383633303441313341

QR resmi Nasıl oluşturulur ;

.Net c# için QRCoder paketini NuGet package manager ile indirip kullanabilirsiniz. Örnek olarak yapılan hesaplamada ECC Level M olarak kullanıldı. ECC Level QR deseninde oluşabilecek hataları düzeltmek için kullanılır.

Örnek Kod parçası ;

Tako.CRC.CRCManager manager = new Tako.CRC.CRCManager() { DataFormat = Tako.CRC.EnumOriginalDataFormat.ASCII };

var provider = manager.CreateCRCProvider(Tako.CRC.EnumCRCProvider.CRC16CCITT_0xFFFF);

// textBox1.Text = “00020101021126760023000000000000001234567890112180904121314021218090412131403030010401105011520412345303949541300000000000015802TR5906ABCDEF6008ISTANBUL6304”;

var status = provider.GetCRC(textBox1.Text);

string sarr;

sarr = textBox1.Text + + ToHexString(status.CrcHexadecimal);;

QRCoder.QRCodeGenerator qrGenerator = new QRCodeGenerator();

var qrData = qrGenerator.CreateQrCode(sarr, QRCoder.QRCodeGenerator.ECCLevel.M);

var qrCode = new QRCoder.QRCode(qrData);

var image = qrCode.GetGraphic(4);

pictureBox1.Image = image;

Bir sonraki yazımda “Consumer Presented QR Code” konusunda buluşmak üzere ..