Merhaba arkadaşlar,
Mobilhanem.com sitemizden anlattığımız/yayınladığımız derslerimize bu dersimizde, Card IO Android SDK kullanımı dersi ile devam ediyoruz.
card.io sayesinde hızlı ve kolay bir şekilde kredi kartını okutabiliyoruz. Daha sonra kredi kartı ile ilgili gerçekleşmesini istediğimiz işlemleri tamamlayabiliyoruz. Online ödeme yapmanın daha güvenli ve kolay yolu olan Paypal ile kredi kartı numaranızı mağazayla paylaşmadan ödemelerini gerçekleştirebilirsiniz. Pek çoğumuzun Paypal ile alışveriş yaptığını düşünürsek , card.io nun da Paypal desteği aldığını ve kredi kartı işlemlerinde; güvenlik konusunda kafamızda soru işaretleri olmaması gerektiğini de ayrıca belirtmek istedim.
Şimdi gelelim card.io uygulamamızda nasıl kullanacağımıza; projemizin build.gradle dosyasına giriyoruz ve dependencies kısmına aşağıdaki kodu yapıştırıp sync now diyoruz.
compile 'io.card:android-sdk:5.4.2'
AndroidManifest.xml dosyasına gerekli izinleri ve özellikleri ekliyoruz.
android.permission.VIBRATE = titreşim özelliğini açmak için
android.permission.CAMERA = cihazın kamerasını kullanabilmek için
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mobilhanem.androidcardio"> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> <uses-feature android:name="android.hardware.camera.flash" android:required="false" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="io.card.payment.CardIOActivity" android:configChanges="keyboardHidden|orientation" android:hardwareAccelerated="true"/> <activity android:name="io.card.payment.DataEntryActivity" android:screenOrientation="portrait"/> </application> </manifest>
Yukarıda belirttiğimiz manifest dosyasında application tagleri içinde gördüğünüz CardIOActivity ve DataEntryActivity sınıfları card.io nun kendi içerisinde bulunan activity sınıflarıdır. Uygulamanın kaynak kodunu inidirip çalıştırdığımızda belirttiğim activity lerin nasıl çalıştığını göreceksiniz.
Uygulamamızın tasarım kısmında ise kredi kartını okumasını tetikleyeceğimiz bir buton ve scan işlemlerinden sonra gerekli bilgileri ekranda gösterecek olan bir textview kullandık.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.mobilhanem.androidcardio.MainActivity"> <Button android:text="Kredi Katını Okut" android:id="@+id/scanButton" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_marginTop="10dp" android:id="@+id/txtScan" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/scanButton" /> </RelativeLayout>
MainActivity sınıfımızda aşağıdadır. Kredi kartını okuma ve kredi kartı ile ilgili verileri ekrana basma işlemlerini bu sınıfta gerçekleştiriyoruz. Butona bastığımızda CardIOActivity sayfasını startActivityForResult ile başlatıyoruz. Karşımıza çıkan ekranda düzgün bir şekilde çerçevenin içinde kredi kartı sığacak şekilde kamerayı yerleştiriyoru ve görüntü işleme sonrasında onActivityResult fonksiyonuna düşüyoruz ; CreditCard modeline bakarsanız kredi kartı ile ilgili verileri tuttuğunu göreceksiniz. ( Kredi kartı numarası , cvv, geçerlilik süresi , kart sahibinin adı vb. )
MainActivity.java
package com.mobilhanem.androidcardio; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import io.card.payment.CardIOActivity; import io.card.payment.CreditCard; public class MainActivity extends AppCompatActivity { private Button scanBttn; private TextView scanInfo; private int MY_SCAN_REQUEST_CODE = 999; @Override protected void onResume() { super.onResume(); if (CardIOActivity.canReadCardWithCamera()) { //Kameradan okutma yapılıyorsa scanBttn.setText("Kredi Kartını Okut"); } else { scanBttn.setText("Kredi Kartı Bilgilerini Giriniz"); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); scanBttn = (Button)findViewById(R.id.scanButton); scanInfo = (TextView)findViewById(R.id.txtScan); scanBttn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { scanCreditCard(); } }); } private void scanCreditCard() { Intent scanIntent = new Intent(this, CardIOActivity.class); scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_EXPIRY, true); // default: false scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_CVV, false); // default: false scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_POSTAL_CODE, false); // default: false scanIntent.putExtra(CardIOActivity.EXTRA_RESTRICT_POSTAL_CODE_TO_NUMERIC_ONLY, false); // default: false scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_CARDHOLDER_NAME, false); // default: false scanIntent.putExtra(CardIOActivity.EXTRA_SUPPRESS_MANUAL_ENTRY, false); // default: false scanIntent.putExtra(CardIOActivity.EXTRA_KEEP_APPLICATION_THEME, false); // default: false startActivityForResult(scanIntent, MY_SCAN_REQUEST_CODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); String resultStr; if (data != null && data.hasExtra(CardIOActivity.EXTRA_SCAN_RESULT)) { CreditCard scanResult = data.getParcelableExtra(CardIOActivity.EXTRA_SCAN_RESULT); resultStr = "Card Number: " + scanResult.getLastFourDigitsOfCardNumber() + "\n"; if (scanResult.isExpiryValid()) { resultStr += "Expiration Date: " + scanResult.expiryMonth + "/" + scanResult.expiryYear + "\n"; } if (scanResult.cvv != null) { resultStr += "CVV has " + scanResult.cvv.length() + " digits.\n"; } if (scanResult.postalCode != null) { resultStr += "Postal Code: " + scanResult.postalCode + "\n"; } if (scanResult.cardholderName != null) { resultStr += "Cardholder Name : " + scanResult.cardholderName + "\n"; } } else { resultStr = "Tarama İptal Edildi."; } scanInfo.setText(resultStr); } }
Uygulamayı çalıştırdığınızda kredi kartını okutup işlemi bitirdikten sonra aşağıdaki gibi bir görüntü elde edeceksiniz. Kredi Kartınımızın son 4 hanesini (siz isterseniz hepsini yazdırabilirsiniz) ve son kullanma tarihini yazdırdığımızı göreceksiniz.
- bu kod ile kartı okuttuktan sonra ekrana kredi kartı numaranızın tamamını açık bir şekilde yazdığını göreceksiniz.
scanResult.getFormattedCardNumber();
- bu kod ile kartı okuttuktan sonra ekrana kredi kartı numaranızın son 4 hanesini yazdığını göreceksiniz.
scanResult.getLastFourDigitsOfCardNumber();
- bu kod ile de kartı okuttuktan sonra ekrana kredi kartınızın numarasını maskeli bir şekilde yazmanızı sağlar.
scanResult.getRedactedCardNumber();
Biz bu uygulamamızda kredi kartını okuttuktan sonra ekrana maskeli bir şekilde kredi kartı numarasını yazdırdık. Ayrıca kredi kartınızı hem otomatik bir şekilde okutup bilgilerini alabileceğiniz gibi card.io nun kendi sınıfını uygulama içinden açıp kredi kartı numarasını ve son kullanma tarihini manuel bir şekilde girerek yine aynı işlemi yapabilirsiniz. ( DataEntryActivity )
Card.io ile kredi kartı okuma işte bu kadar kolay ve hızlı. Ayrıca, android 2.2 ve üzeri tüm cihazlara desteği olduğu için de kullanım açısından avantaj olduğunu söyleyebiliriz.
Mobilhanem.com üzerinden anlattığımız mobil uygulama geliştirme derslerine devam edeceğiz. Konu hakkında sorunuzu yorum alanından sorabilirsiniz. Konu dışı sorularınızı ve tüm yazılımsal sorularınızı sorucevap.mobilhanem.com sitemizden de sorabilirsiniz.
Bir dahaki dersimizde görüşmek dileğiyle..
0