+2 امتیاز
قبل در برنامه نویسی توسط (193 امتیاز)
ویرایش شده قبل توسط

من میخواهم در برنامه از طریق webView  صفحه ی سایت را نمایش دهم

این صفحه یه دکمه دارد که با زدن آن کاربر کالای مورد نظر خود را برای خرید انتخاب کرده (به سبد خرید اضافه میکند) و بعد از زدن دکمه ی خرید صفحه ی پرداخت بانک ملت نمایش داده میشود. کاربر مشخصات کارت را وارد کرده و پرداخت را میزند

این صفحه یک شماره تراکنش برمی گرداند که در browser کامپیوتر به صورت یک دیالوگ به کاربر نمایش داده میشود

من از طریق اپلیکیشن اندروید و webView چطور می توانم این شماره تراکنش را بگیرم؟

لازم به ذکر است که سایت با wordpress طراحی شده و عملیات خرید در سایت از طریق افزونه Easy Digital Download و افزونه درگاه پرداخت بانک ملت صورت میگیرد. 

صفحاتی که نمایش داده میشود :

1 - http://myDomain.com/?page_id=7 (در این صفحه یک دکمه برای شروع عملیات وجود دارد)

2 - http://myDomain.com/?page_id=9 (صفحه ی مربوط به اضافه کردن کالا به سبد خرید)

3 - https://bpm.shaparak.ir/pgwchannel/payment.mellat?RefId=B1775565BDB9328C (صفحه ی پرداخت بانک)

4 - وقتی عملیات خرید با موفقیت انجام شد شماره تراکنش به صورت یک دیالوگ به کاربر نشان داده میشود و با تایید کاربر به صفحه ی تایید پرداخت هدایت میشود

5 - http://myDomain.com/?page_id=10 (صفحه ی تایید پرداخت که لینک دانلود فعال شده در این صفحه وجود دارد ولی شماره تراکنش در این صفحه نیست)

متاسفانه چون مجبور به استفاده از این افزونه ها هستم امکان حذف یا تغییر در روند نمایش این صفحات نیستم.

از دستورات زیر استفاده کرده ام اما موفق نشده ام شماره تراکنش را به دست آورم 

@Override
public boolean shouldOverrideUrlLoading(WebView v, String url) {
if (url.startsWith("http://myDomain.com/?page_id=10")) {
  Toast.makeText(context, "ok", Toast.LENGTH_LONG).show();
  v.loadUrl(url);
} else if (
  url.startsWith("https://bpm.shaparak.ir/pgwchannel/")) {
  URL url2;
  URLConnection conexion;
  try {
   url2 = new URL(url);
   conexion = url2.openConnection();
   conexion.setConnectTimeout(3000);
   conexion.connect();
   int size = conexion.getContentLength();
   } catch (Exception e) {
   }
   new getResponsTask().execute(url);

   } else {
    v.loadUrl(url);
  }

return true;

}
@Override
public void onPageFinished(WebView view, String url) {
if (url.startsWith("https://bpm.shaparak.ir/pgwchannel/")) { 
Toast.makeText(context, "bank page finished
",
       Toast.LENGTH_LONG).show();

o}

1 پاسخ

+1 امتیاز
قبل توسط (193 امتیاز)
 
بهترین پاسخ

با استفاده از دستور زیر میتوان شماره تراکنش دریافتی را نمایش داد

webView.setWebChromeClient(new WebChromeClient() {
			@Override
			public boolean onJsAlert(WebView view, String url,
					final String message, final JsResult result) {

				Log.w("onJsAlert", "url :" + url + " message " + message);

				// handle Alert event, here we are showing AlertDialog
				new AlertDialog.Builder(WebPaymentActivity.this)
						.setTitle(R.string.transactionIdMessage)
						.setMessage(message)
						.setPositiveButton(android.R.string.ok,
								new AlertDialog.OnClickListener() {
									@Override
									public void onClick(DialogInterface dialog,
											int which) {
										result.confirm();
										String[] str = message.split(":");
										String transNumber = str[0].trim();
									}
								}).setCancelable(false).create().show();
				return true;
			}
		});

 

سوال شده 9 سال قبل در برنامه نویسی توسط (59 امتیاز)
ویرایش شده 9 سال قبل توسط
گرفتن نتیجه از وب ویو در برنامه نویسی اندروید

سوالات مشابه

0 امتیاز
0 پاسخ 783 بازدید
0 امتیاز
0 پاسخ 4.5هزار بازدید
+1 امتیاز
0 پاسخ 496 بازدید
0 امتیاز
0 پاسخ 876 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط hldv (760 امتیاز)
...