miladanimator
دوشنبه 10 اسفند 1388, 02:51 صبح
سلام دوستان.
من با بانک پارسیان قرار داد بستم و اون ها پین کد و یک فایل payment.php رو برای من فرستادن.
حالا من یک صفحه طراحی کردم که یک فرم داره و مقدار واریزی رو از کاربر میگیره و به صفحه parsian.php ارسال .میکنه .
<form method="post" name="pay" id="pay" action="parsian.php" >
<input name="price" type="text" id="price" maxlength="10" size="25">
<input class="button" type="submit" value="send">
</form>حالادرصفحه parsian.php ابتدا برخی اطلاعاتمورد نیازمو می گیرم و در دیتابیسثبت می کنم. مانند :شماره کاربر و مبلغ و ...
حالا این اطلاعات رو دارم :
$price=safeint($_POST["price"]);
$pin = 'MYPARSIANPIN';
$PaymentName = 'parsian';
$RedirectURL='uuuu.php';
$PayID هم زمان ثبت در دیتابیس با دستور $PayID=mysql_insert_id(); می گیرم .
و حالا با کد زیر سعی دارم authority رو بدست بیارم .
switch ($PaymentName) {
case "parsian" :
$error="";
include("nusoap/nusoap.php");
$soapclient = new soapclient('https://www.pec24.com/pecpaymentgateway/eshopservice.asmx?wsdl','wsdl');
if(!$soapclient->getError()){
$soapProxy = $soapclient->getProxy() ;
if(!$soapclient->getError()){
$params = array(
'pin' => $pin , // this is our PIN NUMBER
'amount' => $price,
'orderId' => $PayID,
'callbackUrl' => $RedirectURL,
'authority' => 0,
'status' => 1
);
$sendParams = array($params) ;
$res = $soapclient->call('PinPaymentRequest', $sendParams);
$authority = $res['authority'];
$status = $res['status'];
if ( ($authority) and ($status==0) ) {
$parsURL = "https://www.pec24.com/pecpaymentgateway/" ;
$form="<form name='form_gateway' method='GET' action='$parsURL'><input type='hidden' name='au' value='$authority'></form>";
$query="update dynamic_ads_onlinepays set RefNum='$authority' where PayID='$PayID'";
mysql_db_query($dbname,$query,$RSconn);
} else {
$error.="ERROR $status";
$error.=$soapclient->getError();
}
}else{
$error.=$soapclient->getError();
}
}else{
$error.=$soapclient->getError();
}
if($error){
$form="<form name='form_gateway' method='GET' action='#' onsubmit=\"alert('$error !')\"></form>";
echo "<p dir=LTR>";
echo "ERROR = $error <br /> " ;
echo "$authority <br />" ;
echo "$status <br />" ;
echo "$orderId <br />" ;
echo "Couldn't get proper authority key from Parsian" ;
echo "</p>";
exit;
}
break;
}
این کد در برخی موارد مثلا هر 10 بار یک بار جواب میده . اما در اکثر موارد ارور شماره 30 رو بر می گردونه که در راهنما اومده :
Status (byte): کد وضعيت
0: موفق
20, 22: پين فروشنده درست نميباشد
30: عمليات قبلا با موفقيت انجام شده است
34: شماره تراکنش فروشنده درست نميباشد
حالا چند سوال :
1- علت این خطا چیه که همش تکرار می شه؟؟ آیا مشکل از کد های منه ؟؟؟
2- در صورتی که کدهام مشکلی دارن مشکلشون چیه ؟؟
3- در مراحل تست ، چندین بار هم خطای 14 دریافت کردم که در فایل راهنما اشاره ای بهش نشده . این خطا مربوط به چیه؟؟
فایل payment.php i هم که بانک ارسال کرده ضمیمه کردم
من با بانک پارسیان قرار داد بستم و اون ها پین کد و یک فایل payment.php رو برای من فرستادن.
حالا من یک صفحه طراحی کردم که یک فرم داره و مقدار واریزی رو از کاربر میگیره و به صفحه parsian.php ارسال .میکنه .
<form method="post" name="pay" id="pay" action="parsian.php" >
<input name="price" type="text" id="price" maxlength="10" size="25">
<input class="button" type="submit" value="send">
</form>حالادرصفحه parsian.php ابتدا برخی اطلاعاتمورد نیازمو می گیرم و در دیتابیسثبت می کنم. مانند :شماره کاربر و مبلغ و ...
حالا این اطلاعات رو دارم :
$price=safeint($_POST["price"]);
$pin = 'MYPARSIANPIN';
$PaymentName = 'parsian';
$RedirectURL='uuuu.php';
$PayID هم زمان ثبت در دیتابیس با دستور $PayID=mysql_insert_id(); می گیرم .
و حالا با کد زیر سعی دارم authority رو بدست بیارم .
switch ($PaymentName) {
case "parsian" :
$error="";
include("nusoap/nusoap.php");
$soapclient = new soapclient('https://www.pec24.com/pecpaymentgateway/eshopservice.asmx?wsdl','wsdl');
if(!$soapclient->getError()){
$soapProxy = $soapclient->getProxy() ;
if(!$soapclient->getError()){
$params = array(
'pin' => $pin , // this is our PIN NUMBER
'amount' => $price,
'orderId' => $PayID,
'callbackUrl' => $RedirectURL,
'authority' => 0,
'status' => 1
);
$sendParams = array($params) ;
$res = $soapclient->call('PinPaymentRequest', $sendParams);
$authority = $res['authority'];
$status = $res['status'];
if ( ($authority) and ($status==0) ) {
$parsURL = "https://www.pec24.com/pecpaymentgateway/" ;
$form="<form name='form_gateway' method='GET' action='$parsURL'><input type='hidden' name='au' value='$authority'></form>";
$query="update dynamic_ads_onlinepays set RefNum='$authority' where PayID='$PayID'";
mysql_db_query($dbname,$query,$RSconn);
} else {
$error.="ERROR $status";
$error.=$soapclient->getError();
}
}else{
$error.=$soapclient->getError();
}
}else{
$error.=$soapclient->getError();
}
if($error){
$form="<form name='form_gateway' method='GET' action='#' onsubmit=\"alert('$error !')\"></form>";
echo "<p dir=LTR>";
echo "ERROR = $error <br /> " ;
echo "$authority <br />" ;
echo "$status <br />" ;
echo "$orderId <br />" ;
echo "Couldn't get proper authority key from Parsian" ;
echo "</p>";
exit;
}
break;
}
این کد در برخی موارد مثلا هر 10 بار یک بار جواب میده . اما در اکثر موارد ارور شماره 30 رو بر می گردونه که در راهنما اومده :
Status (byte): کد وضعيت
0: موفق
20, 22: پين فروشنده درست نميباشد
30: عمليات قبلا با موفقيت انجام شده است
34: شماره تراکنش فروشنده درست نميباشد
حالا چند سوال :
1- علت این خطا چیه که همش تکرار می شه؟؟ آیا مشکل از کد های منه ؟؟؟
2- در صورتی که کدهام مشکلی دارن مشکلشون چیه ؟؟
3- در مراحل تست ، چندین بار هم خطای 14 دریافت کردم که در فایل راهنما اشاره ای بهش نشده . این خطا مربوط به چیه؟؟
فایل payment.php i هم که بانک ارسال کرده ضمیمه کردم