Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save saber13812002/6f0b7b0c33c85ab2cbee054b548079de to your computer and use it in GitHub Desktop.
Save saber13812002/6f0b7b0c33c85ab2cbee054b548079de to your computer and use it in GitHub Desktop.
bankmellat wp plugin connect to banktest.ir
<?php
defined('ABSPATH') or die("-1");
if (!class_exists('nusoap_base')) {
require_once(plugin_dir_path(__FILE__) . '/lib/nusoap.php');
}
function WPBEGPAY_ShortCode()
{
global $WPBEGPAY_Options;
$settings = get_option('WPBEGPAY_settings_fields_arrays', $WPBEGPAY_Options);
echo "
<style>
.WPBEGPAY_Success, .WPBEGPAY_Warning, .WPBEGPAY_Connecting {
direction:rtl;
border: 1px solid;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
padding:15px 50px 15px 50px;
background-repeat: no-repeat;
background-position: calc(100% - 10px) center;
}
.WPBEGPAY_Warning {
color: #9F6000;
background-color: #FEEFB3;
background-image: url('" . plugins_url('../images/warning.png', __FILE__) . "');
}
.WPBEGPAY_Success {
color: #4F8A10;
background-color: #DFF2BF;
background-image: url('" . plugins_url('../images/success.png', __FILE__) . "');
}
.WPBEGPAY_Connecting {
color: #4F8A10;
background-color: #DFF2BF;
background-image: url('" . plugins_url('../images/Loader.GIF', __FILE__) . "');
}
</style>";
if (!isset($_POST['ResCode'])) {
$defaultThemes = array("formA.html", "formB.html", "formC.html");
if (in_array($settings['form'], $defaultThemes))
include_once(plugin_dir_path(__FILE__) . '/../forms/' . $settings['form']);
else
include_once(WP_CONTENT_DIR . "/WPBEGPAY/" . $settings['form']);
if ($_SERVER['REQUEST_METHOD'] == 'POST' and $_POST['WPBEGPAY_price'] != null) {
$orderId = time() . rand(100000, 999999);
$ldate = date('Ymd');
$ltime = date('His');
$client = new nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl');
// $client = new nusoap_client('http://banktest.ir/gateway/mellat/ws?wsdl');
$namespace = 'http://interfaces.core.sw.bps.com/';
if ((!$client) or ($err = $client->getError())) {
$error .= $err . "<br/>";
echo $error;
} else {
function getCurrentURL($MellatG_Callbackurl)
{
$currentURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
$currentURL .= $_SERVER["SERVER_NAME"];
if ($_SERVER["SERVER_PORT"] != "80" && $_SERVER["SERVER_PORT"] != "443") {
$currentURL .= ":" . $_SERVER["SERVER_PORT"];
}
if ($MellatG_Callbackurl)
$currentURL .= $MellatG_Callbackurl;
else
$currentURL .= $_SERVER["REQUEST_URI"];
return $currentURL;
}
$par = array(
'terminalId' => $settings['MellatG_TerminalNumber'],
'userName' => $settings['MellatG_TerminalUser'],
'userPassword' => $settings['MellatG_TerminalPass'],
//banktest.ir
// 'terminalId' => 552,
// 'userName' => "user552",
// 'userPassword' => "21659655",
'orderId' => $orderId,
'amount' => $_POST['WPBEGPAY_price'],
'localDate' => $ldate,
'localTime' => $ltime,
'additionalData' => '',
'callBackUrl' => getCurrentURL($settings['MellatG_Callbackurl']),
'payerId' => '0'
);
$result = $client->call('bpPayRequest', $par, $namespace);
$resultStr = $result;
$res = explode(',', $resultStr);
$ResCode = $res[0];
if ($ResCode == "0") {
global $wpdb;
$table_name = $wpdb->prefix . 'wpbegpay_orders';
$wpdb->insert(
$table_name,
array(
'order_status' => 'no',
'order_amount' => $_POST['WPBEGPAY_price'],
'order_date' => date("H:i:s Y/m/d"),
'order_ip' => $_SERVER['REMOTE_ADDR'],
'order_orderid' => $orderId,
'order_referenceId' => '',
'order_refid' => $res[1],
'order_settle' => 'no',
'order_name_surname' => $_POST['WPBEGPAY_namefamily'],
'order_phone' => $_POST['WPBEGPAY_phone'],
'order_des' => $_POST['WPBEGPAY_des'],
'order_email' => $_POST['WPBEGPAY_email']
)
);
?>
<style>
.WPBEGPAY-form,
.basic-grey,
.elegant-aero {
display: none;
}
</style>
<script language='javascript' type='text/javascript'>
window.onload = function() {
document.forms['Order_Form'].submit()
}
</script>
<div class="WPBEGPAY_Connecting">
<?php echo $settings['connecting_msg']; ?>
<form id="Order_Form" name="Order_Form" style="position:absolute;bottom:82px;left:35px;" action="https://bpm.shaparak.ir/pgwchannel/startpay.mellat" method="POST">
<!-- <form id="Order_Form" name="Order_Form" style="position:absolute;bottom:82px;left:35px;" action="http://banktest.ir/gateway/mellat/gate" method="POST"> -->
<input type="hidden" name="RefId" value="<?php echo $res[1] ?>" />
<input name="submit button" type="submit" style="width:100%;" value="ورود به درگاه پرداخت" id="button" />
</form>
</div>
<?php
} else {
echo "<script>alert('امکان اتصال به درگاه پرداخت وجود ندارد!\\nکدخطا:$ResCode');location.reload();</script>";
}
if ($client->fault) {
echo '<h2>خطا!</h2><pre>';
print_r($result);
echo '</pre>';
die();
} else {
$err = $client->getError();
if ($err) {
// Display the error
echo '<h2>خطا!</h2><pre>' . $err . '</pre>';
die();
}
}
}
}
} else if (isset($_POST['ResCode'])) {
if ($_POST['ResCode'] == null)
die("Are you kidding me!");
$client = new nusoap_client('https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl');
// $client = new nusoap_client('http://banktest.ir/gateway/mellat/ws?wsdl');
$namespace = 'http://interfaces.core.sw.bps.com/';
$err = $client->getError();
if ($err) {
echo '<div class="warning">' . $settings['invalid_msg'] . '</div>';
exit;
}
$ResCode = $_POST['ResCode'];
$terminalId = $settings['MellatG_TerminalNumber'];
$userName = $settings['MellatG_TerminalUser'];
$userPassword = $settings['MellatG_TerminalPass'];
//banktest.ir
// $terminalId = 552;
// $userName = "user552";
// $userPassword = "21659655";
$refid = $_POST['refid'];
$orderId = $_POST['SaleOrderId'];
$verifySaleOrderId = $_POST['SaleOrderId'];
$verifySaleReferenceId = $_POST['SaleReferenceId'];
if ($ResCode == 0) {
if ($client->fault) {
echo '<div class="warning">' . $settings['error_msg'] . '</div>';
exit;
}
$refid = $_POST['refid'];
$parameters = array(
'terminalId' => $terminalId,
'userName' => $userName,
'userPassword' => $userPassword,
'saleOrderId' => $orderId,
'saleOrderId' => $verifySaleOrderId,
'saleReferenceId' => $verifySaleReferenceId
);
$resultpay = $client->call('bpVerifyRequest', $parameters, $namespace);
$Check = $client->call('bpInquiryRequest', $parameters, $namespace);
if ($Check == '0') {
global $wpdb;
$table_name = $wpdb->prefix . 'wpbegpay_orders';
$wpdb->update(
$table_name,
array('order_status' => 'yes'),
array('order_orderid' => $orderId),
array('%s'),
array('%s')
);
//register ticket
include('apiProvider2.php');
$pairs = getQueryString2(parse_url(basename($_SERVER['REQUEST_URI']), PHP_URL_QUERY));
$session_id = explode('=', $pairs[0])[1];
//echo $session_id . '' . '<br>';
$order_id = explode('=', $pairs[1])[1];
//echo $order_id . '' . '<br>';
$train_number = explode('=', $pairs[2])[1];
//echo $train_number . '' . '<br>';
$data = "";
if ($session_id)
$data = getRegisterTicketData2($session_id, $order_id, $train_number);
else
echo 'error session id not found';
//if($price==$price)
echo $data;
//if register ticket 1
// soap:Body:array(1)
// RegisterTiketResponse:array(2)
// @xmlns:"http://tempuri.org/"
// RegisterTiketResult:"1"
//100009
if ($data["soap:Envelope"]["soap:Body"]["RegisterTiketResponse"]["RegisterTiketResult"] == "1") {
$settel = $client->call('bpSettleRequest', $parameters, $namespace);
$wpdb->update(
$table_name,
array('order_settle' => 'yes'),
array('order_orderid' => $orderId),
array('%s'),
array('%s')
);
$wpdb->update(
$table_name,
array('order_referenceId' => $verifySaleReferenceId),
array('order_orderid' => $orderId),
array('%s'),
array('%s')
);
$getorder = $wpdb->get_results("SELECT * FROM $table_name WHERE order_orderid = $orderId");
foreach ($getorder as $order) {
echo '
<div class="WPBEGPAY_Success">' . $settings['successfull_msg'] . '</div>
شماره سفارش: ' . $order->order_id . '</br>
نام و نام خانوادگي: ' . $order->order_name_surname . '</br>
آدرس ايميل: ' . $order->order_email . '</br>
شماره تلفن: ' . $order->order_phone . '</br>
توضيحات: ' . $order->order_des . '</br>
تاريخ: ' . $order->order_date . '</br>
آي پي: ' . $order->order_ip . '</br>
مبلغ(ريال): ' . $order->order_amount . '</br>
رسيد ديجيتالي سفارش: ' . $order->order_referenceId . '
';
// reportticketA
echo '<p>پرینت بلیط <br>
<button id="printticket" onclick="myFunctionprintticket()" type="button">پرینت بلیط</button>
</p>';
include_once(plugin_dir_path(__FILE__) . '/inc/order_mail.php');
if ($settings['SendSmS'] == 'true') {
$AdminMobile = $settings['adminMobile'];
$smsUserName = $settings['Sms_username'];
$smsPassword = $settings['Sms_password'];
$smsLineNumber = $settings['sms_lineNumber'];
$sms_service = $settings['sms_service'];
$sms_text = $settings['Sms_text'];
$sms_text = str_replace('#', $order->order_id, $sms_text);
$sms_text = str_replace('$', number_format($order->order_amount), $sms_text);
include_once(plugin_dir_path(__FILE__) . '/inc/sms.php');
}
}
} else if ($data["soap:Envelope"]["soap:Body"]["RegisterTiketResponse"]["RegisterTiketResult"] == "100009")
echo 'مبلغ واریز شده و بلیط صابر شده است ' . '<p>پرینت بلیط <br>
<button id="printticket" onclick="myFunctionprintticket()" type="button">پرینت بلیط</button>
</p>';
else
echo 'error register ticket and بازگشت پول شما تا 72 ساعت ';
}
} else {
echo '<div class="WPBEGPAY_Warning">' . $settings['cancel_msg'] . '</div>';
}
}
}
add_shortcode('WPBEGPAY_SC', 'WPBEGPAY_ShortCode');
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment