Untitled
unknown
plain_text
2 years ago
33 kB
11
Indexable
<?php defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); class Multipass{ public function __construct() { add_action( 'woocommerce_before_checkout_form', array($this,'add_multipass_section') ); add_action('wp_head', array($this,'add_custom_script')); add_action('wp_ajax_multipass_form_submit',array($this,'multipass_form_submit')); add_action('wp_ajax_nopriv_multipass_form_submit',array($this,'multipass_form_submit')); add_action('wp_ajax_multipass_getbudget',array($this,'multipass_getbudget')); add_action('wp_ajax_nopriv_multipass_getbudget',array($this,'multipass_getbudget')); add_action('wp_ajax_multipass_refund',array($this,'multipass_refund_function')); add_action('woocommerce_removed_coupon', array($this,'remove_multipass_coupon')); add_filter('woocommerce_cart_totals_coupon_label', array($this, 'custom_coupon_label'), 10, 2); add_filter('woocommerce_get_order_item_totals', array($this, 'include_multipass_invoice'), 10, 3 ); add_action('woocommerce_order_item_add_action_buttons', array($this,'add_multipass_refund_button')); add_action('admin_footer', array($this,'add_admin_script')); } public function multipass_refund_function(){ if(isset($_POST['order_id']) && !empty($_POST['order_id']) && isset($_POST['transaction_amount']) && !empty($_POST['transaction_amount'])){ global $wpdb; $order_id = $_POST['order_id']; $transaction_amount = $_POST['transaction_amount']; $results = $wpdb->get_row("SELECT oi.order_item_name,p.ID as coupon_id,pm.meta_value as card_code FROM ".$wpdb->prefix."woocommerce_order_items AS oi INNER JOIN ".$wpdb->prefix."woocommerce_order_itemmeta AS oim ON oim.order_item_id = oi.order_item_id INNER JOIN ".$wpdb->prefix."posts AS p ON p.post_title = oi.order_item_name LEFT JOIN ".$wpdb->prefix."postmeta as pm ON (pm.post_id = p.ID AND pm.meta_key ='card_code') WHERE oi.order_id = ".$order_id." AND oi.order_item_type = 'coupon' AND oim.meta_key = 'coupon_data' AND oim.meta_value LIKE '%multipass%'"); if(!empty($results)){ $coupon_id = $results->coupon_id; $CardCode = $results->card_code; $transaction_sum = '-'.$transaction_amount; $OrganizationID = OrganizationID; $OrganizationUserName = OrganizationUserName; $OrganizationPassword = OrganizationPassword; $PosId = PosId; //to add transaction $soapUrl = "https://wstestsec1.mltp.co.il/GenericTransactionsService.asmx?op=AddTransaction"; $xml_post_string = '<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <AddTransaction xmlns="https://wsSec1.mltp.co.il/GenericTransactionsService.asmx"> <tranInfo> <OrganizationID>'.$OrganizationID.'</OrganizationID> <OrganizationUserName>'.$OrganizationUserName.'</OrganizationUserName> <OrganizationPassword>'.$OrganizationPassword.'</OrganizationPassword> <CardId>0</CardId> <CardCode>'.$CardCode.'</CardCode> <PosId>'.$PosId.'</PosId> <PinNumber>0</PinNumber> <TranType>S</TranType> <IsMaster>N</IsMaster> <MasterAmount>0</MasterAmount> <TranValue>'.$transaction_sum.'</TranValue> <TranSum>'.$transaction_sum.'</TranSum> <PosTranId>'.uniqid(8).'</PosTranId> <PosDateTime>2018-02-27T16:19:00</PosDateTime> </tranInfo> </AddTransaction> </soap:Body> </soap:Envelope>'; $headers = array("Content-type: text/xml;charset=\"utf-8\"", "Accept: text/xml", "Cache-Control: no-cache", "Pragma: no-cache", "SOAPAction: https://wsSec1.mltp.co.il/GenericTransactionsService.asmx/AddTransaction", "Content-length: ".strlen($xml_post_string), ); $ch = curl_init(); $url = $soapUrl; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, $OrganizationUserName.":".$OrganizationPassword); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); curl_close($ch); libxml_use_internal_errors(true); $response1 = str_replace('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body>', '', $response); $response2 = str_replace('</soap:Body></soap:Envelope>','',$response1); $xml = simplexml_load_string($response2); if(isset($xml->AddTransactionResult->ResultId) && $xml->AddTransactionResult->ResultId->__toString() == 0){ $transaction_amount = $xml->AddTransactionResult->TransactionSum->__toString(); update_post_meta($coupon_id,'refund_amount',$transaction_amount); update_post_meta($coupon_id,'refund','success'); $msg = array('res' => 'success', 'success' => 'multipass card refund successfully','trans_total'=>$transaction_amount); }else{ update_post_meta($coupon_id,'refund','failed'); $msg = array('res' => 'error', 'error' => 'multipass card refund failed'); } }else{ $msg = array('res' => 'error', 'error' => 'multipass card details not found'); } echo json_encode($msg); exit(); } } public function add_admin_script(){ ?> <script type="text/javascript"> jQuery(document).ready(function(){ jQuery('#multipass_refund').on('click',function(e){ e.preventDefault(); $(this).text('processing'); $(this).prop('disabled', true); var total = $(this).data('total'); var transaction_sum = prompt("Please enter the amount you want to refund:",total); console.log(transaction_sum); if (transaction_sum != null && transaction_sum.trim() !== '') { var numericAmount = parseFloat(transaction_sum); if (numericAmount > total) { alert("Please enter an amount below ₪"+total); $(this).text('Multipass refund'); $(this).prop('disabled', false); } else { var confirmation = confirm("Are you sure you want to refund with the amount: ₪" + numericAmount + "?"); console.log(numericAmount); if (confirmation) { var admin_ajax = "<?php echo admin_url('admin-ajax.php'); ?>"; var order_id = jQuery('#multipass_refund').data('id'); $.ajax({ url: admin_ajax+'?action=multipass_refund', type: 'POST', data: {order_id : order_id,transaction_amount : numericAmount} , success: function(response) { console.log(response); var res = jQuery.parseJSON(response); if(res.res == 'success'){ alert(res.success); window.location.reload(); }else{ alert(res.error); } } }); } else { $(this).text('Multipass refund'); $(this).prop('disabled', false); } } } else { $(this).text('Multipass refund'); $(this).prop('disabled', false); } }); }); </script> <?php } public function add_multipass_refund_button($order) { global $wpdb; $order_id = $order->get_id(); $results = $wpdb->get_row("SELECT SUM(pm1.meta_value) as transaction_total,oi.order_item_name,p.ID as coupon_id,pm.meta_value as refund,pm2.meta_value as refund_amount FROM ".$wpdb->prefix."woocommerce_order_items AS oi INNER JOIN ".$wpdb->prefix."woocommerce_order_itemmeta AS oim ON oim.order_item_id = oi.order_item_id INNER JOIN ".$wpdb->prefix."posts AS p ON p.post_title = oi.order_item_name LEFT JOIN ".$wpdb->prefix."postmeta as pm ON (pm.post_id = p.ID AND pm.meta_key ='refund') LEFT JOIN ".$wpdb->prefix."postmeta as pm1 ON (pm1.post_id = p.ID AND pm1.meta_key='transaction_amount') LEFT JOIN ".$wpdb->prefix."postmeta as pm2 ON (pm2.post_id = p.ID AND pm2.meta_key='refund_amount') WHERE oi.order_id = ".$order_id." AND oi.order_item_type = 'coupon' AND oim.meta_key = 'coupon_data' AND oim.meta_value LIKE '%multipass%'"); if(isset($results->coupon_id) && !empty($results->coupon_id)) { $refund = $results->refund; $transaction_total = $results->transaction_total; $refund_amount = $results->refund_amount; if($refund != "success"){ echo '<button type="button" class="button" id="multipass_refund" data-total="'.$transaction_total.'" data-id="'.$order_id.'">רב-מעבר החזר</button>'; }else{ echo '<span style="color:red;float:right">מולטיפאס כבר הוחזר ₪'.$refund_amount.'</span>'; } } } public function include_multipass_invoice($total_rows, $this_obj, $tax_display){ global $wpdb; $order_id = $this_obj->get_id(); //echo "<pre>";print_r("SELECT COUNT(*) AS cnt FROM ".$wpdb->prefix."woocommerce_order_items AS oi INNER JOIN ".$wpdb->prefix."woocommerce_order_itemmeta AS oim ON oim.order_item_id = oi.order_item_id WHERE oi.order_id = ".$order_id." AND oi.order_item_type = 'coupon' AND oim.meta_key = 'coupon_data' AND oim.meta_value LIKE '%multipass%'");exit(); $num_rows = $wpdb->get_row("SELECT COUNT(*) AS cnt FROM ".$wpdb->prefix."woocommerce_order_items AS oi INNER JOIN ".$wpdb->prefix."woocommerce_order_itemmeta AS oim ON oim.order_item_id = oi.order_item_id WHERE oi.order_id = ".$order_id." AND oi.order_item_type = 'coupon' AND oim.meta_key = 'coupon_data' AND oim.meta_value LIKE '%multipass%'")->cnt; if($num_rows>0){ $results = $wpdb->get_results("SELECT oi.order_item_name,p.ID,pm.meta_value as card_code,pm1.meta_value as transaction_amount FROM ".$wpdb->prefix."woocommerce_order_items AS oi INNER JOIN ".$wpdb->prefix."woocommerce_order_itemmeta AS oim ON oim.order_item_id = oi.order_item_id INNER JOIN ".$wpdb->prefix."posts AS p ON p.post_title = oi.order_item_name LEFT JOIN ".$wpdb->prefix."postmeta as pm ON (pm.post_id = p.ID AND pm.meta_key ='card_code') LEFT JOIN ".$wpdb->prefix."postmeta as pm1 ON (pm1.post_id = p.ID AND pm1.meta_key='transaction_amount') WHERE oi.order_id = ".$order_id." AND oi.order_item_type = 'coupon' AND oim.meta_key = 'coupon_data' AND oim.meta_value LIKE '%multipass%'"); $multipass_label = ""; $multipass_value = ""; if(!empty($results)){ foreach ($results as $key => $result) { $card_code = $result->card_code; $transaction_amount = $result->transaction_amount; $multipass_label .= 'Multipass : xxxxxx'.substr($card_code,strlen($card_code)-4,strlen($card_code)).'<br>'; $multipass_value .= '<span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">₪</span>'.$transaction_amount.'</span><br>'; } } //$total_rows['discount']['label'] = $total_rows['discount']['label'].'<br>'.'Multipass'; $total_rows['discount']['label'] = $total_rows['discount']['label'] .'<br>'.$multipass_label; $total_rows['discount']['value'] = $multipass_value; } return $total_rows; } public function remove_multipass_coupon($coupon_code){ if(str_contains($coupon_code, 'multipass')){ $coupon_post = get_page_by_title($coupon_code, OBJECT, 'shop_coupon'); if ($coupon_post) { $coupon_id = $coupon_post->ID; $soapUrl = "https://wstestsec1.mltp.co.il/GenericTransactionsService.asmx?op=DeleteTransaction"; $OrganizationID = OrganizationID; $OrganizationUserName = OrganizationUserName; $OrganizationPassword = OrganizationPassword; $PosId = PosId; $transaction_id = get_post_meta($coupon_id,'MltpTransactionId',true); $xml_post_string = '<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <DeleteTransaction xmlns="https://wsSec1.mltp.co.il/GenericTransactionsService.asmx"> <tranInfo> <OrganizationID>'.$OrganizationID.'</OrganizationID> <OrganizationUserName>'.$OrganizationUserName.'</OrganizationUserName> <OrganizationPassword>'.$OrganizationPassword.'</OrganizationPassword> <PosId>'.$PosId.'</PosId> <TransactionId>'.$transaction_id.'</TransactionId> </tranInfo> </DeleteTransaction> </soap:Body> </soap:Envelope>'; $headers = array("Content-type: text/xml;charset=\"utf-8\"", "Accept: text/xml", "Cache-Control: no-cache", "Pragma: no-cache", "SOAPAction: https://wsSec1.mltp.co.il/GenericTransactionsService.asmx/DeleteTransaction", "Content-length: ".strlen($xml_post_string), ); $ch = curl_init(); $url = $soapUrl; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, $OrganizationUserName.":".$OrganizationPassword); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); curl_close($ch); libxml_use_internal_errors(true); $response1 = str_replace('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body>', '', $response); $response2 = str_replace('</soap:Body></soap:Envelope>','',$response1); $xml = simplexml_load_string($response2); if(isset($xml->DeleteTransactionResult->ResultId) && $xml->DeleteTransactionResult->ResultId->__toString() == 0){ update_post_meta($coupon_id,'delete_transaction_response',$response); } } } } public function custom_coupon_label($label, $coupon) { if(isset($coupon->code) && !empty($coupon->code)){ if(str_contains($coupon->code, 'multipass')){ $label = 'Multipass coupon : '; } } return $label; } public function add_multipass_section(){ global $woocommerce; $cart_total = $woocommerce->cart->get_totals(); echo ' <style> .modal .modal-dialog { max-width:30%; } #multipass_getbudget { width:50% } @media screen and (max-width: 600px) { .modal .modal-dialog { max-width:88%; } #multipass_getbudget { width:100% } .woocommerce form#multipass_getbudget .form-row-first { width: 100%; } .woocommerce form#multipass_getbudget .form-row-last, .woocommerce-page form .form-row-last { float: none; display: block; } .g-recaptcha { height: 135px; } } </style> <form id="multipass_getbudget" method="post"> <p>אם יש לך קופון מולטיפאס הוסף כאן.</p> <p class="form-row form-row-first"> <label for="CardCode" class="screen-reader-text">CardCode</label> <input type="text" name="CardCode" class="input-text form-control" placeholder="קוד כרטיס" id="CardCode" value=""> </p> <script src="https://www.google.com/recaptcha/api.js"></script> <div class="g-recaptcha" data-sitekey="6LcUbnMmAAAAAEHvoDfKvjIhSR7GTvh2G_he1Q8B" style="margin-bottom: 10px; display: none;"></div> <p class="form-row form-row-last"> <button type="submit" id="getbudget" class="button wp-element-button" name="getbudget" value="שליחה" style="color:#fff">להשיג איזון</button> </p> <div class="clear"></div> </form>'; echo '<div class="modal" id="multipass_modal" tabindex="-1" role="dialog" style="display: none;"> <div class="modal-dialog " role="document"> <div class="modal-content "> <div class="modal-header"> <button type="button" class="close js-modal-close" id="modal-close" data-dismiss="modal" aria-label="Close" style="height: 45px;"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body" style="margin:10px 20px"> <p id="multipass_error" style="font-size:20px;color:red;text-align:center;display:none"></p> <p id="multipass_success" style="font-size:20px;color:green;text-align:center;display:none"></p> <form class="multipass_form" method="post" style=""> <p class="form-row multipass_balance_text" style="font-size:20px">יתרת הכרטיס שלך היא <span class="woocommerce-Price-currencySymbol">₪</span><span class="multipass_balance"></span></p> <p class="form-row" >אנא הזן את סכום העסקה כדי להמשיך</p> <input type="hidden" class="balance" name="multipass_balance" value=""> <p class="form-row"> <label for="Amount" class="screen-reader-text">Amount</label> <input type="number" name="transaction_sum" class="input-text form-control" placeholder="סכום העסקה " id="transaction_sum" value="'.$cart_total['total'].'" style="min-width: 350px" min="1" max="'.$cart_total['total'].'"> </p> <p class="form-row"> <button type="submit" id="multipass_form_submit" class="button wp-element-button" name="multipass_form_submit" value="הוסף עסקה">הוסף עסקה</button> </p> <div class="clear"></div> </form> </div> </div> </div> </div>'; } public function multipass_getbudget(){ global $woocommerce; if(isset($_POST['is_recaptcha_validate']) && !empty($_POST['is_recaptcha_validate']) && ($_POST['is_recaptcha_validate']>=10)) { $secretKey = "6LcUbnMmAAAAANdRrJRCnmWtY6x6v7d5SthxC5b3"; $responseKey = $_POST['g-recaptcha-response']; $userIP = $_SERVER['REMOTE_ADDR']; $verifyURL = "https://www.google.com/recaptcha/api/siteverify"; $verifyData = array( 'secret' => $secretKey, 'response' => $responseKey, 'remoteip' => $userIP ); $ch = curl_init($verifyURL); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($verifyData)); $response = curl_exec($ch); curl_close($ch); $responseData = json_decode($response); if ($responseData->success) { // reCAPTCHA verification successful, perform your actions here //echo "reCAPTCHA verification successful!"; } else { // reCAPTCHA verification failed, handle the error accordingly //echo "reCAPTCHA verification failed!"; $msg = array('res' => 'error', 'error' => 'reCAPTCHA verification failed!'); echo json_encode($msg); exit(); } } if(isset($_POST['CardCode']) && !empty($_POST['CardCode'])){ $CardCode = $_POST['CardCode']; $applied_coupons = WC()->cart->get_applied_coupons(); $card_codes = array(); if(!empty($applied_coupons)){ foreach ($applied_coupons as $key => $coupon_code) { if(str_contains($coupon_code, 'multipass')){ $coupon_post = get_page_by_title($coupon_code, OBJECT, 'shop_coupon'); if ($coupon_post) { $coupon_id = $coupon_post->ID; $card_codes[] = get_post_meta($coupon_id,'card_code',true); } } } } if(!in_array($CardCode, $card_codes)){ $OrganizationID = OrganizationID; $OrganizationUserName = OrganizationUserName; $OrganizationPassword = OrganizationPassword; $PosId = PosId; //to get balance $soapUrl = "https://wstestsec1.mltp.co.il/GenericTransactionsService.asmx?op=GetBudget"; $xml_post_string = '<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <GetBudget xmlns="https://wsSec1.mltp.co.il/GenericTransactionsService.asmx"> <tranInfo> <OrganizationID>'.$OrganizationID.'</OrganizationID> <OrganizationUserName>'.$OrganizationUserName.'</OrganizationUserName> <OrganizationPassword>'.$OrganizationPassword.'</OrganizationPassword> <CardId>0</CardId> <CardCode>'.$CardCode.'</CardCode> <PosId>'.$PosId.'</PosId> </tranInfo> </GetBudget> </soap:Body> </soap:Envelope>'; $headers = array("Content-type: text/xml;charset=\"utf-8\"", "Accept: text/xml", "Cache-Control: no-cache", "Pragma: no-cache", "SOAPAction: https://wsSec1.mltp.co.il/GenericTransactionsService.asmx/GetBudget", "Content-length: ".strlen($xml_post_string), ); $ch = curl_init(); $url = $soapUrl; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, $OrganizationUserName.":".$OrganizationPassword); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); curl_close($ch); libxml_use_internal_errors(true); $response1 = str_replace('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body>', '', $response); $response2 = str_replace('</soap:Body></soap:Envelope>','',$response1); $xml = simplexml_load_string($response2); if(isset($xml->GetBudgetResult->ResultId) && $xml->GetBudgetResult->ResultId->__toString() == 0){ $balance = $xml->GetBudgetResult->UpdatedBugdet->__toString(); WC()->session->set('card_code', $CardCode); $msg = array('res' => 'success','success' => 'success','formatted_balance' => number_format($balance), 'balance' => $balance); }else{ $msg = array('res' => 'error', 'error' => 'You have entered invalid card details!'); } }else{ $msg = array('res' => 'error', 'error' => 'Card details already exist!'); } }else{ $msg = array('res' => 'error', 'error' => 'Please enter card code'); } echo json_encode($msg); exit(); } public function multipass_form_submit(){ global $woocommerce; if(isset($_POST['transaction_sum']) && !empty($_POST['transaction_sum'])){ $CardCode = WC()->session->get('card_code'); $balance = $_POST['multipass_balance']; $transaction_sum = $_POST['transaction_sum']; $OrganizationID = OrganizationID; $OrganizationUserName = OrganizationUserName; $OrganizationPassword = OrganizationPassword; $PosId = PosId; if($balance >= $transaction_sum ){ //to add transaction $soapUrl = "https://wstestsec1.mltp.co.il/GenericTransactionsService.asmx?op=AddTransaction"; $xml_post_string = '<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <AddTransaction xmlns="https://wsSec1.mltp.co.il/GenericTransactionsService.asmx"> <tranInfo> <OrganizationID>'.$OrganizationID.'</OrganizationID> <OrganizationUserName>'.$OrganizationUserName.'</OrganizationUserName> <OrganizationPassword>'.$OrganizationPassword.'</OrganizationPassword> <CardId>0</CardId> <CardCode>'.$CardCode.'</CardCode> <PosId>'.$PosId.'</PosId> <PinNumber>0</PinNumber> <TranType>S</TranType> <IsMaster>N</IsMaster> <MasterAmount>0</MasterAmount> <TranValue>'.$transaction_sum.'</TranValue> <TranSum>'.$transaction_sum.'</TranSum> <PosTranId>'.uniqid(8).'</PosTranId> <PosDateTime>2018-02-27T16:19:00</PosDateTime> </tranInfo> </AddTransaction> </soap:Body> </soap:Envelope>'; $headers = array("Content-type: text/xml;charset=\"utf-8\"", "Accept: text/xml", "Cache-Control: no-cache", "Pragma: no-cache", "SOAPAction: https://wsSec1.mltp.co.il/GenericTransactionsService.asmx/AddTransaction", "Content-length: ".strlen($xml_post_string), ); $ch = curl_init(); $url = $soapUrl; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, $OrganizationUserName.":".$OrganizationPassword); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); curl_close($ch); libxml_use_internal_errors(true); $response1 = str_replace('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body>', '', $response); $response2 = str_replace('</soap:Body></soap:Envelope>','',$response1); $xml = simplexml_load_string($response2); if(isset($xml->AddTransactionResult->ResultId) && $xml->AddTransactionResult->ResultId->__toString() == 0){ $transaction_amount = $xml->AddTransactionResult->TransactionSum->__toString(); $coupon_code = 'Multipass-' . uniqid(); // Generate a unique coupon code $coupon = new WC_Coupon($coupon_code); $coupon->set_amount($transaction_amount); $coupon->set_discount_type('fixed_cart'); $coupon->save(); $coupon_id = $coupon->get_id(); $transaction_id = $xml->AddTransactionResult->MltpTransactionId->__toString(); update_post_meta($coupon_id,'card_id',$CardId); update_post_meta($coupon_id,'card_code',$CardCode); update_post_meta($coupon_id,'transaction_amount',$transaction_amount); update_post_meta($coupon_id,'MltpTransactionId',$transaction_id); update_post_meta($coupon_id,'add_transaction_response',$response); WC()->session->__unset('card_code'); WC()->cart->apply_coupon($coupon_code); $msg = array('res' => 'success','success' => 'Transaction successfully completed'); }else{ $msg = array('res' => 'error', 'error' => 'Something wrong'); } }else{ $msg = array('res' => 'error', 'error' => 'Insufficient balance'); } }else{ $msg = array('res' => 'error', 'error' => 'Please enter transaction amount'); } echo json_encode($msg); exit(); } public function add_custom_script(){ ?> <script type="text/javascript"> jQuery(document).ready(function($) { $('#multipass_modal').hide(); function showPopup() { $('#multipass_modal').show(); } function hidePopup() { $('#multipass_modal').hide(); } $('#multipass_modal #modal-close').on('click', function(e) { e.preventDefault(); $('.multipass_form')[0].reset(); $('#CardCode').val(''); $('#getbudget').text('להשיג איזון'); $('#getbudget').prop('disabled', false); hidePopup(); }); var is_recaptcha_validate = 0; $('#multipass_getbudget').submit(function(e){ e.preventDefault(); var admin_ajax = "<?php echo admin_url('admin-ajax.php'); ?>"; var formData = $( this ).serialize(); $('#getbudget').text('processing'); $('#getbudget').prop('disabled', true); $.ajax({ url: admin_ajax+'?action=multipass_getbudget', type: 'POST', data: formData+'&is_recaptcha_validate='+is_recaptcha_validate, success: function(response) { console.log(response); var res = jQuery.parseJSON(response); if(res.res == 'success'){ $('.multipass_balance').text(res.formatted_balance); $('.multipass_balance_text').show(); $('.balance').val(res.balance); $('.multipass_form').show(); $('#multipass_error').hide(); showPopup(); }else{ $('.multipass_balance_text').hide(); $('#multipass_success').hide(); $('#multipass_error').text(res.error); $('#multipass_error').show(); $('.multipass_form').hide(); showPopup(); } grecaptcha.reset(); } }); is_recaptcha_validate++; if(is_recaptcha_validate>=10){ jQuery('.g-recaptcha').show(); } }); $('.multipass_form').submit(function(e){ e.preventDefault(); var admin_ajax = "<?php echo admin_url('admin-ajax.php'); ?>"; var formData = $( this ).serialize(); $('#multipass_form_submit').text('processing'); $('#multipass_form_submit').prop('disabled', true); $.ajax({ url: admin_ajax+'?action=multipass_form_submit', type: 'POST', data: formData, success: function(response) { var res = jQuery.parseJSON(response); $('#multipass_form_submit').text('הוסף עסקה'); $('#multipass_form_submit').prop('disabled', true); if(res.res == 'success'){ $('#multipass_error').hide(); $('#multipass_success').text('הַצלָחָה'); $('#multipass_success').show('הַצלָחָה'); window.location.reload(); }else if(res.res == 'error'){ $('#multipass_success').hide(); $('#multipass_error').text(res.error); $('#multipass_error').show(); } } }); }); }); </script> <script src="https://www.google.com/recaptcha/enterprise.js?render=6LfynHEmAAAAAECENxtISty7UNjGmQVR3tI9hfv3"></script> <script> function onClick(e) { e.preventDefault(); grecaptcha.enterprise.ready(async () => { const token = await grecaptcha.enterprise.execute('6LfynHEmAAAAAECENxtISty7UNjGmQVR3tI9hfv3', {action: 'LOGIN'}); // IMPORTANT: The 'token' that results from execute is an encrypted response sent by // reCAPTCHA Enterprise to the end user's browser. // This token must be validated by creating an assessment. // See https://cloud.google.com/recaptcha-enterprise/docs/create-assessment }); } </script> <?php } } $Multipass_obj = new Multipass();
Editor is loading...