versionCode 57, versionName 1.9.11

인 앱 결제 로직 수정
- 결제 완료 후 서버에서 데이터 처리 후 로컬에서 다시 소비처리를 하도록 수정
This commit is contained in:
klaus 2024-04-22 14:40:16 +09:00
parent a6ce994fd0
commit 2bd30aa346
2 changed files with 35 additions and 35 deletions

View File

@ -40,8 +40,8 @@ android {
applicationId "kr.co.vividnext.sodalive"
minSdk 23
targetSdk 33
versionCode 49
versionName "1.9.2"
versionCode 57
versionName "1.9.10"
}
buildTypes {

View File

@ -56,29 +56,9 @@ class CanChargeIapFragment : BaseFragment<FragmentCanChargeIapBinding>(
setupBillingClient()
}
override fun onStart() {
super.onStart()
billingClient.startConnection(object : BillingClientStateListener {
override fun onBillingServiceDisconnected() {
viewModel.showToast("인 앱 결제 이용이 불가능 합니다. 다시 시도해 주세요.")
viewModel.setLoading(false)
}
override fun onBillingSetupFinished(billingResult: BillingResult) {
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
queryAndConsumeUnconsumedPurchases()
} else {
viewModel.showToast("인 앱 결제 이용이 불가능 합니다. 다시 시도해 주세요.")
viewModel.setLoading(false)
}
}
})
}
override fun onStop() {
super.onStop()
override fun onDestroy() {
billingClient.endConnection()
super.onDestroy()
}
private fun bindData() {
@ -171,6 +151,22 @@ class CanChargeIapFragment : BaseFragment<FragmentCanChargeIapBinding>(
.build()
loadingDialog.show(screenWidth)
billingClient.startConnection(object : BillingClientStateListener {
override fun onBillingServiceDisconnected() {
viewModel.showToast("인 앱 결제 이용이 불가능 합니다. 다시 시도해 주세요.")
viewModel.setLoading(false)
}
override fun onBillingSetupFinished(billingResult: BillingResult) {
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
queryAndConsumeUnconsumedPurchases()
} else {
viewModel.showToast("인 앱 결제 이용이 불가능 합니다. 다시 시도해 주세요.")
viewModel.setLoading(false)
}
}
})
}
@SuppressLint("NotifyDataSetChanged")
@ -219,7 +215,9 @@ class CanChargeIapFragment : BaseFragment<FragmentCanChargeIapBinding>(
if (purchaseList.isNotEmpty()) {
for (purchase in purchaseList) {
if (!purchase.isAcknowledged) {
consumePurchase(purchase)
consumePurchase(purchase) {
queryAvailableCans()
}
}
}
} else {
@ -229,14 +227,14 @@ class CanChargeIapFragment : BaseFragment<FragmentCanChargeIapBinding>(
}
}
private fun consumePurchase(purchase: Purchase) {
private fun consumePurchase(purchase: Purchase, onSuccess: () -> Unit) {
val params = ConsumeParams.newBuilder()
.setPurchaseToken(purchase.purchaseToken)
.build()
billingClient.consumeAsync(params) { billingResult, _ ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
queryAvailableCans()
onSuccess()
}
}
}
@ -251,15 +249,17 @@ class CanChargeIapFragment : BaseFragment<FragmentCanChargeIapBinding>(
selectedProductDetails = selectedProductDetails!!,
purchase = purchase
) { chargeCan ->
handler.post {
viewModel.showToast("캔이 충전되었습니다")
SharedPreferenceManager.can += chargeCan
consumePurchase(purchase) {
handler.post {
viewModel.showToast("캔이 충전되었습니다")
SharedPreferenceManager.can += chargeCan
if (activity != null) {
if (activity as? CanChargeActivity != null) {
(activity as CanChargeActivity).successIapCharge()
} else {
requireActivity().finish()
if (activity != null) {
if (activity as? CanChargeActivity != null) {
(activity as CanChargeActivity).successIapCharge()
} else {
requireActivity().finish()
}
}
}
}