/**
* @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 .= '
';
$content .= '
nexapay Thank you ';
if(isset($_POST['secureData'])){
add_action('the_content', array(&$this, 'thank_you_page'));
$responseData = $_POST['secureData'];
$responesSaltKey = $this->response_saltkey;
$responesAESKey = $this->response_aeskey;
$decryptJsonObj = $this->decrypt($responseData,$responesSaltKey,$responesAESKey);
$content .= '
';
// Convert JSON string to Array
$dataArray = json_decode($decryptJsonObj, true);
// $content .= "Json : ".$decryptJsonObj;
// $content .=" ";
// =============== response code end ============
$valid = $dataArray['status'].$dataArray['orderId'].$dataArray['transactionId'].$dataArray['bankId'].$dataArray['description'];
// generate hmac sha 256 hashkey
$signature= hash_hmac('sha256', $valid, $this->response_hashkey);
// $content .=" ";
// $content .= $signature;
//================= validate signature ========================
if($dataArray['signature']==$signature){
$content .= "Status : ".$dataArray['status'];
//$content .=" ";
// $content .= "Client Id : ".$dataArray['clientId'];
$content .=" ";
$content .= "Order Id : ".$dataArray['orderId'];
$content .=" ";
$content .= "Bank Id : ".$dataArray['bankId'];
$content .=" ";
$content .= "Transaction Id : ".$dataArray['transactionId'];
$content .=" ";
$content .= "Amount : ".$dataArray['amount'];
$content .=" ";
$content .= "Email Id : ".$dataArray['emailId'];
$content .=" ";
$content .= "Mobile Number : ".$dataArray['mobileNumber'];
// $content .=" ";
//$content .= "Signature : ".$dataArray['signature'];
$content .=" ";
$content .= "Date : ".$dataArray['date'];
$content .=" ";
$content .= "Description : ".$dataArray['description'];
$content .= " ";
// $content .= "Valid Transaction";
$content .= " ";
$order = new WC_Order($dataArray['udf1']);
if($dataArray['status']=="200"){
$order->update_status('wc-completed',__('Payment Completed By nexapay.','wc_nexapay_payment'));
}else if($dataArray['status']=="400"){
$order->update_status('wc-failed');
}else if($dataArray['status']=="402"){
$order->update_status('wc-cancelled');
}
}else{
$content .= " ";
$content .= "Invalid Transaction";
$content .= " ";
}
$content .= '
';
}
$content .= '
';
return $content;
}
public function encrypt($data, $salt,$key) {
if($key != NULL && $data != "" && $salt != ""){
$method = "AES-256-CBC";
/*Converting Array to bytes*/
$iv = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
$chars = array_map("chr", $iv);
$IVbytes = join($chars);
$salt1 = mb_convert_encoding($salt, "UTF-8"); /*Encoding to UTF-8*/
$key1 = mb_convert_encoding($key, "UTF-8"); /*Encoding to UTF-8*/
/*SecretKeyFactory Instance of PBKDF2WithHmacSHA1 Java Equivalent*/
$hash = openssl_pbkdf2($key1,$salt1,'256','65536', 'sha1');
$encrypted = openssl_encrypt($data, $method, $hash, OPENSSL_RAW_DATA, $IVbytes);
return bin2hex($encrypted);
}else{
return "String to encrypt, Salt and Key is required.";
}
}
public function decrypt($data, $salt, $key) {
if($key != NULL && $data != "" && $salt != ""){
$dataEncypted = hex2bin($data);
$method = "AES-256-CBC";
/*Converting Array to bytes*/
$iv = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
$chars = array_map("chr", $iv);
$IVbytes = join($chars);
$salt1 = mb_convert_encoding($salt, "UTF-8");/*Encoding to UTF-8*/
$key1 = mb_convert_encoding($key, "UTF-8");/*Encoding to UTF-8*/
/*SecretKeyFactory Instance of PBKDF2WithHmacSHA1 Java Equivalent*/
$hash = openssl_pbkdf2($key1,$salt1,'256','65536', 'sha1');
$decrypted = openssl_decrypt($dataEncypted, $method, $hash, OPENSSL_RAW_DATA, $IVbytes);
return $decrypted;
}else{
return "Encrypted String to decrypt, Salt and Key is required.";
}
}
}// class end
add_filter('woocommerce_payment_gateways','add_to_nexapay_payment_gateway');
function add_to_nexapay_payment_gateway($gateways){
$gateways[] = 'WC_nexapay_Payment_Gateway';
return $gateways;
}
}
}
Sparklings Cotton Geometric Double Bedsheet – Crafted Comforts
Skip to content
Sparklings Cotton Geometric Double Bedsheet
₹ 1,199.00 Original price was: ₹1,199.00. ₹ 539.00Current price is: ₹539.00.
Key Features of Sparklings Cotton Geometric Double Bedsheet Best Fit For:-Large Size Double Bed(6.5 ft X 6 ft) Thread Count:160 TC Package Content:1 Double Bedsheet With 2 Pillow Cover,Sparklings Cotton Geometric Double Bedsheet (double bedsheet with pillow covers, Multicolor) Price: Rs. 539 There are days when you don’t want to socialise, and just curl up on your bed, and read, or watch your favourite TV show. For those days, you can jazz up your bedroom décor, by spreading this double bedsheet from SPARKLINGS to pep up your mood. Print that you will Love The blend of abstract and floral prints gives this bedsheet an appealing look. Cotton You wouldn’t want to leave your bedroom anymore, as the bedsheet and two pillow covers are made of cotton to help you relax your body and mind as soon as you hit the bed.,Specifications of Sparklings Cotton Geometric Double Bedsheet (double bedsheet with pillow covers, Multicolor) General Brand Sparklings Machine Washable Yes Type Flat Material Cotton Model Name BDOA507SPK Ideal For Boys & Girls Model ID BDOA507SPK Color Multicolor Size Double Fabric Care First few wash separately, Dark colors to be wash separately, Cold machine wash, Do not use strong Detergent, Do not Bleach, Do not Tumble Dry, Do not Iron on Prints, Do not soak for long time, Dry In Shade. Dimensions Flat Sheet Width 89 inch / 228 cm Fitted Sheet Width 0 cm Pillow Cover Width 17 inch / 45 cm Pillow Cover Length 27 inch / 69 cm Weight 450 g Fitted Sheet Depth 0 cm Fitted Sheet Length 0 cm Flat Sheet Depth 3 cm Flat Sheet Length 89 inch / 228 cm In the Box Number of Contents in Sales Package 1 Sales Package double bedsheet with pillow covers Additional Features Product color may vary due to photogenic effect