Format code

This commit is contained in:
Rene Vergara 2023-06-23 11:49:12 -05:00
parent 1768f700bb
commit 46fc016dc7
Signed by: pitmutt
GPG key ID: 65122AD495A7F5B2

View file

@ -1,35 +1,35 @@
<?php
/**
* Plugin Name: ZGo Payment Gateway
* Plugin URI: https://vergara.tech'
* Description: ZGo latest payment processing solution for Woocommerce. Accept payments using Zcash.
* Version: 1.0.0 beta
* Requires at least: 5.2
* Requires PHP: 7.2
* Author: Vergara Tech LLC
* Author URI: https://vergara.tech
* License: GPL v2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
**/
* Plugin Name: ZGo Payment Gateway
* Plugin URI: https://vergara.tech'
* Description: ZGo latest payment processing solution for Woocommerce. Accept payments using Zcash.
* Version: 1.0.0 beta
* Requires at least: 5.2
* Requires PHP: 7.2
* Author: Vergara Tech LLC
* Author URI: https://vergara.tech
* License: GPL v2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
**/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
exit; // Exit if accessed directly
}
if ( ! in_array( 'woocommerce/woocommerce.php',
apply_filters('active_plugins',
get_option('active_plugins') ) ) ) {
apply_filters('active_plugins',
get_option('active_plugins') ) ) ) {
return;
}
add_action( 'plugins_loaded', 'zgopmt_init' );
function zgopmt_init() {
if ( ! class_exists( 'WC_Payment_Gateway' ) ) {
if ( ! class_exists( 'WC_Payment_Gateway' ) ) {
return;
return;
}
}
class WC_ZGopmt_Gateway extends WC_Payment_Gateway {
@ -37,20 +37,20 @@ function zgopmt_init() {
public $zgoownerid;
public $zgotoken;
public $siteURL;
public $zpmtdb;
public $zpmtdb;
/**
* Constructor for the gateway.
*/
public function __construct() {
/**
* Constructor for the gateway.
*/
public function __construct() {
global $wpdb;
//
// Create payments table in WordPress database
//
$sql = 'create table if not exists zgo_payments (' .
'pmt_orderid varchar(64),' .
'pmt_wc_order varchar(20),' .
global $wpdb;
//
// Create payments table in WordPress database
//
$sql = 'create table if not exists zgo_payments (' .
'pmt_orderid varchar(64),' .
'pmt_wc_order varchar(20),' .
'pmt_wc_custname varchar(100),' .
'pmt_accepted varchar(30),' .
'pmt_confirmed varchar(30),' .
@ -59,10 +59,10 @@ function zgopmt_init() {
'pmt_zec double (12,8) not null default 0.0,' .
'pmt_wc_paid int not null default 0,' .
'unique pmt_orderix (pmt_orderid, pmt_wc_order) )';
$wpdb->query($sql);
$wpdb->query($sql);
$iconurl = plugin_dir_url( __FILE__ ) .
'assets/img/zgo-icon-full_6pct.png';
'assets/img/zgo-icon-full_6pct.png';
$this->siteURL = get_site_url();
@ -72,9 +72,9 @@ function zgopmt_init() {
$this->icon = $iconurl;
$this->has_fields = false;
$this->method_title = __('ZGo Payment',
$this->domain);
$this->domain);
$this->method_description = __('ZGo Payment - Accept payments using Zcash.', $this->domain);
// Load the settings.
// Load the settings.
$this->init_form_fields();
$this->init_settings();
@ -86,206 +86,206 @@ function zgopmt_init() {
// Actions
add_action('woocommerce_update_options_payment_gateways_' .
$this->id,
array( $this, 'process_admin_options' ) );
$this->id,
array( $this, 'process_admin_options' ) );
add_action( 'woocommerce_thankyou_' . $this->id, array( $this, 'thankyou_page' ) );
add_action( 'woocommerce_thankyou_' . $this->id, array( $this, 'thankyou_page' ) );
if ( ! $this->is_valid_for_use() )
$this->enabled = false;
/**
* Add the webhook for payment confirmation from ZGo
*/
* Add the webhook for payment confirmation from ZGo
*/
add_action( 'woocommerce_api_zpmtcallback', array($this,'zconfirm'));
}
}
public function init_form_fields() {
$this->form_fields = apply_filters(
'woo_zgopmtsrv_fields', array(
'enabled' => array(
'title' => __('Enable/Disable',
$this->domain ),
'type' => 'checkbox',
'label' => __('Enable payments with Zcash', $this->domain ),
'default' => 'yes'
),
'title' => array(
'title' => __( 'ZGo Payment Service title',
$this->domain ),
'type' => 'text',
'default' => __( 'ZGo Payment Gateway',
$this->domain ),
'desc_tip' => true,
'description' => __( 'Add a new title for the ZGo Payment Service that your customers will see when they are in the checkout page',
$this->domain ),
),
'description' => array(
'title' => __( 'ZGo Payment Service Confirmation',
$this->domain ),
'type' => 'textarea',
'default' => __( '<b>Pay with Zcash</b>, ZGo will report your payment as soon as it gets confirmed. Normally it takes about 5 minutes.<br> <a href="https://zgo.cash" target="_blank">Read more...</a>',
$this->domain ),
'desc_tip' => true,
'description' => __('Payment confirmation description that the customer will see on your checkout.',
$this->domain ),
),
'instructions' => array(
'title' => __('Instructions',
$this->domain ),
'type' => 'textarea',
'default' => __('Default instrctions',
$this->domain ),
'desc_tip' => true,
'description' => __('Instruction that will be added to the Thank You page and order email',
$this->domain ),
),
'zgoownerid' => array(
'title' => __( 'ZGo OwnerId',
$this->domain ),
'type' => 'text',
'default' => __( 'Replace this text with your ZGo Owner ID ',
$this->domain ),
'desc_tip' => true,
'description' => __( 'Type or paste your ZGo Account Owner Id (Found in your ZGo Shop Settings)',
$this->domain ),
),
'zgotoken' => array(
'title' => __( 'ZGo Token',
$this->domain ),
'type' => 'text',
'default' => __( 'Replace this text with your ZGo Token',
$this->domain ),
'desc_tip' => true,
'description' => __( 'Type or paste your ZGo Token (Found in your ZGo Shop Settings)',
$this->domain ),
),
)
'woo_zgopmtsrv_fields', array(
'enabled' => array(
'title' => __('Enable/Disable',
$this->domain ),
'type' => 'checkbox',
'label' => __('Enable payments with Zcash', $this->domain ),
'default' => 'yes'
),
'title' => array(
'title' => __( 'ZGo Payment Service title',
$this->domain ),
'type' => 'text',
'default' => __( 'ZGo Payment Gateway',
$this->domain ),
'desc_tip' => true,
'description' => __( 'Add a new title for the ZGo Payment Service that your customers will see when they are in the checkout page',
$this->domain ),
),
'description' => array(
'title' => __( 'ZGo Payment Service Confirmation',
$this->domain ),
'type' => 'textarea',
'default' => __( '<b>Pay with Zcash</b>, ZGo will report your payment as soon as it gets confirmed. Normally it takes about 5 minutes.<br> <a href="https://zgo.cash" target="_blank">Read more...</a>',
$this->domain ),
'desc_tip' => true,
'description' => __('Payment confirmation description that the customer will see on your checkout.',
$this->domain ),
),
'instructions' => array(
'title' => __('Instructions',
$this->domain ),
'type' => 'textarea',
'default' => __('Default instrctions',
$this->domain ),
'desc_tip' => true,
'description' => __('Instruction that will be added to the Thank You page and order email',
$this->domain ),
),
'zgoownerid' => array(
'title' => __( 'ZGo OwnerId',
$this->domain ),
'type' => 'text',
'default' => __( 'Replace this text with your ZGo Owner ID ',
$this->domain ),
'desc_tip' => true,
'description' => __( 'Type or paste your ZGo Account Owner Id (Found in your ZGo Shop Settings)',
$this->domain ),
),
'zgotoken' => array(
'title' => __( 'ZGo Token',
$this->domain ),
'type' => 'text',
'default' => __( 'Replace this text with your ZGo Token',
$this->domain ),
'desc_tip' => true,
'description' => __( 'Type or paste your ZGo Token (Found in your ZGo Shop Settings)',
$this->domain ),
),
)
);
}
/*
* Check if configuration is valid
*/
public function is_valid_for_use() {
$isvalid = false;
* Check if configuration is valid
*/
public function is_valid_for_use() {
if ( isset($this->zgoownerid) &&
($this->zgoownerid !== '') ) {
$isvalid = false;
if ( isset($this->zgoownerid) &&
($this->zgoownerid !== '') ) {
$url = 'https://test.zgo.cash/auth?ownerid=' .
$this->zgoownerid . '&token=' .
$this->zgotoken . '&siteurl=' .
$this->base64url_encode($this->siteURL);
$this->zgoownerid . '&token=' .
$this->zgotoken . '&siteurl=' .
$this->base64url_encode($this->siteURL);
$response = wp_remote_get($url);
$httpcode = wp_remote_retrieve_response_code( $response );
$response = wp_remote_get($url);
switch ( $httpcode ) {
$httpcode = wp_remote_retrieve_response_code( $response );
switch ( $httpcode ) {
case 200:
$body = wp_remote_retrieve_body( $response );
$oid = json_decode($body);
$isvalid = $oid->{'authorized'};
break;
case 202:
$body = wp_remote_retrieve_body($response );
$isvalid = $oid->{'authorized'};
break;
case 202:
$body = wp_remote_retrieve_body($response );
$oid = json_decode($body);
break;
break;
default:
break;
}
}
break;
}
}
return $isvalid;
}
/*
* Process Payment
*/
* Process Payment
*/
public function process_payment( $order_id ) {
global $wpdb;
$order = wc_get_order( $order_id );
// $wc_order = wc_get_product($order_id);
// $wc_order = wc_get_product($order_id);
$wc_order_key = $order->get_order_key();
$url = 'https://test.zgo.cash/woopayment' .
'?ownerid=' . $this->zgoownerid .
'&token=' . $this->zgotoken .
'&order_id=' . $order_id .
'&order_id=' . $order_id .
'&currency=' . strtolower($order->get_currency()) .
'&amount=' . $order->get_total() .
'&date=' . date_format($order->get_date_created(),'Y-m-d') .
'&siteurl=' . $this->base64url_encode($this->siteURL) .
'&orderkey=' . $wc_order_key;
'&siteurl=' . $this->base64url_encode($this->siteURL) .
'&orderkey=' . $wc_order_key;
//'&orderkey=' . ;
//'&orderkey=' . ;
$response = wp_remote_get($url);
$httpcode = wp_remote_retrieve_response_code( $response );
switch ( $httpcode ) {
case 200:
wc_add_notice( 'Order on hold, please wait for confirmation');
$order->update_status('on_hold',__('Awaiting payment confirmation','woocommerce'));
$body = wp_remote_retrieve_body( $response );
$oid = json_decode($body);
$zgoOrderid = $oid->{'order'};
$zgoOrderToken = $oid->{'token'};
//
// Save ZGo Order ID and Cart order
//
$sql3 = $wpdb->prepare('replace into zgo_payments (pmt_orderid, pmt_wc_order, pmt_wc_custname, pmt_accepted, pmt_confirmed, pmt_amount, pmt_rate, pmt_zec, pmt_wc_paid) values (%s, %s, %s, %s, %s, %f, 0, 0, 0);',
$zgoOrderid, $order_id, $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(), date('Y-m-d H:i:s'), '', $order->get_total());
//$sql = "replace into zgo_payments (" .
//"pmt_orderid," .
//"pmt_wc_order," .
//"pmt_wc_custname," .
//"pmt_accepted," .
//"pmt_confirmed," .
//"pmt_amount," .
//"pmt_rate," .
//"pmt_zec," .
//"pmt_wc_paid) values ('" .
//$zgoOrderid . "','" .
//$order_id . "','" .
//$order->get_billing_first_name() . " " .
//$order->get_billing_last_name() . "','" .
//date('Y-m-d H:i:s') . "','',".
//$order->get_total() .
//",0,0,0)";
$wpdb->query($sql3);
case 200:
wc_add_notice( 'Order on hold, please wait for confirmation');
$order->update_status('on_hold',__('Awaiting payment confirmation','woocommerce'));
$body = wp_remote_retrieve_body( $response );
$oid = json_decode($body);
$zgoOrderid = $oid->{'order'};
$zgoOrderToken = $oid->{'token'};
//
// Save ZGo Order ID and Cart order
//
$sql3 = $wpdb->prepare('replace into zgo_payments (pmt_orderid, pmt_wc_order, pmt_wc_custname, pmt_accepted, pmt_confirmed, pmt_amount, pmt_rate, pmt_zec, pmt_wc_paid) values (%s, %s, %s, %s, %s, %f, 0, 0, 0);',
$zgoOrderid, $order_id, $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(), date('Y-m-d H:i:s'), '', $order->get_total());
//$sql = "replace into zgo_payments (" .
//"pmt_orderid," .
//"pmt_wc_order," .
//"pmt_wc_custname," .
//"pmt_accepted," .
//"pmt_confirmed," .
//"pmt_amount," .
//"pmt_rate," .
//"pmt_zec," .
//"pmt_wc_paid) values ('" .
//$zgoOrderid . "','" .
//$order_id . "','" .
//$order->get_billing_first_name() . " " .
//$order->get_billing_last_name() . "','" .
//date('Y-m-d H:i:s') . "','',".
//$order->get_total() .
//",0,0,0)";
$wpdb->query($sql3);
// Remove cart.
WC()->cart->empty_cart();
// Remove cart.
WC()->cart->empty_cart();
return array(
'result' => 'success',
'redirect' => 'https://dev.zgo.cash/invoice/' . $zgoOrderid . '?token=' . $zgoOrderToken,
);
break;
case 202:
$body = wp_remote_retrieve_body( $response );
$msg = json_decode($body);
$order->update_status('failed',__('Order ' . $order_id . ' -> ZGo Order Generation Error : ' . $msg->{'message'},'woocommerce'));
return array(
'result' => 'success',
'redirect' => 'https://dev.zgo.cash/invoice/' . $zgoOrderid . '?token=' . $zgoOrderToken,
);
break;
case 202:
$body = wp_remote_retrieve_body( $response );
$msg = json_decode($body);
$order->update_status('failed',__('Order ' . $order_id . ' -> ZGo Order Generation Error : ' . $msg->{'message'},'woocommerce'));
break;
default:
return;
break;
default:
return;
}
}
/**
* Confirm payment and complete order
*/
* Confirm payment and complete order
*/
public function zconfirm() {
global $wpdb;
global $wpdb;
$token = $_GET['token'];
$zgoOrderid = $_GET['orderid'];
$orderid = $_GET['wc_orderid'];
@ -310,11 +310,11 @@ function zgopmt_init() {
// Mark order as completed in ZGo DB
//
//$sql = "update zgo_payments set " .
//"pmt_confirmed='" . date('Y-m-d H:i:s') .
//"', pmt_rate=" . $rate .
//", pmt_zec=" . $totalzec .
//", pmt_wc_paid=1 " .
//" where pmt_wc_order='" . $orderid . "';";
//"pmt_confirmed='" . date('Y-m-d H:i:s') .
//"', pmt_rate=" . $rate .
//", pmt_zec=" . $totalzec .
//", pmt_wc_paid=1 " .
//" where pmt_wc_order='" . $orderid . "';";
$sql2 = $wpdb->prepare('update zgo_payments set pmt_confirmed = %s, pmt_rate = %f, pmt_zec = %f, pmt_wc_paid = 1 where pmt_wc_order = %s;', date('Y-m-d H:i:s'), $rate, $totalzec, $orderid );
$wpdb->query($sql2);
@ -333,33 +333,33 @@ function zgopmt_init() {
}
public function thankyou_page () {
if ( $description = $this->get_description() ) {
echo wpautop( wptexturize( $description ) );
}
if ( $description = $this->get_description() ) {
echo wpautop( wptexturize( $description ) );
}
}
public function console_log($data) {
$file = plugin_dir_path( __DIR__ ) . '/zgopmtgwy/assets/log/console.log';
file_put_contents($file, $data . chr(0x0D) . chr(0x0A), FILE_TEXT | FILE_APPEND | LOCK_EX );
}
public function base64url_encode($data) {
$edata = str_replace('=','',strtr(base64_encode($data), '+/', '-_'));
return $edata;
$edata = str_replace('=','',strtr(base64_encode($data), '+/', '-_'));
return $edata;
}
}
}
add_filter( 'woocommerce_payment_gateways',
'add_custom_gateway_class' );
'add_custom_gateway_class' );
function add_custom_gateway_class( $methods ) {
if ( ! in_array('WC_ZGopmt_Gateway', $methods) ) {
$methods[] = 'WC_ZGopmt_Gateway';
}
return $methods;
$methods[] = 'WC_ZGopmt_Gateway';
}
return $methods;
}
}
@ -371,8 +371,8 @@ foreach ( glob( plugin_dir_path( __FILE__ ) . 'assets/php/*.php' ) as $file ) {
add_action( 'plugins_loaded', 'zgopmtlist_plugin' );
function zgopmtlist_plugin() {
$path = plugin_dir_path( __FILE__ );
$plugin = new zpmt_stats( new zpmt_stats_page($path) );
$plugin->init();
$path = plugin_dir_path( __FILE__ );
$plugin = new zpmt_stats( new zpmt_stats_page($path) );
$plugin->init();
}