@klarna/react-native-klarna-network-payment 0.0.1 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +143 -29
- package/android/build.gradle +95 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaNetworkPaymentButtonViewSpec.kt +22 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaNetworkPaymentModule.kt +46 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaNetworkPaymentModuleImpl.kt +163 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaNetworkPaymentPackage.kt +30 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentButtonPressEvent.kt +19 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentButtonViewManager.kt +276 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentPresentationMapper.kt +132 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentRequestMapper.kt +328 -0
- package/android/src/main/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentResponseMapper.kt +145 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaNetworkPaymentModuleImplTest.kt +361 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentButtonViewManagerTest.kt +155 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentPresentationMapperTest.kt +447 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentRequestMapperTest.kt +489 -0
- package/android/src/test/java/com/klarna/mobile/sdk/reactnative/klarnanetwork/payment/KlarnaPaymentResponseMapperTest.kt +456 -0
- package/ios/Sources/KlarnaNetworkPayment.h +5 -0
- package/ios/Sources/KlarnaNetworkPayment.mm +110 -0
- package/ios/Sources/KlarnaNetworkPaymentModuleImpl.swift +196 -0
- package/ios/Sources/KlarnaPaymentButtonComponentView.mm +147 -0
- package/ios/Sources/KlarnaPaymentButtonViewImpl.swift +78 -0
- package/ios/Sources/KlarnaPaymentPresentationMapping.swift +102 -0
- package/ios/Sources/KlarnaPaymentRequestDataMapping.swift +232 -0
- package/ios/Sources/KlarnaPaymentRequestMapping.swift +103 -0
- package/ios/Tests/KlarnaNetworkPaymentModuleImplTests.swift +143 -0
- package/ios/Tests/KlarnaPaymentButtonViewImplTests.swift +122 -0
- package/ios/Tests/KlarnaPaymentPresentationMappingTests.swift +335 -0
- package/lib/commonjs/KlarnaNetworkPayment.js +6 -0
- package/lib/commonjs/KlarnaNetworkPayment.js.map +1 -0
- package/lib/commonjs/KlarnaNetworkPaymentImpl.js +44 -0
- package/lib/commonjs/KlarnaNetworkPaymentImpl.js.map +1 -0
- package/lib/commonjs/KlarnaNetworkPaymentMapper.js +164 -0
- package/lib/commonjs/KlarnaNetworkPaymentMapper.js.map +1 -0
- package/lib/commonjs/KlarnaPaymentButton.js +43 -0
- package/lib/commonjs/KlarnaPaymentButton.js.map +1 -0
- package/lib/commonjs/Specs/KlarnaPaymentButtonNativeComponent.js +10 -0
- package/lib/commonjs/Specs/KlarnaPaymentButtonNativeComponent.js.map +1 -0
- package/lib/commonjs/Specs/NativeKlarnaNetworkPayment.js +13 -0
- package/lib/commonjs/Specs/NativeKlarnaNetworkPayment.js.map +1 -0
- package/lib/commonjs/index.js +51 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/types/KlarnaPaymentRequest.js +6 -0
- package/lib/commonjs/types/KlarnaPaymentRequest.js.map +1 -0
- package/lib/commonjs/types/KlarnaPaymentRequestState.js +2 -0
- package/lib/commonjs/types/KlarnaPaymentRequestState.js.map +1 -0
- package/lib/commonjs/types/KlarnaPaymentRequestStateContext.js +6 -0
- package/lib/commonjs/types/KlarnaPaymentRequestStateContext.js.map +1 -0
- package/lib/commonjs/types/KlarnaPaymentRequestStateReason.js +2 -0
- package/lib/commonjs/types/KlarnaPaymentRequestStateReason.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaBillingPlan.js +6 -0
- package/lib/commonjs/types/models/KlarnaBillingPlan.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaCollectCustomerProfileType.js +2 -0
- package/lib/commonjs/types/models/KlarnaCollectCustomerProfileType.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaCustomer.js +6 -0
- package/lib/commonjs/types/models/KlarnaCustomer.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaFreeTrial.js +2 -0
- package/lib/commonjs/types/models/KlarnaFreeTrial.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaInterval.js +2 -0
- package/lib/commonjs/types/models/KlarnaInterval.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaLineItem.js +2 -0
- package/lib/commonjs/types/models/KlarnaLineItem.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaOndemandService.js +6 -0
- package/lib/commonjs/types/models/KlarnaOndemandService.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaPartnerCustomer.js +6 -0
- package/lib/commonjs/types/models/KlarnaPartnerCustomer.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaPaymentPresentation.js +6 -0
- package/lib/commonjs/types/models/KlarnaPaymentPresentation.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaPaymentRequestData.js +6 -0
- package/lib/commonjs/types/models/KlarnaPaymentRequestData.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaRequestCustomerToken.js +6 -0
- package/lib/commonjs/types/models/KlarnaRequestCustomerToken.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaRequestCustomerTokenScope.js +2 -0
- package/lib/commonjs/types/models/KlarnaRequestCustomerTokenScope.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShipping.js +6 -0
- package/lib/commonjs/types/models/KlarnaShipping.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShippingConfig.js +6 -0
- package/lib/commonjs/types/models/KlarnaShippingConfig.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShippingConfigMode.js +2 -0
- package/lib/commonjs/types/models/KlarnaShippingConfigMode.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShippingOption.js +6 -0
- package/lib/commonjs/types/models/KlarnaShippingOption.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShippingRecipient.js +2 -0
- package/lib/commonjs/types/models/KlarnaShippingRecipient.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShippingType.js +2 -0
- package/lib/commonjs/types/models/KlarnaShippingType.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaShippingTypeAttribute.js +2 -0
- package/lib/commonjs/types/models/KlarnaShippingTypeAttribute.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaSubscription.js +6 -0
- package/lib/commonjs/types/models/KlarnaSubscription.js.map +1 -0
- package/lib/commonjs/types/models/KlarnaSupplementaryPurchaseData.js +6 -0
- package/lib/commonjs/types/models/KlarnaSupplementaryPurchaseData.js.map +1 -0
- package/lib/commonjs/types/models/index.js +2 -0
- package/lib/commonjs/types/models/index.js.map +1 -0
- package/lib/module/KlarnaNetworkPayment.js +2 -0
- package/lib/module/KlarnaNetworkPayment.js.map +1 -0
- package/lib/module/KlarnaNetworkPaymentImpl.js +36 -0
- package/lib/module/KlarnaNetworkPaymentImpl.js.map +1 -0
- package/lib/module/KlarnaNetworkPaymentMapper.js +146 -0
- package/lib/module/KlarnaNetworkPaymentMapper.js.map +1 -0
- package/lib/module/KlarnaPaymentButton.js +37 -0
- package/lib/module/KlarnaPaymentButton.js.map +1 -0
- package/lib/module/Specs/KlarnaPaymentButtonNativeComponent.js +3 -0
- package/lib/module/Specs/KlarnaPaymentButtonNativeComponent.js.map +1 -0
- package/lib/module/Specs/NativeKlarnaNetworkPayment.js +9 -0
- package/lib/module/Specs/NativeKlarnaNetworkPayment.js.map +1 -0
- package/lib/module/index.js +40 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/types/KlarnaPaymentRequest.js +2 -0
- package/lib/module/types/KlarnaPaymentRequest.js.map +1 -0
- package/lib/module/types/KlarnaPaymentRequestState.js +2 -0
- package/lib/module/types/KlarnaPaymentRequestState.js.map +1 -0
- package/lib/module/types/KlarnaPaymentRequestStateContext.js +2 -0
- package/lib/module/types/KlarnaPaymentRequestStateContext.js.map +1 -0
- package/lib/module/types/KlarnaPaymentRequestStateReason.js +2 -0
- package/lib/module/types/KlarnaPaymentRequestStateReason.js.map +1 -0
- package/lib/module/types/models/KlarnaBillingPlan.js +2 -0
- package/lib/module/types/models/KlarnaBillingPlan.js.map +1 -0
- package/lib/module/types/models/KlarnaCollectCustomerProfileType.js +2 -0
- package/lib/module/types/models/KlarnaCollectCustomerProfileType.js.map +1 -0
- package/lib/module/types/models/KlarnaCustomer.js +2 -0
- package/lib/module/types/models/KlarnaCustomer.js.map +1 -0
- package/lib/module/types/models/KlarnaFreeTrial.js +2 -0
- package/lib/module/types/models/KlarnaFreeTrial.js.map +1 -0
- package/lib/module/types/models/KlarnaInterval.js +2 -0
- package/lib/module/types/models/KlarnaInterval.js.map +1 -0
- package/lib/module/types/models/KlarnaLineItem.js +2 -0
- package/lib/module/types/models/KlarnaLineItem.js.map +1 -0
- package/lib/module/types/models/KlarnaOndemandService.js +2 -0
- package/lib/module/types/models/KlarnaOndemandService.js.map +1 -0
- package/lib/module/types/models/KlarnaPartnerCustomer.js +2 -0
- package/lib/module/types/models/KlarnaPartnerCustomer.js.map +1 -0
- package/lib/module/types/models/KlarnaPaymentPresentation.js +2 -0
- package/lib/module/types/models/KlarnaPaymentPresentation.js.map +1 -0
- package/lib/module/types/models/KlarnaPaymentRequestData.js +2 -0
- package/lib/module/types/models/KlarnaPaymentRequestData.js.map +1 -0
- package/lib/module/types/models/KlarnaRequestCustomerToken.js +2 -0
- package/lib/module/types/models/KlarnaRequestCustomerToken.js.map +1 -0
- package/lib/module/types/models/KlarnaRequestCustomerTokenScope.js +2 -0
- package/lib/module/types/models/KlarnaRequestCustomerTokenScope.js.map +1 -0
- package/lib/module/types/models/KlarnaShipping.js +2 -0
- package/lib/module/types/models/KlarnaShipping.js.map +1 -0
- package/lib/module/types/models/KlarnaShippingConfig.js +2 -0
- package/lib/module/types/models/KlarnaShippingConfig.js.map +1 -0
- package/lib/module/types/models/KlarnaShippingConfigMode.js +2 -0
- package/lib/module/types/models/KlarnaShippingConfigMode.js.map +1 -0
- package/lib/module/types/models/KlarnaShippingOption.js +2 -0
- package/lib/module/types/models/KlarnaShippingOption.js.map +1 -0
- package/lib/module/types/models/KlarnaShippingRecipient.js +2 -0
- package/lib/module/types/models/KlarnaShippingRecipient.js.map +1 -0
- package/lib/module/types/models/KlarnaShippingType.js +2 -0
- package/lib/module/types/models/KlarnaShippingType.js.map +1 -0
- package/lib/module/types/models/KlarnaShippingTypeAttribute.js +2 -0
- package/lib/module/types/models/KlarnaShippingTypeAttribute.js.map +1 -0
- package/lib/module/types/models/KlarnaSubscription.js +2 -0
- package/lib/module/types/models/KlarnaSubscription.js.map +1 -0
- package/lib/module/types/models/KlarnaSupplementaryPurchaseData.js +2 -0
- package/lib/module/types/models/KlarnaSupplementaryPurchaseData.js.map +1 -0
- package/lib/module/types/models/index.js +2 -0
- package/lib/module/types/models/index.js.map +1 -0
- package/lib/typescript/KlarnaNetworkPayment.d.ts +22 -0
- package/lib/typescript/KlarnaNetworkPayment.d.ts.map +1 -0
- package/lib/typescript/KlarnaNetworkPaymentImpl.d.ts +12 -0
- package/lib/typescript/KlarnaNetworkPaymentImpl.d.ts.map +1 -0
- package/lib/typescript/KlarnaNetworkPaymentMapper.d.ts +273 -0
- package/lib/typescript/KlarnaNetworkPaymentMapper.d.ts.map +1 -0
- package/lib/typescript/KlarnaPaymentButton.d.ts +51 -0
- package/lib/typescript/KlarnaPaymentButton.d.ts.map +1 -0
- package/lib/typescript/Specs/KlarnaPaymentButtonNativeComponent.d.ts +16 -0
- package/lib/typescript/Specs/KlarnaPaymentButtonNativeComponent.d.ts.map +1 -0
- package/lib/typescript/Specs/NativeKlarnaNetworkPayment.d.ts +13 -0
- package/lib/typescript/Specs/NativeKlarnaNetworkPayment.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +14 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/types/KlarnaPaymentRequest.d.ts +19 -0
- package/lib/typescript/types/KlarnaPaymentRequest.d.ts.map +1 -0
- package/lib/typescript/types/KlarnaPaymentRequestState.d.ts +15 -0
- package/lib/typescript/types/KlarnaPaymentRequestState.d.ts.map +1 -0
- package/lib/typescript/types/KlarnaPaymentRequestStateContext.d.ts +12 -0
- package/lib/typescript/types/KlarnaPaymentRequestStateContext.d.ts.map +1 -0
- package/lib/typescript/types/KlarnaPaymentRequestStateReason.d.ts +13 -0
- package/lib/typescript/types/KlarnaPaymentRequestStateReason.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaBillingPlan.d.ts +17 -0
- package/lib/typescript/types/models/KlarnaBillingPlan.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaCollectCustomerProfileType.d.ts +19 -0
- package/lib/typescript/types/models/KlarnaCollectCustomerProfileType.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaCustomer.d.ts +11 -0
- package/lib/typescript/types/models/KlarnaCustomer.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaFreeTrial.d.ts +7 -0
- package/lib/typescript/types/models/KlarnaFreeTrial.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaInterval.d.ts +11 -0
- package/lib/typescript/types/models/KlarnaInterval.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaLineItem.d.ts +28 -0
- package/lib/typescript/types/models/KlarnaLineItem.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaOndemandService.d.ts +17 -0
- package/lib/typescript/types/models/KlarnaOndemandService.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaPartnerCustomer.d.ts +15 -0
- package/lib/typescript/types/models/KlarnaPartnerCustomer.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaPaymentPresentation.d.ts +119 -0
- package/lib/typescript/types/models/KlarnaPaymentPresentation.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaPaymentRequestData.d.ts +24 -0
- package/lib/typescript/types/models/KlarnaPaymentRequestData.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaRequestCustomerToken.d.ts +9 -0
- package/lib/typescript/types/models/KlarnaRequestCustomerToken.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaRequestCustomerTokenScope.d.ts +9 -0
- package/lib/typescript/types/models/KlarnaRequestCustomerTokenScope.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShipping.d.ts +15 -0
- package/lib/typescript/types/models/KlarnaShipping.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShippingConfig.d.ts +9 -0
- package/lib/typescript/types/models/KlarnaShippingConfig.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShippingConfigMode.d.ts +5 -0
- package/lib/typescript/types/models/KlarnaShippingConfigMode.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShippingOption.d.ts +12 -0
- package/lib/typescript/types/models/KlarnaShippingOption.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShippingRecipient.d.ts +14 -0
- package/lib/typescript/types/models/KlarnaShippingRecipient.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShippingType.d.ts +25 -0
- package/lib/typescript/types/models/KlarnaShippingType.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaShippingTypeAttribute.d.ts +21 -0
- package/lib/typescript/types/models/KlarnaShippingTypeAttribute.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaSubscription.d.ts +14 -0
- package/lib/typescript/types/models/KlarnaSubscription.d.ts.map +1 -0
- package/lib/typescript/types/models/KlarnaSupplementaryPurchaseData.d.ts +21 -0
- package/lib/typescript/types/models/KlarnaSupplementaryPurchaseData.d.ts.map +1 -0
- package/lib/typescript/types/models/index.d.ts +22 -0
- package/lib/typescript/types/models/index.d.ts.map +1 -0
- package/package.json +120 -6
- package/react-native-klarna-network-payment.podspec +29 -0
- package/src/KlarnaNetworkPayment.ts +30 -0
- package/src/KlarnaNetworkPaymentImpl.ts +79 -0
- package/src/KlarnaNetworkPaymentMapper.ts +204 -0
- package/src/KlarnaPaymentButton.tsx +80 -0
- package/src/Specs/KlarnaPaymentButtonNativeComponent.ts +22 -0
- package/src/Specs/NativeKlarnaNetworkPayment.ts +17 -0
- package/src/index.tsx +63 -0
- package/src/types/KlarnaPaymentRequest.ts +19 -0
- package/src/types/KlarnaPaymentRequestState.ts +14 -0
- package/src/types/KlarnaPaymentRequestStateContext.ts +12 -0
- package/src/types/KlarnaPaymentRequestStateReason.ts +12 -0
- package/src/types/models/KlarnaBillingPlan.ts +17 -0
- package/src/types/models/KlarnaCollectCustomerProfileType.ts +18 -0
- package/src/types/models/KlarnaCustomer.ts +11 -0
- package/src/types/models/KlarnaFreeTrial.ts +6 -0
- package/src/types/models/KlarnaInterval.ts +10 -0
- package/src/types/models/KlarnaLineItem.ts +27 -0
- package/src/types/models/KlarnaOndemandService.ts +17 -0
- package/src/types/models/KlarnaPartnerCustomer.ts +15 -0
- package/src/types/models/KlarnaPaymentPresentation.ts +135 -0
- package/src/types/models/KlarnaPaymentRequestData.ts +24 -0
- package/src/types/models/KlarnaRequestCustomerToken.ts +9 -0
- package/src/types/models/KlarnaRequestCustomerTokenScope.ts +8 -0
- package/src/types/models/KlarnaShipping.ts +15 -0
- package/src/types/models/KlarnaShippingConfig.ts +9 -0
- package/src/types/models/KlarnaShippingConfigMode.ts +4 -0
- package/src/types/models/KlarnaShippingOption.ts +12 -0
- package/src/types/models/KlarnaShippingRecipient.ts +13 -0
- package/src/types/models/KlarnaShippingType.ts +24 -0
- package/src/types/models/KlarnaShippingTypeAttribute.ts +20 -0
- package/src/types/models/KlarnaSubscription.ts +14 -0
- package/src/types/models/KlarnaSupplementaryPurchaseData.ts +21 -0
- package/src/types/models/index.ts +35 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
package com.klarna.mobile.sdk.reactnative.klarnanetwork.payment
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReadableArray
|
|
4
|
+
import com.facebook.react.bridge.ReadableMap
|
|
5
|
+
import com.klarna.mobile.sdk.klarna.network.core.api.models.KlarnaAddress
|
|
6
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaBillingPlan
|
|
7
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaCollectCustomerProfileType
|
|
8
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaFreeTrial
|
|
9
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaInterval
|
|
10
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaLineItem
|
|
11
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaOndemandService
|
|
12
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaPartnerCustomer
|
|
13
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaPaymentRequestData
|
|
14
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaRequestCustomerToken
|
|
15
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaRequestCustomerTokenScope
|
|
16
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaShipping
|
|
17
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaShippingConfig
|
|
18
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaShippingConfigMode
|
|
19
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaShippingOption
|
|
20
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaShippingRecipient
|
|
21
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaShippingType
|
|
22
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaShippingTypeAttribute
|
|
23
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaSubscription
|
|
24
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaSupplementaryPurchaseData
|
|
25
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.presentation.models.KlarnaPaymentPresentationData
|
|
26
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.presentation.models.KlarnaPaymentPresentationIntent
|
|
27
|
+
import java.text.SimpleDateFormat
|
|
28
|
+
import java.util.Locale
|
|
29
|
+
import java.util.TimeZone
|
|
30
|
+
|
|
31
|
+
internal object KlarnaPaymentRequestMapper {
|
|
32
|
+
|
|
33
|
+
// KlarnaPaymentRequestData
|
|
34
|
+
private const val AMOUNT = "amount"
|
|
35
|
+
private const val CURRENCY = "currency"
|
|
36
|
+
private const val PAYMENT_OPTION_ID = "paymentOptionId"
|
|
37
|
+
private const val PAYMENT_REQUEST_REFERENCE = "paymentRequestReference"
|
|
38
|
+
private const val REQUEST_CUSTOMER_TOKEN = "requestCustomerToken"
|
|
39
|
+
private const val SHIPPING_CONFIG = "shippingConfig"
|
|
40
|
+
private const val COLLECT_CUSTOMER_PROFILE = "collectCustomerProfile"
|
|
41
|
+
private const val SUPPLEMENTARY_PURCHASE_DATA = "supplementaryPurchaseData"
|
|
42
|
+
|
|
43
|
+
// KlarnaPaymentPresentationData
|
|
44
|
+
private const val INTENT = "intent"
|
|
45
|
+
private const val PAYMENT_PROGRAM_ENABLEMENT_CODES = "paymentProgramEnablementCodes"
|
|
46
|
+
private const val SUBSCRIPTION_BILLING_INTERVAL = "subscriptionBillingInterval"
|
|
47
|
+
private const val SUBSCRIPTION_BILLING_INTERVAL_FREQUENCY = "subscriptionBillingIntervalFrequency"
|
|
48
|
+
|
|
49
|
+
// KlarnaRequestCustomerToken
|
|
50
|
+
private const val SCOPES = "scopes"
|
|
51
|
+
private const val CUSTOMER_TOKEN_REFERENCE = "customerTokenReference"
|
|
52
|
+
|
|
53
|
+
// KlarnaShippingConfig
|
|
54
|
+
private const val MODE = "mode"
|
|
55
|
+
private const val SUPPORTED_COUNTRIES = "supportedCountries"
|
|
56
|
+
|
|
57
|
+
// KlarnaSupplementaryPurchaseData
|
|
58
|
+
private const val CUSTOMER = "customer"
|
|
59
|
+
private const val LINE_ITEMS = "lineItems"
|
|
60
|
+
private const val PURCHASE_REFERENCE = "purchaseReference"
|
|
61
|
+
private const val SHIPPING = "shipping"
|
|
62
|
+
private const val ONDEMAND_SERVICE = "ondemandService"
|
|
63
|
+
private const val SUBSCRIPTIONS = "subscriptions"
|
|
64
|
+
|
|
65
|
+
// KlarnaPartnerCustomer / KlarnaShippingRecipient (shared keys)
|
|
66
|
+
private const val ADDRESS = "address"
|
|
67
|
+
private const val EMAIL = "email"
|
|
68
|
+
private const val FAMILY_NAME = "familyName"
|
|
69
|
+
private const val GIVEN_NAME = "givenName"
|
|
70
|
+
private const val PHONE = "phone"
|
|
71
|
+
|
|
72
|
+
// KlarnaAddress
|
|
73
|
+
private const val CITY = "city"
|
|
74
|
+
private const val COUNTRY = "country"
|
|
75
|
+
private const val POSTAL_CODE = "postalCode"
|
|
76
|
+
private const val REGION = "region"
|
|
77
|
+
private const val STREET_ADDRESS = "streetAddress"
|
|
78
|
+
private const val STREET_ADDRESS2 = "streetAddress2"
|
|
79
|
+
|
|
80
|
+
// KlarnaLineItem
|
|
81
|
+
private const val IMAGE_URL = "imageUrl"
|
|
82
|
+
private const val LINE_ITEM_REFERENCE = "lineItemReference"
|
|
83
|
+
private const val NAME = "name"
|
|
84
|
+
private const val PRODUCT_IDENTIFIER = "productIdentifier"
|
|
85
|
+
private const val PRODUCT_URL = "productUrl"
|
|
86
|
+
private const val QUANTITY = "quantity"
|
|
87
|
+
private const val SHIPPING_REFERENCE = "shippingReference"
|
|
88
|
+
private const val SUBSCRIPTION_REFERENCE = "subscriptionReference"
|
|
89
|
+
private const val TOTAL_AMOUNT = "totalAmount"
|
|
90
|
+
private const val TOTAL_TAX_AMOUNT = "totalTaxAmount"
|
|
91
|
+
private const val UNIT_PRICE = "unitPrice"
|
|
92
|
+
|
|
93
|
+
// KlarnaShipping
|
|
94
|
+
private const val RECIPIENT = "recipient"
|
|
95
|
+
private const val SHIPPING_OPTION = "shippingOption"
|
|
96
|
+
|
|
97
|
+
// KlarnaShippingRecipient
|
|
98
|
+
private const val ATTENTION = "attention"
|
|
99
|
+
|
|
100
|
+
// KlarnaShippingOption
|
|
101
|
+
private const val SHIPPING_TYPE = "shippingType"
|
|
102
|
+
private const val SHIPPING_TYPE_ATTRIBUTES = "shippingTypeAttributes"
|
|
103
|
+
private const val SHIPPING_CARRIER = "shippingCarrier"
|
|
104
|
+
|
|
105
|
+
// KlarnaOndemandService
|
|
106
|
+
private const val AVERAGE_AMOUNT = "averageAmount"
|
|
107
|
+
private const val MINIMUM_AMOUNT = "minimumAmount"
|
|
108
|
+
private const val MAXIMUM_AMOUNT = "maximumAmount"
|
|
109
|
+
private const val PURCHASE_INTERVAL = "purchaseInterval"
|
|
110
|
+
private const val PURCHASE_INTERVAL_FREQUENCY = "purchaseIntervalFrequency"
|
|
111
|
+
|
|
112
|
+
// KlarnaSubscription
|
|
113
|
+
private const val FREE_TRIAL = "freeTrial"
|
|
114
|
+
private const val BILLING_PLANS = "billingPlans"
|
|
115
|
+
|
|
116
|
+
// KlarnaBillingPlan
|
|
117
|
+
private const val FROM = "from"
|
|
118
|
+
private const val INTERVAL = "interval"
|
|
119
|
+
private const val INTERVAL_FREQUENCY = "intervalFrequency"
|
|
120
|
+
private const val BILLING_AMOUNT = "billingAmount"
|
|
121
|
+
|
|
122
|
+
fun buildPaymentRequestData(data: ReadableMap): KlarnaPaymentRequestData {
|
|
123
|
+
require(data.hasKey(AMOUNT)) { "Amount is required" }
|
|
124
|
+
val currency = data.getString(CURRENCY)
|
|
125
|
+
require(!currency.isNullOrEmpty()) { "Currency is required" }
|
|
126
|
+
return KlarnaPaymentRequestData(
|
|
127
|
+
amount = data.getDouble(AMOUNT).toLong(),
|
|
128
|
+
currency = currency,
|
|
129
|
+
paymentOptionId = data.getString(PAYMENT_OPTION_ID),
|
|
130
|
+
paymentRequestReference = data.getString(PAYMENT_REQUEST_REFERENCE),
|
|
131
|
+
requestCustomerToken = data.getMap(REQUEST_CUSTOMER_TOKEN)?.let { buildRequestCustomerToken(it) },
|
|
132
|
+
shippingConfig = data.getMap(SHIPPING_CONFIG)?.let { buildShippingConfig(it) },
|
|
133
|
+
collectCustomerProfile = data.getArray(COLLECT_CUSTOMER_PROFILE)?.let { buildCollectCustomerProfile(it) },
|
|
134
|
+
supplementaryPurchaseData = data.getMap(SUPPLEMENTARY_PURCHASE_DATA)?.let { buildSupplementaryPurchaseData(it) },
|
|
135
|
+
)
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
fun buildPresentationData(map: ReadableMap): KlarnaPaymentPresentationData {
|
|
139
|
+
return KlarnaPaymentPresentationData(
|
|
140
|
+
amount = map.getDouble(AMOUNT).toLong(),
|
|
141
|
+
currency = map.getString(CURRENCY) ?: "",
|
|
142
|
+
intent = map.getString(INTENT)?.let { raw ->
|
|
143
|
+
KlarnaPaymentPresentationIntent.entries.find { it.toString() == raw }
|
|
144
|
+
},
|
|
145
|
+
paymentProgramEnablementCodes = map.getArray(PAYMENT_PROGRAM_ENABLEMENT_CODES)?.let { arr ->
|
|
146
|
+
(0 until arr.size()).mapNotNull { arr.getString(it) }
|
|
147
|
+
},
|
|
148
|
+
subscriptionBillingInterval = map.getString(SUBSCRIPTION_BILLING_INTERVAL)?.let { raw ->
|
|
149
|
+
KlarnaInterval.entries.find { it.toString() == raw }
|
|
150
|
+
},
|
|
151
|
+
subscriptionBillingIntervalFrequency = if (map.hasKey(SUBSCRIPTION_BILLING_INTERVAL_FREQUENCY) &&
|
|
152
|
+
!map.isNull(SUBSCRIPTION_BILLING_INTERVAL_FREQUENCY))
|
|
153
|
+
map.getInt(SUBSCRIPTION_BILLING_INTERVAL_FREQUENCY) else null,
|
|
154
|
+
)
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
private fun buildRequestCustomerToken(map: ReadableMap): KlarnaRequestCustomerToken {
|
|
158
|
+
val scopes = map.getArray(SCOPES)?.let { arr ->
|
|
159
|
+
(0 until arr.size()).mapNotNull { i ->
|
|
160
|
+
KlarnaRequestCustomerTokenScope.entries.find { it.toString() == arr.getString(i) }
|
|
161
|
+
}
|
|
162
|
+
} ?: emptyList()
|
|
163
|
+
return KlarnaRequestCustomerToken(
|
|
164
|
+
scopes = scopes,
|
|
165
|
+
customerTokenReference = map.getString(CUSTOMER_TOKEN_REFERENCE),
|
|
166
|
+
)
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
private fun buildShippingConfig(map: ReadableMap): KlarnaShippingConfig {
|
|
170
|
+
val mode = KlarnaShippingConfigMode.entries.find { it.toString() == map.getString(MODE) }
|
|
171
|
+
?: KlarnaShippingConfigMode.EDITABLE
|
|
172
|
+
val supportedCountries = map.getArray(SUPPORTED_COUNTRIES)?.let { arr ->
|
|
173
|
+
(0 until arr.size()).map { arr.getString(it) ?: "" }
|
|
174
|
+
}
|
|
175
|
+
return KlarnaShippingConfig(supportedCountries = supportedCountries, mode = mode)
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
private fun buildCollectCustomerProfile(arr: ReadableArray): List<KlarnaCollectCustomerProfileType> {
|
|
179
|
+
return (0 until arr.size()).mapNotNull { i ->
|
|
180
|
+
KlarnaCollectCustomerProfileType.entries.find { it.toString() == arr.getString(i) }
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
private fun buildSupplementaryPurchaseData(map: ReadableMap): KlarnaSupplementaryPurchaseData {
|
|
185
|
+
return KlarnaSupplementaryPurchaseData(
|
|
186
|
+
customer = map.getMap(CUSTOMER)?.let { buildPartnerCustomer(it) },
|
|
187
|
+
lineItems = map.getArray(LINE_ITEMS)?.let { arr ->
|
|
188
|
+
(0 until arr.size()).mapNotNull { i -> arr.getMap(i)?.let { buildLineItem(it) } }
|
|
189
|
+
},
|
|
190
|
+
purchaseReference = map.getString(PURCHASE_REFERENCE),
|
|
191
|
+
shipping = map.getArray(SHIPPING)?.let { arr ->
|
|
192
|
+
(0 until arr.size()).mapNotNull { i -> arr.getMap(i)?.let { buildShipping(it) } }
|
|
193
|
+
},
|
|
194
|
+
ondemandService = map.getMap(ONDEMAND_SERVICE)?.let { buildOndemandService(it) },
|
|
195
|
+
subscriptions = map.getArray(SUBSCRIPTIONS)?.let { arr ->
|
|
196
|
+
(0 until arr.size()).mapNotNull { i -> arr.getMap(i)?.let { buildSubscription(it) } }
|
|
197
|
+
},
|
|
198
|
+
)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
private fun buildPartnerCustomer(map: ReadableMap): KlarnaPartnerCustomer {
|
|
202
|
+
return KlarnaPartnerCustomer(
|
|
203
|
+
address = map.getMap(ADDRESS)?.let { buildAddress(it) },
|
|
204
|
+
email = map.getString(EMAIL),
|
|
205
|
+
familyName = map.getString(FAMILY_NAME),
|
|
206
|
+
givenName = map.getString(GIVEN_NAME),
|
|
207
|
+
phone = map.getString(PHONE),
|
|
208
|
+
)
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
private fun buildAddress(map: ReadableMap): KlarnaAddress {
|
|
212
|
+
return KlarnaAddress(
|
|
213
|
+
city = map.getString(CITY),
|
|
214
|
+
country = map.getString(COUNTRY),
|
|
215
|
+
postalCode = map.getString(POSTAL_CODE),
|
|
216
|
+
region = map.getString(REGION),
|
|
217
|
+
streetAddress = map.getString(STREET_ADDRESS),
|
|
218
|
+
streetAddress2 = map.getString(STREET_ADDRESS2),
|
|
219
|
+
)
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
private fun buildLineItem(map: ReadableMap): KlarnaLineItem? {
|
|
223
|
+
val name = map.getString(NAME) ?: return null
|
|
224
|
+
if (!map.hasKey(TOTAL_AMOUNT) || map.isNull(TOTAL_AMOUNT)) return null
|
|
225
|
+
if (!map.hasKey(QUANTITY) || map.isNull(QUANTITY)) return null
|
|
226
|
+
return KlarnaLineItem(
|
|
227
|
+
currency = map.getString(CURRENCY),
|
|
228
|
+
imageUrl = map.getString(IMAGE_URL),
|
|
229
|
+
lineItemReference = map.getString(LINE_ITEM_REFERENCE),
|
|
230
|
+
name = name,
|
|
231
|
+
productIdentifier = map.getString(PRODUCT_IDENTIFIER),
|
|
232
|
+
productUrl = map.getString(PRODUCT_URL),
|
|
233
|
+
quantity = map.getInt(QUANTITY),
|
|
234
|
+
shippingReference = map.getString(SHIPPING_REFERENCE),
|
|
235
|
+
subscriptionReference = map.getString(SUBSCRIPTION_REFERENCE),
|
|
236
|
+
totalAmount = map.getDouble(TOTAL_AMOUNT).toLong(),
|
|
237
|
+
totalTaxAmount = if (map.hasKey(TOTAL_TAX_AMOUNT) && !map.isNull(TOTAL_TAX_AMOUNT)) map.getDouble(TOTAL_TAX_AMOUNT).toLong() else null,
|
|
238
|
+
unitPrice = if (map.hasKey(UNIT_PRICE) && !map.isNull(UNIT_PRICE)) map.getDouble(UNIT_PRICE).toLong() else null,
|
|
239
|
+
)
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
private fun buildShipping(map: ReadableMap): KlarnaShipping {
|
|
243
|
+
return KlarnaShipping(
|
|
244
|
+
address = map.getMap(ADDRESS)?.let { buildAddress(it) },
|
|
245
|
+
recipient = map.getMap(RECIPIENT)?.let { buildShippingRecipient(it) },
|
|
246
|
+
shippingOption = map.getMap(SHIPPING_OPTION)?.let { buildShippingOption(it) },
|
|
247
|
+
shippingReference = map.getString(SHIPPING_REFERENCE),
|
|
248
|
+
)
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
private fun buildShippingRecipient(map: ReadableMap): KlarnaShippingRecipient {
|
|
252
|
+
return KlarnaShippingRecipient(
|
|
253
|
+
attention = map.getString(ATTENTION),
|
|
254
|
+
email = map.getString(EMAIL),
|
|
255
|
+
familyName = map.getString(FAMILY_NAME) ?: "",
|
|
256
|
+
givenName = map.getString(GIVEN_NAME) ?: "",
|
|
257
|
+
phone = map.getString(PHONE),
|
|
258
|
+
)
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
private fun buildShippingOption(map: ReadableMap): KlarnaShippingOption {
|
|
262
|
+
val shippingType = KlarnaShippingType.entries.find { it.toString() == map.getString(SHIPPING_TYPE) }
|
|
263
|
+
?: KlarnaShippingType.TO_DOOR
|
|
264
|
+
val attrs = map.getArray(SHIPPING_TYPE_ATTRIBUTES)?.let { arr ->
|
|
265
|
+
(0 until arr.size()).mapNotNull { i ->
|
|
266
|
+
KlarnaShippingTypeAttribute.entries.find { it.toString() == arr.getString(i) }
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return KlarnaShippingOption(
|
|
270
|
+
shippingCarrier = map.getString(SHIPPING_CARRIER),
|
|
271
|
+
shippingType = shippingType,
|
|
272
|
+
shippingTypeAttributes = attrs,
|
|
273
|
+
)
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
private fun buildOndemandService(map: ReadableMap): KlarnaOndemandService {
|
|
277
|
+
return KlarnaOndemandService(
|
|
278
|
+
currency = map.getString(CURRENCY),
|
|
279
|
+
averageAmount = if (map.hasKey(AVERAGE_AMOUNT) && !map.isNull(AVERAGE_AMOUNT)) map.getDouble(AVERAGE_AMOUNT).toLong() else null,
|
|
280
|
+
minimumAmount = if (map.hasKey(MINIMUM_AMOUNT) && !map.isNull(MINIMUM_AMOUNT)) map.getDouble(MINIMUM_AMOUNT).toLong() else null,
|
|
281
|
+
maximumAmount = if (map.hasKey(MAXIMUM_AMOUNT) && !map.isNull(MAXIMUM_AMOUNT)) map.getDouble(MAXIMUM_AMOUNT).toLong() else null,
|
|
282
|
+
purchaseInterval = map.getString(PURCHASE_INTERVAL)?.let { raw -> KlarnaInterval.entries.find { it.toString() == raw } },
|
|
283
|
+
purchaseIntervalFrequency = if (map.hasKey(PURCHASE_INTERVAL_FREQUENCY) && !map.isNull(PURCHASE_INTERVAL_FREQUENCY)) map.getInt(PURCHASE_INTERVAL_FREQUENCY) else null,
|
|
284
|
+
)
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
private fun buildSubscription(map: ReadableMap): KlarnaSubscription {
|
|
288
|
+
return KlarnaSubscription(
|
|
289
|
+
subscriptionReference = map.getString(SUBSCRIPTION_REFERENCE) ?: "",
|
|
290
|
+
name = map.getString(NAME),
|
|
291
|
+
freeTrial = map.getString(FREE_TRIAL)?.let { raw -> KlarnaFreeTrial.entries.find { it.toString() == raw } },
|
|
292
|
+
billingPlans = map.getArray(BILLING_PLANS)?.let { arr ->
|
|
293
|
+
(0 until arr.size()).mapNotNull { i -> arr.getMap(i)?.let { buildBillingPlan(it) } }
|
|
294
|
+
},
|
|
295
|
+
)
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
private fun buildBillingPlan(map: ReadableMap): KlarnaBillingPlan? {
|
|
299
|
+
val fromStr = map.getString(FROM) ?: return null
|
|
300
|
+
val interval = KlarnaInterval.entries.find { it.toString() == map.getString(INTERVAL) } ?: return null
|
|
301
|
+
val from = parseIso8601Date(fromStr) ?: return null
|
|
302
|
+
if (!map.hasKey(BILLING_AMOUNT) || !map.hasKey(INTERVAL_FREQUENCY)) return null
|
|
303
|
+
return KlarnaBillingPlan(
|
|
304
|
+
billingAmount = map.getDouble(BILLING_AMOUNT).toLong(),
|
|
305
|
+
from = from,
|
|
306
|
+
interval = interval,
|
|
307
|
+
intervalFrequency = map.getInt(INTERVAL_FREQUENCY),
|
|
308
|
+
currency = map.getString(CURRENCY),
|
|
309
|
+
)
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
private fun parseIso8601Date(isoStr: String): java.util.Date? {
|
|
313
|
+
val formats = listOf(
|
|
314
|
+
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
|
|
315
|
+
"yyyy-MM-dd'T'HH:mm:ss'Z'",
|
|
316
|
+
)
|
|
317
|
+
return formats.firstNotNullOfOrNull { pattern ->
|
|
318
|
+
try {
|
|
319
|
+
SimpleDateFormat(pattern, Locale.US).apply {
|
|
320
|
+
isLenient = false
|
|
321
|
+
timeZone = TimeZone.getTimeZone("UTC")
|
|
322
|
+
}.parse(isoStr)
|
|
323
|
+
} catch (e: Exception) {
|
|
324
|
+
null
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
package com.klarna.mobile.sdk.reactnative.klarnanetwork.payment
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Arguments
|
|
4
|
+
import com.facebook.react.bridge.WritableMap
|
|
5
|
+
import com.klarna.mobile.sdk.klarna.network.core.api.models.KlarnaAddress
|
|
6
|
+
import com.klarna.mobile.sdk.klarna.network.core.api.models.KlarnaCustomerProfile
|
|
7
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.KlarnaPaymentRequest
|
|
8
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaCustomer
|
|
9
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaPaymentRequestStateContext
|
|
10
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaShipping
|
|
11
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaShippingOption
|
|
12
|
+
import com.klarna.mobile.sdk.klarna.network.payment.api.models.KlarnaShippingRecipient
|
|
13
|
+
|
|
14
|
+
internal fun KlarnaPaymentRequest.toWritableMap(): WritableMap = Arguments.createMap().apply {
|
|
15
|
+
putString(ResponseKeys.PAYMENT_REQUEST_ID, paymentRequestId)
|
|
16
|
+
putString(ResponseKeys.STATE, state.toString())
|
|
17
|
+
putString(ResponseKeys.PREVIOUS_STATE, previousState?.toString())
|
|
18
|
+
putString(ResponseKeys.STATE_REASON, stateReason?.toString())
|
|
19
|
+
putString(ResponseKeys.PAYMENT_REQUEST_REFERENCE, paymentRequestReference)
|
|
20
|
+
val ctx = stateContext
|
|
21
|
+
if (ctx != null) putMap(ResponseKeys.STATE_CONTEXT, ctx.toWritableMap()) else putNull(ResponseKeys.STATE_CONTEXT)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
internal fun KlarnaPaymentRequestStateContext.toWritableMap(): WritableMap = Arguments.createMap().apply {
|
|
25
|
+
putString(ResponseKeys.KLARNA_NETWORK_SESSION_TOKEN, klarnaNetworkSessionToken)
|
|
26
|
+
val customer = klarnaCustomer
|
|
27
|
+
if (customer != null) putMap(ResponseKeys.KLARNA_CUSTOMER, customer.toWritableMap()) else putNull(ResponseKeys.KLARNA_CUSTOMER)
|
|
28
|
+
val ship = shipping
|
|
29
|
+
if (ship != null) putMap(ResponseKeys.SHIPPING, ship.toWritableMap()) else putNull(ResponseKeys.SHIPPING)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
internal fun KlarnaCustomer.toWritableMap(): WritableMap = Arguments.createMap().apply {
|
|
33
|
+
putString(ResponseKeys.CUSTOMER_TOKEN, customerToken)
|
|
34
|
+
putString(ResponseKeys.CUSTOMER_TOKEN_REFERENCE, customerTokenReference)
|
|
35
|
+
val profile = customerProfile
|
|
36
|
+
if (profile != null) putMap(ResponseKeys.CUSTOMER_PROFILE, profile.toWritableMap()) else putNull(ResponseKeys.CUSTOMER_PROFILE)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
internal fun KlarnaCustomerProfile.toWritableMap(): WritableMap = Arguments.createMap().apply {
|
|
40
|
+
val addr = address
|
|
41
|
+
if (addr != null) putMap(ResponseKeys.ADDRESS, addr.toWritableMap()) else putNull(ResponseKeys.ADDRESS)
|
|
42
|
+
putString(ResponseKeys.CUSTOMER_ID, customerId)
|
|
43
|
+
putString(ResponseKeys.COUNTRY, country)
|
|
44
|
+
putString(ResponseKeys.EMAIL, email)
|
|
45
|
+
val ev = emailVerified
|
|
46
|
+
if (ev != null) putBoolean(ResponseKeys.EMAIL_VERIFIED, ev) else putNull(ResponseKeys.EMAIL_VERIFIED)
|
|
47
|
+
putString(ResponseKeys.FAMILY_NAME, familyName)
|
|
48
|
+
putString(ResponseKeys.GIVEN_NAME, givenName)
|
|
49
|
+
putString(ResponseKeys.LOCALE, locale)
|
|
50
|
+
putString(ResponseKeys.PHONE, phone)
|
|
51
|
+
val pv = phoneVerified
|
|
52
|
+
if (pv != null) putBoolean(ResponseKeys.PHONE_VERIFIED, pv) else putNull(ResponseKeys.PHONE_VERIFIED)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
internal fun KlarnaShipping.toWritableMap(): WritableMap = Arguments.createMap().apply {
|
|
56
|
+
val addr = address
|
|
57
|
+
if (addr != null) putMap(ResponseKeys.ADDRESS, addr.toWritableMap()) else putNull(ResponseKeys.ADDRESS)
|
|
58
|
+
val rec = recipient
|
|
59
|
+
if (rec != null) putMap(ResponseKeys.RECIPIENT, rec.toWritableMap()) else putNull(ResponseKeys.RECIPIENT)
|
|
60
|
+
val opt = shippingOption
|
|
61
|
+
if (opt != null) putMap(ResponseKeys.SHIPPING_OPTION, opt.toWritableMap()) else putNull(ResponseKeys.SHIPPING_OPTION)
|
|
62
|
+
putString(ResponseKeys.SHIPPING_REFERENCE, shippingReference)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
internal fun KlarnaAddress.toWritableMap(): WritableMap = Arguments.createMap().apply {
|
|
66
|
+
putString(ResponseKeys.CITY, city)
|
|
67
|
+
putString(ResponseKeys.COUNTRY, country)
|
|
68
|
+
putString(ResponseKeys.POSTAL_CODE, postalCode)
|
|
69
|
+
putString(ResponseKeys.REGION, region)
|
|
70
|
+
putString(ResponseKeys.STREET_ADDRESS, streetAddress)
|
|
71
|
+
putString(ResponseKeys.STREET_ADDRESS2, streetAddress2)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
internal fun KlarnaShippingRecipient.toWritableMap(): WritableMap = Arguments.createMap().apply {
|
|
75
|
+
putString(ResponseKeys.ATTENTION, attention)
|
|
76
|
+
putString(ResponseKeys.EMAIL, email)
|
|
77
|
+
putString(ResponseKeys.FAMILY_NAME, familyName)
|
|
78
|
+
putString(ResponseKeys.GIVEN_NAME, givenName)
|
|
79
|
+
putString(ResponseKeys.PHONE, phone)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
internal fun KlarnaShippingOption.toWritableMap(): WritableMap = Arguments.createMap().apply {
|
|
83
|
+
putString(ResponseKeys.SHIPPING_CARRIER, shippingCarrier)
|
|
84
|
+
putString(ResponseKeys.SHIPPING_TYPE, shippingType.toString())
|
|
85
|
+
val attrs = shippingTypeAttributes
|
|
86
|
+
if (attrs != null) {
|
|
87
|
+
val arr = Arguments.createArray()
|
|
88
|
+
attrs.forEach { arr.pushString(it.toString()) }
|
|
89
|
+
putArray(ResponseKeys.SHIPPING_TYPE_ATTRIBUTES, arr)
|
|
90
|
+
} else {
|
|
91
|
+
putNull(ResponseKeys.SHIPPING_TYPE_ATTRIBUTES)
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
private object ResponseKeys {
|
|
96
|
+
// KlarnaPaymentRequest
|
|
97
|
+
const val PAYMENT_REQUEST_ID = "paymentRequestId"
|
|
98
|
+
const val STATE = "state"
|
|
99
|
+
const val PREVIOUS_STATE = "previousState"
|
|
100
|
+
const val STATE_REASON = "stateReason"
|
|
101
|
+
const val PAYMENT_REQUEST_REFERENCE = "paymentRequestReference"
|
|
102
|
+
const val STATE_CONTEXT = "stateContext"
|
|
103
|
+
|
|
104
|
+
// KlarnaPaymentRequestStateContext
|
|
105
|
+
const val KLARNA_NETWORK_SESSION_TOKEN = "klarnaNetworkSessionToken"
|
|
106
|
+
const val KLARNA_CUSTOMER = "klarnaCustomer"
|
|
107
|
+
const val SHIPPING = "shipping"
|
|
108
|
+
|
|
109
|
+
// KlarnaCustomer
|
|
110
|
+
const val CUSTOMER_TOKEN = "customerToken"
|
|
111
|
+
const val CUSTOMER_TOKEN_REFERENCE = "customerTokenReference"
|
|
112
|
+
const val CUSTOMER_PROFILE = "customerProfile"
|
|
113
|
+
|
|
114
|
+
// KlarnaCustomerProfile / KlarnaAddress / KlarnaShippingRecipient (shared keys)
|
|
115
|
+
const val ADDRESS = "address"
|
|
116
|
+
const val CUSTOMER_ID = "customerId"
|
|
117
|
+
const val COUNTRY = "country"
|
|
118
|
+
const val EMAIL = "email"
|
|
119
|
+
const val EMAIL_VERIFIED = "emailVerified"
|
|
120
|
+
const val FAMILY_NAME = "familyName"
|
|
121
|
+
const val GIVEN_NAME = "givenName"
|
|
122
|
+
const val LOCALE = "locale"
|
|
123
|
+
const val PHONE = "phone"
|
|
124
|
+
const val PHONE_VERIFIED = "phoneVerified"
|
|
125
|
+
|
|
126
|
+
// KlarnaAddress
|
|
127
|
+
const val CITY = "city"
|
|
128
|
+
const val POSTAL_CODE = "postalCode"
|
|
129
|
+
const val REGION = "region"
|
|
130
|
+
const val STREET_ADDRESS = "streetAddress"
|
|
131
|
+
const val STREET_ADDRESS2 = "streetAddress2"
|
|
132
|
+
|
|
133
|
+
// KlarnaShipping
|
|
134
|
+
const val RECIPIENT = "recipient"
|
|
135
|
+
const val SHIPPING_OPTION = "shippingOption"
|
|
136
|
+
const val SHIPPING_REFERENCE = "shippingReference"
|
|
137
|
+
|
|
138
|
+
// KlarnaShippingRecipient
|
|
139
|
+
const val ATTENTION = "attention"
|
|
140
|
+
|
|
141
|
+
// KlarnaShippingOption
|
|
142
|
+
const val SHIPPING_CARRIER = "shippingCarrier"
|
|
143
|
+
const val SHIPPING_TYPE = "shippingType"
|
|
144
|
+
const val SHIPPING_TYPE_ATTRIBUTES = "shippingTypeAttributes"
|
|
145
|
+
}
|