Repositori ini menyediakan dokumentasi langkah demi langkah untuk SDK Android asli SumUp, yang memungkinkan Anda mengintegrasikan terminal kartu milik kami dan platform pembayarannya untuk menerima pembayaran kartu kredit dan debit (termasuk VISA, MasterCard, American Express, dan lainnya). SDK berkomunikasi secara transparan ke terminal kartu melalui Bluetooth (BLE 4.0). Saat memulai pembayaran, SDK memandu pengguna Anda menggunakan layar yang sesuai melalui setiap langkah proses pembayaran. Sebagai bagian dari proses, SumUp juga menyediakan layar pengaturan terminal kartu, bersama dengan layar verifikasi tanda tangan pemegang kartu. Hasil checkout dikembalikan dengan data yang relevan untuk catatan Anda.
Tidak ada data kartu sensitif yang diteruskan atau disimpan di ponsel pedagang. Semua data dienkripsi oleh terminal kartu, yang telah sepenuhnya disertifikasi dengan standar industri tertinggi (PCI, EMV I & II, Visa, MasterCard & Amex).
Untuk informasi lebih lanjut tentang produk pengembang SumUp, silakan lihat dokumentasi SumUp API kami.
minSdkVersion
26 atau lebih barutargetSDK
31 atau lebih baruTambahkan repositori ke dependensi gradle Anda:
allprojects {
repositories {
maven { url ' https://maven.sumup.com/releases ' }
}
}
Tambahkan ketergantungan ke modul:
implementation ' com.sumup:merchant-sdk:5.0.3 '
Inisialisasi komponen SumUp di aplikasi Anda:
public class SampleApplication extends Application {
@ Override
public void onCreate () {
super . onCreate ();
SumUpState . init ( this );
}
}
Sebelum memanggil fitur SumUp SDK apa pun, akun pedagang SumUp yang terdaftar harus masuk. Silakan kunjungi https://me.sumup.com/developers untuk mengambil Kunci Afiliasi Anda dengan memasukkan ID aplikasi aplikasi Anda. (misalnya com.sumup.sdksampleapp)
SumUpLogin sumupLogin = SumUpLogin . builder ( mAffiliateKey ). build ();
SumUpAPI . openLoginActivity ( MainActivity . this , sumupLogin , 1 );
Catatan: Dimungkinkan juga untuk masuk ke akun dengan token, tanpa pengguna memasukkan kredensial masuk SumUp mereka di SDK. Silakan lihat bagian Otentikasi Transparan
Setelah masuk, Anda dapat mulai menggunakan SumUp SDK untuk menerima pembayaran kartu. Jika tidak ada akun yang login, SumUpAPI.Response.ResultCode.ERROR_NOT_LOGGED_IN
akan dikembalikan.
SumUpPayment payment = SumUpPayment . builder ()
// mandatory parameters
. total ( new BigDecimal ( "1.12" )) // minimum 1.00
. currency ( SumUpPayment . Currency . EUR )
// optional: to be used only if the card reader supports the feature, what can be checked with `SumUpApi.isTipOnCardReaderAvailable()`
. tipOnCardReader ()
// optional: include a tip amount in addition to the total, ignored if `tipOnCardReader()` is present
. tip ( new BigDecimal ( "0.10" ))
// optional: add details
. title ( "Taxi Ride" )
. receiptEmail ( "[email protected]" )
. receiptSMS ( "+3531234567890" )
// optional: Add metadata
. addAdditionalInfo ( "AccountId" , "taxi0334" )
. addAdditionalInfo ( "From" , "Paris" )
. addAdditionalInfo ( "To" , "Berlin" )
// optional: foreign transaction ID, must be unique!
. foreignTransactionId ( UUID . randomUUID (). toString ()) // can not exceed 128 chars
// optional: skip the success screen
. skipSuccessScreen ()
// optional: skip the failed screen
. skipFailedScreen ()
. build ();
SumUpAPI . checkout ( MainActivity . this , payment , 2 );
@ Override
protected void onActivityResult ( int requestCode , int resultCode , Intent data ) {
if ( requestCode == 2 && data != null ) {
// Handle the response here
}
}
Beberapa bidang respons tersedia saat aktivitas panggilan balik dipanggil:
Tanda respons disediakan dalam Bundel yang diteruskan kembali ke aktivitas panggilan balik:
int resultCode = getIntent (). getExtras (). getInt ( SumUpAPI . Response . RESULT_CODE );
Saat pedagang masuk, Anda dapat membuka aktivitas ini untuk mengakses semua pengaturan dan opsi terkait pembaca kartu.
SumUpAPI . openCardReaderPage ( MainActivity . this , 4 );
prepareForCheckout()
menawarkan kemungkinan untuk menghubungkan pembaca kartu sebelum memulai checkout yang mempercepat waktu checkout secara keseluruhan.
Untuk memanggil metode ini, pengguna harus login dengan akun SumUp dan pembaca kartunya sudah siap. Selanjutnya, panggil prepareForCheckout()
sebelum memulai pembayaran.
Catatan: Pembaca kartu Air dan Solo tetap terhubung melalui BLE setelah setiap transaksi sementara
prepareForCheckout()
digunakan ketika pembaca kartu terputus (misalnya pembaca berada di luar jangkauan, aplikasi host kehilangan fokus, atau pembaca dimatikan).
Saat menyiapkan objek SumUpPayment
, parameter opsional berikut dapat disertakan:
Jumlah tip dapat diproses selain total
menggunakan parameter tip
. Jumlah tip kemudian akan ditampilkan selama proses checkout dan disertakan dalam respons. Harap dicatat bahwa jumlah tip tidak dapat diubah selama/setelah checkout.
Hal ini memungkinkan pelanggan untuk menambahkan tip secara langsung pada pembaca kartu, daripada meminta jumlah tip pada perangkat Android.
Jumlah tip dapat diminta langsung di pembaca kartu dengan menggunakan parameter tipOnCardReader
, jika pembaca kartu mendukung pemberian tip. Lihat contoh di sini untuk bidang tipOnCardReader
.
Catatan: Tidak semua pembaca kartu mendukung fitur ini. Untuk mengetahui apakah fitur tersebut didukung untuk pembaca kartu yang terakhir disimpan, Anda harus selalu memeriksa
SumUpApi.isTipOnCardReaderAvailable()
. Anda harus menangani kasus ini sendiri untuk menghindari tip yang diminta. Harap perhatikan juga bahwa jikatip
dantipOnCardReader
dipanggil maka hanya jumlahtipOnCardReader
yang akan dipertimbangkan saat checkout jika tersedia.
Fitur configureRetryPolicy()
memungkinkan Anda menyetel parameter percobaan ulang khusus untuk pengambilan hasil transaksi, menggunakan pollingInterval
, maxWaitingTime
, disableBackButton
.
pollingInterval
dan maxWaitingTime
harus disediakan dalam milidetik, dengan nilai default masing-masing 2000 ms dan 60000 ms. disableBackButton
ke true akan menonaktifkan tombol kembali selama percobaan ulang.maxWaitingTime
berlalu tanpa hasil, SDK akan mengembalikan SumUpAPI.ResultCode.ERROR_UNKNOWN_TRANSACTION_STATUS
. Menekan tombol kembali (jika diaktifkan) selama percobaan ulang juga akan memicu kesalahan ini.pollingInterval
melebihi maxWaitingTime
, maxWaitingTime
akan secara otomatis disesuaikan agar sesuai. Nilai negatif untuk salah satu parameter defaultnya adalah 0.configureRetryPolicy()
tidak digunakan, SDK secara default akan mengembalikan SumUpAPI.ResultCode.ERROR_TRANSACTION_FAILED
. Saat menggunakan pembayaran SumUp seperti gambar di bawah ini:
SumupPayment . builder ()
...
. foreignTransactionId ( UUID . randomUUID (). toString ())
. configureRetryPolicy ( 2000 , 60000 , true )
. build ();
Jika ada masalah konektivitas dan status transaksi tidak dapat diambil, API akan mengembalikan ERROR_UNKNOWN_TRANSACTION_STATUS
. Dalam kasus seperti ini, Anda dapat menanyakan status transaksi dengan memanggil API status transaksi SumUp menggunakan foreignTransactionId
yang ditentukan.
Pengidentifikasi foreignTransactionID
akan dikaitkan dengan transaksi dan dapat digunakan untuk mengambil detail terkait transaksi tersebut. Lihat dokumentasi API untuk detailnya. Harap pastikan bahwa ID ini unik dalam cakupan akun pedagang dan sub-akun SumUp. Panjangnya tidak boleh lebih dari 128 karakter. ForeignTransactionID tersedia ketika aktivitas panggilan balik dipanggil: SumUpAPI.Param.FOREIGN_TRANSACTION_ID
Untuk melewati layar sukses yang ditampilkan di akhir transaksi sukses, parameter skipSuccessScreen
dapat digunakan. Saat menggunakan parameter ini, aplikasi Anda bertanggung jawab untuk menampilkan hasil transaksi kepada pelanggan. Dalam kombinasi dengan Receipts API, aplikasi Anda juga dapat mengirimkan tanda terima Anda sendiri, lihat dokumentasi API untuk detailnya. Harap diperhatikan bahwa layar keberhasilan akan tetap ditampilkan saat menggunakan pembaca SumUp Air Lite.
Untuk melewati layar gagal yang ditampilkan di akhir transaksi gagal, parameter skipFailedScreen
dapat digunakan. Saat menggunakan parameter ini, aplikasi Anda bertanggung jawab untuk menampilkan hasil transaksi kepada pelanggan. Harap diperhatikan bahwa layar yang gagal akan tetap ditampilkan saat menggunakan pembaca SumUp Air Lite.
Untuk mengautentikasi akun tanpa pengguna mengetikkan kredensial SumUp mereka setiap saat, Anda dapat membuat token akses menggunakan OAuth2.0 dan menggunakannya untuk login secara transparan ke SumUp SDK.
SumUpLogin sumupLogin = SumUpLogin . builder ( mAffiliateKey ). accessToken ( "MY_ACCESS_TOKEN" ). build ();
SumUpAPI . openLoginActivity ( MainActivity . this , sumupLogin , 1 );
Untuk informasi tentang cara mendapatkan token, silakan lihat Dokumentasi API.
Jika token tidak valid, SumUpAPI.Response.ResultCode.ERROR_INVALID_TOKEN
akan dikembalikan.
Jika akun pedagang sedang login, data untuk akun ini dapat diambil.
if (! SumUpAPI . isLoggedIn ()) {
// no merchant account currently logged in
} else {
Merchant currentMerchant = SumUpAPI . getCurrentMerchant ();
}
SumUpAPI . logout ();
buildTypes {
release {
// All ProGuard rules required by the SumUp SDK are packaged with the library
minifyEnabled true
proguardFiles getDefaultProguardFile( ' proguard-android.txt ' )
}
}
SDK mendukung Layanan Lokasi Google, untuk meningkatkan akurasi lokasi dan mengurangi konsumsi daya.
Untuk menggunakannya Anda perlu menambahkan ketergantungan pada file build.gradle
implementation " com.google.android.gms:play-services-location:19.0.1 "
Jika ketergantungan GLS tidak ditambahkan ke proyek atau Layanan Google Play tidak diinstal pada perangkat seluler, SumUp SDK akan menentukan lokasi dengan Layanan Lokasi default yang disediakan oleh Android.
CATATAN: Disarankan menggunakan GLS versi 19.0.1.
Fungsi-fungsi berikut ditangani oleh SumUp API:
SumUp Log Perubahan SDK Android
Lisensi SDK Android SumUp