From 21f57444c8f25baed92f016d4121ecacfeccf352 Mon Sep 17 00:00:00 2001 From: klaus Date: Thu, 2 Oct 2025 17:14:49 +0900 Subject: [PATCH] =?UTF-8?q?feat(can-payment):=20=EB=8B=A4=EA=B5=AD?= =?UTF-8?q?=EC=A0=81=20=ED=86=B5=ED=99=94=20=ED=91=9C=EA=B8=B0=20=EC=A7=80?= =?UTF-8?q?=EC=9B=90=20=EB=B0=8F=20=EA=B2=B0=EC=A0=9C=20=EA=B8=88=EC=95=A1?= =?UTF-8?q?=20=ED=91=9C=EC=8B=9C=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - KRW 고정 표기에서 벗어나 PG/해외 결제 등 다양한 통화 표기를 정확히 지원하기 위함 --- .../sodalive/extensions/StringExtensions.kt | 13 ++++++++ .../can/charge/pg/CanChargePgAdapter.kt | 6 ++-- .../mypage/can/charge/pg/CanResponse.kt | 6 +++- .../mypage/can/payment/CanPaymentActivity.kt | 12 ++++---- .../main/res/layout/activity_can_payment.xml | 30 +++++-------------- 5 files changed, 35 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/extensions/StringExtensions.kt b/app/src/main/java/kr/co/vividnext/sodalive/extensions/StringExtensions.kt index ce07ed34..16c8dfab 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/extensions/StringExtensions.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/extensions/StringExtensions.kt @@ -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) +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/charge/pg/CanChargePgAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/charge/pg/CanChargePgAdapter.kt index 05891b60..7d2e8321 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/charge/pg/CanChargePgAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/charge/pg/CanChargePgAdapter.kt @@ -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( diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/charge/pg/CanResponse.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/charge/pg/CanResponse.kt index b29bf77b..d7dad45a 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/charge/pg/CanResponse.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/charge/pg/CanResponse.kt @@ -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 diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/payment/CanPaymentActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/payment/CanPaymentActivity.kt index 4ba01c65..2ec2ae97 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/payment/CanPaymentActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/payment/CanPaymentActivity.kt @@ -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( 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 { diff --git a/app/src/main/res/layout/activity_can_payment.xml b/app/src/main/res/layout/activity_can_payment.xml index f38e861a..2d1520d2 100644 --- a/app/src/main/res/layout/activity_can_payment.xml +++ b/app/src/main/res/layout/activity_can_payment.xml @@ -60,33 +60,17 @@ tools:text="5000 캔 + 1000 캔" /> - - - - - - - + app:layout_constraintTop_toTopOf="parent" + tools:text="3,300" />