| @ -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.