lovephp
جمعه 02 بهمن 1394, 22:28 عصر
من اسکریپت پرداخت آنلاین بانک ملت رو از یکی دو جا خریدم
اما تو همشون این موردی که میخوام بگم وجود داره
این خلاصه کدی هست که تو صفحه بازگشت از بانک باید اجرا بشه
به ساختارهای شرطی دقت کنید
مثلا تو خط 14 یک بار error رو چک میکنه خوب اگه اروری داشته باشه شرط خط 15 برقرار میشه و وارد بلاک if میشه حالا مشکل اینه که تو این بلاک دوباره چرا همون کد خط 14 اجرا میشه(آبجکت کلاینت که کاری نکرده )
در ضمن اگه شرط خط 15 برقرار باشه صددرصد خط 18 اجرا میشه و از اجرای بقیه اسکریپت خارج میشه و هیچ وقت به متد استعلام وضعیت تراکنش و بقیه چیزا نمیرسه
خواهشا دوستانی که تو این زمینه کار کردن راهنمایی کنن
<?php
$RefId = $_POST['RefId']; //RefId
$ResCode = $_POST['ResCode']; //ResCode
$SaleOrderId = $_POST['SaleOrderId']; //Order Id
$SaleReferenceId = $_POST['SaleReferenceId']; //Transaction
$client = new nusoap_client("https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl");
$result = $client->call("bpVerifyRequest", $parameters, $namespace);
if ($client->fault) {
die();
} else {
$err = $client->getError();
if ($err) {
$err = $client->getError();
if ($err) {
die();
}
$result = $client->call("bpInquiryRequest", $parameters, $namespace);
if ($client->fault) {
die();
} else {
$err = $client->getError();
if ($err) {
$err = $client->getError();
if ($err) {
die();
}
$result = $client->call("bpReversalRequest", $parameters, $namespace);
if ($client->fault) {
die();
} else {
$err = $client->getError();
if ($err) {
die();
} else {
//echo "Reversal Response is :" . $resultStr;
}
}
echo '<h2>Error</h2><pre>' . $err . '</pre>';
die();
} else {
//SETTLE REQUEST
$err = $client->getError();
if ($err) {
die();
}
$result = $client->call("bpSettleRequest", $parameters, $namespace);
if ($client->fault) {
die();
} else {
$err = $client->getError();
if ($err) {
die();
} else {
//Update Table,Save Settle Status
//Note: Successful Settle means that sale is settled.
}
//echo "Settle Response is :" $resultStr;
}
//echo "Inquiry Response is :" . $resultStr;
}
//end display the result
}
//end check for error
//Display the reeor
echo '<h2>Error</h2><pre>' . $err . '</pre>';
die();
} else {
$err = $client->getError();
if ($err) {
die();
}
$result = $client->call("bpSettleRequest", $parameters, $namespace);
if ($client->fault) {
die();
} else {
$err = $client->getError();
if ($err) {
die();
} else {
$query = "UPDATE payment ";
$query .= " SET RefId='{$RefId}',SaleRefId='{$SaleReferenceId}',Re sCode='{$ResCode}' ";
$query .= " WHERE Id='{$SaleOrderId}' ";
$user_set = mysqli_query($connection, $query);
//echo "settle Response is :" . $resultStr;
}
}
}
}
?>
<form id="form1" runat="server">
<fieldset>
<legend>نتیجه پرداخت</legend>
<div class="bankMellatLogo">
<img alt="" src="img/BM_Logo.png"/>
</div>
<?php
if ($ResCode == 0) {
?>
<img src="img/accept.png">
<?php
} else {
?>
<img src="img/notaccept.png">
<?php
}
?>
<table>
<tr>
<td>رسید پرداخت:</td>
<td>
<span><?php echo $RefId; ?></span>
</td>
</tr>
<tr>
<td>کد برگشتی از درگاه:</td>
<td>
<span><?php echo response($ResCode); ?></span>
</td>
</tr>
<tr>
<td>شماره پرداخت:</td>
<td>
<span><?php echo $SaleOrderId; ?></span>
</td>
</tr>
<tr>
<td>شماره مرجع پرداخت:</td>
<td>
<span><?php echo $SaleReferenceId; ?></span>
</td>
</tr>
</table>
</fieldset>
</form>
اما تو همشون این موردی که میخوام بگم وجود داره
این خلاصه کدی هست که تو صفحه بازگشت از بانک باید اجرا بشه
به ساختارهای شرطی دقت کنید
مثلا تو خط 14 یک بار error رو چک میکنه خوب اگه اروری داشته باشه شرط خط 15 برقرار میشه و وارد بلاک if میشه حالا مشکل اینه که تو این بلاک دوباره چرا همون کد خط 14 اجرا میشه(آبجکت کلاینت که کاری نکرده )
در ضمن اگه شرط خط 15 برقرار باشه صددرصد خط 18 اجرا میشه و از اجرای بقیه اسکریپت خارج میشه و هیچ وقت به متد استعلام وضعیت تراکنش و بقیه چیزا نمیرسه
خواهشا دوستانی که تو این زمینه کار کردن راهنمایی کنن
<?php
$RefId = $_POST['RefId']; //RefId
$ResCode = $_POST['ResCode']; //ResCode
$SaleOrderId = $_POST['SaleOrderId']; //Order Id
$SaleReferenceId = $_POST['SaleReferenceId']; //Transaction
$client = new nusoap_client("https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl");
$result = $client->call("bpVerifyRequest", $parameters, $namespace);
if ($client->fault) {
die();
} else {
$err = $client->getError();
if ($err) {
$err = $client->getError();
if ($err) {
die();
}
$result = $client->call("bpInquiryRequest", $parameters, $namespace);
if ($client->fault) {
die();
} else {
$err = $client->getError();
if ($err) {
$err = $client->getError();
if ($err) {
die();
}
$result = $client->call("bpReversalRequest", $parameters, $namespace);
if ($client->fault) {
die();
} else {
$err = $client->getError();
if ($err) {
die();
} else {
//echo "Reversal Response is :" . $resultStr;
}
}
echo '<h2>Error</h2><pre>' . $err . '</pre>';
die();
} else {
//SETTLE REQUEST
$err = $client->getError();
if ($err) {
die();
}
$result = $client->call("bpSettleRequest", $parameters, $namespace);
if ($client->fault) {
die();
} else {
$err = $client->getError();
if ($err) {
die();
} else {
//Update Table,Save Settle Status
//Note: Successful Settle means that sale is settled.
}
//echo "Settle Response is :" $resultStr;
}
//echo "Inquiry Response is :" . $resultStr;
}
//end display the result
}
//end check for error
//Display the reeor
echo '<h2>Error</h2><pre>' . $err . '</pre>';
die();
} else {
$err = $client->getError();
if ($err) {
die();
}
$result = $client->call("bpSettleRequest", $parameters, $namespace);
if ($client->fault) {
die();
} else {
$err = $client->getError();
if ($err) {
die();
} else {
$query = "UPDATE payment ";
$query .= " SET RefId='{$RefId}',SaleRefId='{$SaleReferenceId}',Re sCode='{$ResCode}' ";
$query .= " WHERE Id='{$SaleOrderId}' ";
$user_set = mysqli_query($connection, $query);
//echo "settle Response is :" . $resultStr;
}
}
}
}
?>
<form id="form1" runat="server">
<fieldset>
<legend>نتیجه پرداخت</legend>
<div class="bankMellatLogo">
<img alt="" src="img/BM_Logo.png"/>
</div>
<?php
if ($ResCode == 0) {
?>
<img src="img/accept.png">
<?php
} else {
?>
<img src="img/notaccept.png">
<?php
}
?>
<table>
<tr>
<td>رسید پرداخت:</td>
<td>
<span><?php echo $RefId; ?></span>
</td>
</tr>
<tr>
<td>کد برگشتی از درگاه:</td>
<td>
<span><?php echo response($ResCode); ?></span>
</td>
</tr>
<tr>
<td>شماره پرداخت:</td>
<td>
<span><?php echo $SaleOrderId; ?></span>
</td>
</tr>
<tr>
<td>شماره مرجع پرداخت:</td>
<td>
<span><?php echo $SaleReferenceId; ?></span>
</td>
</tr>
</table>
</fieldset>
</form>