| @ -0,0 +1,187 @@ | |||||
| package com.nivesh.production.niveshfd.ui.activity | |||||
| import android.app.Dialog | |||||
| import android.graphics.Bitmap | |||||
| import android.os.Bundle | |||||
| import android.util.Log | |||||
| import android.view.View | |||||
| import android.view.WindowManager | |||||
| import android.webkit.WebView | |||||
| import android.webkit.WebViewClient | |||||
| import android.widget.TextView | |||||
| import androidx.core.content.ContextCompat | |||||
| import androidx.lifecycle.ViewModelProvider | |||||
| import com.google.gson.Gson | |||||
| import com.nivesh.production.niveshfd.R | |||||
| import com.nivesh.production.niveshfd.api.ApiClient | |||||
| import com.nivesh.production.niveshfd.databinding.FragmentNiveshfdStepFiveBinding | |||||
| import com.nivesh.production.niveshfd.db.PreferenceManager | |||||
| import com.nivesh.production.niveshfd.model.PaymentReQueryRequest | |||||
| import com.nivesh.production.niveshfd.model.PaymentReQueryResponse | |||||
| import com.nivesh.production.niveshfd.repositories.MainRepository | |||||
| import com.nivesh.production.niveshfd.ui.providerfactory.FDModelProviderFactory | |||||
| import com.nivesh.production.niveshfd.util.Common | |||||
| import com.nivesh.production.niveshfd.util.Constants | |||||
| import com.nivesh.production.niveshfd.util.ProgressUtil | |||||
| import com.nivesh.production.niveshfd.util.Resource | |||||
| import com.nivesh.production.niveshfd.viewModel.BajajFDViewModel | |||||
| class PaymentActivity : BaseActivity() { | |||||
| lateinit var binding: FragmentNiveshfdStepFiveBinding | |||||
| var dialogWebView: Dialog? = null | |||||
| lateinit var viewModel: BajajFDViewModel | |||||
| var clientCode : String = "" | |||||
| var uniqueId : String = "" | |||||
| override fun onCreate(savedInstanceState: Bundle?) { | |||||
| super.onCreate(savedInstanceState) | |||||
| viewModel = ViewModelProvider( | |||||
| this@PaymentActivity, | |||||
| FDModelProviderFactory(MainRepository(ApiClient.getApiClient)) | |||||
| )[BajajFDViewModel::class.java] | |||||
| binding = FragmentNiveshfdStepFiveBinding.inflate(layoutInflater) | |||||
| binding.btnViewOrder.setOnClickListener { | |||||
| (this@PaymentActivity).setResult(RESULT_OK) | |||||
| (this@PaymentActivity).finish() | |||||
| } | |||||
| binding.tvRetry.setOnClickListener { | |||||
| (this@PaymentActivity).setResult(RESULT_OK) | |||||
| (this@PaymentActivity).finish() | |||||
| } | |||||
| if (intent != null){ | |||||
| clientCode = intent.getStringExtra("clientCode").toString() | |||||
| paymentDialog(intent.getStringExtra("url").toString(), intent.getStringExtra("value").toString()) | |||||
| } | |||||
| } | |||||
| fun paymentDialog(payUrl: String, value: String) { | |||||
| Log.e("payUrl", "-->$payUrl") | |||||
| Log.e("value", "-->$value") | |||||
| dialogWebView = Dialog(this@PaymentActivity) | |||||
| dialogWebView!!.setContentView(R.layout.row_fd_pay1) | |||||
| dialogWebView!!.setCancelable(true) | |||||
| val tvCancel = dialogWebView!!.findViewById<TextView>(R.id.tvCancel) | |||||
| tvCancel.setOnClickListener { | |||||
| dialogWebView!!.dismiss() | |||||
| (this@PaymentActivity).setResult(RESULT_OK) | |||||
| (this@PaymentActivity).finish() | |||||
| } | |||||
| val lp = WindowManager.LayoutParams() | |||||
| lp.copyFrom(dialogWebView!!.window?.attributes) | |||||
| lp.width = WindowManager.LayoutParams.MATCH_PARENT | |||||
| lp.height = WindowManager.LayoutParams.MATCH_PARENT | |||||
| dialogWebView!!.window?.attributes = lp | |||||
| val wVPay = dialogWebView!!.findViewById<WebView>(R.id.wVPay) | |||||
| wVPay.settings.javaScriptEnabled = true | |||||
| wVPay.settings.domStorageEnabled = true | |||||
| wVPay.loadData( | |||||
| "<form name=\"frm\" action=\"$payUrl\" method=\"post\"> \n" + " <input type=\"hidden\" name=\"msg\" value=\"$value\"> \n" + " </form> \n" + | |||||
| "<script type=\"text/javascript\"> \n" + "document.forms[\"frm\"].submit(); \n" + "</script>", | |||||
| "text/html", | |||||
| "UTF-8" | |||||
| ) | |||||
| wVPay.webViewClient = object : WebViewClient() { | |||||
| override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) { | |||||
| super.onPageStarted(view, url, favicon) | |||||
| Log.e("onPageStarted", "-->$url") | |||||
| if (url.isNotEmpty() && url.contains(Constants.paymentUrl)) { | |||||
| if (dialogWebView!!.isShowing) { | |||||
| dialogWebView!!.dismiss() | |||||
| paymentReQueryApi() | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| dialogWebView!!.show() | |||||
| } | |||||
| fun paymentReQueryApi() { | |||||
| if (Common.isNetworkAvailable(this)) { | |||||
| val paymentReQueryRequest = PaymentReQueryRequest() | |||||
| paymentReQueryRequest.UniqueId = uniqueId | |||||
| paymentReQueryRequest.NiveshClientCode = clientCode | |||||
| ProgressUtil.showLoading(this@PaymentActivity) | |||||
| viewModel.getPaymentReQuery( | |||||
| paymentReQueryRequest, | |||||
| PreferenceManager(this@PaymentActivity).getToken(), | |||||
| this | |||||
| ) | |||||
| viewModel.getPaymentReQueryMutableData.observe(this) { response -> | |||||
| when (response) { | |||||
| is Resource.Success -> { | |||||
| Log.e("paymentReQueryApi ", "response -->$response") | |||||
| val paymentReQueryResponse: PaymentReQueryResponse = | |||||
| Gson().fromJson( | |||||
| response.data?.toString(), | |||||
| PaymentReQueryResponse::class.java | |||||
| ) | |||||
| paymentReQueryResponse.Response.StatusCode.let { code -> | |||||
| when (code) { | |||||
| 650 -> "" | |||||
| else -> { | |||||
| getData(paymentReQueryResponse) | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| is Resource.Error -> { | |||||
| response.message?.let { message -> | |||||
| Common.showDialogValidation(this@PaymentActivity, message) | |||||
| } | |||||
| } | |||||
| is Resource.Loading -> { | |||||
| ProgressUtil.hideLoading() | |||||
| } | |||||
| is Resource.DataError -> { | |||||
| } | |||||
| else -> { | |||||
| Common.showDialogValidation(this@PaymentActivity, response.message) | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| fun getData(paymentReQueryResponse: PaymentReQueryResponse) { | |||||
| if (paymentReQueryResponse.Response.StatusCode == 200) { | |||||
| if (paymentReQueryResponse.Response.Message.isNotEmpty()) { | |||||
| val arrOfStr: List<String> = | |||||
| paymentReQueryResponse.Response.Message.split(" ", limit = 2) | |||||
| binding.tvCongrats.text = arrOfStr[0] | |||||
| binding.tvCongrats.setTextColor( | |||||
| ContextCompat.getColor( | |||||
| this@PaymentActivity, | |||||
| R.color.green | |||||
| ) | |||||
| ) | |||||
| binding.tvSuccessMessage.text = arrOfStr[1] | |||||
| } | |||||
| } else { | |||||
| if (paymentReQueryResponse.Response.Message.isNotEmpty()) { | |||||
| if (paymentReQueryResponse.Response.Message.isNotEmpty()) { | |||||
| binding.tvCongrats.text = paymentReQueryResponse.Response.Status | |||||
| binding.tvCongrats.setTextColor( | |||||
| ContextCompat.getColor( | |||||
| this@PaymentActivity, | |||||
| R.color.red | |||||
| ) | |||||
| ) | |||||
| binding.tvSuccessMessage.text = paymentReQueryResponse.Response.Message | |||||
| } | |||||
| } | |||||
| binding.tvRetry.visibility = View.VISIBLE | |||||
| binding.btnViewOrder.visibility = View.GONE | |||||
| } | |||||
| } | |||||
| } | |||||
Powered by TurnKey Linux.