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