diff --git a/app/src/main/java/com/iamport/sampleapp/ui/MobileWebViewModeFragment.kt b/app/src/main/java/com/iamport/sampleapp/ui/MobileWebViewModeFragment.kt index 602adfaa..139ce583 100644 --- a/app/src/main/java/com/iamport/sampleapp/ui/MobileWebViewModeFragment.kt +++ b/app/src/main/java/com/iamport/sampleapp/ui/MobileWebViewModeFragment.kt @@ -27,6 +27,7 @@ import java.util.* class MobileWebViewModeFragment : Fragment() { private var binding: WebViewModeFragmentBinding? = null + private var createdView = false override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -34,17 +35,22 @@ class MobileWebViewModeFragment : Fragment() { ): View? { Iamport.init(this) binding = WebViewModeFragmentBinding.inflate(inflater, container, false) + createdView = true return binding?.root } override fun onStart() { super.onStart() + if(!createdView) { + return + } // 모바일 웹 단독 모드 binding?.webview?.let { it.loadUrl(CONST.PAYMENT_MOBILE_WEB_FILE_URL) // it.loadUrl("https://www.iamport.kr/demo") // 아임포트 데모 페이지 Iamport.pluginMobileWebSupporter(it) // 로컬 데모 페이지 + createdView = false } binding?.normalmodeButton?.setOnClickListener { diff --git a/app/src/main/java/com/iamport/sampleapp/ui/WebViewModeFragment.kt b/app/src/main/java/com/iamport/sampleapp/ui/WebViewModeFragment.kt index 756a5c35..ef1420e0 100644 --- a/app/src/main/java/com/iamport/sampleapp/ui/WebViewModeFragment.kt +++ b/app/src/main/java/com/iamport/sampleapp/ui/WebViewModeFragment.kt @@ -31,7 +31,8 @@ import java.util.* class WebViewModeFragment : Fragment() { private var binding: WebViewModeFragmentBinding? = null - val viewModel: ViewModel by activityViewModels() + private val viewModel: ViewModel by activityViewModels() + private var request: IamPortRequest? = null override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -40,6 +41,7 @@ class WebViewModeFragment : Fragment() { Iamport.init(this) binding = WebViewModeFragmentBinding.inflate(inflater, container, false) // binding?.webview?.loadUrl("https://github.com/iamport/iamport-android") + request = viewModel.createIamPortRequest() return binding?.root } @@ -47,22 +49,24 @@ class WebViewModeFragment : Fragment() { super.onStart() // 웹뷰 모드 enable - Log.d("WebViewMode", "결제 요청!") - val userCode = viewModel.userCode - val request = viewModel.createIamPortRequest() + request?.let { request -> - binding?.webview?.let { + Log.d("WebViewMode", "결제 요청!") + binding?.webview?.let { - this.activity?.onBackPressedDispatcher?.addCallback(this, backPressCallback) + this.activity?.onBackPressedDispatcher?.addCallback(this, backPressCallback) - Log.d("WebViewMode", "iamport sdk webview mode? ${Iamport.isWebViewMode()}") - // 아임포트에 결제 요청하기 - Iamport.payment(userCode, webviewMode = it, iamPortRequest = request, paymentResultCallback = { it -> - // 결제 완료 후 결과 콜백을 토스트 메시지로 보여줌 + Log.d("WebViewMode", "iamport sdk webview mode? ${Iamport.isWebViewMode()}") + // 아임포트에 결제 요청하기 + Iamport.payment(userCode, webviewMode = it, iamPortRequest = request, paymentResultCallback = { it -> + // 결제 완료 후 결과 콜백을 토스트 메시지로 보여줌 // Toast.makeText(this.context, "결제결과 => $it", Toast.LENGTH_LONG).show() - callBackListener.result(it) - }) + callBackListener.result(it) + }) + + this.request = null // reload 방지 + } } binding?.normalmodeButton?.setOnClickListener { diff --git a/sdk/src/main/assets/mobileweb.html b/sdk/src/main/assets/mobileweb.html index d09809e8..65d7e0de 100644 --- a/sdk/src/main/assets/mobileweb.html +++ b/sdk/src/main/assets/mobileweb.html @@ -84,7 +84,7 @@
IMP.request_pay(data, function(response) { console.log(response); - alert(`${response}`) + alert(JSON.stringify(response)) }); } @@ -101,7 +101,7 @@ IMP.certification(data, function(response) { console.log(response); - alert(`${response}`) + alert(JSON.stringify(response)) }); } diff --git a/sdk/src/main/java/com/iamport/sdk/domain/core/Iamport.kt b/sdk/src/main/java/com/iamport/sdk/domain/core/Iamport.kt index 7d26e09e..9524f9a5 100644 --- a/sdk/src/main/java/com/iamport/sdk/domain/core/Iamport.kt +++ b/sdk/src/main/java/com/iamport/sdk/domain/core/Iamport.kt @@ -183,6 +183,7 @@ object Iamport { // webview 사용 모드 fun enableWebViewMode(webview: WebView) { + d("enableWebViewMode $webview") iamportSdk?.enableWebViewMode(webview) } diff --git a/sdk/src/main/java/com/iamport/sdk/domain/strategy/base/JudgeStrategy.kt b/sdk/src/main/java/com/iamport/sdk/domain/strategy/base/JudgeStrategy.kt index 86d9fafe..46fb9b5d 100644 --- a/sdk/src/main/java/com/iamport/sdk/domain/strategy/base/JudgeStrategy.kt +++ b/sdk/src/main/java/com/iamport/sdk/domain/strategy/base/JudgeStrategy.kt @@ -130,7 +130,7 @@ class JudgeStrategy : BaseStrategy(), IamportKoinComponent { return when (user.pg_provider?.let { PG.convertPG(it) }) { PG.chai -> { if (ignoreNative) { // ignoreNative 인 경우 webview strategy 가 동작하기 위하여 - Triple(JudgeKinds.WEB, user, payment) + return Triple(JudgeKinds.WEB, user, payment) } Triple(JudgeKinds.CHAI, user, payment) }