From 7ebcd25d92f7c4a8099737a1a45854f4592d2abc Mon Sep 17 00:00:00 2001 From: Fabian Bender Date: Fri, 3 Jan 2025 11:04:34 +0100 Subject: [PATCH 1/2] get origin type from payment method descriptor in case it is not set by default --- .../sdk/checkout/DefaultCheckoutApi.kt | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/io/snabble/sdk/checkout/DefaultCheckoutApi.kt b/core/src/main/java/io/snabble/sdk/checkout/DefaultCheckoutApi.kt index 28bd188a60..1e7e864daf 100644 --- a/core/src/main/java/io/snabble/sdk/checkout/DefaultCheckoutApi.kt +++ b/core/src/main/java/io/snabble/sdk/checkout/DefaultCheckoutApi.kt @@ -11,7 +11,6 @@ import okhttp3.* import okhttp3.MediaType.Companion.toMediaType import okhttp3.RequestBody.Companion.toRequestBody import java.io.IOException -import java.lang.Exception import java.net.HttpURLConnection.HTTP_CONFLICT import java.net.HttpURLConnection.HTTP_FORBIDDEN import java.net.HttpURLConnection.HTTP_NOT_FOUND @@ -209,6 +208,9 @@ class DefaultCheckoutApi(private val project: Project, } } + val originType = paymentCredentials?.type?.originType + ?: getOriginTypeFromPaymentMethodDescriptor(paymentMethod = paymentMethod) + val checkoutProcessRequest = CheckoutProcessRequest( paymentMethod = paymentMethod, signedCheckoutInfo = signedCheckoutInfo, @@ -217,22 +219,24 @@ class DefaultCheckoutApi(private val project: Project, paymentInformation = when (paymentCredentials?.type) { PaymentCredentials.Type.EXTERNAL_BILLING -> { PaymentInformation( - originType = paymentCredentials.type?.originType, + originType = originType, encryptedOrigin = paymentCredentials.encryptedData, subject = paymentCredentials.additionalData["subject"] ) } + PaymentCredentials.Type.CREDIT_CARD_PSD2 -> { PaymentInformation( - originType = paymentCredentials.type?.originType, + originType = originType, encryptedOrigin = paymentCredentials.encryptedData, validUntil = SimpleDateFormat("yyyy/MM/dd").format(Date(paymentCredentials.validTo)), cardNumber = paymentCredentials.obfuscatedId, ) } + PaymentCredentials.Type.GIROPAY -> { PaymentInformation( - originType = paymentCredentials.type?.originType, + originType = originType, encryptedOrigin = paymentCredentials.encryptedData, deviceID = paymentCredentials.additionalData["deviceID"], deviceName = paymentCredentials.additionalData["deviceName"], @@ -243,7 +247,7 @@ class DefaultCheckoutApi(private val project: Project, null -> null else -> { PaymentInformation( - originType = paymentCredentials.type?.originType, + originType = originType, encryptedOrigin = paymentCredentials.encryptedData ) } @@ -320,7 +324,14 @@ class DefaultCheckoutApi(private val project: Project, }) } + private fun getOriginTypeFromPaymentMethodDescriptor(paymentMethod: PaymentMethod): String? = + project.paymentMethodDescriptors + .firstOrNull { it.paymentMethod == paymentMethod } + ?.acceptedOriginTypes + ?.get(0) + companion object { + private val JSON: MediaType = "application/json".toMediaType() } } From c0b6d21fe2f16facf77e757bf6fdc489f9fb9465 Mon Sep 17 00:00:00 2001 From: Fabian Bender Date: Fri, 3 Jan 2025 11:05:48 +0100 Subject: [PATCH 2/2] add CHANGELOG.md entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 997fbb2919..4a6fc8a390 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. ## UNRELEASED ### Added +* core: Receive origin type from `PaymentMethodDesricptor` in case it is not set by default ### Changed ### Removed ### Fixed