PDA

View Full Version : سوال: خطا در هنگام برگشت به صفحه از دروازه پرداخت پارسيان



sadeghkhafan
سه شنبه 21 دی 1389, 17:39 عصر
سلام به همگي

من سرويس پرداخت پارسيان را در فروشگاه خود فعال كرده ام ، خروجيش درست هست و كامل ميره ولي وقتي ميخواد از خود صفحه بانك به فروشگاه برگرده ، ارور زير رو ميده :

Fatal error: Call to undefined function ordGetordIDbyRefnum() in /home/cgpersi/public_html/scg/includes/parsian.php on line 19

فايل parsian.php هم اينجا قرار ميدم.( در واقع 2 تا فايل هست يكي واسه خروجي يكي واسه ورودي ، اين ورودي مشكل داره )

<?php

// show aux page

if ( isset($_GET['parsian'] ))
{
if (isset($_GET['modID']) && isset($_GET['au']) && isset($_GET['pay'])) {


$modID = $_GET['modID'];
$rs = $_GET['pay'];
$authority = $_GET['au'];
$orderID = ordGetordIDbyRefnum($authority);
$q = db_query("SELECT * FROM ".SETTINGS_TABLE." WHERE settings_constant_name='CONF_PAYMENTMODULE_PARSIAN _MERCHANT_ACCOUNT_$modID'");
$res = db_fetch_row($q);
$comStatID = _getSettingOptionValue('CONF_COMPLETED_ORDER_STATU S');


if(!empty($res['settings_value'])){
$mid = $res['settings_value'];
}else{
Redirect( "index.php" );
}


$order =_getOrderById($orderID);

if($rs == '1?rs=0' && $order['StatusID'] != $comStatID){


if ($orderID) {



$amount = $order['order_amount'];
$soapclient = new nusoap_client('https://www.pec24.com/pecpaymentgateway/eshopservice.asmx?wsdl','wsdl');

if ( (!$soapclient) OR ($err = $soapclient->getError()) ) {
// this is unsucccessfull connection
$body = "<br />" . $err . "<br />" ;

} else
{
$status = 1 ; // default status
$params = array(
'pin' => $mid , // this is our PIN NUMBER
'authority' => $authority,
'status' => $status ) ; // to see if we can change it
$sendParams = array($params) ;
$res = $soapclient->call('PinPaymentEnquiry', $sendParams);
$status = $res['status'];

if ($status==0) {
// this is a succcessfull payment

$pininfo = ostSetOrderStatusToOrder($orderID, $comStatID, 'Your Online Payment with PARSIAN BANK gateway accepted', 1);

$body = STR_SHETAB_THANKS.'<br>';
$body .= STR_SHETAB_REFNUM.': '.$authority.'<br>';
$body .= $pininfo;
// echo 'SUCSSESSFULL STATUS IS====>'.$status;


} else {
// echo 'HERE IS ELSE';
// this is a UNsucccessfull payment
ostSetOrderStatusToOrder($orderID, 1);
$body = ERROR_SHETAB_19;
// echo 'STATUS WITH SOAP NOT 0 STATUS IS====>'.$status;
}

}

}
else {
$body = ERROR_SHETAB_19;
// echo 'NO ORDERID';
}



}else {
if ($orderID) {
ostSetOrderStatusToOrder($orderID, 1);
}
$body = ERROR_SHETAB_19;
// echo 'URL RS NOT 0';
// echo 'ORDER IS COMPLETED';

}


$smarty->assign("page_body", $body );
$smarty->assign("main_content_template", "parsian.tpl.html" );
}
else
{
$smarty->assign("main_content_template", "page_not_found.tpl.html" );
}
}

?>


ممنون ميشم راهنمايي كنيد.

fcsooti
چهارشنبه 22 دی 1389, 06:40 صبح
تابع ordGetordIDbyRefnum تعریف نشده و خطا هم برای همین می ده

sadeghkhafan
چهارشنبه 22 دی 1389, 10:21 صبح
آخه مشكل اينجاست تعريف شده. اما نمي شناسه !
يعني الان چكار بايد كرد !؟

من حتي يك ماژول ساده بانك پارسيان رو كه قيمت رو وارد ميكني و ميره توي صفحه پرداخت رو هم تست كردم . اونم ارور ميزنه خطاي نامشخص [st:1] فكر كنم مشكل از خود پارسيان باشه.

fcsooti
چهارشنبه 22 دی 1389, 12:57 عصر
آخه مشكل اينجاست تعريف شده. اما نمي شناسه !
يعني الان چكار بايد كرد !؟

من حتي يك ماژول ساده بانك پارسيان رو كه قيمت رو وارد ميكني و ميره توي صفحه پرداخت رو هم تست كردم . اونم ارور ميزنه خطاي نامشخص [st:1] فكر كنم مشكل از خود پارسيان باشه.
کجای کد این تابع تعریف شده؟ تو این کدی که گذاشتی نه فایل دیگه ای اینکلود شده و نه تابع تعریف شده.

sadeghkhafan
چهارشنبه 22 دی 1389, 15:20 عصر
خب من الان بايد چكار كنم ؟! :افسرده:

fcsooti
چهارشنبه 22 دی 1389, 15:38 عصر
الان باید تایع ordGetordIDbyRefnum رو براش تعریف کنی.

sadeghkhafan
چهارشنبه 22 دی 1389, 18:05 عصر
خب من الان مشكلم اين هست كه چطوري تعريفش كنم اصلا قاطي كردم الان $orderID خروجي ID سفارش بود يا ID تراكنش ؟!

fcsooti
چهارشنبه 22 دی 1389, 18:42 عصر
خب من الان مشكلم اين هست كه چطوري تعريفش كنم اصلا قاطي كردم الان $orderID خروجي ID سفارش بود يا ID تراكنش ؟!
اینو دیگه نمی شه با این چند خطی که گفتی جواب داد، باید بری بقیه کدهات رو بررسی کنی.اونم به نظر باید id سفارش باشه.

shahriyar3
چهارشنبه 22 دی 1389, 19:11 عصر
آقا خط 19 برنامه که این باشه


$order =_getOrderById($orderID);


به این تغییر بده

$order =getOrderById($orderID);

sadeghkhafan
چهارشنبه 22 دی 1389, 22:16 عصر
ممنون از راهنماييت باز همون ارور رو ميده :
Fatal error: Call to undefined function ordGetordIDbyRefnum() in /home/cgpersi/public_html/scg/includes/parsian.php on line 19

اين كلا با ordGetordIDbyRefnum() مشكل داره فكر كنم.

ببين من 2 تا كلا فايل دارم . يكيش تابع ورودي هست ،‌يكيش همين كه بالا زدم . اولي رو ميزارم با همين دومي. زحمتي نيست نگاه كن ببين مشكل رو ميشه حل كرد ؟

shahriyar3
چهارشنبه 22 دی 1389, 23:13 عصر
ببين من 2 تا كلا فايل دارم . يكيش تابع ورودي هست ،‌يكيش همين كه بالا زدم .

2تا که نیست فایل هات بیشتره
اگه فایل کلاس اصلی نباشه که خط به خط بهت ارور میده
ببین این کلاس هم داره که این define ها توش تعریف شده اونو داری؟

sadeghkhafan
پنج شنبه 23 دی 1389, 13:16 عصر
والله من از هسته فروشگاه Shop Script Prmiume استفاده مي كنم.
از اونجايي كه اين اسكريپت ، هسته اصلي همون نسخه سبد خريد هست ، من كد هاي پارسيانش رو برداشتم + تمامي ديتابيس لازم . نصب كردم. حالا توي ورودي به بانك مشكلي نداره ، اما توي خروجي كه ميخواد برگرده اين اشكال مياد.
من چيز غير عادي داخل نديدم ، همه كلاس ها هم درست هست.

shahriyar3
پنج شنبه 23 دی 1389, 20:59 عصر
والله من از هسته فروشگاه Shop Script Prmiume استفاده مي كنم.
از اونجايي كه اين اسكريپت ، هسته اصلي همون نسخه سبد خريد هست ، من كد هاي پارسيانش رو برداشتم + تمامي ديتابيس لازم . نصب كردم. حالا توي ورودي به بانك مشكلي نداره ، اما توي خروجي كه ميخواد برگرده اين اشكال مياد.
من چيز غير عادي داخل نديدم ، همه كلاس ها هم درست هست.

دوست عزیزم
من از این اسکریپت ها استفاده نکردم ولی اینجوری که شما میگین 2 اسکریپت متفاوت شما استفاده کردین
ببین یه راه داری
برو بگرد تو کل این 2 تا اسکریپت ببین این تابع جائی تعریف شده یا نه

function ordGetordIDbyRefnum()
اگر تعریف شده اون صفحه رو توی این صفحه که ارور میده اینکلود کن مشکلت حل میشه

sadeghkhafan
جمعه 24 دی 1389, 00:04 صبح
آقا ممنون ،‌توي فايل مربوط به core سفارشات پيدا كردم فانكشنش رو اضافه كردم به مال خودم. حالا صفحه برگشت مياد اما ميزنه خطاي نا مشخص اين رو چكنم :لبخند:

shahriyar3
جمعه 24 دی 1389, 00:44 صبح
آقا ممنون ،‌توي فايل مربوط به core سفارشات پيدا كردم فانكشنش رو اضافه كردم به مال خودم. حالا صفحه برگشت مياد اما ميزنه خطاي نا مشخص اين رو چكنم :لبخند:
خواهش
متن خطا رو بزار ببینم چیه؟

sadeghkhafan
جمعه 24 دی 1389, 02:05 صبح
خب موضوع اين هست كه ميزنه :
تایید پرداخت توسط بانک پارسیان
خطای نامشخص

:لبخند:

shahriyar3
جمعه 24 دی 1389, 15:34 عصر
خب موضوع اين هست كه ميزنه :
تایید پرداخت توسط بانک پارسیان
خطای نامشخص

:لبخند:
اگر اسکریپتت استاندارد نوشته شده باشه که من حدس میزنم همینجوری باشه باید بری توی کلاس اصلی دنبال error ها بگردی. یه جائی که اینجوری نوشته باشه


$error = "خطای نا مشخص";
$error2 = "خطا";

خوب بعد حالا اون متغیری که این ارور بهش نسبت داده شده رو دنبال میکنی توی اون صفحه ,که ببینی سر چه عملیاتی اگر مشکل پیش بیاد این ارور داده میشه.

sadeghkhafan
شنبه 25 دی 1389, 20:20 عصر
ممنون بابت كمكت ، من گشتم خطا ها مال اينجاست .

if ($status==0) {
// this is a succcessfull payment

$pininfo = ostSetOrderStatusToOrder($orderID, $comStatID, 'Your Online Payment with PARSIAN BANK gateway accepted', 1);

$body = STR_SHETAB_THANKS.'<br>';
$body .= STR_SHETAB_REFNUM.': '.$authority.'<br>';
$body .= $pininfo;
// echo 'SUCSSESSFULL STATUS IS====>'.$status;


} else {
// echo 'HERE IS ELSE';
// this is a UNsucccessfull payment
ostSetOrderStatusToOrder($orderID, 1);
$body = ERROR_SHETAB_19;
// echo 'STATUS WITH SOAP NOT 0 STATUS IS====>'.$status;
}

}

}
else {
$body = ERROR_SHETAB_19;
// echo 'NO ORDERID';
}



}else {
if ($orderID) {
ostSetOrderStatusToOrder($orderID, 1);
}
$body = ERROR_SHETAB_19;
// echo 'URL RS NOT 0';
// echo 'ORDER IS COMPLETED';

}

ERROR_SHETAB_19 همون خطاي نامشخص هست.

shahriyar3
شنبه 25 دی 1389, 21:35 عصر
دوست عزیزم
این کد 3 تا if داره شما فقط یکیشو واسه من گذاشتی بعد تازه توی همین if ها از مقادیر پیش فرض کلاس استفاده کرده که باید اونا رو بدونم و گرنه من از کجا باید بدونم چی فرستاده شده :لبخند:
ولی یه حدس زدم از اونجائی که تا حالا همه حدس هام درست بود اینم امتحان کن ایشالا درست میشه:چشمک:
---
این خط و تبدیل به کامنت کن


$body .= STR_SHETAB_REFNUM.': '.$authority.'<br>';

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

sadeghkhafan
دوشنبه 27 دی 1389, 00:05 صبح
ممنون از راهنماييت.
من كد جديد همين فايل رو گير آوردم :

<?php
if ( $Tmp_0 )
{
if ( isset( $_GET['parsian'], $_GET['modID'], $_GET['au'], $_GET['pay'] ) )
{
$modID = $_GET['modID'];
$rs = $_GET['rs'];
$authority = $_GET['au'];
$orderID = ordgetordidbyrefnum( $authority );
$q = db_query( "SELECT * FROM ".SETTINGS_TABLE.( " WHERE settings_constant_name='CONF_PAYMENTMODULE_PARSIAN _MERCHANT_ACCOUNT_".$modID."'" ) );
$res = db_fetch_row( $q );
$comStatID = _getsettingoptionvalue( "CONF_COMPLETED_ORDER_STATUS" );
if ( !empty( $res['settings_value'] ) && $orderID )
{
$mid = trim( $res['settings_value'] );
}
else
{
redirect( "index.php" );
}
$order = _getorderbyid( $orderID );
if ( $rs == "0" )
{
if ( $order['StatusID'] != $comStatID )
{
if ( $orderID )
{
$amount = $order['order_amount'];
$nusoap = new nusoap_client( "https://www.pec24.com/pecpaymentgateway/eshopservice.asmx?wsdl", "wsdl" );
if ( !$nusoap || ( $err = $nusoap->geterror( ) ) )
{
$body = "<br />".$err."<br />";
}
else
{
$status = 1;
$params = array( "pin" => $mid, "authority" => $authority, "status" => $status );
$sendParams = array( $params );
$res = $nusoap->call( "PinPaymentEnquiry", $sendParams );
$status = $res['status'];
if ( $status == 0 )
{
$pininfo = ostsetorderstatustoorder( $orderID, $comStatID, "Your Online Payment with PARSIAN BANK gateway accepted", 1 );
$body = STR_SHETAB_THANKS."<br>";
$body .= STR_SHETAB_REFNUM.": ".$authority."<br>";
$body .= $pininfo;
}
else if ( $orderID && $order['StatusID'] != $comStatID )
{
ostsetorderstatustoorder( $orderID, 1 );
switch ( $status )
{
case 1 :
$body .= ERROR_SHETAB_19;
break;
case 2 :
$body .= ERROR_SHETAB_20;
break;
case 10 :
$body .= ERROR_SHETAB_21;
break;
case 11 :
$body .= ERROR_SHETAB_22;
break;
case 12 :
$body .= ERROR_SHETAB_23;
break;
case 13 :
$body .= ERROR_SHETAB_24;
break;
case 14 :
$body .= ERROR_SHETAB_25;
break;
case 20 :
$body .= "Access Violation";
break;
case 21 :
$body .= "Invalid Authority";
break;
case 22 :
$body .= "Merchant Authentication Failed";
break;
case 30 :
$body .= "Sale Is Already Done Successfully";
break;
case 31 :
$body .= "SaleIsVoidedSuccessfully ";
break;
case 32 :
$body .= "SaleIsReversaledSuccessfully";
break;
case 33 :
$body .= "ValidFailureCountPassed";
break;
case 34 :
$body .= "InvalidMerchantOrder";
break;
case 35 :
$body .= "Inconsistency";
break;
case 36 :
$body .= "SaleIsAlreadyVoidedSuccessfully";
break;
case 37 :
$body .= "SaleIsAlreadyReversaledSuccessfully";
break;
case 38 :
$body .= "RefundAmountIsUpperThanOrderAmount";
break;
case 39 :
$body .= "RefundAmountIsUpperThanCountOfOrdersAmount";
break;
case 50 :
$body .= "Pending ";
break;
case 51 :
$body .= "OrderReceived";
break;
case 37 :
$body .= "InProgress";
break;
case 52 :
$body .= "SaleIsAlreadyReversaledSuccessfully";
break;
case 53 :
$body .= "EnquiriedByMerchant";
break;
case 60 :
$body .= "ReceiveError";
break;
case 61 :
$body .= "SendError";
break;
case 62 :
$body .= "MerchantNotLogin";
break;
case 63 :
$body .= "FormatError";
break;
case 64 :
$body .= "InvalidCardReader";
break;
case 65 :
$body .= "InvalidProductCodes";
break;
case 66 :
$body .= "IssuerOrSwitchInoperative";
break;
case 67 :
$body .= "ReconcileError";
break;
case 68 :
$body .= "RecordNotFound";
break;
case 69 :
$body .= "ReEnterTransaction";
break;
case 70 :
$body .= "Referral";
break;
case 71 :
$body .= "SESystemMlfunction";
break;
case 72 :
$body .= "SN";
break;
case 73 :
$body .= "TraceNumberNotFound";
break;
case 74 :
$body .= "TransNotPermitted2Term";
break;
case 75 :
$body .= "BadTerminalId";
break;
case 76 :
$body .= "BankNotSupportedBySwitch";
break;
case 77 :
$body .= "BatchNumberNotFound";
break;
case 78 :
$body .= "DuplicateTransmission";
break;
case 79 :
$body .= "TransNotOK";
break;
case 80 :
$body .= "UnNoneError";
break;
case 90 :
$body .= "ExceptionRaised";
break;
case 91 :
$body .= "DatabaseError";
break;
default :
$body .= ERROR_SHETAB_ERROR_NO." ".$res;
}
else
{
$body = ERROR_SHETAB_ISCOMPLETED;
}
else
{
$body = ERROR_SHETAB_26;
}
else
{
$body = ERROR_SHETAB_ISCOMPLETED;
}
else if ( !$orderID || !( $order['StatusID'] != $comStatID ) )
{
ostsetorderstatustoorder( $orderID, 1 );
$body .= ERROR_SHETAB_19;
}
}
}
}
}
}
$smarty->assign( "page_body", $body );
$smarty->assign( "main_content_template", "parsian.tpl.html" );
}
else
{
$smarty->assign( "main_content_template", "page_not_found.tpl.html" );
}
}
?>
منتها توي خط $body = ERROR_SHETAB_ISCOMPLETED; به else گير ميده ،‌( موقعي كه ميخواي توي سبد خريد محصول رو ادد كني ) .

Parse error: syntax error, unexpected T_ELSE in /home/cgpersi/public_html/scg/includes/parsian.php on line 201اوضايي شده :لبخند:

shahriyar3
سه شنبه 28 دی 1389, 18:47 عصر
دوست خوبم
این کد چند تا ایراد ساختاری داره متاسفانه.احتمالا این اسکریپت شما نسخه آزمایشه که گرفتین
بلوک های else داخل بلوک های if تعریف شده و elseif ها بعد از همه else ها
اگر من دستکاریش کنم احتمالا محتوای صفحاتت میریزه بهم ولی بهر حال براتون کد و ادیت کردم تست کنید امیدوارم مشکلتون حل بشه


<?php
if ($Tmp_0) {
if (isset($_GET['parsian'], $_GET['modID'], $_GET['au'], $_GET['pay'])) {
$modID = $_GET['modID'];
$rs = $_GET['rs'];
$authority = $_GET['au'];
$orderID = ordgetordidbyrefnum($authority);
$q = db_query("SELECT * FROM " . SETTINGS_TABLE . (" WHERE settings_constant_name='CONF_PAYMENTMODULE_PARSIAN _MERCHANT_ACCOUNT_" .
$modID . "'"));
$res = db_fetch_row($q);
$comStatID = _getsettingoptionvalue("CONF_COMPLETED_ORDER_STATUS");
if (!empty($res['settings_value']) && $orderID) {
$mid = trim($res['settings_value']);
} else {
redirect("index.php");
}
$order = _getorderbyid($orderID);
if ($rs == "0") {
if ($order['StatusID'] != $comStatID) {
if ($orderID) {
$amount = $order['order_amount'];
$nusoap = new nusoap_client("https://www.pec24.com/pecpaymentgateway/eshopservice.asmx?wsdl",
"wsdl");
if (!$nusoap || ($err = $nusoap->geterror())) {
$body = "<br />" . $err . "<br />";
} else {
$status = 1;
$params = array("pin" => $mid, "authority" => $authority, "status" => $status);
$sendParams = array($params);
$res = $nusoap->call("PinPaymentEnquiry", $sendParams);
$status = $res['status'];
if ($status == 0) {
$pininfo = ostsetorderstatustoorder($orderID, $comStatID,
"Your Online Payment with PARSIAN BANK gateway accepted", 1);
$body = STR_SHETAB_THANKS . "<br>";
$body .= STR_SHETAB_REFNUM . ": " . $authority . "<br>";
$body .= $pininfo;
} else
if ($orderID && $order['StatusID'] != $comStatID) {
ostsetorderstatustoorder($orderID, 1);
switch ($status) {
case 1:
$body .= ERROR_SHETAB_19;
break;
case 2:
$body .= ERROR_SHETAB_20;
break;
case 10:
$body .= ERROR_SHETAB_21;
break;
case 11:
$body .= ERROR_SHETAB_22;
break;
case 12:
$body .= ERROR_SHETAB_23;
break;
case 13:
$body .= ERROR_SHETAB_24;
break;
case 14:
$body .= ERROR_SHETAB_25;
break;
case 20:
$body .= "Access Violation";
break;
case 21:
$body .= "Invalid Authority";
break;
case 22:
$body .= "Merchant Authentication Failed";
break;
case 30:
$body .= "Sale Is Already Done Successfully";
break;
case 31:
$body .= "SaleIsVoidedSuccessfully ";
break;
case 32:
$body .= "SaleIsReversaledSuccessfully";
break;
case 33:
$body .= "ValidFailureCountPassed";
break;
case 34:
$body .= "InvalidMerchantOrder";
break;
case 35:
$body .= "Inconsistency";
break;
case 36:
$body .= "SaleIsAlreadyVoidedSuccessfully";
break;
case 37:
$body .= "SaleIsAlreadyReversaledSuccessfully";
break;
case 38:
$body .= "RefundAmountIsUpperThanOrderAmount";
break;
case 39:
$body .= "RefundAmountIsUpperThanCountOfOrdersAmount";
break;
case 50:
$body .= "Pending ";
break;
case 51:
$body .= "OrderReceived";
break;
case 37:
$body .= "InProgress";
break;
case 52:
$body .= "SaleIsAlreadyReversaledSuccessfully";
break;
case 53:
$body .= "EnquiriedByMerchant";
break;
case 60:
$body .= "ReceiveError";
break;
case 61:
$body .= "SendError";
break;
case 62:
$body .= "MerchantNotLogin";
break;
case 63:
$body .= "FormatError";
break;
case 64:
$body .= "InvalidCardReader";
break;
case 65:
$body .= "InvalidProductCodes";
break;
case 66:
$body .= "IssuerOrSwitchInoperative";
break;
case 67:
$body .= "ReconcileError";
break;
case 68:
$body .= "RecordNotFound";
break;
case 69:
$body .= "ReEnterTransaction";
break;
case 70:
$body .= "Referral";
break;
case 71:
$body .= "SESystemMlfunction";
break;
case 72:
$body .= "SN";
break;
case 73:
$body .= "TraceNumberNotFound";
break;
case 74:
$body .= "TransNotPermitted2Term";
break;
case 75:
$body .= "BadTerminalId";
break;
case 76:
$body .= "BankNotSupportedBySwitch";
break;
case 77:
$body .= "BatchNumberNotFound";
break;
case 78:
$body .= "DuplicateTransmission";
break;
case 79:
$body .= "TransNotOK";
break;
case 80:
$body .= "UnNoneError";
break;
case 90:
$body .= "ExceptionRaised";
break;
case 91:
$body .= "DatabaseError";
break;
default:
$body .= ERROR_SHETAB_ERROR_NO . " " . $res;
}
} elseif (!$orderID || !($order['StatusID'] != $comStatID)) {
ostsetorderstatustoorder($orderID, 1);
$body .= ERROR_SHETAB_19;
} else {
$body = ERROR_SHETAB_ISCOMPLETED;
}


}

}
} else {
$body = ERROR_SHETAB_26;
}
} else {
$body = ERROR_SHETAB_ISCOMPLETED;
}
$smarty->assign("page_body", $body);
$smarty->assign("main_content_template", "parsian.tpl.html");
} else {
$smarty->assign("main_content_template", "page_not_found.tpl.html");
}
}
?>

sadeghkhafan
پنج شنبه 30 دی 1389, 16:37 عصر
از كمكت ممنونم ، تست ميكنم خبرش رو ميدم. :قلب: