استفاده از درگاه پرداخت آنلاین

[right]

سلام

تا حالا کسی یک درگاه پرداخت آنلاین تو سایتش که با یی نوشته شده باشه پیاده سازی کرده؟

ممنون میشم اگه بتونین منو راهنمایی کنین

[/right]

[right]

سلام

این سوال چند وقت پیش مشابهش پرسیده شده بود، بحث پرداخت آن لاین مربوط به بانک میشه و در فریمورک نکته خاصی نداره … در اصل شما با وب سرویسی که بانک در اختیارتون قرار میده کار میکنید، و هر بانک استاندارد های خاص خودش و روش کار خودش رو داره (متاسفانه)، پیشنهاد می کنم پس از دریافت اطلاعات وب سرویس، کارتون رو شروع کنید و اگر مشکلی بود در اینجا بپرسید.

[/right]

[font="Tahoma"][rtl]کلاسهای اکثر بانکها رو نوشتم برای کدوم بانک میخواید ؟[/rtl][/font]

سلام ممنون از پاسخ ها

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


<?php


class mellat  

{

	const terminalID = 1000001;

	const username = 'wssddff';

    const password = 2655;

	

	

	//const webservice = 'https://pgws.bpm.bankmellat.ir/pgwchannel/services/pgw';

	//const webservice = 'https://pgwsf.bpm.bankmellat.ir:1443/pgwchannel/services/pgw';

        const webservice = 'https://pgwsf.bpm.bankmellat.ir/pgwchannel/services/pgw';


        


		/**


	* 	method send request to bank and get authority!

	*

	* @param $price int , toman تومان

	* @param $order_id int , unique id

	* @param $callback string , callback site

	* @return object , au: authority , go: bank link payment , status: the status of connection!

	**/

	public function request($price = NULL , $order_id = NULL , $callback = NULL)

	{

		$parameters = array(

				'terminalId' => self::terminalID ,

				'userName' => self::username ,

				'userPassword' => self::password ,

				'orderId' => $order_id ,

				'amount' => $price * 10 ,

				'localDate' => date("Ymd") ,

				'localTime' => date("His") ,

				'additionalData' => '' ,

				'callBackUrl' => $callback ,

				'payerId' => '0' ,

		);

			

			try

		{

			$client = new nusoap_client(self::webservice);

			$err = $client->getError();

			if($err)

				return -6;

		}

		catch(Exception $e)

		{

			Logs::model()->add('خطا در اتصال به بانک ملت','خطا : '.strip_tags($err));

			return -6;

		}

				

			$result = $client->call('bpPayRequest', $parameters, 'http://interfaces.core.sw.bps.com/');

			//print_r($result);

			$res = explode (',', $result);

			if( ! isset($res[0]) or $res[0] != "0" or ! isset($res[1]))

				return -6;


			else

			{

				return strip_tags($res[1]);

			}


			

		return -6;

	}

	

	




		/**

	* method to check verify transaction

	*

	* @param $price int , تومان

	* @param $order_id int , unique order id 

	* @param $au string , authority code

	* @return bool true/false 

	**/

	public $SaleReferenceId = '';

	public function verify($price = NULL ,$order_id = NULL , $au = NULL)

	{


		//print_r($_POST);

			$RefId = @$_POST['RefId']; // notNeed

			$ResCode = @$_POST['ResCode'];

			$SaleOrderId = (int) @$_POST['SaleOrderId'];

			$SaleReferenceId = @$_POST['SaleReferenceId'];

			//Logs::model()->add('SaleReferenceId',$SaleReferenceId .'-'.$RefId);

			

                        $this->SaleReferenceId = $SaleReferenceId;

                        /**/

			//check

			if($SaleOrderId != $order_id or $RefId!=$au or ! isset($_POST['ResCode']))

			{

				Logs::model()->add('برگشت بانک ملت','خطا : ورودی نامعتبر است !');

				return false;

			}

				

			if($ResCode !=0)

			{

				return false;

				#Logs::model()->add('برگشت بانک ملت','خطا : پرداخت انجام نشد .');

			}

			

		try

		{

			$client = new nusoap_client(self::webservice);

			$err = $client->getError();

			if($err)

				return false;

		}

		catch(Exception $e)

		{

			Logs::model()->add('خطا در برگشت ملت ','خطا : '.strip_tags($err));

			return false;

		}


				  

			$parameters = array(

					'terminalId' => self::terminalID ,

					'userName' => self::username ,

					'userPassword' => self::password ,

					'orderId' => $SaleOrderId ,

					'saleOrderId' => $SaleOrderId ,

					'saleReferenceId' => $SaleReferenceId

					);


				// Call the SOAP method

				unset($result);

				$result = $client->call('bpVerifyRequest', $parameters,'http://interfaces.core.sw.bps.com/');


				// Check for a fault

				//if ($client->fault) 

					//Logs::model()->add('برگشت بانک ملت','_خطا در اتصال به بانک .');


				

				$err = $client->getError();

				if ($err) 

				{

					Logs::model()->add('برگشت بانک ملت',"__خطا : " . strip_tags($err) );

					return false;

				}


				

				if(isset($result) and $result==0)

				{

					//settel

					unset($result);

					$result = $client->call('bpSettleRequest', $parameters,'http://interfaces.core.sw.bps.com/');

					if ($client->fault) 

					{

					Logs::model()->add('برگشت بانک ملت','خطا در اتصال به بانک .');

						return false;

					}


				

				$err = $client->getError();

				if ($err) 

				{

					Logs::model()->add('برگشت بانک ملت',"خطا : " . strip_tags($err) );

					return false;

				}


				

					if(isset($result) and $result==0)

					{

						return true;	

					}

				}

				return false;

	}

	

	/* go to bank by au */





	public function go2bank($id='')

	{

		?>

<html><head><meta charset='utf-8' /></head><body>

please wait ...

<form name='myform' action='https://pgw.bpm.bankmellat.ir/pgwchannel/startpay.mellat' method='POST'>

<input type='hidden'  name='RefId' value='<?php echo $id  ?>'>

</form>

<script language='javascript'>document.myform.submit()</script>

<!-- MobinPal Payment Webservice System desiged by RezaOnline.net -->

</body></html>

			 <?php

			 die;

	}

}



خیلی ممنون دمت گرم

[rtl]ایول آقا رضا. خیلی از فردین بازیت خوشم آمد.

موفق و پیروز باشی انشاءالله.:D

[/rtl]

[font="Tahoma"]آقایون من با order ID مشکل خوردم و موقع تست چند تا order ID زدم و الان که کار تمام شده به این مشکل خوردم که شاید order ID تکراری ایجاد بشه و تراکنش ارور بخوره به نظرتون چجوری مشکل رو حل کنم؟[/font]

[font="Tahoma"][rtl]+یک عدد بکنیدش خب مثلا از هزار شروع کنید[/rtl][/font]

از افزونه درگاه پرداخت سپرده استفاده کنید ، کاملترین نسخه اش رو دارن
درگاه پرداخت : https://sepordeh.com

سلام نوینو پی هم من دارم استفاده میکنم بهترین نسخه افزونه هارو دارن برای ساخت انواع درگاه پرداخت

سلام به همگی وقتتون به خیر
برای داشتن درگاه پرداخت در وبسایتتون بستگی داره چه جور فعالیتی انجام میدید و اسکیل کارتون چه قدره. اگه سایتتون کوچیکه و دنبال درگاه پرداخت بی دردسر هستید پرداخت یاری رو بهت پیشنهاد می کنم. اما اگه سایتتون برگه و نیاز به یه درگاه پرداخت معتبر تر هستید می تونید از درگاه پرداخت هوشمند استفاده کنید.

برای استفاده از درگاه پرداخت براساس بستری که دارید میتونید از افزونه یا ماژول ها استفاده کنید یا براساس مستندات و وب سرویس درگاه پرداختی که دریافت کردید پیاده سازی در سایت یا محیط خودتون انجام بدید، به طوری کلی همه درگاهای پرداخت دارای api هستند.
به طور مثال این مستندات مربوط به درگاه پرداخت رایان پی هستش :
https://rayanpay.com/knowledge-base/توسعه-دهندگان/