آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

درگاه بانک ملت و اندروید آموزش کامل 29 تیر ماه

احمد  7 سال پیش  5 سال پیش
+4 0

سلام من داخل برنامه یه وب ویو دارم که وصل میشه به درگاه پرداخت هم انجام میشه اما نتونستم تابع اندروید را صدا بزنم که وب ویو بسته بشه یا Toast بده اینم کد: (درگاه پرداخت بانک ملت) 

قسمت html فایل را از پروژه استاد برداشتم

کد فایل php:

 <?php
require_once('nusoap.php');
require_once('config.php');
echo '<link href="style.css" rel="stylesheet">';
class bank_mellat
{
    private  $namespace    
    private  $terminalId   
private $userName private $userPassword public function pay($name,$email,$amount,$tozihat) { global $connect; $client = new nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl'); $error = $client->getError(); if($error) { echo 'اتصال به درگاه بانک امکان پذیر نمی باشد لطفا دوباره تلاش کنید'; die(); } $orderId=time(); $parameters = array ( 'terminalId' =>$this->terminalId, 'userName' => $this->userName, 'userPassword' =>$this->userPassword, 'orderId' =>$orderId, 'amount' =>$amount, 'localDate' =>date("Ymd"), 'localTime' =>date("His"), 'additionalData' =>'خرید محصول', 'callBackUrl' =>'http://pay.site.ir/callback.php', 'payerId' => '0' ); $result =$client->call('bpPayRequest', $parameters,$this->namespace); $res = @explode (',',$result); if($res[0]=="0") { $query=$connect->prepare("INSERT INTO `pay` (`pay_amount`,`RefId`,`ResCode`,`OrderId`,`email`,`user_name`,`tozihat`) VALUES (?,?,?,?,?,?,?);"); $query->execute(array($amount,$res[1],'0',$orderId,$email,$name,$tozihat)); echo '<script type="text/javascript">postRefId("'.$res[1].'");</script>'; } else { echo 'اتصال به درگاه بانک امکان پذیر نمی باشد لطفا دوباره تلاش کنید'; die(); } } public function Verify($SaleOrderId,$SaleReferenceId) { global $connect; $client =new nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl'); $error = $client->getError(); if($error) { echo '<p style="color:red;padding-top:95px;">اتصال به درگاه بانک امکان پذیر نمی باشد لطفا دوباره تلاش کنید</p>'; echo '<a href="index.php">بازگشت به صفحه اصلی</a>'; die(); } $parameters = array ( 'terminalId' =>$this->terminalId, 'userName' => $this->userName, 'userPassword' => $this->userPassword, 'orderId' => $SaleOrderId, 'saleOrderId' => $SaleOrderId, 'saleReferenceId' => $SaleReferenceId ); $VerifyAnswer = $client->call('bpVerifyRequest', $parameters, $this->namespace); if($VerifyAnswer == '0' || $VerifyAnswer=='43') { $SetlleAnswer= $client->call('bpSettleRequest', $parameters, $this->namespace); $query=$connect->prepare("UPDATE `pay` SET `ResCode` = ? ,`SaleReferenceId` = ? WHERE `pay`.`OrderId` = ?;"); $query->execute(array('1',$SaleReferenceId,$SaleOrderId)); $this->message($SaleOrderId); } else { $this->Inquiry($SaleOrderId,$SaleReferenceId); } } public function Inquiry($SaleOrderId,$SaleReferenceId) { global $connect; $client =new nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl'); $parameters = array ( 'terminalId' =>$this->terminalId, 'userName' => $this->userName, 'userPassword' => $this->userPassword, 'orderId' => $SaleOrderId, 'saleOrderId' => $SaleOrderId, 'saleReferenceId' => $SaleReferenceId ); $InquiryAnswer=$client->call('bpInquiryRequest', $parameters,$this->namespace); if($InquiryAnswer=='0') { $SetlleAnswer= $client->call('bpSettleRequest', $parameters, $this->namespace); $query=$connect->prepare("UPDATE `pay` SET `ResCode` = ? ,`SaleReferenceId` = ? WHERE `pay`.`OrderId` = ?;"); $query->execute(array('1',$SaleReferenceId,$SaleOrderId)); $this->message($SaleOrderId); } else { $result=$client->call('bpReversalRequest', $parameters, $this->namespace); echo 'مبلغ واریز شده تا پایان روز جاری به حساب شما برگشت داده خواند شد'; } } public function message($SaleOrderId) { global $connect; $sql=$connect->prepare('SELECT * FROM pay where OrderId=?'); $sql->execute(array($SaleOrderId)); $fetch=$sql->fetch(); ?> <table style="margin:50px auto;"> <tr> <td>واریز کننده : </td> <td style="padding-right:10px;"> <?php echo $fetch['user_name'] ?></td> </tr> <tr style="padding-top:10px;"> <td>شماره تراکنش : </td> <td style="padding-right:10px;"> <?php echo $fetch['OrderId']; ?> </td> </tr> <tr style="padding-top:10px;"> <td>مبلغ واریز : </td> <td style="padding-right:10px;"> <?php echo $fetch['pay_amount'] ?> ریال</td> </tr> </table> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link href="style.css" rel="stylesheet"> <title>test</title> <script> function raiseAlert() { alert("Hello! I am an alert box!"); } </script> </head> <body> <br /> <br /> <span class="button-red" onclick="raiseAlert()">Click Me!</span> <br /> <br /> <span class="button-red" onclick="Helper.sampleMethod('hello from web')">Click Me To Toast!</span> <br /> <br /> <span class="button-red" onclick="Helper.finishCurrentActivity()">Click Me To Close!</span> </body> </html> <?php } }
 

بخش آندروید هم: 

public class ActivityPayment extends ActivityEnhanced {

	WebView webViewpay;

	@SuppressLint({ "NewApi", "JavascriptInterface", "SetJavaScriptEnabled" })
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_payment);

		try {
			HelperUI.persianizer((ViewGroup) getWindow().getDecorView());
			String amount = getIntent().getExtras().getString("amount");
			final String url = "http://pay.site.ir/?amount=1000";
			webViewpay = (WebView) findViewById(R.id.webViewpay);

			WebSettings settings = webViewpay.getSettings();
			settings.setAppCacheEnabled(true);
			settings.setBuiltInZoomControls(true);
			settings.setJavaScriptEnabled(true);
			settings.setDomStorageEnabled(true);
			if (Build.VERSION.SDK_INT >= 21) {
				settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
			}
			webViewpay.setWebViewClient(new MyWebViewClient());
			webViewpay.setWebChromeClient(new WebChromeClient());
			webViewpay.addJavascriptInterface(new SampleJavaScriptInjections(),
					"Helper");
			this.runOnUiThread(new Runnable() {
				@Override
				public void run() {
					webViewpay.loadUrl(url);
				}
			});
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public class SampleJavaScriptInjections {

		public void sampleMethod(String message) {
			Toast.makeText(G.context, message, Toast.LENGTH_SHORT).show();
		}


		public void finishCurrentActivity() {
			finish();
		}
	}
	private class MyWebViewClient extends WebViewClient {

		@Override
		public void onReceivedSslError(WebView view, SslErrorHandler handler,
				SslError error) {
			handler.proceed();
		}
	}

	@Override
	protected void onResume() {
		super.onResume();
		try {
			HelperUI.persianizer((ViewGroup) getWindow().getDecorView());
		} catch (Exception e) {
			Log.i(G.APP_LOG, "Error in set font");
		}
	}

}
 
0 0
کسی نمی دونه خیلی فوریه (7 سال پیش)
0 0
سوالتون واضح نیست ، لطفا در رابطه با سوال بیشتر توضیح بدید . (7 سال پیش)
0 0
من می خوام متغییر $code که حاوی کد رهگیری هست را به تابع اندروید پاس بدم من مسال استاد را انجام دادم اما اون با رشته ثابت هست و html اما فایل من php هستش . این تیکه کد را که در بالا نوشتم را داخلش قرار دادم اما مقدار کد به تابع اندروید ارسال نمیشه (7 سال پیش)
0 0
می تونم فایل php را براتون ایمیل کنم ببینید من فقط می خوام کد رهگیری به برنامه اندروید برگرده از وب ویو کل پروژه تکمیل فقط نمی دونم چطوری اینو انجام بدم (7 سال پیش)
+1 0
اگر دستور PHP رو توی فایل PHP داخل برنامه قرار دادید به طور کلی کار ایراد فنی داره اما اگر فایل php رو سرور هست و کار نمیکنه ، باید خطایابی سمت سرور انجام بشه . (7 سال پیش)
+1 0
آیا بعد از فشردن دکمه متدی که در اندروید نوشتید صدا زده میشه ؟ (7 سال پیش)
0 0
نه تنها مشکل هم همینه فقط کافیه کد رهگیری از php گرفته بشه و toast بشه (7 سال پیش)
0 0
دستور php را بردارید و یکبار با عددی که دستی وارد میکنید تست کنید . (7 سال پیش)
0 0
. (7 سال پیش)
0 0
نمیشه به شکل JSON کد رهگیری رو برای اندروید بفرستید؟ (7 سال پیش)
0 0
چطوری وب ویو را ببندم اون وقت مجبورم از دکمه back استفاده کنم که نمیشه (7 سال پیش)
0 0
اگه تونستین حل کنین آموزش و در صورت امکان سورس کد مربوط به همین قسمت رو قرار بدین (7 سال پیش)
0 0
اگه آموزش بزارین که بسیار عالی میشه (7 سال پیش)
0 0
نیکی و پرسش :-) ممنون میشیم بذارید (7 سال پیش)
0 0
آموزش به زودی به روز میشه :) (6 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
مسعود کریمی نژاد  7 سال پیش
0 0

این لینک شاید کمکت کنه.

+2 0
حل شد به زودی آموزشش را میزارم (7 سال پیش)
0 0
اگه آموزش بذاری ک خدا خیرت بده (7 سال پیش)
0 0
آموزش 0 تا 100 ـش رو بزار برامون . دستت درد نکنه (7 سال پیش)
0 0
من خیلی بهش نیاز دارم اگه لطف کنی اموزشش رو بزاری خیلی اقایی کردی (7 سال پیش)
0 0
خوبه اگه آموزش هم بزارید (7 سال پیش)
0 0
اگه آموزش بزارین واقعا عالی میشه چون تو خیلی پروژه ها لازم میشه برای بسیاری از دوستان (7 سال پیش)
پاسخ به سوال 
احمد  7 سال پیش
+4 0

من روی فایل های خودم توضیح میدم شما می تونید تغییر بدین فقط چون من بخش امنیت php را کار نکردم هنوز این بخشش را خیلی دقت کنید و امنش کنید

قسمت php:  روی هاست پوشه ای با نام pay بسازید بعد از اون یک زیر دامنه (subdomain) درست کنید و به این پوشه وصل کنید. مثلا اگر زدیم  pay.mysite.ir فایل index موجود در فولدر pay نمایش داده بشه

اما لیست فایل های این پوشه style.css و nusoap.php و location.php و index.php و config.php و callback.php و bank_mellat.php

فایل index.php: این فایل برای دریافت اطلاعات مشتری هستش که من مبلغ را توسط برنامه اندروید براش میفرستم

 <html>
<head>
    <meta charset="UTF-8">
    <title>درگاه بانک ملت</title>
    <link href="style.css" rel="stylesheet">
</head>
<body>

<div  style="height:400px;width:550px;margin:200px auto;font-size:16px;color:black;background:white;border-radius:5px;">

    <div style="font-family:BYekan;">
        <p style="color:red;padding-top:15px;padding-right:25px;">فرم پرداخت</p>
        <form method="post" action="location.php">
            <table>
                <tr>
                    <td style="font-family:MITRA;padding-right:30px;padding-top:10px;">نام و نام خانوادگی : </td>
                    <td><input type="text"  name="name"  style="width:300px;margin-left:10px;"></td>
                </tr>
                <tr>
                    <td style="font-family:MITRA;padding-right:30px;padding-top:10px;">ایمیل : </td>
                    <td><input type="text"  name="email"  style="width:300px;margin-left:10px;"></td>
                </tr>

                <tr>
                    <td style="font-family:MITRA;padding-right:30px;padding-top:10px;">مبلغ : </td>
                    <td><input type="text"  name="amount" id="amount"  value="<?php echo $_REQUEST['amount']; ?>"style="width:300px;margin-left:10px;"> <span style="font-family:MITRA;">ریال</span></td>
                    
                </tr>

                <tr>
                    <td style="font-family:MITRA;padding-right:30px;padding-top:10px;">توضیحات : </td>
                    <td><textarea name="tozihat" id="tozihat" style="width:370px;resize:none;"></textarea></td>
                </tr>

                <tr>
                    <td colspan="2"><input type="submit" value="پرداخت" style="margin-right:25px;margin-top:18px;"><span id="message"></span></td>
                </tr>
            </table>
        </form>

    </div>

</body>
</html>

پس از کلیک روی دکمه پرداخت به صفحه location.php منتقل میشین که فایل بانک ملت را فراخوانی می کنه برای دریافت یک شناسه منحصر به فرد بانکی برای عملیات پرداخت

 <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Please wait...</title>
<style>
    *
    {
        margin:0px;
        padding:0px;
    }
    body
    {
        direction:rtl;
        background-color:#289edb;
        font-family:MITRA;
    }
    @font-face
    {
        font-family:'MITRA';
        src:url('font/MITRA.ttf') format('truetype');
    }
    .msg
    {
        width: 500px;
        height:200px;
        text-align:center;
        background-color:white;
        margin:150px auto;
        border-radius:5px;
    }
</style>
    <script>
        function postRefId(refIdValue)
        {
            var form = document.createElement("form");
            form.setAttribute("method", "POST");
            form.setAttribute("action", "https://bpm.shaparak.ir/pgwchannel/startpay.mellat");
            form.setAttribute("target", "_self");
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("name", "RefId");
            hiddenField.setAttribute("value", refIdValue);
            form.appendChild(hiddenField);
            document.body.appendChild(form);
            form.submit();
            document.body.removeChild(form);
        }
    </script>
</head>
<body>


<div class="msg">

    <p style="padding-top:80px;font-size:18px;padding-bottom:15px;">در حال انتقال به صفحه پرداخت بانکی ...کمی صبر کنید</p>

    <?php
    require_once('bank_mellat.php');

    $bank_mellat=new bank_mellat();
    $bank_mellat->pay($_POST['name'],$_POST['email'],$_POST['amount'],$_POST['tozihat']);
    ?>

</div>

</body>
</html>

 

ادامه دارد  دانلود فایل ها و دیتابیس

+3 0
ادامش چی شد؟ (7 سال پیش)
0 0
ادامه ندارد؟ (6 سال پیش)
0 0
تمامی مراحل شما میگریم درست باشند ایا ی بار برای api بالای 17 کامپایل کردید؟ نتیجه چی شد ؟ ممنون (6 سال پیش)
+1 0
بله تمام نسخه ها جواب میده (6 سال پیش)
+1 0
لینک دریافت فایل ها متاسفانه کار نمی کنه. لطفا به روزش کنید (5 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .