diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0b4ff4e2..40472a6f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -36,6 +36,16 @@ android:exported="false" android:screenOrientation="portrait" /> + + + + \ No newline at end of file diff --git a/domain/src/main/kotlin/co/orange/domain/entity/response/AddressInfoModel.kt b/domain/src/main/kotlin/co/orange/domain/entity/response/AddressInfoModel.kt new file mode 100644 index 00000000..cbcecb88 --- /dev/null +++ b/domain/src/main/kotlin/co/orange/domain/entity/response/AddressInfoModel.kt @@ -0,0 +1,8 @@ +package co.orange.domain.entity.response + +data class AddressInfoModel( + val recipient: String, + val zipCode: String, + val address: String, + val phone: String +) \ No newline at end of file diff --git a/domain/src/main/kotlin/co/orange/domain/entity/response/BuyDetailModel.kt b/domain/src/main/kotlin/co/orange/domain/entity/response/BuyDetailModel.kt new file mode 100644 index 00000000..b38662e8 --- /dev/null +++ b/domain/src/main/kotlin/co/orange/domain/entity/response/BuyDetailModel.kt @@ -0,0 +1,17 @@ +package co.orange.domain.entity.response + +import co.orange.domain.enums.OrderStatus + +data class BuyDetailModel( + val orderId: String, + val orderStatus: OrderStatus, + val productName: String, + val imgUrl: String, + val originPrice: Int, + val sellerNickname: String, + val addressInfo: List, + val paymentInfo: List, + val discountPrice: Int, + val charge: Int, + val totalPrice: Int, +) \ No newline at end of file diff --git a/domain/src/main/kotlin/co/orange/domain/entity/response/BuyInfoModel.kt b/domain/src/main/kotlin/co/orange/domain/entity/response/BuyInfoModel.kt new file mode 100644 index 00000000..42404921 --- /dev/null +++ b/domain/src/main/kotlin/co/orange/domain/entity/response/BuyInfoModel.kt @@ -0,0 +1,11 @@ +package co.orange.domain.entity.response + +data class BuyInfoModel( + val productName: String, + val imgUrl: String, + val originPrice: Int, + val addressInfo: List, + val discountPrice: Int, + val charge: Int, + val totalPrice: Int, +) \ No newline at end of file diff --git a/domain/src/main/kotlin/co/orange/domain/entity/response/PaymentInfoModel.kt b/domain/src/main/kotlin/co/orange/domain/entity/response/PaymentInfoModel.kt new file mode 100644 index 00000000..1e6c46f3 --- /dev/null +++ b/domain/src/main/kotlin/co/orange/domain/entity/response/PaymentInfoModel.kt @@ -0,0 +1,6 @@ +package co.orange.domain.entity.response + +data class PaymentInfoModel( + val method: String, + val completedAt: String +) \ No newline at end of file diff --git a/domain/src/main/kotlin/co/orange/domain/enums/OrderStatus.kt b/domain/src/main/kotlin/co/orange/domain/enums/OrderStatus.kt new file mode 100644 index 00000000..fe36c2d7 --- /dev/null +++ b/domain/src/main/kotlin/co/orange/domain/enums/OrderStatus.kt @@ -0,0 +1,5 @@ +package co.orange.domain.enums + +enum class OrderStatus { + ORDER_PLACED, SHIPPING, COMPLETED, CANCELLED +} \ No newline at end of file diff --git a/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt index f4d45727..1d248cf3 100644 --- a/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt +++ b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmActivity.kt @@ -4,6 +4,8 @@ import android.content.Context import android.content.Intent import android.os.Bundle import androidx.activity.viewModels +import co.orange.domain.entity.response.BuyInfoModel +import co.orange.presentation.buy.push.BuyPushActivity import coil.load import dagger.hilt.android.AndroidEntryPoint import kr.genti.core.base.BaseActivity @@ -24,7 +26,7 @@ class BuyConfirmActivity : BaseActivity(R.layout.acti initTermBtnListener() initConfirmBtnListener() getIntentInfo() - setIntentUi() + setIntentUi(viewModel.mockBuyInfo) } private fun initExitBtnListener() { @@ -33,63 +35,54 @@ class BuyConfirmActivity : BaseActivity(R.layout.acti private fun initDeliveryChangeBtnListener() { // TODO - binding.btnChangeDelivery.setOnSingleClickListener { } + binding.btnChangeDelivery.setOnSingleClickListener { } } private fun initTermBtnListener() { //TODO - binding.btnTermAll.setOnSingleClickListener { } - binding.btnTermFirst.setOnSingleClickListener { } - binding.btnTermSecond.setOnSingleClickListener { } - binding.btnTermThird.setOnSingleClickListener { } + binding.btnTermAll.setOnSingleClickListener { } + binding.btnTermFirst.setOnSingleClickListener { } + binding.btnTermSecond.setOnSingleClickListener { } + binding.btnTermThird.setOnSingleClickListener { } } private fun initConfirmBtnListener() { - // TODO - binding.btnConfirmPurchase.setOnSingleClickListener { } + binding.btnConfirmPurchase.setOnSingleClickListener { + // TODO 구매 요청 서버통신 이후 + BuyPushActivity.createIntent(this, viewModel.productId).apply { + startActivity(this) + } + } } private fun getIntentInfo() { - with(viewModel) { - imageUrl = intent.getStringExtra(EXTRA_PRODUCT_URL).orEmpty() - originPrice = intent.getIntExtra(EXTRA_ORIGIN_PRICE, 0) - salePrice = intent.getIntExtra(EXTRA_SALE_PRICE, 0) - name = intent.getStringExtra(EXTRA_NAME).orEmpty() - } + viewModel.productId = intent.getLongExtra(EXTRA_PRODUCT_ID, -1) } - private fun setIntentUi() { + private fun setIntentUi(item: BuyInfoModel) { with(binding) { - tvConfirmProductName.text = viewModel.name - ivConfirmProduct.load(viewModel.imageUrl) - tvConfirmProductPrice.text = viewModel.salePrice.setNumberForm() - tvConfirmPriceMoney.text = viewModel.salePrice.setNumberForm() - // TODO - tvConfirmPriceDiscount.text = "-3,000" - tvConfirmPriceCharge.text = "+350" - tvConfirmPriceTotal.text = "21,350" + tvConfirmProductName.text = item.productName + ivConfirmProduct.load(item.imgUrl) + tvConfirmProductPrice.text = item.originPrice.setNumberForm() + tvConfirmPriceMoney.text = item.originPrice.setNumberForm() + tvConfirmPriceDiscount.text = + getString(R.string.add_minus, item.discountPrice.setNumberForm()) + tvConfirmPriceCharge.text = + getString(R.string.add_plus, item.charge.setNumberForm()) + tvConfirmPriceTotal.text = item.totalPrice.setNumberForm() } } companion object { - private const val EXTRA_PRODUCT_URL = "EXTRA_PRODUCT_URL" - private const val EXTRA_ORIGIN_PRICE = "EXTRA_ORIGIN_PRICE" - private const val EXTRA_SALE_PRICE = "EXTRA_SALE_PRICE" - private const val EXTRA_NAME = "EXTRA_NAME" + private const val EXTRA_PRODUCT_ID = "EXTRA_PRODUCT_ID" @JvmStatic fun createIntent( context: Context, - productUrl: String, - originPrice: Int, - salePrice: Int, - name: String + productId: Long ): Intent = Intent(context, BuyConfirmActivity::class.java).apply { - putExtra(EXTRA_PRODUCT_URL, productUrl) - putExtra(EXTRA_ORIGIN_PRICE, originPrice) - putExtra(EXTRA_SALE_PRICE, salePrice) - putExtra(EXTRA_NAME, name) + putExtra(EXTRA_PRODUCT_ID, productId) } } } \ No newline at end of file diff --git a/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmViewModel.kt b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmViewModel.kt index d3ad63d3..4730655f 100644 --- a/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmViewModel.kt +++ b/presentation/src/main/java/co/orange/presentation/buy/confirm/BuyConfirmViewModel.kt @@ -1,6 +1,8 @@ package co.orange.presentation.buy.confirm import androidx.lifecycle.ViewModel +import co.orange.domain.entity.response.AddressInfoModel +import co.orange.domain.entity.response.BuyInfoModel import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject @@ -11,9 +13,22 @@ constructor( // private val feedRepository: FeedRepository, ) : ViewModel() { - var imageUrl: String = "" - var originPrice: Int = 0 - var salePrice: Int = 0 - var name: String = "" + var productId: Long = -1 + val mockBuyInfo = BuyInfoModel( + "상품이름은 한줄로만 보여줄거에야야야야야야", + "https://github.com/Marchbreeze/Marchbreeze/assets/97405341/cd2c0454-92b4-41e7-ae2f-319f83e2426f", + 24000, + listOf( + AddressInfoModel( + "김상호", + "04567", + "서울특벌시 성동구 성수이로 137 107동 903호", + "010-3259-0327" + ) + ), + 3000, + 350, + 21350 + ) } \ No newline at end of file diff --git a/presentation/src/main/java/co/orange/presentation/buy/finished/BuyFinishedActivity.kt b/presentation/src/main/java/co/orange/presentation/buy/finished/BuyFinishedActivity.kt new file mode 100644 index 00000000..2904a84a --- /dev/null +++ b/presentation/src/main/java/co/orange/presentation/buy/finished/BuyFinishedActivity.kt @@ -0,0 +1,89 @@ +package co.orange.presentation.buy.finished + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import androidx.activity.viewModels +import co.orange.domain.entity.response.BuyDetailModel +import co.orange.presentation.main.MainActivity +import coil.load +import dagger.hilt.android.AndroidEntryPoint +import kr.genti.core.base.BaseActivity +import kr.genti.core.extension.breakLines +import kr.genti.core.extension.setNumberForm +import kr.genti.core.extension.setOnSingleClickListener +import kr.genti.presentation.R +import kr.genti.presentation.databinding.ActivityBuyFinishedBinding + +@AndroidEntryPoint +class BuyFinishedActivity : + BaseActivity(R.layout.activity_buy_finished) { + private val viewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + initReturnBtnListener() + initDetailBtnListener() + getIntentInfo() + setIntentUi(viewModel.mockBuyInfo) + } + + private fun initReturnBtnListener() { + binding.btnHome.setOnSingleClickListener { navigateToHome() } + binding.btnKeepShopping.setOnSingleClickListener { navigateToHome() } + } + + private fun navigateToHome() { + Intent(this, MainActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) + addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) + startActivity(this) + } + } + + private fun initDetailBtnListener() { + // TODO + binding.btnShowDetail.setOnSingleClickListener { } + } + + private fun getIntentInfo() { + viewModel.productId = intent.getLongExtra(EXTRA_PRODUCT_ID, -1) + } + + private fun setIntentUi(item: BuyDetailModel) { + with(binding) { + tvFinishedTransaction.text = + getString(R.string.transaction_id, item.orderId).breakLines() + ivFinishedItem.load(item.imgUrl) + tvFinishedItemName.text = item.productName + tvFinishedItemPrice.text = item.originPrice.setNumberForm() + tvFinishedDeliveryName.text = item.addressInfo[0].recipient + tvFinishedDeliveryAddress.text = getString( + R.string.address_format, + item.addressInfo[0].zipCode, + item.addressInfo[0].address + ).breakLines() + tvFinishedDeliveryPhone.text = item.addressInfo[0].phone + tvFinishedTransactionMethod.text = item.paymentInfo[0].method + tvFinishedTransactionDate.text = item.paymentInfo[0].completedAt + tvFinishedPayMoney.text = item.originPrice.setNumberForm() + tvFinishedPayDiscount.text = getString(R.string.add_minus, item.discountPrice.setNumberForm()) + tvFinishedPayCharge.text = getString(R.string.add_plus, item.charge.setNumberForm()) + tvFinishedPayTotal.text = item.totalPrice.setNumberForm() + } + } + + + companion object { + private const val EXTRA_PRODUCT_ID = "EXTRA_PRODUCT_ID" + + @JvmStatic + fun createIntent( + context: Context, + productId: Long + ): Intent = Intent(context, BuyFinishedActivity::class.java).apply { + putExtra(EXTRA_PRODUCT_ID, productId) + } + } +} \ No newline at end of file diff --git a/presentation/src/main/java/co/orange/presentation/buy/finished/BuyFinishedViewModel.kt b/presentation/src/main/java/co/orange/presentation/buy/finished/BuyFinishedViewModel.kt new file mode 100644 index 00000000..5b74ec54 --- /dev/null +++ b/presentation/src/main/java/co/orange/presentation/buy/finished/BuyFinishedViewModel.kt @@ -0,0 +1,45 @@ +package co.orange.presentation.buy.finished + +import androidx.lifecycle.ViewModel +import co.orange.domain.entity.response.AddressInfoModel +import co.orange.domain.entity.response.BuyDetailModel +import co.orange.domain.entity.response.PaymentInfoModel +import co.orange.domain.enums.OrderStatus +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class BuyFinishedViewModel +@Inject +constructor( + // private val feedRepository: FeedRepository, +) : ViewModel() { + + var productId: Long = -1 + + val mockBuyInfo = BuyDetailModel( + "123e4567-e89b-12d3-a456-426614174000", + OrderStatus.ORDER_PLACED, + "상품이름은 한줄로만 보여줄거에야야야야야야", + "https://github.com/Marchbreeze/Marchbreeze/assets/97405341/cd2c0454-92b4-41e7-ae2f-319f83e2426f", + 24000, + "등둔", + listOf( + AddressInfoModel( + "김상호", + "04567", + "서울특벌시 성동구 성수이로 137 107동 903호", + "010-3259-0327" + ) + ), + listOf( + PaymentInfoModel( + "NAVERPAY", + "2024.06.06" + ) + ), + 3000, + 350, + 21350 + ) +} \ No newline at end of file diff --git a/presentation/src/main/java/co/orange/presentation/buy/push/BuyPushActivity.kt b/presentation/src/main/java/co/orange/presentation/buy/push/BuyPushActivity.kt new file mode 100644 index 00000000..52e2096c --- /dev/null +++ b/presentation/src/main/java/co/orange/presentation/buy/push/BuyPushActivity.kt @@ -0,0 +1,62 @@ +package co.orange.presentation.buy.push + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import co.orange.presentation.buy.finished.BuyFinishedActivity +import dagger.hilt.android.AndroidEntryPoint +import kr.genti.core.base.BaseActivity +import kr.genti.core.extension.setOnSingleClickListener +import kr.genti.presentation.R +import kr.genti.presentation.databinding.ActivityPushBinding + +@AndroidEntryPoint +class BuyPushActivity : BaseActivity(R.layout.activity_push) { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + // TODO: 뒤로가기 방지 추가 + initExitBtnListener() + initAlarmBtnListener() + } + + private fun initExitBtnListener() { + with(binding) { + btnExit.setOnSingleClickListener { + navigateToFinishedActivity() + } + btnLater.setOnSingleClickListener { + navigateToFinishedActivity() + } + } + } + + private fun initAlarmBtnListener() { + binding.btnAlarm.setOnSingleClickListener { + // TODO 푸시알람 + navigateToFinishedActivity() + } + } + + + private fun navigateToFinishedActivity() { + val productId = intent.getLongExtra(EXTRA_PRODUCT_ID,-1) + BuyFinishedActivity.createIntent(this, productId).apply { + startActivity(this) + } + + } + + companion object { + private const val EXTRA_PRODUCT_ID = "EXTRA_PRODUCT_ID" + + @JvmStatic + fun createIntent( + context: Context, + productId: Long, + ): Intent = Intent(context, BuyPushActivity::class.java).apply { + putExtra(EXTRA_PRODUCT_ID, productId) + } + } +} \ No newline at end of file diff --git a/presentation/src/main/java/co/orange/presentation/detail/DetailActivity.kt b/presentation/src/main/java/co/orange/presentation/detail/DetailActivity.kt index 8f989e3c..946ddbd5 100644 --- a/presentation/src/main/java/co/orange/presentation/detail/DetailActivity.kt +++ b/presentation/src/main/java/co/orange/presentation/detail/DetailActivity.kt @@ -63,6 +63,7 @@ class DetailActivity : BaseActivity(R.layout.activity_det private fun getIntentInfo() { with(viewModel) { + productId =intent.getLongExtra(EXTRA_PRODUCT_ID, -1) imageUrl = intent.getStringExtra(EXTRA_PRODUCT_URL).orEmpty() originPrice = intent.getIntExtra(EXTRA_ORIGIN_PRICE, 0) salePrice = intent.getIntExtra(EXTRA_SALE_PRICE, 0) @@ -101,6 +102,7 @@ class DetailActivity : BaseActivity(R.layout.activity_det } companion object { + private const val EXTRA_PRODUCT_ID = "EXTRA_PRODUCT_ID" private const val EXTRA_PRODUCT_URL = "EXTRA_PRODUCT_URL" private const val EXTRA_ORIGIN_PRICE = "EXTRA_ORIGIN_PRICE" private const val EXTRA_SALE_PRICE = "EXTRA_SALE_PRICE" @@ -110,10 +112,12 @@ class DetailActivity : BaseActivity(R.layout.activity_det @JvmStatic fun createIntent( context: Context, + productId: Long, productUrl: String, originPrice: Int, salePrice: Int, ): Intent = Intent(context, DetailActivity::class.java).apply { + putExtra(EXTRA_PRODUCT_ID, productId) putExtra(EXTRA_PRODUCT_URL, productUrl) putExtra(EXTRA_ORIGIN_PRICE, originPrice) putExtra(EXTRA_SALE_PRICE, salePrice) diff --git a/presentation/src/main/java/co/orange/presentation/detail/DetailViewModel.kt b/presentation/src/main/java/co/orange/presentation/detail/DetailViewModel.kt index 95d0c8f1..dbb58796 100644 --- a/presentation/src/main/java/co/orange/presentation/detail/DetailViewModel.kt +++ b/presentation/src/main/java/co/orange/presentation/detail/DetailViewModel.kt @@ -12,6 +12,7 @@ class DetailViewModel constructor( // private val feedRepository: FeedRepository, ) : ViewModel() { + var productId: Long = -1 var imageUrl: String = "" var originPrice: Int = 0 var salePrice: Int = 0 @@ -26,10 +27,10 @@ constructor( "", 123, listOf( - OptionModel(1,"옵션 1", listOf()), - OptionModel(2,"옵션 2", listOf()), - OptionModel(3,"옵션 3", listOf()), - OptionModel(4,"옵션 4", listOf()) + OptionModel(1, "옵션 1", listOf()), + OptionModel(2, "옵션 2", listOf()), + OptionModel(3, "옵션 3", listOf()), + OptionModel(4, "옵션 4", listOf()) ) ) } \ No newline at end of file diff --git a/presentation/src/main/java/co/orange/presentation/detail/OptionBottomSheet.kt b/presentation/src/main/java/co/orange/presentation/detail/OptionBottomSheet.kt index b17ea82f..4cf4025e 100644 --- a/presentation/src/main/java/co/orange/presentation/detail/OptionBottomSheet.kt +++ b/presentation/src/main/java/co/orange/presentation/detail/OptionBottomSheet.kt @@ -49,10 +49,7 @@ class OptionBottomSheet : // TODO 버튼 활성화 설정 BuyConfirmActivity.createIntent( requireContext(), - viewModel.imageUrl, - viewModel.originPrice, - viewModel.salePrice, - viewModel.mockProduct.name + viewModel.productId ).apply { startActivity(this) } diff --git a/presentation/src/main/java/co/orange/presentation/main/home/HomeFragment.kt b/presentation/src/main/java/co/orange/presentation/main/home/HomeFragment.kt index d77de9af..2102b5ca 100644 --- a/presentation/src/main/java/co/orange/presentation/main/home/HomeFragment.kt +++ b/presentation/src/main/java/co/orange/presentation/main/home/HomeFragment.kt @@ -55,7 +55,7 @@ class HomeFragment() : BaseFragment(R.layout.fragment_home) private fun initBannerClickListener(unit: Unit) {} private fun initProductClickListener(item: ProductModel) { - DetailActivity.createIntent(requireContext(), item.imgUrl, item.originPrice, item.salePrice) + DetailActivity.createIntent(requireContext(), item.productId, item.imgUrl, item.originPrice, item.salePrice) .apply { startActivity(this) } } diff --git a/presentation/src/main/res/drawable/ic_check_circle.xml b/presentation/src/main/res/drawable/ic_check_circle.xml new file mode 100644 index 00000000..0b5448e2 --- /dev/null +++ b/presentation/src/main/res/drawable/ic_check_circle.xml @@ -0,0 +1,9 @@ + + + diff --git a/presentation/src/main/res/drawable/ic_push_alarm.xml b/presentation/src/main/res/drawable/ic_push_alarm.xml new file mode 100644 index 00000000..23bd1abc --- /dev/null +++ b/presentation/src/main/res/drawable/ic_push_alarm.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + diff --git a/presentation/src/main/res/drawable/shape_black_line_10_rect.xml b/presentation/src/main/res/drawable/shape_black_line_10_rect.xml new file mode 100644 index 00000000..9db14977 --- /dev/null +++ b/presentation/src/main/res/drawable/shape_black_line_10_rect.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/drawable/shape_gray2_line_10_rect.xml b/presentation/src/main/res/drawable/shape_gray2_line_10_rect.xml new file mode 100644 index 00000000..7f438bf9 --- /dev/null +++ b/presentation/src/main/res/drawable/shape_gray2_line_10_rect.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/layout/activity_buy_confirm.xml b/presentation/src/main/res/layout/activity_buy_confirm.xml index b80c99f1..321f9e48 100644 --- a/presentation/src/main/res/layout/activity_buy_confirm.xml +++ b/presentation/src/main/res/layout/activity_buy_confirm.xml @@ -36,7 +36,7 @@ android:id="@+id/btn_exit" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginEnd="20dp" + android:layout_marginEnd="8dp" android:padding="12dp" android:src="@drawable/ic_exit" app:layout_constraintBottom_toBottomOf="@id/tv_confirm_title" @@ -280,7 +280,7 @@ + android:src="@drawable/ic_check_circle" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/layout/activity_push.xml b/presentation/src/main/res/layout/activity_push.xml new file mode 100644 index 00000000..0f8199f2 --- /dev/null +++ b/presentation/src/main/res/layout/activity_push.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index 02e2092a..67d18144 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -11,6 +11,9 @@ Billing Manager is not initialized Unknown View Type : %d + +%s + -%s + 마이페이지 @@ -34,4 +37,27 @@ *각인 옵션은 사용할 수 없습니다. 구매하기 + + 푸시 알림이\n설정되어 있지 않아요! + 원만한 거래를 위해서는\n푸시알림 설정이 필요해요 + 나중에 받을게요 + 알림받기 + + 주문 완료 + 주문 완료되었습니다 + 주문 확인 후 거래가 진행됩니다. + 배송지 + 거래 정보 + 결제 수단 + 결제 일자 + 결제 정보 + 상품 금액 + 할인가 + 수수료 + 최종 결제 금액 + 계속 쇼핑하기 + 상세 내역 보러가기 + + 거래 번호 %s + (%s) %s \ No newline at end of file