PDA

View Full Version : مشکل با درگاه بانک ملت



moonice
سه شنبه 13 خرداد 1393, 20:18 عصر
با سلام
من درگاه بانک ملت رو نصب کردم ولی میخوام وقتی پرداخت کنم این ارورو میده

FaultArray
(
[faultcode] => soap:Client
[faultstring] => Unmarshalling Error: For input string: ""
)


از سرور پارس پک استفاده میکنم...
اینم ادرس درگاه
http://buxiranzamin.com/bank

ممنون میشم راهنماییم کنید

فایل های درگاه :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
date_default_timezone_set('Asia/Tehran');
?>
<html>
<head>
<meta http-equiv="Content-Language" content="fa">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>.: آسان پرداخت حساس کامپیوتر :.</title>
<link href="Css/Style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.error { font-family:Tahoma, Geneva, sans-serif;
font-size:12px;
color:#F00;
direction:rtl;}
}
</style>
<!--------پیغام عدم وارد نمودن اطلاعات در فرم-------->
<script type="text/javascript">
function validateForm(){
var field = document.forms["form1"]["name"].value;
if (document.getElementById('name').value == ''){
document.getElementById('name-error').innerHTML = 'نام و نام خانوادگی خود را وارد نمایید';
return false;
}
else{
document.getElementById('name-error').innerHTML = '';
}
if(document.getElementById('mobil').value == ''){
document.getElementById('mobil-error').innerHTML = 'لطفا شماره همراه خود را وارد نمایید!';
return false;
}
else{
document.getElementById('mobil-error').innerHTML = '';
}
if(document.getElementById('tozihe').value == ''){
document.getElementById('tozihe-error').innerHTML = 'لطفا توضیح دهید این مبلغ را به چه منظور پرداخت می نمایید!';
return false;
}
else{
document.getElementById('tozihe-error').innerHTML = '';
}
if(document.getElementById('PayAmount').value == ''){
document.getElementById('rial-error').innerHTML = 'لطفا مبلغ دلخواه خود را وارد نمایید!';
return false;
}
else{
document.getElementById('rial-error').innerHTML = '';
}
email=document.form1.mail.value;
var atpos=email.indexOf("@");
var dotpos=email.lastIndexOf(".");
if(email!="")
{
if(atpos<1||dotpos<atpos+2||dotpos +2>=x.length)
{
document.getElementById('mail-error').innerHTML ="لطفا ايميل خود را صحيح وارد كنيد";
return false;
}
}
else{
document.getElementById('mail-error').innerHTML = '';
}
}
</script>
<!-------------وارد نمودن عدد------>
<script type="text/javascript">
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
</script>
<!-----------------------وارد نمودن مبلغ پول------------------------>
<script>
function splitMonyTextBox(ctrl)
{
var separator = ",";
var int = ctrl.value.replace ( new RegExp ( separator, "g" ), "" );
var regexp = new RegExp ( "\\B(\\d{3})(" + separator + "|$)" );
do
{
int = int.replace ( regexp, separator + "$1" );
}
while ( int.search ( regexp ) >= 0 )
ctrl.value = int;
}
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;

return true;
}
</script>
<!------------------------------------------------>
<!--------------->
<script language="javascript" type="text/javascript">
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>
<?php
include ('./js/date_time.php');
$day_number = jdate('j');
$month_number = jdate('n');
$year_number = jdate('y');
$day_name = jdate('l');
?>
<?php

?>
<body>
<div style="margin:0px auto; width:400px;padding:5px;border:1px solid #ccc;background:#FFF9F9;">
<div style="text-align:center; direction:rtl; font:bold 15px/22px tahoma; direction:rtl; color:#093;"><?php echo " امروز $day_name ۱۳$year_number/$month_number/$day_number"; ?></div><br />
<form name="form1" id="form1" method="post" preservedata="true" onsubmit="return validateForm();">
<div style="text-align:center; direction:rtl; font:bold 12px/22px tahoma; direction:rtl">
نام و نام خانوادگی خود را وارد کنید:<br>
<input name="name" type="text" id="name" style="width:330px; padding:6px 5px; font:16px Tahoma; color:#0066FF; direction:rtl; border:1px solid #ad0000" maxlength="32" /><div id="name-error" class="error"></div>
</div>
<div style="text-align:center; direction:rtl; font:bold 12px/22px tahoma; direction:rtl">شماره تماس خود را وارد نمایید:<br>
<input name="mobil" type="text" id="mobil" style="width:330px; padding:6px 5px; font:16px Tahoma; color:#0066FF; direction:ltr; border:1px solid #ad0000" onkeypress="return isNumberKey(event)" maxlength="11" /><div id="mobil-error" class="error"></div>
</div>
<div style="text-align:center; direction:rtl; font:bold 12px/22px tahoma; direction:rtl">ایمیل شما:<br>
<input name="mail" type="text" id="mail" style="width:330px; padding:6px 5px; font:16px Tahoma; color:#0066FF; direction:ltr; border:1px solid #ad0000" /><div id="mail-error" class="error"></div>
</div>
<div style="text-align:center; direction:rtl; font:bold 12px/22px tahoma; direction:rtl">شرح مبلغ واریزی:<br>
<input name="tozihe" type="text" id="tozihe" style="width:330px; padding:6px 5px; font:16px Tahoma; color:#0066FF; direction:rtl; border:1px solid #ad0000" maxlength="32"><div id="tozihe-error" class="error"></div>
<br>
</div>
<div style="text-align:center; direction:rtl; font:bold 14px/28px tahoma; direction:rtl">
مبلغ تراکنش (به ريال):<br>
<input name="PayAmount" type="text" id="PayAmount" style="width:330px; padding:6px 5px; font:bold 24px Tahoma; color:#ad0000; direction:ltr; border:1px solid #ad0000" onkeypress="return isNumberKey(event)" onkeyup="splitMonyTextBox(this)" maxlength="10" /><div id="rial-error" class="error"></div>
<br>
<input type="submit" CssClass="PublicButton" name="PayRequestButton" value="ارسال" style="padding:6px 20px; font:bold 16px Tahoma; color:#fff; background:#ad0000"/>
</div>
</form>
</div>
</body>
<?php
require_once("lib/nusoap.php");

//curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
//$page = curl_exec ($ch);

$client = new nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl');
$namespace='http://interfaces.core.sw.bps.com/';

///////////////// PAY REQUEST


if (isset($_POST['PayRequestButton']))
{

// ترمینال ID
$terminalId = $Terminal_ID;
// نام کاربری درگاه اینترنتی
$userName = $Usernames;
// رمز عبور درگاه اینترنتی
$userPassword = $Password;
$orderId =time();
$PayAmount=$_POST['PayAmount'];
$Clear_PayAmount=str_replace(',','',$PayAmount);

$amount = $Clear_PayAmount;
$localDate = date("Ymd");
$localTime = date("His");
$additionalData = '';

// آدرس فایل پس از پرداخت پول از بانک ملت به هاست شما
$callBackUrl = 'http://www.buxiranzamin.com/bank/callback.php';
$payerId = 0;

// Check for an error
$err = $client->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
die();
}

$parameters = array(
'terminalId' => $terminalId,
'userName' => $userName,
'userPassword' => $userPassword,
'orderId' => $orderId,
'amount' => $amount,
'localDate' => $localDate,
'localTime' => $localTime,
'additionalData' => $additionalData,
'callBackUrl' => $callBackUrl,
'payerId' => $payerId);

// Call the SOAP method
$result = $client->call('bpPayRequest', $parameters, $namespace);

// Check for a fault
if ($client->fault) {
echo '<h2>Fault</h2><pre>';
print_r($result);
echo '</pre>';
die();
}
else {
// Check for errors

$resultStr = $result;

$err = $client->getError();
if ($err) {
// Display the error
echo '<h2>Error</h2><pre>' . $err . '</pre>';
die();
}
else {

//چک میکنه ببینه اگه نام و نام خانوادگی مقدار نداشت به آدرس دیگه ای منتقل میکنه
if (!isset($_POST['name']))
{
print ("<script language='javascript'>window.navigate('index.php');</script>");
}
else
{

// Display the result
$res = explode (',',$resultStr);

$Clear_resultStr=$resultStr;
$Clear_resultStr2=str_replace('0,','',$Clear_resul tStr);
echo "<script>alert('" . $Clear_resultStr2 . " :شناسه پرداخت شما ');</script>";
//echo "Pay Response is : " . $resultStr . "";
// اتصال به دیتابیس جهت ورود اطلاعات به بانک اطلاعاتی
include 'include/config_accont.php';
connect($username,$password,$database);
mysql_query('SET NAMES \'utf8\'');
$name=$_POST['name'];
$mobil=$_POST['mobil'];
$mail=$_POST['mail'];
$details=$_POST['tozihe'];
$price_rial=$_POST['PayAmount'];
$price=str_replace(',','',$price_rial);
$ShenaseMoshtari=$Clear_resultStr2;
$select_database = mysql_query("INSERT INTO `ebanking_mellat` (`name`,`mobil`,`mail`,`details`,`price`,`ShenaseM oshtari`) VALUES ('{$name}','{$mobil}','{$mail}','{$details}','{$pr ice}','{$ShenaseMoshtari}')");
echo mysql_affected_rows() > 0 ? '<center>درحال اتصال به سرور بانک</center>' : 'Error : '.mysql_error();

$ResCode = $res[0];

if ($ResCode == "0") {
// Update table, Save RefId
echo "<script language='javascript' type='text/javascript'>postRefId('" . $res[1] . "');</script>";
}
else {
// log error in app
// Update table, log the error
// Show proper message to user
}
}// end Display the result
}// end Check for errors

}
}
?>
</html>

plague
سه شنبه 13 خرداد 1393, 23:42 عصر
احتمالا از خط 195 هستش
$parameters رو یبار var_dump کن ببین چی داخلشه

moonice
چهارشنبه 14 خرداد 1393, 09:37 صبح
اقا انجام دادم
اولا وقتی این کارو میکنم شناسه پرداخت بهم 421 میده...
دوما این توشه...

array(10) { ["terminalId"]=> string(7) "14065018" ["userName"]=> string(6) "buxira" ["userPassword"]=> string(8) "90854305" ["orderId"]=> int(1206433171) ["amount"]=> string(5) "10000" ["localDate"]=> string(8) "20140604" ["localTime"]=> string(6) "100804" ["additionalData"]=> string(0) "" ["callBackUrl"]=> string(45) "http://www.buxiranzamin.com/bank/callback.php" ["payerId"]=> int(0) }



درضمن مقدار برگشتی ResCode$ برابر 421 میباشد...

چکار کنم الان؟!

masiha68
چهارشنبه 14 خرداد 1393, 11:22 صبح
واسه من این ارور رو میده :
XML error parsing SOAP payload on line 1: Invalid character

به نظرتون مشکلش از چیه

masiha68
چهارشنبه 14 خرداد 1393, 16:25 عصر
من تقریبا درستش کردم ....
ولی الان فقط می نویسه در حال اتصال به به دراه و بعد هم اتفاقی نمی افته ...؟

moonice
چهارشنبه 14 خرداد 1393, 17:12 عصر
خب برا منم همینو مینویسه....
میگه درحال اتصال به درگاه و بعد ثابت میمونه...

aalmair
چهارشنبه 14 خرداد 1393, 17:59 عصر
$namespace='http://interfaces.core.sw.bps.com/';

شاید از این باشه

masiha68
چهارشنبه 14 خرداد 1393, 18:24 عصر
$namespace='http://interfaces.core.sw.bps.com/';

شاید از این باشه
نه از این نیست ... این توی خود کدهاییه که بانک ملت بهت میده

masiha68
چهارشنبه 14 خرداد 1393, 19:01 عصر
مقدار $ResCode صفر نیست واسه همین اون قسمت جاوا سکریپت رو اجرا نمی کنه
مقدار $ResCode برابر 421 و مقدار $res هم که وجود نداره
یعنی مشکل از کجاست ؟؟؟ اصلا چرا هر بار این عدد 421 به عنوان شناسه میاد

masiha68
پنج شنبه 15 خرداد 1393, 09:01 صبح
کسی نیست جواب بده /؟؟؟
چطوری میشه فهمید که ای پی توی بانک ثبت شده یا نه ؟

moonice
جمعه 16 خرداد 1393, 17:18 عصر
بله دقیقا باید مقدار صفر ارسال بشه که اطلاعت به بانک ارسال بشه!!!
حالا من اومدم اون شرطو تغییر دادم و به جای شرط برابر صفر
شرط برابر 421 قرار دادم
اینجوری به بانک ارسال میکنه ولی بانک میشگه اطلاعات ارسالی درست نمی باشد...

masiha68
جمعه 16 خرداد 1393, 20:13 عصر
421 یعنی ای پی هاستت توسط بانک تایید نشده ....