Updated on 2026-08-14

This commit is contained in:
Tangem 2026-07-06 01:17:12 -07:00
parent 3b6eeb7535
commit 8b677a8e6b
25 changed files with 1149 additions and 17 deletions

View file

@ -55,6 +55,7 @@ internal sealed class TangemPay(
"version" to ProviderSuspend { appInfoProvider.appVersion },
"platform" to ProviderSuspend { "Android" },
"X-API-KEY" to ProviderSuspend { getBffStaticToken(apiEnvironment) },
"X-Device-Scale" to ProviderSuspend { appInfoProvider.deviceScale.toString() },
)
private fun getBffStaticToken(apiEnvironment: ApiEnvironment): String {

View file

@ -29,6 +29,11 @@ interface TangemPayApi {
@GET("v1/customer/me")
suspend fun getCustomerMe(@Header("Authorization") authHeader: String): ApiResponse<CustomerMeResponse>
@GET("v1/customer/tariff-plan/transitions")
suspend fun getTariffPlanTransitions(
@Header("Authorization") authHeader: String,
): ApiResponse<TariffPlanTransitionsResponse>
/** Fiat bank requisites for the Virtual Account on-ramp (VA MVP0, TWI-1638). */
@GET("v1/account/bank-credentials/{product_instance_id}")
suspend fun getBankCredentials(

View file

@ -39,6 +39,13 @@ data class CustomerMeResponse(
@Json(name = "type") val type: String?,
@Json(name = "name") val name: String?,
@Json(name = "description_items") val descriptionItems: List<DescriptionItem>?,
@Json(name = "images") val images: List<Image>? = null,
)
@JsonClass(generateAdapter = true)
data class Image(
@Json(name = "type") val type: String?,
@Json(name = "url") val url: String?,
)
@JsonClass(generateAdapter = true)

View file

@ -0,0 +1,15 @@
package com.tangem.datasource.api.pay.models.response
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
@JsonClass(generateAdapter = true)
data class TariffPlanTransitionsResponse(
@Json(name = "result") val result: List<TariffPlanTransitionResponse>?,
)
@JsonClass(generateAdapter = true)
data class TariffPlanTransitionResponse(
@Json(name = "type") val type: String?,
@Json(name = "tariff_plan") val tariffPlan: CustomerMeResponse.TariffPlan?,
)

View file

@ -70,6 +70,7 @@ internal class ProdApiConfigsManagerTest {
every { appInfoProvider.osVersion } returns "Android 16"
every { appInfoProvider.language } returns Locale.getDefault().toLanguageTag()
every { appInfoProvider.device } returns "${Build.MANUFACTURER} ${Build.MODEL}"
every { appInfoProvider.deviceScale } returns DEVICE_SCALE
manager = ProdApiConfigsManager(apiConfigs = createApiConfigs())
}
@ -298,6 +299,7 @@ internal class ProdApiConfigsManagerTest {
"version" to ProviderSuspend { VERSION_NAME },
"platform" to ProviderSuspend { "Android" },
"X-API-KEY" to ProviderSuspend { TANGEM_PAY_BFF_KEY_DEV },
"X-Device-Scale" to ProviderSuspend { DEVICE_SCALE.toString() },
),
),
)
@ -313,6 +315,7 @@ internal class ProdApiConfigsManagerTest {
"version" to ProviderSuspend { VERSION_NAME },
"platform" to ProviderSuspend { "Android" },
"X-API-KEY" to ProviderSuspend { TANGEM_PAY_BFF_KEY_DEV },
"X-Device-Scale" to ProviderSuspend { DEVICE_SCALE.toString() },
),
),
)
@ -457,6 +460,7 @@ internal class ProdApiConfigsManagerTest {
private companion object {
const val VERSION_NAME = "debug"
const val DEVICE_SCALE = 3f
const val EXPRESS_SESSION_ID = "express_session_id"
const val STAKE_KIT_API_KEY = "stake_kit_api_key"
const val P2P_API_KEY = "p2p_api_key"

View file

@ -1978,6 +1978,13 @@
<string name="tangempay_pay_support">Pay Support</string>
<string name="tangempay_payment_account">Payment account</string>
<string name="tangempay_payment_account_sync_needed">Session expired</string>
<string name="tangempay_select_plan_title">Select plan</string>
<string name="tangempay_select_plan_confirm_title">Confirm selection</string>
<string name="tangempay_select_plan_compare">Compare plans</string>
<string name="tangempay_select_plan_btn_select">Select</string>
<string name="tangempay_select_plan_btn_cancel">Cancel</string>
<string name="tangempay_select_plan_btn_upgrade">Upgrade plan</string>
<string name="tangempay_select_plan_btn_downgrade">Downgrade plan</string>
<string name="tangempay_pin_validation_error_message">Invalid PIN: avoid sequences or repeats</string>
<string name="tangempay_reissue_card_confirm">Replace card</string>
<string name="tangempay_reissue_card_description">This generates a new set of card details. Your old details will stop working. You can\'t undo this.</string>

View file

@ -27,6 +27,11 @@ interface AppInfoProvider {
/** Current locale as a BCP 47 language tag (e.g. `"en-US"`, `"zh-CN"`). */
val language: String
/**
* Display density as a float (e.g. `"2.0"`, `"2.75"`, `"3.0"`).
*/
val deviceScale: Float
/** IANA time-zone id of the device's current time zone, e.g. `"Europe/Moscow"`, `"UTC"`. */
val timezone: String