Файловый менеджер - Редактировать - /home/lmsyaran/public_html/j3/plugins/hikashoppayment/ipaydna/ipaydna.php
Назад
<?php /** * @package HikaShop for Joomla! * @version 4.4.1 * @author hikashop.com * @copyright (C) 2010-2021 HIKARI SOFTWARE. All rights reserved. * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html */ defined('_JEXEC') or die('Restricted access'); ?><?php class plgHikashoppaymentIpaydna extends hikashopPaymentPlugin { var $accepted_currencies = array( 'USD', 'EUR', 'GBP', 'JPY', 'MYR', 'AUD', 'CAD', 'SGD', 'DKK', 'SEK', 'NOK', 'HKD', 'KRW' ); var $multiple = true; var $name = 'ipaydna'; var $pluginConfig = array( 'tid' => array('Store ID', 'input'), 'url' => array('iPayDNA url', 'input'), 'currency' => array('Account Currency', 'list',array( '' => 'ALL', 'USD' => 'USD', 'EUR' => 'EUR', 'GBP' => 'GBP', 'JPY' => 'JPY', 'MYR' => 'MYR', 'AUD' => 'AUD', 'CAD' => 'CAD', 'SGD' => 'SGD', 'DKK' => 'DKK', 'SEK' => 'SEK', 'NOK' => 'NOK', 'HKD' => 'HKD', 'KRW' => 'KRW' )), 'ask_cctype' => array('CARD_TYPE', 'big-textarea'), 'debug' => array('DEBUG', 'boolean','0'), 'cancel_url' => array('CANCEL_URL', 'input'), 'return_url' => array('RETURN_URL', 'input'), 'verified_status' => array('VERIFIED_STATUS', 'orderstatus') ); function needCC(&$method) { $method->ask_cc = true; $method->ask_owner = true; if(!empty($method->payment_params->ask_cctype)){ $cctypes = explode("\n",str_replace(array("\r\n","\r"),array("\n","\n"),$method->payment_params->ask_cctype)); $method->ask_cctype = array(); foreach($cctypes as $cctype){ $row = explode('=',$cctype,2); $method->ask_cctype[trim($row[0])] = trim($row[1]); } }else{ $method->ask_cctype = array('VISA' => 'VISA', 'MASTERCARD' => 'MasterCard', 'AMEX' => 'American Express', 'DISCOVER' => 'Discover', 'JCB' => 'JCB', 'AQUARIUS' => 'Aquarius' ); } if( $method->payment_params->ask_ccv ) { $method->ask_ccv = true; } return true; } function onBeforeOrderCreate(&$order, &$do) { if(parent::onBeforeOrderCreate($order, $do) === true) return true; if( !in_array($this->currency->currency_code, $this->accepted_currencies) ) { $app->enqueueMessage('The iPayDNA payment plugin doest not support your currency: "'.htmlentities($this->currency->currency_code).'"','error'); return false; } $this->ccLoad(); $amount = number_format($order->cart->full_total->prices[0]->price_value_with_tax,2,'.',''); if( !empty($this->payment_params->currency) ) { $db = JFactory::getDBO(); $db->setQuery("SELECT currency_id as `id` FROM #__hikashop_currency WHERE currency_code='".$this->payment_params->currency."';"); $dstCurrency = $db->loadObjectList(); if( isset($dstCurrency) && @$dstCurrency[0]->id > 0 ) { if( $dstCurrency[0]->id != $order->order_currency_id ) { $currencyClass = hikashop_get('class.currency'); $price = $currencyClass->convertUniquePrice($order->cart->full_total->prices[0]->price_value_with_tax, $order->order_currency_id, $dstCurrency[0]->id); $dstCurrencies = null; $dstCurrencies = $currencyClass->getCurrencies($dstCurrency[0]->id,$dstCurrencies); $tmpCurrency = $dstCurrencies[$dstCurrency[0]->id]; $amount = number_format($price,2,'.',''); $currency = $tmpCurrency; } else { $amount = number_format($order->cart->full_total->prices[0]->price_value_with_tax,2,'.',''); } } } $vars = '<'.'?xml version="1.0" encoding="UTF-8"?'.'>' . "\r\n" . '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" '. 'xmlns:ns1="http://acquirer.process.training.aquarius" xmlns:xsd="http://www.w3.org/2001/XMLSchema" '. 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" '. 'SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">'; if( isset($order->order_id) ) $uuid = $order->order_id; else $uuid = uniqid(''); $state = ''; $state2 = ''; $vars .='<SOAP-ENV:Body><ns1:payment>'. '<customerpaymentpagetext xsi:type="xsd:string">'. $this->payment_params->tid . '</customerpaymentpagetext>'. '<orderdescription xsi:type="xsd:string">'. $uuid . '</orderdescription>'. '<orderDetail xsi:type="xsd:string">HikaShop order ' . $this->user->user_id . '</orderDetail>'. '<currencytext xsi:type="xsd:string">'.$this->currency->currency_code.'</currencytext>'. '<purchaseamount xsi:type="xsd:string">'. $amount . '</purchaseamount>'. '<taxamount xsi:type="xsd:string">0.00</taxamount>'. '<shippingamount xsi:type="xsd:string">0.00</shippingamount>'. '<dutyamount xsi:type="xsd:string">0.00</dutyamount>'. '<cardholdername xsi:type="xsd:string">'. $this->cc_owner . '</cardholdername>'. '<cardno xsi:type="xsd:string">'. $this->cc_number . '</cardno>'. '<cardtypetext xsi:type="xsd:string">'. $this->cc_type . '</cardtypetext>'. '<securitycode xsi:type="xsd:string">'. $this->cc_CCV . '</securitycode>'. '<cardexpiremonth xsi:type="xsd:string">'. $this->cc_month . '</cardexpiremonth>'. '<cardexpireyear xsi:type="xsd:string">20'. $this->cc_year . '</cardexpireyear>'. '<cardissuemonth xsi:type="xsd:string">0</cardissuemonth>'. '<cardissueyear xsi:type="xsd:string">0</cardissueyear>'. '<issuername xsi:type="xsd:string"></issuername>'. '<firstname xsi:type="xsd:string">'. substr( @$order->cart->billing_address->address_firstname, 0, 100) . '</firstname>'. '<lastname xsi:type="xsd:string">'. substr( @$order->cart->billing_address->address_lastname, 0, 100) . '</lastname>'. '<company xsi:type="xsd:string"></company>'. '<address xsi:type="xsd:string">'. substr($order->cart->billing_address->address_street,0,250) . '</address>'. '<city xsi:type="xsd:string">'. substr(@$order->cart->billing_address->address_city, 0, 50) . '</city>'. '<state xsi:type="xsd:string">'. $state . '</state>'. '<zip xsi:type="xsd:string">'. substr(@$order->cart->billing_address->address_post_code, 0, 50) . '</zip>'. '<country xsi:type="xsd:string">'. @$order->cart->billing_address->address_country->zone_code_2 . '</country>'. '<email xsi:type="xsd:string">'. substr($this->user->user_email, 0, 250) . '</email>'. '<phone xsi:type="xsd:string">0</phone>'. '<shipfirstname xsi:type="xsd:string">'. substr( @$order->cart->shipping_address->address_firstname, 0, 100) . '</shipfirstname>'. '<shiplastname xsi:type="xsd:string">'. substr( @$order->cart->shipping_address->address_lastname, 0, 100) . '</shiplastname>'. '<shipaddress xsi:type="xsd:string">'. substr($order->cart->shipping_address->address_street,0,250) . '</shipaddress>'. '<shipcity xsi:type="xsd:string">'. substr(@$order->cart->shipping_address->address_city, 0, 50) . '</shipcity>'. '<shipstate xsi:type="xsd:string">'. $state2 . '</shipstate>'. '<shipzip xsi:type="xsd:string">'. substr(@$order->cart->shipping_address->address_post_code, 0, 50) . '</shipzip>'. '<shipcountry xsi:type="xsd:string">'. @$order->cart->shipping_address->address_country->zone_code_2 . '</shipcountry>'. '<cardHolderIP xsi:type="xsd:string">127.0.0.1</cardHolderIP>'. '</ns1:payment></SOAP-ENV:Body></SOAP-ENV:Envelope>'; $url = $this->payment_params->url; $header = array( 'Content-type: text/xml; charset=utf-8', 'Accept: text/xml', 'Cache-Control: no-cache', 'Pragma: no-cache', 'SOAPAction: ""', 'Content-length: '.strlen($vars), ); $session = curl_init('https://' . $url); curl_setopt($session, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($session, CURLOPT_VERBOSE, 1); curl_setopt($session, CURLOPT_POST, 1); curl_setopt($session, CURLOPT_HTTPHEADER, $header); curl_setopt($session, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($session, CURLOPT_POSTFIELDS, $vars); curl_setopt($session, CURLOPT_RETURNTRANSFER, 1); $ret = curl_exec($session); $error = curl_errno($session); $err_msg = curl_error($session); curl_close($session); if( !empty($ret) ) { if( $this->payment_params->debug ) { echo print_r($ret, true) . "\n\n\n"; } $result = array(); if( strpos($ret, 'TRANSACTIONSTATUSTEXT') !== false ) { if( preg_match_all('#<var name=\'(.+)\'><[a-zA-Z]+>(.*)</[a-zA-Z]+></var>#iU', $ret, $res, PREG_SET_ORDER) ) { foreach($res as $r) { $result[ $r[1] ] = $r[2]; } } } if( isset($result['TRANSACTIONSTATUSTEXT']) && $result['TRANSACTIONSTATUSTEXT'] == 'SUCCESSFUL' ) { $do = true; $dbg .= ob_get_clean(); if( !empty($dbg) ) $dbg .= "\r\n"; ob_start(); $history = new stdClass(); $history->notified = 0; $history->amount = $amount . $this->accepted_currencies[0]; $history->data = $dbg . 'Authorization Code: ' . @$result['AUTHORIZATIONCODE'] . "\r\n" . 'Order Reference: ' . @$result['ORDERREFERENCE'] . "\r\n" . 'Unique ID: ' . $uuid; $this->modifyOrder($order, $order->order_status, $history, true); } else { $errMsg = 'An error occurred.'; if( !empty($result['ERRORMESSAGE']) ) { $errMsg = 'An error occurred: [' . @$result['ERRORCODE'] . '] ' . $result['ERRORMESSAGE']; } $this->app->enqueueMessage($errMsg); $do = false; } } else { $do = false; } if( $error != 0 ) { $this->app->enqueueMessage('There was an error during the connection with the iPayDNA payment gateway'); if( $this->payment_params->debug ) { echo 'Curl Err [' . $error . '] : ' . $err_msg . "\n\n\n"; } } $this->writeToLog(null); if( $error == 0 ) { $this->ccClear(); } return true; } function onAfterOrderConfirm(&$order,&$methods,$method_id){ $this->showPage('thanks'); } function getPaymentDefaultValues(&$element) { $element->payment_name='IPAYDNA'; $element->payment_description='You can pay by credit card using this payment method'; $element->payment_images='MasterCard,VISA,Credit_card,American_Express,Discover'; $element->payment_params->login=''; $element->payment_params->password=''; $element->payment_params->ask_ccv = true; $element->payment_params->cert = false; $element->payment_params->pending_status='created'; $element->payment_params->verified_status='confirmed'; $element->payment_params->ask_cctype = "VISA=VISA\nMASTERCARD=MasterCard\nAMEX=American Express\nDISCOVER=Discover\nJCB=JCB\nAQUARIUS=Aquarius"; } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка