diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/CanApi.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/CanApi.kt index f5eea73..15f395f 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/CanApi.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/CanApi.kt @@ -36,6 +36,12 @@ interface CanApi { @Header("Authorization") authHeader: String ): Single> + @POST("/charge/verify/hecto") + fun verifyChargeHecto( + @Body request: VerifyRequest, + @Header("Authorization") authHeader: String + ): Single> + @GET("/can") fun getCans( @Header("Authorization") authHeader: String diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/CanRepository.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/CanRepository.kt index 56e0c31..3bd5e2f 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/CanRepository.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/CanRepository.kt @@ -22,6 +22,11 @@ class CanRepository(private val api: CanApi) { token: String ) = api.verifyCharge(request, authHeader = token) + fun verifyHecto( + request: VerifyRequest, + token: String + ) = api.verifyChargeHecto(request, authHeader = token) + fun getCans(token: String) = api.getCans(authHeader = token) fun getCanStatus(token: String) = api.getCanStatus(authHeader = token) 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 f50f274..e72f42b 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 @@ -219,22 +219,42 @@ class CanPaymentActivity : BaseActivity( val bootpayResponse = Gson().fromJson(data, BootpayResponse::class.java) val request = VerifyRequest(bootpayResponse.data.receiptId, bootpayResponse.data.orderId) - viewModel.verify( - request, - onSuccess = { - Toast.makeText(applicationContext, "캔이 충전되었습니다", Toast.LENGTH_LONG).show() - SharedPreferenceManager.can += (canResponse!!.rewardCan + canResponse!!.can) - if (gotoPrevPage) { - setResult(RESULT_OK) - } else { - val intent = Intent(applicationContext, CanStatusActivity::class.java) - startActivity(intent) + if (viewModel.paymentMethodLiveData.value!! == PaymentMethod.PHONE) { + viewModel.verify( + request, + onSuccess = { + Toast.makeText(applicationContext, "캔이 충전되었습니다", Toast.LENGTH_LONG).show() + SharedPreferenceManager.can += (canResponse!!.rewardCan + canResponse!!.can) + if (gotoPrevPage) { + setResult(RESULT_OK) + } else { + val intent = Intent(applicationContext, CanStatusActivity::class.java) + startActivity(intent) + } + finish() + }, + onFailure = { + Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() } - finish() - }, - onFailure = { - Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() - } - ) + ) + } else { + viewModel.verifyHecto( + request, + onSuccess = { + Toast.makeText(applicationContext, "캔이 충전되었습니다", Toast.LENGTH_LONG).show() + SharedPreferenceManager.can += (canResponse!!.rewardCan + canResponse!!.can) + if (gotoPrevPage) { + setResult(RESULT_OK) + } else { + val intent = Intent(applicationContext, CanStatusActivity::class.java) + startActivity(intent) + } + finish() + }, + onFailure = { + Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() + } + ) + } } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/payment/CanPaymentViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/payment/CanPaymentViewModel.kt index 1968663..3ae7e80 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/payment/CanPaymentViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/payment/CanPaymentViewModel.kt @@ -87,6 +87,36 @@ class CanPaymentViewModel(private val repository: CanRepository) : BaseViewModel ) } + fun verifyHecto(request: VerifyRequest, onSuccess: () -> Unit, onFailure: (String) -> Unit) { + _isLoading.value = true + compositeDisposable.add( + repository.verifyHecto( + request = request, + "Bearer ${SharedPreferenceManager.token}" + ).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + { + _isLoading.value = false + if (it.success) { + onSuccess() + } else { + if (it.message != null) { + onFailure(it.message) + } else { + onFailure("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + } + } + }, + { + _isLoading.value = false + it.message?.let { message -> Logger.e(message) } + onFailure("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + } + ) + ) + } + fun setPaymentMethod(paymentMethod: CanPaymentActivity.PaymentMethod) { _paymentMethodLiveData.value = paymentMethod }