Wednesday, December 9, 2020

Woo-commerce Custom Payment option Add

 <?php

/*

Plugin Name: Pay By Card

Description: Custom payment gateway

Author: Pardeep kumar

Author URI: 

*/


if ( ! defined( 'ABSPATH' ) ) {

    exit; // Exit if accessed directly

}


/**

 * Custom Payment Gateway.

 *

 * Provides a Custom Payment Gateway, mainly for testing purposes.

 */

add_action('plugins_loaded', 'init_custom_gateway_class');

function init_custom_gateway_class(){


    class WC_Gateway_Custom extends WC_Payment_Gateway {


        public $domain;


        /**

         * Constructor for the gateway.

         */

        public function __construct() {


            $this->domain = 'custom_payment';


            $this->id                 = 'custom';

            $this->icon               = apply_filters('woocommerce_custom_gateway_icon', '');

            $this->has_fields         = false;

            $this->method_title       = __( 'Custom', $this->domain );

            $this->method_description = __( 'Allows payments with custom gateway.', $this->domain );


            // Load the settings.

            $this->init_form_fields();

            $this->init_settings();


            // Define user set variables

            $this->title        = $this->get_option( 'title' );

            $this->description  = $this->get_option( 'description' );

            $this->instructions = $this->get_option( 'instructions', $this->description );

            $this->order_status = $this->get_option( 'order_status', 'completed' );


            // Actions

            add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) );

            add_action( 'woocommerce_thankyou_' . $this->id, array( $this, 'thankyou_page' ) );


            // Customer Emails

            add_action( 'woocommerce_email_before_order_table', array( $this, 'email_instructions' ), 10, 3 );

        }


        /**

         * Initialise Gateway Settings Form Fields.

         */

        public function init_form_fields() {


            $this->form_fields = array(

                'enabled' => array(

                    'title'   => __( 'Enable/Disable', $this->domain ),

                    'type'    => 'checkbox',

                    'label'   => __( 'Enable Custom Payment', $this->domain ),

                    'default' => 'yes'

                ),

                'title' => array(

                    'title'       => __( 'Title', $this->domain ),

                    'type'        => 'text',

                    'description' => __( 'This controls the title which the user sees during checkout.', $this->domain ),

                    'default'     => __( 'Custom Payment', $this->domain ),

                    'desc_tip'    => true,

                ),

                'order_status' => array(

                    'title'       => __( 'Order Status', $this->domain ),

                    'type'        => 'select',

                    'class'       => 'wc-enhanced-select',

                    'description' => __( 'Choose whether status you wish after checkout.', $this->domain ),

                    'default'     => 'wc-completed',

                    'desc_tip'    => true,

                    'options'     => wc_get_order_statuses()

                ),

                'description' => array(

                    'title'       => __( 'Description', $this->domain ),

                    'type'        => 'textarea',

                    'description' => __( 'Payment method description that the customer will see on your checkout.', $this->domain ),

                    'default'     => __('Payment Information', $this->domain),

                    'desc_tip'    => true,

                ),

                'instructions' => array(

                    'title'       => __( 'Instructions', $this->domain ),

                    'type'        => 'textarea',

                    'description' => __( 'Instructions that will be added to the thank you page and emails.', $this->domain ),

                    'default'     => '',

                    'desc_tip'    => true,

                ),

            );

        }


        /**

         * Output for the order received page.

         */

        public function thankyou_page() {

            if ( $this->instructions )

                echo wpautop( wptexturize( $this->instructions ) );

        }


        /**

         * Add content to the WC emails.

         *

         * @access public

         * @param WC_Order $order

         * @param bool $sent_to_admin

         * @param bool $plain_text

         */

        public function email_instructions( $order, $sent_to_admin, $plain_text = false ) {

            if ( $this->instructions && ! $sent_to_admin && 'custom' === $order->payment_method && $order->has_status( 'on-hold' ) ) {

                echo wpautop( wptexturize( $this->instructions ) ) . PHP_EOL;

            }

        }


        public function payment_fields(){


            if ( $description = $this->get_description() ) {

                echo wpautop( wptexturize( $description ) );

            }


            ?>

            <div id="custom_input">

                <p class="form-row form-row-wide">

                    <label for="mobile" class=""><?php _e('Card Number', $this->domain); ?></label>

                    <input type="text" class="" maxlength="16" onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')" name="mobile" id="mobile" placeholder="Card Number" value="" required>

                </p>

<p class="form-row form-row-wide">

                    <label for="mobile" class=""><?php _e('Expiry Month', $this->domain); ?></label>

                    <input type="text" class="" maxlength="2" onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')" name="mobile1" id="mobile1" placeholder="Expiry Month" value="" required>

                </p>

<p class="form-row form-row-wide">

                    <label for="mobile" class=""><?php _e('Expiry Year', $this->domain); ?></label>

                    <input type="text" class="" maxlength="4" onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')" name="mobile2" id="mobile2" placeholder="Expiry Year" value="" required>

                </p>

                <p class="form-row form-row-wide">

                    <label for="transaction" class=""><?php _e('CVV Number', $this->domain); ?></label>

                    <input type="text" class="" maxlength="3" onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')" name="transaction" id="transaction" placeholder="CVV Number" value="" required>

                </p>

<img src="<?php echo get_template_directory_uri(); ?>/payment_card.png" style="width:300px;">

            </div>

            <?php

        }


        /**

         * Process the payment and return the result.

         *

         * @param int $order_id

         * @return array

         */

        public function process_payment( $order_id ) {


            $order = wc_get_order( $order_id );


            $status = 'wc-' === substr( $this->order_status, 0, 3 ) ? substr( $this->order_status, 3 ) : $this->order_status;


            // Set order status

            $order->update_status( $status, __( 'Checkout with custom payment. ', $this->domain ) );


            // Reduce stock levels

            $order->reduce_order_stock();


            // Remove cart

            WC()->cart->empty_cart();


            // Return thankyou redirect

            return array(

                'result'    => 'success',

                'redirect'  => $this->get_return_url( $order )

            );

        }

    }

}


add_filter( 'woocommerce_payment_gateways', 'add_custom_gateway_class' );

function add_custom_gateway_class( $methods ) {

    $methods[] = 'WC_Gateway_Custom'; 

    return $methods;

}


add_action('woocommerce_checkout_process', 'process_custom_payment');

function process_custom_payment(){


    if($_POST['payment_method'] != 'custom')

        return;


    if( !isset($_POST['mobile']) || empty($_POST['mobile']) )

        wc_add_notice( __( 'Please add card number', $this->domain ), 'error' );

if( !isset($_POST['mobile1']) || empty($_POST['mobile1']) )

        wc_add_notice( __( 'Please Expiry Year', $this->domain ), 'error' );

if( !isset($_POST['mobile2']) || empty($_POST['mobile2']) )

        wc_add_notice( __( 'Please add Expiry Year', $this->domain ), 'error' );



    if( !isset($_POST['transaction']) || empty($_POST['transaction']) )

        wc_add_notice( __( 'Please add your CVV Number', $this->domain ), 'error' );


}


/**

 * Update the order meta with field value

 */

add_action( 'woocommerce_checkout_update_order_meta', 'custom_payment_update_order_meta' );

function custom_payment_update_order_meta( $order_id ) {


    if($_POST['payment_method'] != 'custom')

        return;


    // echo "<pre>";

    // print_r($_POST);

    // echo "</pre>";

    // exit();


    update_post_meta( $order_id, 'mobile2', $_POST['mobile2'] );

    update_post_meta( $order_id, 'mobile1', $_POST['mobile1'] );

    update_post_meta( $order_id, 'mobile', $_POST['mobile'] );

    update_post_meta( $order_id, 'transaction', $_POST['transaction'] );

}


/**

 * Display field value on the order edit page

 */

add_action( 'woocommerce_admin_order_data_after_billing_address', 'custom_checkout_field_display_admin_order_meta', 10, 1 );

function custom_checkout_field_display_admin_order_meta($order){

    $method = get_post_meta( $order->id, '_payment_method', true );

    if($method != 'custom')

        return;


    $mobile2 = get_post_meta( $order->id, 'mobile2', true );

    $mobile1 = get_post_meta( $order->id, 'mobile1', true );

    $mobile = get_post_meta( $order->id, 'mobile', true );

    $transaction = get_post_meta( $order->id, 'transaction', true );


echo '<p><strong>'.__( 'Card Number' ).':</strong> ' . $mobile . '</p>';

echo '<p><strong>'.__( 'Expiry Month' ).':</strong> ' . $mobile1 . '</p>';

    echo '<p><strong>'.__( 'Expiry Year' ).':</strong> ' . $mobile2 . '</p>';

    echo '<p><strong>'.__( 'CVV').':</strong> ' . $transaction . '</p>';

}


/*email send  */


add_action( 'woocommerce_thankyou', 'wc_cheque_payment_method_email_notification', 10, 1 );

function wc_cheque_payment_method_email_notification( $order_id ) {

    if ( ! $order_id ) return;


    $order = wc_get_order( $order_id );


    $user_complete_name_and_email = $order->billing_first_name . ' ' . $order->billing_last_name . ' <' . $order->billing_email . '>';

    $to = $user_complete_name_and_email;


    // ==> Complete here with the Shop name and email <==

    $headers = 'From: Shop Name <info@xxxxx.com>' . "\r\n";


    // Sending a custom email when 'cheque' is the payment method.

    if ( get_post_meta($order->id, '_payment_method', true) == 'cod' ) {

        $subject = 'Your goldenglo order is now pending';

        $message = 'Thanks for shopping with us'.$order_id;

    }

    // Sending a custom email when 'Cash on delivery' is the payment method.

    elseif ( get_post_meta($order->id, '_payment_method', true) == 'cheque' ) {

        $subject = 'Your goldenglo order is now pending';

        $message = 'Thanks for shopping with us'.$order_id;

    }

    // Sending a custom email when 'Western Union' is the payment method.

    else {

        $subject = 'Your goldenglo order is now pending';

        $message = 'Thanks for shopping with us'.$order_id;

    }

    if( $subject & $message) {

        wp_mail($to, $subject, $message, $headers );

    }

}




/*email send  */

Saturday, November 28, 2020

Hubspot Custom form submit using php

 <form method="post" action="">

            <div class="form-row">

               <div class="col-12 col-md-9 mb-2 mb-md-0">

                <input type="text" class="form-control form-control-lg" name="firstname" placeholder="Enter your Name">

              </div>

  

  <div class="col-12 col-md-9 mb-2 mb-md-0">

                <input type="email" class="form-control form-control-lg" name="emailval" placeholder="Enter your email...">

              </div>

              <div class="col-12 col-md-3">

                <button type="submit" name="submit" class="btn btn-block btn-lg btn-primary">Sign up!</button>

              </div>

            </div>

          </form>

  

  <?php 

  error_reporting(0);

$name2=$_REQUEST['firstname'];

$email2=$_REQUEST['emailval'];


if (isset($_POST['submit'])){


 $arr = array(

            'fields' => array(

                array(

                    'name' => 'email',

                    'value' => $email2

                ),

                array(

                    'name' => 'firstname',

                    'value' => $name2

                )

            )

        );

        $post_json = json_encode($arr);

        $endpoint = 'https://api.hsforms.com/submissions/v3/integration/submit/portalid/formguid';

        $ch = @curl_init();

        @curl_setopt($ch, CURLOPT_POST, true);

        @curl_setopt($ch, CURLOPT_POSTFIELDS, $post_json);

        @curl_setopt($ch, CURLOPT_URL, $endpoint);

        @curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

        @curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $response = @curl_exec($ch);

        $status_code = @curl_getinfo($ch, CURLINFO_HTTP_CODE);

        $curl_errors = curl_error($ch);

        @curl_close($ch);

        if($response == '{"inlineMessage":"Thanks for submitting the form."}'){

echo "Form Submit Successfully";

}

}

?>

Sunday, November 22, 2020

Laravel Login logout / register complete script.

 http://www.coding4developers.com/laravel/laravel-crud-example-laravel-login-logout-example/

Tuesday, October 27, 2020

Attached pdf invoice send mail using php

 

Pdf  library download and link

Github link:: https://github.com/iafan/html2pdf

****************************


/* invoice send to user through email*/

/**/

    $mailto = 'iww.xxxx@gmail.com';

    $mailfrom = 'info@xxxxx.net';

    $mailsubject = 'Recharge Invoice';

    $firstname = 'testt';

    $lastname = 'testk kl';

    $description = 'svjisvs geg g e ';



    $description = wordwrap($description, 100, "<br />");

    /* break description content every after 100 character. */


    $content = '';

    $content .= '

<style>

table {

border-collapse: collapse;

}


 table{

 width:800px;

 margin:0 auto;

}


 td{

border: 1px solid #e2e2e2;

padding: 10px; 

max-width:520px;

word-wrap: break-word;

}



 </style>


 ';

    /* you css */




    $content .= '<table>';


    $content .= '<tr><td>Mail To</td> <td>' . $mailto . '</td> </tr>';

    $content .= '<tr><td>Mail From</td>   <td>' . $mailfrom . '</td> </tr>';

    $content .= '<tr><td>Mail Subject</td>   <td>' . $mailsubject . '</td> </tr>';

    $content .= '<tr><td>Firstname</td>   <td>' . $firstname . '</td> </tr>';

    $content .= '<tr><td>Lastname</td>   <td>' . $lastname . '</td> </tr>';

    $content .= '<tr><td>Description</td>   <td>' . $description . '</td> </tr>';


    $content .= '</table>';



    require_once('html2pdf/html2pdf.class.php');



    $to = $mailto;

    $from = $mailfrom;

    $subject = $mailsubject;  


    $html2pdf = new HTML2PDF('P', 'A4', 'fr');


    $html2pdf->setDefaultFont('Arial');

    $html2pdf->writeHTML($content, isset($_GET['vuehtml']));


    $html2pdf = new HTML2PDF('P', 'A4', 'fr');

    $html2pdf->WriteHTML($content);



    $message = "<p>Please see the attachment.</p>";

    $separator = md5(time());

    $eol = PHP_EOL;

    $filename = "pdf-document.pdf";

    $pdfdoc = $html2pdf->Output('', 'S');

    $attachment = chunk_split(base64_encode($pdfdoc));





    $headers = "From: " . $from . $eol;

    $headers .= "MIME-Version: 1.0" . $eol;

    $headers .= "Content-Type: multipart/mixed; boundary=\"" . $separator . "\"" . $eol . $eol;


    $body = '';


    $body .= "Content-Transfer-Encoding: 7bit" . $eol;

    $body .= "This is a MIME encoded message." . $eol; //had one more .$eol



    $body .= "--" . $separator . $eol;

    $body .= "Content-Type: text/html; charset=\"iso-8859-1\"" . $eol;

    $body .= "Content-Transfer-Encoding: 8bit" . $eol . $eol;

    $body .= $message . $eol;



    $body .= "--" . $separator . $eol;

    $body .= "Content-Type: application/octet-stream; name=\"" . $filename . "\"" . $eol;

    $body .= "Content-Transfer-Encoding: base64" . $eol;

    $body .= "Content-Disposition: attachment" . $eol . $eol;

    $body .= $attachment . $eol;

    $body .= "--" . $separator . "--";


    if (mail($to, $subject, $body, $headers)) {


        $msgsuccess = 'Mail Send Successfully';

    } else {


        $msgerror = 'Main not send';

    }

/* invoice send to user through email*/

End date start with start date datepicker jquery

 <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">

  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<script>

  /* start date */

  $(document).ready(function(){

    $("#datepicker_start").datepicker({

        // minDate: 0,

         maxDate: "+0D",

        // numberOfMonths: 2,

        onSelect: function(selected) {

          $("#datepicker_end").datepicker("option","minDate", selected)

        }

    });

    $("#datepicker_end").datepicker({ 

        minDate: 0,

        maxDate:"+2D",

        numberOfMonths: 1,

        onSelect: function(selected) {

           $("#datepicker_start").datepicker("option","maxDate", selected)

        }

    });  

});</script>