InvoiceID غلط در ماژول پرداخت بانک ملت
با سلام
دوستان ماژول درگاه بانک ملت برای هر پرداخت کاربر رو به اینوی ای دی 0 پس از پرداخت موفق و واریز مبلغ به حساب ما ردایرکت میکنه که در فایل Callback هست مشکل ، برای اطمینان اما فایل های دیگر نیز به حضور دوستان تقدیم میشه.
فایل ملت در پوشه کال بک
کد PHP:
<?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,$verifySaleReferenceId,$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 در پوشه ملت
کد PHP:
<?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>";
}
?>
صمیمانه تشکر میشه در راهنمایی و رفع مشکل.
پاسخ : InvoiceID غلط در ماژول پرداخت بانک ملت
برای واضح تر شدن مشکل:
بعد از پرداخت شماره فاکتور 2250 مثلا با لینک
whmcs.com/viewinvoice.php?id=2250
به
whmcs.com/viewinvoice.php?id=0
و پرداخت نشده انجام میگیره. و یک تصحیح دیگر:
نقل قول:
...
ردایرکت میکنه که در فایل Callback هست...
صحیح تر
نقل قول:
...ردایرکت میکنه که در فایلMellat.php که در پوشه Callback هست...
هست.
پاسخ : InvoiceID غلط در ماژول پرداخت بانک ملت
مورد دیگه ای رو اضافه کنم این هست که بعد از اتصال به درگاه بانک ملت و انصراف از پرداخت باز هم اینوی آی دی رو 0 محسوب میکنه.
پاسخ : InvoiceID غلط در ماژول پرداخت بانک ملت
ماژول های رایگان عموما مشکلات دارن
از ماژول نالرز استفاده کنید درست کار میکنه
پاسخ : InvoiceID غلط در ماژول پرداخت بانک ملت
ممنون از پاسخ شما که بسیار کمک کرد!
99% ماژول صحیح هست و به محض اینکه این مشکل هم حل بشه برای همه دوستان خواهم گذاشت که مبالغ گذاف 50 هزار تومانی رو متحمل نشند توی این شرایط اقتصادی.
تمام مراحل صحیح هست فقط شماره فاکتور رو که میگیره از سرور بانک 0 میشناسه یا اصلا نمیگیره.