/** * @package nexapayPayment */ /* Plugin Name: nexapay Woo Commerce Plugin Plugin URI: https://nexapay.in/integration/ Description: This plugin allows you to integrate with Nexapay payment gateway. Version:1.0.0 Author: nexapay Author URI: https://dev.nexapay.in/ License: GPLv2 or Later Text Domain: wc_nexapay_payment */ /** * Check if WooCommerce is active **/ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) { // Put your plugin code here } if ( !function_exists( 'add_action' ) ) { echo 'Hi there! I\'m just a plugin, not much I can do when called directly.'; exit; } add_action( 'plugins_loaded', 'wc_nexapay_gateway_init', 0 ); define('MakeRequest', WP_PLUGIN_URL . "/" . plugin_basename(dirname(__FILE__)) . '/MakeRequest.php'); function wc_nexapay_gateway_init() { if(class_exists('WC_Payment_Gateway')){ class WC_nexapay_Payment_Gateway extends WC_Payment_Gateway { // The meat and potatoes of our gateway will go here public function __construct(){ global $woocommerce; global $wpdb; $this->id = 'nexapay'; $this->icon = apply_filters('woocommerce_nexapay_icon',plugins_url('/assets/icon.png',__FILE__)); $this->method_title = __('nexapay','wc_nexapay_payment'); $this->method_description = __('This plugin allows you to integrate with nexapay payments','wc_nexapay_payment'); $this->title = __( "nexapay", 'wc_nexapay_payment' ); $this->description = "nexapay Payment Setting page."; $this->has_fields = false; $this->init_form_fields(); $this->init_settings(); $this->title = $this->get_option('title'); $this->url = $this->settings['nexapay_url']; $this->key_id = $this->settings['key_id']; $this->secret_key = $this->settings['secret_key']; $this->description = $this->settings['description']; $this->prod_id = $this->settings['prod_id']; $this->request_hashkey = $this->settings['request_hashkey']; $this->response_hashkey = $this->settings['response_hashkey']; $this->request_saltkey = $this->settings['request_saltkey']; $this->response_saltkey = $this->settings['response_saltkey']; $this->request_aeskey = $this->settings['request_aeskey']; $this->response_aeskey = $this->settings['response_aeskey']; add_action('woocommerce_update_options_payment_gateways_'.$this->id, array($this,'process_admin_options')); //$link = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : $woocommerce->cart->get_cart_url(); $this->thank_you_page(); //http://localhost/wordpress/checkout/ // add_action('the_content', array(&$this, 'thank_you_page')); // add_action('woocommerce_thank_you_'.$this->id, array($this,'thank_you_page')); } public function init_form_fields(){ $this->form_fields = array( 'enabled' => array( 'title' => __( 'Enable/Disable', 'wc_nexapay_payment' ), 'type' => 'checkbox', 'label' => __( 'Enable or Disable nexapay Payments', 'wc_nexapay_payment' ), 'default' => 'yes' ), 'title' => array( 'title' => __( 'Title', 'wc_nexapay_payment' ), 'type' => 'text', 'description' => __( 'Add a new title for the nexapay Payments that customers will see when they are in the checkout page.', 'wc_payripe_payment' ), 'default' => __( 'NexaPay Your Digital Payments Partner', 'wc_nexapay_payment' ), 'desc_tip' => true, 'custom_attributes' => array('readonly' => 'readonly'), ), 'description' => array( 'title' => __( 'Description', 'wc_nexapay_payment' ), 'type' => 'textarea', 'default' =>__('Grow your business with the flawless integration of digital payments solutions!.', 'wc_nexapay_payment'), 'description'=> __('This controls the description which the user sees during checkout.', 'wc_nexapay_payment'), 'desc_tip'=> true, 'custom_attributes' => array('readonly' => 'readonly'), ), 'nexapay_url' => array( 'title' => __('Gateway Url', 'wc_nexapay_payment'), 'type' => 'text', 'default'=> __('https://prod.nexapay.in/payment/gateway/v1/initialrequest','wc_nexapay_payment'), 'description' => __('Will be provided by nexapay payment gateway', 'wc_nexapay_payment'), 'desc_tip' => true, 'custom_attributes' => array('readonly' => 'readonly'), ), 'key_id' => array( 'title' => __('Key Id', 'wc_nexapay_payment'), 'type' => 'text', 'description' => __('As provided by nexapay merchant website', 'wc_nexapay_payment'), 'desc_tip' => true ), 'secret_key' => array( 'title' => __('Secret Key', 'wc_nexapay_payment'), 'type' => 'text', 'description' => __('As provided by nexapay merchant website', 'wc_nexapay_payment'), 'desc_tip' => true ), 'prod_id' => array( 'title' => __('Product ID', 'wc_nexapay_payment'), 'type' => 'text', 'description' => __('Will be provided by nexapay merchant website after production movement', 'wc_nexapay_payment'), 'desc_tip' => true ), 'request_hashkey' => array( 'title' => __('Request Hashkey', 'wc_nexapay_payment'), 'type' => 'text', 'description' => __('Request hash key, provided by nexapay merchant web site', 'wc_nexapay_payment'), 'desc_tip' => true ), 'response_hashkey' => array( 'title' => __('Response Hashkey', 'wc_nexapay_payment'), 'type' => 'text', 'description' => __('Response Hashkey, provided by nexapay merchant web site', 'wc_nexapay_payment'), 'desc_tip' => true ), 'request_saltkey' => array( 'title' => __('Request Saltkey', 'wc_nexapay_payment'), 'type' => 'text', 'description' => __('Request Saltkey, provided by nexapay merchant web site', 'wc_nexapay_payment'), 'desc_tip' => true ), 'response_saltkey' => array( 'title' => __('Response Saltkey', 'wc_nexapay_payment'), 'type' => 'text', 'description' => __('Response Saltkey, provided by nexapay merchant web site', 'wc_nexapay_payment'), 'desc_tip' => true ),'request_aeskey' => array( 'title' => __('Request AESkey', 'wc_nexapay_payment'), 'type' => 'text', 'description' => __('Request AESkey, provided by nexapay merchant web site', 'wc_nexapay_payment'), 'desc_tip' => true ), 'response_aeskey' => array( 'title' => __('Response AESkey', 'wc_nexapay_payment'), 'type' => 'text', 'description' => __('Response AESkey, provided by nexapay merchant web site', 'wc_nexapay_payment'), 'desc_tip' => true ), ); } public function process_payment($order_id){ global $woocommerce; global $current_user; //get user details $current_user = wp_get_current_user(); $user_email = $current_user->user_email; $first_name = $current_user->user_login; $last_name = $current_user->shipping_last_name; $phone_number = $current_user->billing_phone; $country = $current_user->shipping_country; $state = $current_user->shipping_state; $city = $current_user->shipping_city; $postcode = $current_user->shipping_postcode; $address_1 = $current_user->shipping_address_1; $address_2 = $current_user->shipping_address_2; $udf2 = $first_name." ".$last_name; $udf3 = $country." ".$state." ".shipping_city." ".$address_1." ".$address_2." ".$postcode; // $udf4 = ""; // $udf5 = ""; $order= new WC_Order( $order_id ); $keyId = $this->key_id; $secretKey = $this->secret_key; $txnCurr = 'INR'; $amount = $order->get_total(); $emailId = $user_email; $username=$first_name; $mobileNumber = $phone_number; $prodId = $this->prod_id; $requestHashKey = $this->request_hashkey; $requestSaltKey = $this->request_saltkey; $requestAESKey = $this->request_aeskey; $message = $keyId.$secretKey.$txnCurr.$amount.$emailId.$mobileNumber; $signature =hash_hmac('sha256', $message, $requestHashKey); $myObj = (object)array(); $myObj->clientId= $this->key_id; $myObj->clientSecret= $this->secret_key; $myObj->txnCurr='INR'; $myObj->amount=$order->get_total(); $myObj->emailId= $user_email; $myObj->prodId= $this->prod_id; $myObj->username=$username; $myObj->mobileNumber=$phone_number; $myObj->signature=$signature; $myObj->udf1=$order_id; $myObj->udf2=$udf2; $myObj->udf3=$udf3; // $myObj->udf4=$udf4; // $myObj->udf5=$udf5; $myJSON = json_encode($myObj); $encryptJsonObj=$this-> encrypt($myJSON,$requestSaltKey,$requestAESKey); $order = wc_get_order($order_id); $order ->update_status('on-hold',__('Awaiting nexapay Payment','wc_nexapay_payment')); $param = "clientKey=".$keyId."&encrypt=".$encryptJsonObj; return array( 'result' => 'success', 'redirect' => MakeRequest."?key=".$keyId."&enc=".$encryptJsonObj."&url=".$this->url ); exit; } public function thank_you_page(){ global $woocommerce; global $wpdb, $woocommerce; $content = ""; $content .= '