feat(can-payment): 다국적 통화 표기 지원 및 결제 금액 표시 개선

- KRW 고정 표기에서 벗어나 PG/해외 결제 등 다양한 통화 표기를 정확히 지원하기 위함
This commit is contained in:
2025-10-02 17:14:49 +09:00
parent 662f18bceb
commit 21f57444c8
5 changed files with 35 additions and 32 deletions

View File

@@ -3,7 +3,9 @@ package kr.co.vividnext.sodalive.extensions
import android.graphics.Typeface
import android.text.SpannableString
import kr.co.vividnext.sodalive.common.CustomTypefaceSpan
import java.text.NumberFormat
import java.text.SimpleDateFormat
import java.util.Currency
import java.util.Locale
fun String.convertDateFormat(
@@ -54,3 +56,14 @@ fun String.prefix(length: Int): String {
this
}
}
fun String.formatMoney(currencyCode: String, locale: Locale = Locale.getDefault()): String {
val newCurrency = Currency.getInstance(currencyCode)
val nf = NumberFormat.getCurrencyInstance(locale).apply {
currency = newCurrency
minimumFractionDigits = newCurrency.defaultFractionDigits
maximumFractionDigits = newCurrency.defaultFractionDigits
}
val bd = this.toBigDecimal()
return nf.format(bd)
}

View File

@@ -8,7 +8,7 @@ import androidx.recyclerview.widget.RecyclerView
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.databinding.ItemCanChargeBinding
import kr.co.vividnext.sodalive.extensions.fontSpan
import kr.co.vividnext.sodalive.extensions.moneyFormat
import kr.co.vividnext.sodalive.extensions.formatMoney
class CanChargePgAdapter(
private val onClick: (CanResponse) -> Unit
@@ -21,7 +21,9 @@ class CanChargePgAdapter(
private val binding: ItemCanChargeBinding
) : RecyclerView.ViewHolder(binding.root) {
fun bind(canCharge: CanResponse) {
binding.tvPrice.text = canCharge.price.moneyFormat()
binding.tvPrice.text = canCharge.priceStr.formatMoney(
currencyCode = canCharge.currency
)
val typeface = ResourcesCompat.getFont(context, R.font.gmarket_sans_medium)
binding.tvTitle.text = canCharge.title.fontSpan(

View File

@@ -17,5 +17,9 @@ data class CanResponse(
@SerializedName("rewardCan")
val rewardCan: Int,
@SerializedName("price")
val price: Int
val price: Int,
@SerializedName("currency")
val currency: String,
@SerializedName("priceStr")
val priceStr: String
) : Parcelable

View File

@@ -28,8 +28,7 @@ import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.databinding.ActivityCanPaymentBinding
import kr.co.vividnext.sodalive.extensions.fontSpan
import kr.co.vividnext.sodalive.extensions.moneyFormat
import kr.co.vividnext.sodalive.extensions.formatMoney
import kr.co.vividnext.sodalive.mypage.auth.BootpayResponse
import kr.co.vividnext.sodalive.mypage.can.charge.pg.CanResponse
import kr.co.vividnext.sodalive.mypage.can.charge.pg.VerifyRequest
@@ -81,10 +80,11 @@ class CanPaymentActivity : BaseActivity<ActivityCanPaymentBinding>(
binding.toolbar.tvBack.setOnClickListener { finish() }
binding.tvChargeCanTitle.text = canResponse!!.title
binding.tvPrice.text = canResponse!!.price.moneyFormat()
binding.tvPaymentPrice.text = "${canResponse!!.price.moneyFormat()}".fontSpan(
ResourcesCompat.getFont(applicationContext, R.font.gmarket_sans_light),
""
binding.tvPrice.text = canResponse!!.priceStr.formatMoney(
currencyCode = canResponse!!.currency
)
binding.tvPaymentPrice.text = canResponse!!.priceStr.formatMoney(
currencyCode = canResponse!!.currency
)
binding.tvAgree.setOnClickListener {

View File

@@ -60,33 +60,17 @@
tools:text="5000 캔 + 1000 캔" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_price"
<TextView
android:id="@+id/tv_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:fontFamily="@font/gmarket_sans_bold"
android:textColor="@color/color_eeeeee"
android:textSize="15.3sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_bold"
android:textColor="@color/color_eeeeee"
android:textSize="15.3sp"
tools:text="3,300" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_light"
android:text=" 원"
android:textColor="@color/color_eeeeee"
android:textSize="15.3sp" />
</LinearLayout>
app:layout_constraintTop_toTopOf="parent"
tools:text="3,300" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView