Servisin Kullanım Amacı
Seçili multinet cüzdanı üzerinden ödeme almak için kullanılan servistir.
Servis Çağrısı Yapılması
-
MultiPaySdk.confirmPayment( walletToken = "sampleWalletToken", requestId = "sampleRequestId", terminalReferenceNumber = "sampleTerminalReferenceNumber", merchantReferenceNumber = "sampleMerchantReferenceNumber", transferReferenceNumber = "sampleTransferReferenceNumber", transactionDetails = listOf( TransactionDetail( amount = "100TRY", productId = "1", referenceNumber = "sampleReferenceNumber" ) ), sign = "sampleSign", listener = multiPaySdkListener )
-
MultiPaySdk.confirmPayment( "sampleWalletToken", "sampleRequestId", "sampleTerminalReferenceNumber", "sampleMerchantReferenceNumber", "sampleTransferReferenceNumber", new ArrayList<TransactionDetail>( Arrays.asList( new TransactionDetail( "100TRY", "1", "sampleReferenceNumber" ) ) ), "sampleSign", multiPaySdkListener );
Metodun değişkenleri:
walletToken : MultiPaySdk’nın start metodu sonrası elde edilen token bilgisi
requestId : Her ödeme isteği için unique olarak yaratılıp gönderilmesi gereken id değeri. Oluşturulması aşamasında unique bir değer olması dışında bir zorunluluk yoktur. Bu değer UUID v4 formatında olmalıdır.
Ödeme işlemi sonucunda, işlemin doğru olup olmadığı validasyonunun yapılabilmesi için bu değer tekrar kullanılacaktır.
terminalReferenceNumber : Bu değer tarafınıza özel olarak iletilecektir.
merchantReferenceNumber : Bu değer tarafınıza özel olarak iletilecektir.
transferReferenceNumber : Her ödeme isteğinde tarafınızca unique olarak yaratılıp gönderilmesi gerekmektedir.
transactionDetails : Ödemesi yapılacak ürün ya da ürünlerin detayları bu parametre altında gönderilecektir. MultiPaySdk içerisindeki TransactionDetail sınıfı kullanılarak oluşturulan objeler bir liste içerisinde değişkene gönderilir. TransactionDetail sınıfının içeriği aşağıdaki gibidir.
-
data class TransactionDetail( @field:SerializedName("amount") val amount: String, @field:SerializedName("productId") val productId: String, @field:SerializedName("referenceNumber") val referenceNumber: String )
sign : Ödeme sürecinin güvenliğinin sağlanması için oluşturulması gereken bir değişkendir.Bu değişkenin entegrasyonu yapan uygulama tarafından yaratılıp gönderilmesi gerekmektedir. Bu değerin nasıl yaratılacağı entegrasyon aşamasında tarafınıza özel olarak iletilecektir.
listener : Servisten dönen cevabı dinleyebilmek için kullanılan callback. MultiPaySdkListener sınıfının bir ojesi yaratılıp kullanılır.
Değişkenlerin detayları için iş akışı sayfasına bakabilirsiniz.
Servis Cevabının Alınması
MultiPaySdkListener objesi üzerinde;
onConfirmPaymentReceived metodu override edilerek ödeme servisinden gelen cevap dinlenir. Burada ödemenin doğruluğunu kontrol etmek için bir validasyon yapmak gerekmektedir. Validasyon başarılı bir şekilde sonuçlanırsa ödemenin tamamlanmış olduğu anlaşılmaktadır.
Not : Validasyon detayları entegrasyon aşamasında tarafınıza özel olarak iletilecektir.
onServiceError metodu override edilerek de oluşabilecek hatalarla ilgili geri dönüş alınabilir.
-
private var multiPaySdkListener = object : MultiPaySdkListener { override fun onConfirmPaymentReceived(sign: String, transferServerRefNo: String) { Log.i(TAG, "sign = $sign transferServerRefNo = $transferServerRefNo") // Validate payment confirm } override fun onServiceError(error: String?, code: Int) { Log.i(TAG, "error = $error code = $code") } }
-
MultiPaySdkListener multiPaySdkListener = new MultiPaySdkListener() { @Override public void onConfirmPaymentReceived(@NotNull String sign, @NotNull String transferServerRefNo) { Log.i(TAG, "sign = " + sign + "\ntransferServerRefNo = " + transferServerRefNo); // Validate payment confirm } @Override public void onServiceError(@org.jetbrains.annotations.Nullable String error, int code) { Log.i(TAG, "error code = " + code + "\nerror = " + error); } @Override public void onUnSelectWalletReceived(@org.jetbrains.annotations.Nullable UnselectWalletResponse unSelectWallet) { } @Override public void onTokenReceived(@NotNull String token) { } @Override public void onMultiPaySdkClosed() { } @Override public void onSingeWalletReceived(@NotNull SingleWalletResponse singleWallet) { } };