@@ -11,7 +11,6 @@ import okhttp3.*
1111import okhttp3.MediaType.Companion.toMediaType
1212import okhttp3.RequestBody.Companion.toRequestBody
1313import java.io.IOException
14- import java.lang.Exception
1514import java.net.HttpURLConnection.HTTP_CONFLICT
1615import java.net.HttpURLConnection.HTTP_FORBIDDEN
1716import java.net.HttpURLConnection.HTTP_NOT_FOUND
@@ -209,6 +208,9 @@ class DefaultCheckoutApi(private val project: Project,
209208 }
210209 }
211210
211+ val originType = paymentCredentials?.type?.originType
212+ ? : getOriginTypeFromPaymentMethodDescriptor(paymentMethod = paymentMethod)
213+
212214 val checkoutProcessRequest = CheckoutProcessRequest (
213215 paymentMethod = paymentMethod,
214216 signedCheckoutInfo = signedCheckoutInfo,
@@ -217,22 +219,24 @@ class DefaultCheckoutApi(private val project: Project,
217219 paymentInformation = when (paymentCredentials?.type) {
218220 PaymentCredentials .Type .EXTERNAL_BILLING -> {
219221 PaymentInformation (
220- originType = paymentCredentials.type?. originType,
222+ originType = originType,
221223 encryptedOrigin = paymentCredentials.encryptedData,
222224 subject = paymentCredentials.additionalData[" subject" ]
223225 )
224226 }
227+
225228 PaymentCredentials .Type .CREDIT_CARD_PSD2 -> {
226229 PaymentInformation (
227- originType = paymentCredentials.type?. originType,
230+ originType = originType,
228231 encryptedOrigin = paymentCredentials.encryptedData,
229232 validUntil = SimpleDateFormat (" yyyy/MM/dd" ).format(Date (paymentCredentials.validTo)),
230233 cardNumber = paymentCredentials.obfuscatedId,
231234 )
232235 }
236+
233237 PaymentCredentials .Type .GIROPAY -> {
234238 PaymentInformation (
235- originType = paymentCredentials.type?. originType,
239+ originType = originType,
236240 encryptedOrigin = paymentCredentials.encryptedData,
237241 deviceID = paymentCredentials.additionalData[" deviceID" ],
238242 deviceName = paymentCredentials.additionalData[" deviceName" ],
@@ -243,7 +247,7 @@ class DefaultCheckoutApi(private val project: Project,
243247 null -> null
244248 else -> {
245249 PaymentInformation (
246- originType = paymentCredentials.type?. originType,
250+ originType = originType,
247251 encryptedOrigin = paymentCredentials.encryptedData
248252 )
249253 }
@@ -320,7 +324,14 @@ class DefaultCheckoutApi(private val project: Project,
320324 })
321325 }
322326
327+ private fun getOriginTypeFromPaymentMethodDescriptor (paymentMethod : PaymentMethod ): String? =
328+ project.paymentMethodDescriptors
329+ .firstOrNull { it.paymentMethod == paymentMethod }
330+ ?.acceptedOriginTypes
331+ ?.get(0 )
332+
323333 companion object {
334+
324335 private val JSON : MediaType = " application/json" .toMediaType()
325336 }
326337}
0 commit comments