ورود

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : InvoiceID غلط در ماژول پرداخت بانک ملت



Cpt.Price
June 3rd, 2013, 11:00
با سلام
دوستان ماژول درگاه بانک ملت برای هر پرداخت کاربر رو به اینوی ای دی 0 پس از پرداخت موفق و واریز مبلغ به حساب ما ردایرکت میکنه که در فایل Callback هست مشکل ، برای اطمینان اما فایل های دیگر نیز به حضور دوستان تقدیم میشه.
فایل ملت در پوشه کال بک


<?php
include("../../../dbconnect.php");include("../../../includes/functions.php");include("../../../includes/gatewayfunctions.php");include("../../../includes/invoicefunctions.php");include("../Mellat/config.php");require_once("../Mellat/lib/nusoap.php");
//curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //$page = curl_exec ($ch);
$client = new nusoap_client('https://pgwsf.bpm.bankmellat.ir/pgwchannel/services/pgw?wsdl'); $namespace='http://interfaces.core.sw.bps.com/';
$resId = $_POST['ResCode']; $orderId = $_POST['SaleOrderId']; $verifySaleOrderId = $_POST['SaleOrderId']; $verifySaleReferenceId = $_POST['SaleReferenceId']; $invoiceid = intval(substr($orderid,0,-3)) ;

// Check for an error $err = $client->getError(); if ($err) { echo '<h2>Constructor error</h2><pre>' . $err . '</pre>'; die(); }if($_POST['ResCode'] == '0'){$parameters = array( 'terminalId' => $terminalId, 'userName' => $userName, 'userPassword' => $userPassword, 'orderId' => $orderId, 'saleOrderId' => $verifySaleOrderId, 'saleReferenceId' => $verifySaleReferenceId);
// Call the SOAP method $result = $client->call('bpVerifyRequest', $parameters, $namespace); $VerifyAnswer = $result;
if($VerifyAnswer == '0'){$parameters = array( 'terminalId' => $terminalId, 'userName' => $userName, 'userPassword' => $userPassword, 'orderId' => $orderId, 'saleOrderId' => $verifySaleOrderId, 'saleReferenceId' => $verifySaleReferenceId);
// Call the SOAP method $result = $client->call('bpSettleRequest', $parameters, $namespace); $SetlleAnswer = $result; if ($SetlleAnswer == '0'){
$Pay_Status = 'OK'; }

}}else{ $Pay_Status = '';}
if ($VerifyAnswer <> '0' AND $VerifyAnswer != '' ){ $parameters = array( 'terminalId' => $terminalId, 'userName' => $userName, 'userPassword' => $userPassword, 'orderId' => $orderId, 'saleOrderId' => $verifySaleOrderId, 'saleReferenceId' => $verifySaleReferenceId);
$result = $client->call('bpInquiryRequest', $parameters, $namespace); $InquiryAnswer = $result ; if ($InquiryAnswer == '0'){
$parameters = array( 'terminalId' => $terminalId, 'userName' => $userName, 'userPassword' => $userPassword, 'orderId' => $orderId, 'saleOrderId' => $verifySaleOrderId, 'saleReferenceId' => $verifySaleReferenceId);
// Call the SOAP method $result = $client->call('bpSettleRequest', $parameters, $namespace); $SetlleAnswer = $result;}else{ $parameters = array( 'terminalId' => $terminalId, 'userName' => $userName, 'userPassword' => $userPassword, 'orderId' => $orderId, 'saleOrderId' => $verifySaleOrderId, 'saleReferenceId' => $verifySaleReferenceId);
// Call the SOAP method $result = $client->call('bpReversalRequest', $parameters, $namespace);}}

$action=$SystemURL."viewinvoice.php?id="."$invoiceid" ;$gatewaymodule = "Mellat";$GATEWAY = getGatewayVariables($gatewaymodule);if (!$GATEWAY["type"]) die("Module Not Activated");
if ($Pay_Status == 'OK' ){ # Save to Gateway Log: name, data array, status addInvoicePayment($invoiceid,$verifySaleReferenceI d,$amount,$fee,$gatewaymodule); # Apply Payment to Invoice: invoiceid, transactionid, amount paid, fees, modulename logTransaction($GATEWAY["name"],$_POST,"Successful"); echo " <script>window.location ='".$action."'</script>"; }else{ # Unsuccessful logTransaction($GATEWAY["name"],$_POST,"Unsuccessful"); # Save to Gateway Log: name, data array, status
echo " <script>window.location ='".$action."'</script>";
}

فایل Pay در پوشه ملت


<?include("../../../dbconnect.php");?><html><head>

<script language="javascript" type="text/javascript"> function postRefId (refIdValue) { var form = document.createElement("form"); form.setAttribute("method", "POST"); form.setAttribute("action", "https://pgw.bpm.bankmellat.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></body></html><?php



require_once("lib/nusoap.php"); include("config.php");
$client = new nusoap_client('https://pgwsf.bpm.bankmellat.ir/pgwchannel/services/pgw?wsdl'); $namespace='http://interfaces.core.sw.bps.com/';
$invoideid = $_POST['ResNum']; $invoideid=intval($invoideid); $dbinvoice = mysql_fetch_object(mysql_query("SELECT tblinvoices.total AS amount,tblcurrencies.code AS currency FROM tblinvoices LEFT JOIN tblclients ON tblinvoices.userid=tblclients.id LEFT JOIN tblcurrencies ON tblclients.currency=tblcurrencies.id WHERE tblinvoices.id='$invoideid'")); $amount=str_replace('.00','',$dbinvoice->amount);if ($dbinvoice->currency == 'ریال'){ //nothing $amount=intval($amount);}else{ $amount = intval($amount)*10;}
$orderId = $_POST['ResNum'].rand(100,999); $localDate = date('Ynd'); $localTime = date('His'); $callBackUrl = $_POST['SysURL']."/modules/gateways/callback/Mellat.php"; $additionalData = "" ; $payerId = "0"; $userName ; $parameters = array( 'terminalId' => $terminalId, 'userName' => $userName, 'userPassword' => $userPassword, 'orderId' => $orderId, 'amount' => $amount, 'localDate' => $localDate, 'localTime' => $localTime, 'additionalData' => $additionalData, 'callBackUrl' => $callBackUrl, 'payerId' => $payerId);
$result = $client->call('bpPayRequest', $parameters, $namespace);
$resultStr = $result;
$res = explode (',',$resultStr); $ResCode = $res[0]; $res[1]; if ($ResCode == "0") { echo 'درحال ورود به سایت بانک ملت ... '; echo "<script language='javascript' type='text/javascript'>postRefId('" . $res[1] . "');</script>"; } else { echo "<script>alert('امکان اتصال وجود ندارد ، لطفاً دوباره تلاش کنید.');</script>"; echo " <script>window.location ='".$_POST['SysURL']."/viewinvoice.php?id=$invoideid" ."'</script>";
}



?>
صمیمانه تشکر میشه در راهنمایی و رفع مشکل.

Cpt.Price
June 3rd, 2013, 11:15
برای واضح تر شدن مشکل:
بعد از پرداخت شماره فاکتور 2250 مثلا با لینک
whmcs.com/viewinvoice.php?id=2250
به
whmcs.com/viewinvoice.php?id=0
و پرداخت نشده انجام میگیره. و یک تصحیح دیگر:

...
ردایرکت میکنه که در فایل Callback هست...


صحیح تر



...ردایرکت میکنه که در فایلMellat.php که در پوشه Callback هست...

هست.

Cpt.Price
June 3rd, 2013, 11:45
مورد دیگه ای رو اضافه کنم این هست که بعد از اتصال به درگاه بانک ملت و انصراف از پرداخت باز هم اینوی آی دی رو 0 محسوب میکنه.

milad221
June 3rd, 2013, 12:01
ماژول های رایگان عموما مشکلات دارن
از ماژول نالرز استفاده کنید درست کار میکنه

Cpt.Price
June 3rd, 2013, 13:45
ممنون از پاسخ شما که بسیار کمک کرد!
99% ماژول صحیح هست و به محض اینکه این مشکل هم حل بشه برای همه دوستان خواهم گذاشت که مبالغ گذاف 50 هزار تومانی رو متحمل نشند توی این شرایط اقتصادی.
تمام مراحل صحیح هست فقط شماره فاکتور رو که میگیره از سرور بانک 0 میشناسه یا اصلا نمیگیره.