Ödeme alma servisi

Ödeme alma servisi

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. (sdk üzerinden eşleştirme yapılan cüzdanın 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
    )

(TransactionDetail içindeki referenceNumber parametresi her ürün için unique olarak oluşturulan bir değer olmalıdır. Bu değer ürün bazlı ödeme geri almak için kullanılacaktır.)

sign : Ödeme sürecinin güvenliğinin sağlanmasına yarayan bir değişkendir. Değişkenin oluşturulması ve gönderilmesi entegrasyonu yapan tarafın sorumluluğundadır. Bu değerin nasıl oluşturulacağı 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;

confirmPaymentReceived 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.

serviceErrorOccurred metodu override edilerek de oluşabilecek hatalarla ilgili geri dönüş alınabilir.

  • private var multiPaySdkListener = object : MultiPaySdkListener {
        override fun confirmPaymentReceived(sign: String, transferServerRefNo: String) {
            Log.i(TAG, "sign = $sign transferServerRefNo = $transferServerRefNo")
            // Validate payment confirm
        }
    
        override fun serviceErrorOccurred(error: String?, code: Int) {
            Log.i(TAG, "error = $error code = $code")
        }
    }
  • MultiPaySdkListener multiPaySdkListener = new MultiPaySdkListener() {
        @Override
        public void confirmPaymentReceived(@NotNull String sign, @NotNull String transferServerRefNo) {
            Log.i(TAG, "sign = " + sign + "\ntransferServerRefNo = " + transferServerRefNo);
            // Validate payment confirm
        }
    
        @Override
        public void serviceErrorOccurred(@org.jetbrains.annotations.Nullable String error, int code) {
            Log.i(TAG, "error code = " + code + "\nerror = " + error);
        }
    
        @Override
        public void walletTokenReceived(@NotNull String walletToken) {
    
        }
    
        @Override
        public void multiPaySdkClosed() {
    
        }
    
        @Override
        public void walletInfoReceived(@NotNull WalletResponse walletResponse) {
    
        }
    
        @Override
        public void unSelectWalletReceived(@org.jetbrains.annotations.Nullable UnselectWalletResponse unSelectWallet) {
    
        }
    
        @Override
        public void rollbackPaymentReceived(@NotNull String sign, @NotNull String rollbackServerReferenceNumber) {
    
        }
    };