From a17af45bd87a9c6682e4c49ffedf2ac49db2b3fb Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Sat, 24 Nov 2018 21:47:27 +0100
Subject: [PATCH 01/32] Update LICENSE
---
LICENSE | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/LICENSE b/LICENSE
index 1dba848..528fd46 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,7 +1,6 @@
MIT License
-Copyright (c) 2018, Ryo Currency Project
-Portions Copyright (c) 2017-2018, Monero Integrations
+Copyright (c) 2017-2018, Monero Integrations
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
From 53463e9111312b42b842ab4d3939757d54eafbd4 Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Sat, 24 Nov 2018 21:51:01 +0100
Subject: [PATCH 02/32] Update readme.txt
---
readme.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/readme.txt b/readme.txt
index ee5ac56..7fdcf7b 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,5 +1,5 @@
=== Monero WooCommerce Extension ===
-Contributors: serhack, mosu-forge
+Contributors: Monero Integrations Team
Donate link: http://monerointegrations.com/donate.html
Tags: monero, woocommerce, integration, payment, merchant, cryptocurrency, accept monero, monero woocommerce
Requires at least: 4.0
From ccb387095d3ed7da45323aa5e411e202e687a646 Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Sun, 25 Nov 2018 18:22:09 +0100
Subject: [PATCH 03/32] Update class-monero-gateway.php
---
include/class-monero-gateway.php | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/include/class-monero-gateway.php b/include/class-monero-gateway.php
index 7cda884..56f9819 100644
--- a/include/class-monero-gateway.php
+++ b/include/class-monero-gateway.php
@@ -519,7 +519,8 @@ class Monero_Gateway extends WC_Payment_Gateway
}
}
- $qrcode_uri = 'monero:'.$address.'?tx_amount='.$amount_due.'&tx_payment_id='.$payment_id;
+ $amount_formatted = self::format_monero($amount_due);
+ $qrcode_uri = 'monero:'.$address.'?tx_amount='.$amount_formatted.'&tx_payment_id='.$payment_id;
$my_order_url = wc_get_endpoint_url('view-order', $order_id, wc_get_page_permalink('myaccount'));
$payment_details = array(
From cd06d0303b98ff6b3099e077ebc9c3df533293ba Mon Sep 17 00:00:00 2001
From: mosu forge
Date: Wed, 28 Nov 2018 04:06:19 -0800
Subject: [PATCH 04/32] Re-added Ryo-currency copyright, contributer, and
donation address
---
LICENSE | 1 +
README.md | 2 ++
readme.txt | 2 +-
3 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/LICENSE b/LICENSE
index 528fd46..d4ba96f 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,7 @@
MIT License
Copyright (c) 2017-2018, Monero Integrations
+Copyright (c) 2018, Ryo Currency Project
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index f714348..8a2fcc1 100644
--- a/README.md
+++ b/README.md
@@ -103,3 +103,5 @@ This will display a badge showing that you accept Monero-currency.
## Donations
monero-integrations: 44krVcL6TPkANjpFwS2GWvg1kJhTrN7y9heVeQiDJ3rP8iGbCd5GeA4f3c2NKYHC1R4mCgnW7dsUUUae2m9GiNBGT4T8s2X
+
+ryo-currency: 4A6BQp7do5MTxpCguq1kAS27yMLpbHcf89Ha2a8Shayt2vXkCr6QRpAXr1gLYRV5esfzoK3vLJTm5bDWk5gKmNrT6s6xZep
diff --git a/readme.txt b/readme.txt
index 7fdcf7b..0338811 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,5 +1,5 @@
=== Monero WooCommerce Extension ===
-Contributors: Monero Integrations Team
+Contributors: Monero Integrations Team, Ryo Currency Project
Donate link: http://monerointegrations.com/donate.html
Tags: monero, woocommerce, integration, payment, merchant, cryptocurrency, accept monero, monero woocommerce
Requires at least: 4.0
From f7fa0b758e013f74ad08f6f9c6e7e6fea5500652 Mon Sep 17 00:00:00 2001
From: mosu forge
Date: Wed, 28 Nov 2018 05:34:47 -0800
Subject: [PATCH 05/32] Updated readme
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index f714348..7dc3607 100644
--- a/README.md
+++ b/README.md
@@ -61,7 +61,7 @@ Note on security: using this option, while the most secure, requires you to run
* `Monero wallet RPC port` (if confirmation type is `monero-wallet-rpc`) - Port the wallet rpc is bound to with the `--rpc-bind-port` argument. (Default 18080)
* `Testnet` - Check this to change the blockchain explorer links to the testnet explorer. (Default: unchecked)
* `SSL warnings` - Check this to silence SSL warnings. (Default: unchecked)
-* `Show QR Code` - Show payment QR codes. There is no Monero software that can read QR codes at this time (Default: unchecked)
+* `Show QR Code` - Show payment QR codes. (Default: unchecked)
* `Show Prices in Monero` - Convert all prices on the frontend to Monero. Experimental feature, only use if you do not accept any other payment option. (Default: unchecked)
* `Display Decimals` (if show prices in Monero is enabled) - Number of decimals to round prices to on the frontend. The final order amount will not be rounded and will be displayed down to the nanoMonero. (Default: 12)
From ad0d9ef004f58b587b6ac2f06da7f78d5415bd70 Mon Sep 17 00:00:00 2001
From: mosu forge
Date: Wed, 28 Nov 2018 07:37:38 -0800
Subject: [PATCH 06/32] modified woocommerce_gateway_icon filter to use two
arguments
---
include/class-monero-gateway.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/class-monero-gateway.php b/include/class-monero-gateway.php
index 56f9819..6f3a45b 100644
--- a/include/class-monero-gateway.php
+++ b/include/class-monero-gateway.php
@@ -42,7 +42,7 @@ class Monero_Gateway extends WC_Payment_Gateway
public function get_icon()
{
- return apply_filters('woocommerce_gateway_icon', '
');
+ return apply_filters('woocommerce_gateway_icon', '
', $this->id);
}
function __construct($add_action=true)
From 80098195921f45a7455767ab881aaa2aba418393 Mon Sep 17 00:00:00 2001
From: itssteven
Date: Fri, 11 Jan 2019 16:12:58 +0000
Subject: [PATCH 07/32] Subaddresses
Generate subaddress instead of payment id and don't bother creating an integrated address if we're using the rpc.
---
include/class-monero-gateway.php | 32 +++++++++++++++++++-------------
1 file changed, 19 insertions(+), 13 deletions(-)
diff --git a/include/class-monero-gateway.php b/include/class-monero-gateway.php
index 6f3a45b..41a976d 100644
--- a/include/class-monero-gateway.php
+++ b/include/class-monero-gateway.php
@@ -209,12 +209,24 @@ class Monero_Gateway extends WC_Payment_Gateway
$order = wc_get_order($order_id);
- // Generate a unique payment id
- do {
- $payment_id = bin2hex(openssl_random_pseudo_bytes(8));
- $query = $wpdb->prepare("SELECT COUNT(*) FROM $table_name WHERE payment_id=%s", array($payment_id));
- $payment_id_used = $wpdb->get_var($query);
- } while ($payment_id_used);
+ if(self::$confirm_type != 'wownero-wallet-rpc') {
+ // Generate a unique payment id
+ do {
+ $payment_id = bin2hex(openssl_random_pseudo_bytes(8));
+ $query = $wpdb->prepare("SELECT COUNT(*) FROM $table_name WHERE payment_id=%s", array($payment_id));
+ $payment_id_used = $wpdb->get_var($query);
+ } while ($payment_id_used);
+ }
+ else {
+ // Generate subaddress
+ $payment_id = self::$wownero_wallet_rpc->create_address(0, 'Order: ' . $order_id);
+ if(isset($payment_id['address'])) {
+ $payment_id = $payment_id['address'];
+ }
+ else {
+ $this->log->add('Wownero_Gateway', 'Couldn\'t create subaddress for order ' . $order_id);
+ }
+ }
$currency = $order->get_currency();
$rate = self::get_live_rate($currency);
@@ -477,13 +489,7 @@ class Monero_Gateway extends WC_Payment_Gateway
$payment_id = self::sanatize_id($details[0]->payment_id);
if(self::$confirm_type == 'monero-wallet-rpc') {
- $array_integrated_address = self::$monero_wallet_rpc->make_integrated_address($payment_id);
- if (isset($array_integrated_address['integrated_address'])) {
- $integrated_addr = $array_integrated_address['integrated_address'];
- } else {
- self::$log->add('Monero_Gateway', '[ERROR] Unable get integrated address');
- return '[ERROR] Unable get integrated address';
- }
+ $integrated_addr = $payment_id;
} else {
if ($address) {
$decoded_address = self::$cryptonote->decode_address($address);
From 184e740452f0081abf32a012e8c14e76898f369d Mon Sep 17 00:00:00 2001
From: itssteven
Date: Fri, 11 Jan 2019 16:49:08 +0000
Subject: [PATCH 08/32] Subaddresses
`get_address_index` for getting the index number of a specific subaddress, `get_transfers` to get in&pool transfers for that subaddresss index number, `store` required in create_address and create_address required to create new subaddresses
---
include/class-monero-wallet-rpc.php | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/include/class-monero-wallet-rpc.php b/include/class-monero-wallet-rpc.php
index 5940dda..4ff7f58 100644
--- a/include/class-monero-wallet-rpc.php
+++ b/include/class-monero-wallet-rpc.php
@@ -349,4 +349,30 @@ class Monero_Wallet_Rpc
$get_bulk_payments = $this->_run('get_bulk_payments', $get_bulk_payments_parameters);
return $get_bulk_payments;
}
+
+ public function get_transfers($arr)
+ {
+ $get_parameters = $arr;
+ $get_transfers = $this->_run('get_transfers', $get_parameters);
+ return $get_transfers;
+ }
+
+ public function get_address_index($subaddress)
+ {
+ $params = array('address' => $subaddress);
+ return $this->_run('get_address_index', $params);
+ }
+
+ public function store()
+ {
+ return $this->_run('store');
+ }
+
+ public function create_address($account_index = 0, $label = '')
+ {
+ $params = array('account_index' => $account_index, 'label' => $label);
+ $create_address_method = $this->_run('create_address', $params);
+ $save = $this->store(); // Save wallet state after subaddress creation
+ return $create_address_method;
+ }
}
From f7d1f9b968398be311867650e6b4fa095bd0dc51 Mon Sep 17 00:00:00 2001
From: itssteven
Date: Fri, 11 Jan 2019 16:49:38 +0000
Subject: [PATCH 09/32] Update class-monero-wallet-rpc.php
---
include/class-monero-wallet-rpc.php | 7 -------
1 file changed, 7 deletions(-)
diff --git a/include/class-monero-wallet-rpc.php b/include/class-monero-wallet-rpc.php
index 4ff7f58..2f3bb57 100644
--- a/include/class-monero-wallet-rpc.php
+++ b/include/class-monero-wallet-rpc.php
@@ -244,13 +244,6 @@ class Monero_Wallet_Rpc
return $incoming_transfers;
}
- public function get_transfers($input_type, $input_value)
- {
- $get_parameters = array($input_type => $input_value);
- $get_transfers = $this->_run('get_transfers', $get_parameters);
- return $get_transfers;
- }
-
public function view_key()
{
$query_key = array('key_type' => 'view_key');
From ba395d507ee671dede3dff2e96561b2dbf9688c5 Mon Sep 17 00:00:00 2001
From: itssteven
Date: Fri, 11 Jan 2019 16:56:33 +0000
Subject: [PATCH 10/32] Update class-monero-gateway.php
---
include/class-monero-gateway.php | 33 +++++++++++++++++++++++++-------
1 file changed, 26 insertions(+), 7 deletions(-)
diff --git a/include/class-monero-gateway.php b/include/class-monero-gateway.php
index 41a976d..ca9fbe8 100644
--- a/include/class-monero-gateway.php
+++ b/include/class-monero-gateway.php
@@ -404,13 +404,32 @@ class Monero_Gateway extends WC_Payment_Gateway
protected static function check_payment_rpc($payment_id)
{
$txs = array();
- $payments = self::$monero_wallet_rpc->get_all_payments($payment_id);
- foreach($payments as $payment) {
- $txs[] = array(
- 'amount' => $payment['amount'],
- 'txid' => $payment['tx_hash'],
- 'height' => $payment['block_height']
- );
+ $address_index = self::$wownero_wallet_rpc->get_address_index($payment_id);
+ if(isset($address_index['index']['minor'])){
+ $address_index = $address_index['index']['minor'];
+ }
+ else {
+ self::$log->add('Wownero_Gateway', '[ERROR] Couldn\'t get address index of subaddress: ' . $payment_id);
+ return $txs;
+ }
+ $payments = self::$wownero_wallet_rpc->get_transfers(array( 'in' => true, 'pool' => true, 'subaddr_indices' => array($address_index)));
+ if(isset($payments['in'])) {
+ foreach($payments['in'] as $payment) {
+ $txs[] = array(
+ 'amount' => $payment['amount'],
+ 'txid' => $payment['txid'],
+ 'height' => $payment['height']
+ );
+ }
+ }
+ if(isset($payments['pool'])) {
+ foreach($payments['pool'] as $payment) {
+ $txs[] = array(
+ 'amount' => $payment['amount'],
+ 'txid' => $payment['txid'],
+ 'height' => $payment['height']
+ );
+ }
}
return $txs;
}
From 7e485215706c061cc7b1695b98790f49c499ccad Mon Sep 17 00:00:00 2001
From: itssteven
Date: Fri, 11 Jan 2019 17:00:42 +0000
Subject: [PATCH 11/32] Subaddresses
`payment_id` column extended to fit a subaddress over a 16 char payment id
---
monero-woocommerce-gateway.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/monero-woocommerce-gateway.php b/monero-woocommerce-gateway.php
index 10accac..1ef25bb 100644
--- a/monero-woocommerce-gateway.php
+++ b/monero-woocommerce-gateway.php
@@ -209,7 +209,7 @@ function monero_install() {
if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
$sql = "CREATE TABLE $table_name (
order_id BIGINT(20) UNSIGNED NOT NULL,
- payment_id VARCHAR(16) DEFAULT '' NOT NULL,
+ payment_id VARCHAR(100) DEFAULT '' NOT NULL,
currency VARCHAR(6) DEFAULT '' NOT NULL,
rate BIGINT UNSIGNED DEFAULT 0 NOT NULL,
amount BIGINT UNSIGNED DEFAULT 0 NOT NULL,
@@ -226,7 +226,7 @@ function monero_install() {
if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
$sql = "CREATE TABLE $table_name (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
- payment_id VARCHAR(16) DEFAULT '' NOT NULL,
+ payment_id VARCHAR(100) DEFAULT '' NOT NULL,
txid VARCHAR(64) DEFAULT '' NOT NULL,
amount BIGINT UNSIGNED DEFAULT 0 NOT NULL,
height MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
From 8e7d258b5b37604d2dc7db8075c3704fcbf53314 Mon Sep 17 00:00:00 2001
From: itssteven
Date: Fri, 11 Jan 2019 18:13:04 +0000
Subject: [PATCH 12/32] Update class-monero-gateway.php
---
include/class-monero-gateway.php | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/include/class-monero-gateway.php b/include/class-monero-gateway.php
index ca9fbe8..4ba94b0 100644
--- a/include/class-monero-gateway.php
+++ b/include/class-monero-gateway.php
@@ -209,7 +209,7 @@ class Monero_Gateway extends WC_Payment_Gateway
$order = wc_get_order($order_id);
- if(self::$confirm_type != 'wownero-wallet-rpc') {
+ if(self::$confirm_type != 'monero-wallet-rpc') {
// Generate a unique payment id
do {
$payment_id = bin2hex(openssl_random_pseudo_bytes(8));
@@ -219,12 +219,12 @@ class Monero_Gateway extends WC_Payment_Gateway
}
else {
// Generate subaddress
- $payment_id = self::$wownero_wallet_rpc->create_address(0, 'Order: ' . $order_id);
+ $payment_id = self::$monero_wallet_rpc->create_address(0, 'Order: ' . $order_id);
if(isset($payment_id['address'])) {
$payment_id = $payment_id['address'];
}
else {
- $this->log->add('Wownero_Gateway', 'Couldn\'t create subaddress for order ' . $order_id);
+ $this->log->add('Monero_Gateway', 'Couldn\'t create subaddress for order ' . $order_id);
}
}
@@ -404,15 +404,15 @@ class Monero_Gateway extends WC_Payment_Gateway
protected static function check_payment_rpc($payment_id)
{
$txs = array();
- $address_index = self::$wownero_wallet_rpc->get_address_index($payment_id);
+ $address_index = self::$monero_wallet_rpc->get_address_index($payment_id);
if(isset($address_index['index']['minor'])){
$address_index = $address_index['index']['minor'];
}
else {
- self::$log->add('Wownero_Gateway', '[ERROR] Couldn\'t get address index of subaddress: ' . $payment_id);
+ self::$log->add('Monero_Gateway', '[ERROR] Couldn\'t get address index of subaddress: ' . $payment_id);
return $txs;
}
- $payments = self::$wownero_wallet_rpc->get_transfers(array( 'in' => true, 'pool' => true, 'subaddr_indices' => array($address_index)));
+ $payments = self::$monero_wallet_rpc->get_transfers(array( 'in' => true, 'pool' => true, 'subaddr_indices' => array($address_index)));
if(isset($payments['in'])) {
foreach($payments['in'] as $payment) {
$txs[] = array(
From 21df86e4b8eea305a882eb350d5cb688805d3f77 Mon Sep 17 00:00:00 2001
From: itssteven
Date: Sat, 12 Jan 2019 08:57:50 +0000
Subject: [PATCH 13/32] Update class-monero-gateway.php
---
include/class-monero-gateway.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/class-monero-gateway.php b/include/class-monero-gateway.php
index 4ba94b0..03ae5ff 100644
--- a/include/class-monero-gateway.php
+++ b/include/class-monero-gateway.php
@@ -401,15 +401,15 @@ class Monero_Gateway extends WC_Payment_Gateway
}
}
- protected static function check_payment_rpc($payment_id)
+ protected static function check_payment_rpc($subaddress)
{
$txs = array();
- $address_index = self::$monero_wallet_rpc->get_address_index($payment_id);
+ $address_index = self::$monero_wallet_rpc->get_address_index($subaddress);
if(isset($address_index['index']['minor'])){
$address_index = $address_index['index']['minor'];
}
else {
- self::$log->add('Monero_Gateway', '[ERROR] Couldn\'t get address index of subaddress: ' . $payment_id);
+ self::$log->add('Monero_Gateway', '[ERROR] Couldn\'t get address index of subaddress: ' . $subaddress);
return $txs;
}
$payments = self::$monero_wallet_rpc->get_transfers(array( 'in' => true, 'pool' => true, 'subaddr_indices' => array($address_index)));
From 5fa97a828270ce17091613c31321336fbcabe2f6 Mon Sep 17 00:00:00 2001
From: itssteven
Date: Sat, 12 Jan 2019 09:21:44 +0000
Subject: [PATCH 14/32] Update monero-woocommerce-gateway.php
---
monero-woocommerce-gateway.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/monero-woocommerce-gateway.php b/monero-woocommerce-gateway.php
index 1ef25bb..95429af 100644
--- a/monero-woocommerce-gateway.php
+++ b/monero-woocommerce-gateway.php
@@ -209,7 +209,7 @@ function monero_install() {
if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
$sql = "CREATE TABLE $table_name (
order_id BIGINT(20) UNSIGNED NOT NULL,
- payment_id VARCHAR(100) DEFAULT '' NOT NULL,
+ payment_id VARCHAR(94) DEFAULT '' NOT NULL,
currency VARCHAR(6) DEFAULT '' NOT NULL,
rate BIGINT UNSIGNED DEFAULT 0 NOT NULL,
amount BIGINT UNSIGNED DEFAULT 0 NOT NULL,
@@ -226,7 +226,7 @@ function monero_install() {
if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
$sql = "CREATE TABLE $table_name (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
- payment_id VARCHAR(100) DEFAULT '' NOT NULL,
+ payment_id VARCHAR(94) DEFAULT '' NOT NULL,
txid VARCHAR(64) DEFAULT '' NOT NULL,
amount BIGINT UNSIGNED DEFAULT 0 NOT NULL,
height MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
From 646bcd671ae883cf0a66e4812b38b8226be67210 Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Sun, 3 Mar 2019 13:51:48 +0100
Subject: [PATCH 15/32] Update class-monero-gateway.php
---
include/class-monero-gateway.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/class-monero-gateway.php b/include/class-monero-gateway.php
index 03ae5ff..8322f53 100644
--- a/include/class-monero-gateway.php
+++ b/include/class-monero-gateway.php
@@ -588,7 +588,7 @@ class Monero_Gateway extends WC_Payment_Gateway
$order_id = preg_replace("/[^0-9]+/", "", $_GET['order_id']);
$order = wc_get_order( $order_id );
- if($order->user_id != $user->ID)
+ if($order->user_id() != $user->ID)
self::ajax_output(array('error' => '[ERROR] Order does not belong to this user'));
if($order->get_payment_method() != self::$_id)
From 596a1e29ad0862820eac11013e7646f195793112 Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Sun, 16 Jun 2019 10:00:50 +0200
Subject: [PATCH 16/32] Update readme.txt
---
readme.txt | 52 ++++++++++++++++++++++++++++++++++++----------------
1 file changed, 36 insertions(+), 16 deletions(-)
diff --git a/readme.txt b/readme.txt
index 0338811..87a1e64 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,18 +1,19 @@
=== Monero WooCommerce Extension ===
-Contributors: Monero Integrations Team, Ryo Currency Project
+Contributors: SerHack, mosu-forge
Donate link: http://monerointegrations.com/donate.html
Tags: monero, woocommerce, integration, payment, merchant, cryptocurrency, accept monero, monero woocommerce
Requires at least: 4.0
-Tested up to: 4.9.8
+Tested up to: 5.0.1
Stable tag: trunk
-License: GPLv2 or later
-License URI: http://www.gnu.org/licenses/gpl-2.0.html
+License: MIT license
+License URI: https://github.com/monero-integrations/monerowp/blob/master/LICENSE
-Monero WooCommerce Extension is a Wordpress plugin that allows to accept bitcoins at WooCommerce-powered online stores.
+Monero WooCommerce Extension is a Wordpress plugin that allows to accept monero at WooCommerce-powered online stores.
== Description ==
-An extension to WooCommerce for accepting Monero as payment in your store.
+Your online store must use WooCommerce platform (free wordpress plugin).
+Once you installed and activated WooCommerce, you may install and activate Monero WooCommerce Extension.
= Benefits =
@@ -21,17 +22,15 @@ An extension to WooCommerce for accepting Monero as payment in your store.
* Add monero payments option to your existing online store with alternative main currency.
* Flexible exchange rate calculations fully managed via administrative settings.
* Zero fees and no commissions for monero payments processing from any third party.
-* Automatic conversion to Monero via real time exchange rate feed and calculations.
+* Automatic conversion to Monero via realtime exchange rate feed and calculations.
* Ability to set exchange rate calculation multiplier to compensate for any possible losses due to bank conversions and funds transfer fees.
== Installation ==
-1. Install "Monero WooCommerce extension" WordPress plugin just like any other WordPress plugin.
+1. Install "Monero WooCommerce extension" wordpress plugin just like any other Wordpress plugin.
2. Activate
-3. Setup your monero-wallet-rpc with a view-only wallet
-4. Add your monero-wallet-rpc host address and Monero address in the settings panel
-5. Click “Enable this payment gateway”
-6. Enjoy it!
+3. Configure it with your wallet rpc address, (username or password not requested), your monero address
+4. Enjoy it!
== Remove plugin ==
@@ -47,11 +46,32 @@ An extension to WooCommerce for accepting Monero as payment in your store.
= 0.1 =
* First version ! Yay!
-= 0.2 =
-* Bug fixes
+= 1.0 =
+* Added the view key option
+
+= 2.1 =
+* Verify transactions without monero-wallet-rpc
+* Optionally accept zero confirmation transactions
+* bug fixing
+
+= 2.2 =
+* Fix some bugs
+
+= 2.3 =
+* Bug fixing
+
+= 3.0.0 =
+Huge shoutout to mosu-forge who contributes a lot to make 3.0 possible.
+* Ability to set number of confirms: 0 for zero conf, up to 60.
+* Amount owed in XMR gets locked in after the order for a configurable amount of time after which the order is invalid, default 60 minutes.
+* Shows transactions received along with the number of confirms right on the order success page, auto-updates through AJAX.
+* QR code generation is done with Javascript instead of sending payment details to a 3rd party.
+* Admin page for showing all transactions made to the wallet.
+* Logic is done via cron, instead of the user having to stay on the order page until payment is confirmed.
+* Payment details (along with the txid) are always visible on the customer's account dashboard on the my orders section.
+* Live prices are also run via cron, shortcodes for showing exchange rates.
+* Properly hooks into order confirmation email page.
-= 0.3 =
-* Complete rewrite of how the plugin handles payments
== Upgrade Notice ==
From fea43715ea55b4d4aedb64db4d75c962f694d9dd Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Sun, 16 Jun 2019 10:09:43 +0200
Subject: [PATCH 17/32] Update base_58 library.
---
include/class-monero-base58.php | 677 ++++++++++++++++----------------
1 file changed, 340 insertions(+), 337 deletions(-)
diff --git a/include/class-monero-base58.php b/include/class-monero-base58.php
index 0818996..795f73c 100644
--- a/include/class-monero-base58.php
+++ b/include/class-monero-base58.php
@@ -1,354 +1,357 @@
(https://github.com/monero-integrations)
+ * @copyright 2018
+ * @license MIT
+ *
+ * ============================================================================
+ *
+ * // Initialize class
+ * $base58 = new base58();
+ *
+ * // Encode a hexadecimal (base16) string as base58
+ * $encoded = $base58->encode('0137F8F06C971B168745F562AA107B4D172F336271BC0F9D3B510C14D3460DFB27D8CEBE561E73AC1E11833D5EA40200EB3C82E9C66ACAF1AB1A6BB53C40537C0B7A22160B0E');
+ *
+ * // Decode
+ * $decoded = $base58->decode('479cG5opa54beQWSyqNoWw5tna9sHUNmMTtiFqLPaUhDevpJ2YLwXAggSx5ePdeFrYF8cdbmVRSmp1Kn3t4Y9kFu7rZ7pFw');
*
*/
-
-defined( 'ABSPATH' ) || exit;
-
-class Monero_base58 {
- /**
- * @var string
- */
- static $alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
- static $encoded_block_sizes = [0, 2, 3, 5, 6, 7, 9, 10, 11];
- static $full_block_size = 8;
- static $full_encoded_block_size = 11;
-
- /**
- *
- * Convert a hexadecimal string to a binary array
- *
- * @param string $hex A hexadecimal string to convert to a binary array
- * @return array
- *
- */
- private function hex_to_bin($hex) {
- if (gettype($hex) != 'string') {
- throw new Exception('base58->hex_to_bin(): Invalid input type (must be a string)');
- }
- if (strlen($hex) % 2 != 0) {
- throw new Exception('base58->hex_to_bin(): Invalid input length (must be even)');
- }
-
- $res = array_fill(0, strlen($hex) / 2, 0);
- for ($i = 0; $i < strlen($hex) / 2; $i++) {
- $res[$i] = intval(substr($hex, $i * 2, $i * 2 + 2 - $i * 2), 16);
- }
- return $res;
+use Exception;
+class Monero_base58
+{
+ static $alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
+ static $encoded_block_sizes = [0, 2, 3, 5, 6, 7, 9, 10, 11];
+ static $full_block_size = 8;
+ static $full_encoded_block_size = 11;
+ /**
+ *
+ * Convert a hexadecimal string to a binary array
+ *
+ * @param string $hex A hexadecimal string to convert to a binary array
+ *
+ * @return array
+ *
+ */
+ private function hex_to_bin($hex)
+ {
+ if (gettype($hex) != 'string') {
+ throw new Exception('base58->hex_to_bin(): Invalid input type (must be a string)');
}
-
- /**
- *
- * Convert a binary array to a hexadecimal string
- *
- * @param array $bin A binary array to convert to a hexadecimal string
- * @return string
- *
- */
- private function bin_to_hex($bin) {
- if (gettype($bin) != 'array') {
- throw new Exception('base58->bin_to_hex(): Invalid input type (must be an array)');
- }
-
- $res = [];
- for ($i = 0; $i < count($bin); $i++) {
- $res[] = substr('0'.dechex($bin[$i]), -2);
- }
- return join($res);
+ if (strlen($hex) % 2 != 0) {
+ throw new Exception('base58->hex_to_bin(): Invalid input length (must be even)');
}
-
- /**
- *
- * Convert a string to a binary array
- *
- * @param string $str A string to convert to a binary array
- * @return array
- *
- */
- private function str_to_bin($str) {
- if (gettype($str) != 'string') {
- throw new Exception('base58->str_to_bin(): Invalid input type (must be a string)');
- }
-
- $res = array_fill(0, strlen($str), 0);
- for ($i = 0; $i < strlen($str); $i++) {
- $res[$i] = ord($str[$i]);
- }
- return $res;
+ $res = array_fill(0, strlen($hex) / 2, 0);
+ for ($i = 0; $i < strlen($hex) / 2; $i++) {
+ $res[$i] = intval(substr($hex, $i * 2, $i * 2 + 2 - $i * 2), 16);
}
-
- /**
- *
- * Convert a binary array to a string
- *
- * @param array $bin A binary array to convert to a string
- * @return string
- *
- */
- private function bin_to_str($bin) {
- if (gettype($bin) != 'array') {
- throw new Exception('base58->bin_to_str(): Invalid input type (must be an array)');
- }
-
- $res = array_fill(0, count($bin), 0);
- for ($i = 0; $i < count($bin); $i++) {
- $res[$i] = chr($bin[$i]);
- }
- return preg_replace('/[[:^print:]]/', '', join($res)); // preg_replace necessary to strip errant non-ASCII characters eg. ''
+ return $res;
+ }
+ /**
+ *
+ * Convert a binary array to a hexadecimal string
+ *
+ * @param array $bin A binary array to convert to a hexadecimal string
+ *
+ * @return string
+ *
+ */
+ private function bin_to_hex($bin)
+ {
+ if (gettype($bin) != 'array') {
+ throw new Exception('base58->bin_to_hex(): Invalid input type (must be an array)');
}
-
- /**
- *
- * Convert a UInt8BE (one unsigned big endian byte) array to UInt64
- *
- * @param array $data A UInt8BE array to convert to UInt64
- * @return number
- *
- */
- private function uint8_be_to_64($data) {
- if (gettype($data) != 'array') {
- throw new Exception ('base58->uint8_be_to_64(): Invalid input type (must be an array)');
- }
-
- $res = 0;
- $i = 0;
- switch (9 - count($data)) {
- case 1:
- $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
- case 2:
- $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
- case 3:
- $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
- case 4:
- $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
- case 5:
- $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
- case 6:
- $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
- case 7:
- $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
- case 8:
- $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
- break;
- default:
- throw new Exception('base58->uint8_be_to_64: Invalid input length (1 <= count($data) <= 8)');
- }
- return $res;
+ $res = [];
+ for ($i = 0; $i < count($bin); $i++) {
+ $res[] = substr('0'.dechex($bin[$i]), -2);
}
-
- /**
- *
- * Convert a UInt64 (unsigned 64 bit integer) to a UInt8BE array
- *
- * @param number $num A UInt64 number to convert to a UInt8BE array
- * @param integer $size Size of array to return
- * @return array
- *
- */
- private function uint64_to_8_be($num, $size) {
- if (gettype($num) != ('integer' || 'double')) {
- throw new Exception ('base58->uint64_to_8_be(): Invalid input type ($num must be a number)');
- }
- if (gettype($size) != 'integer') {
- throw new Exception ('base58->uint64_to_8_be(): Invalid input type ($size must be an integer)');
- }
- if ($size < 1 || $size > 8) {
- throw new Exception ('base58->uint64_to_8_be(): Invalid size (1 <= $size <= 8)');
- }
-
- $res = array_fill(0, $size, 0);
- for ($i = $size - 1; $i >= 0; $i--) {
- $res[$i] = bcmod($num, bcpow(2, 8));
- $num = bcdiv($num, bcpow(2, 8));
- }
- return $res;
+ return join($res);
+ }
+ /**
+ *
+ * Convert a string to a binary array
+ *
+ * @param string $str A string to convert to a binary array
+ *
+ * @return array
+ *
+ */
+ private function str_to_bin($str)
+ {
+ if (gettype($str) != 'string') {
+ throw new Exception('base58->str_to_bin(): Invalid input type (must be a string)');
}
-
- /**
- *
- * Convert a hexadecimal (Base16) array to a Base58 string
- *
- * @param array $data
- * @param array $buf
- * @param number $index
- * @return array
- *
- */
- private function encode_block($data, $buf, $index) {
- if (gettype($data) != 'array') {
- throw new Exception('base58->encode_block(): Invalid input type ($data must be an array)');
- }
- if (gettype($buf) != 'array') {
- throw new Exception('base58->encode_block(): Invalid input type ($buf must be an array)');
- }
- if (gettype($index) != ('integer' || 'double')) {
- throw new Exception('base58->encode_block(): Invalid input type ($index must be a number)');
- }
- if (count($data) < 1 or count($data) > self::$full_encoded_block_size) {
- throw new Exception('base58->encode_block(): Invalid input length (1 <= count($data) <= 8)');
- }
-
- $num = self::uint8_be_to_64($data);
- $i = self::$encoded_block_sizes[count($data)] - 1;
- while ($num > 0) {
- $remainder = bcmod($num, 58);
- $num = bcdiv($num, 58);
- $buf[$index + $i] = ord(self::$alphabet[$remainder]);
- $i--;
- }
- return $buf;
+ $res = array_fill(0, strlen($str), 0);
+ for ($i = 0; $i < strlen($str); $i++) {
+ $res[$i] = ord($str[$i]);
}
-
- /**
- *
- * Encode a hexadecimal (Base16) string to Base58
- *
- * @param string $hex A hexadecimal (Base16) string to convert to Base58
- * @return string
- *
- */
- public function encode($hex) {
- if (gettype($hex) != 'string') {
- throw new Exception ('base58->encode(): Invalid input type (must be a string)');
- }
-
- $data = self::hex_to_bin($hex);
- if (count($data) == 0) {
- return '';
- }
-
- $full_block_count = floor(count($data) / self::$full_block_size);
- $last_block_size = count($data) % self::$full_block_size;
- $res_size = $full_block_count * self::$full_encoded_block_size + self::$encoded_block_sizes[$last_block_size];
-
- $res = array_fill(0, $res_size, 0);
- for ($i = 0; $i < $res_size; $i++) {
- $res[$i] = self::$alphabet[0];
- }
-
- for ($i = 0; $i < $full_block_count; $i++) {
- $res = self::encode_block(array_slice($data, $i * self::$full_block_size, ($i * self::$full_block_size + self::$full_block_size) - ($i * self::$full_block_size)), $res, $i * self::$full_encoded_block_size);
- }
-
- if ($last_block_size > 0) {
- $res = self::encode_block(array_slice($data, $full_block_count * self::$full_block_size, $full_block_count * self::$full_block_size + $last_block_size), $res, $full_block_count * self::$full_encoded_block_size);
- }
-
- return self::bin_to_str($res);
+ return $res;
+ }
+ /**
+ *
+ * Convert a binary array to a string
+ *
+ * @param array $bin A binary array to convert to a string
+ *
+ * @return string
+ *
+ */
+ private function bin_to_str($bin)
+ {
+ if (gettype($bin) != 'array') {
+ throw new Exception('base58->bin_to_str(): Invalid input type (must be an array)');
}
-
- /**
- *
- * Convert a Base58 input to hexadecimal (Base16)
- *
- * @param array $data
- * @param array $buf
- * @param integer $index
- * @return array
- *
- */
- private function decode_block($data, $buf, $index) {
- if (gettype($data) != 'array') {
- throw new Exception('base58->decode_block(): Invalid input type ($data must be an array)');
- }
- if (gettype($buf) != 'array') {
- throw new Exception('base58->decode_block(): Invalid input type ($buf must be an array)');
- }
- if (gettype($index) != ('integer' || 'double')) {
- throw new Exception('base58->decode_block(): Invalid input type ($index must be a number)');
- }
-
- $res_size = self::index_of(self::$encoded_block_sizes, count($data));
- if ($res_size <= 0) {
- throw new Exception('base58->decode_block(): Invalid input length ($data must be a value from base58::$encoded_block_sizes)');
- }
-
- $res_num = 0;
- $order = 1;
- for ($i = count($data) - 1; $i >= 0; $i--) {
- $digit = strpos(self::$alphabet, chr($data[$i]));
- if ($digit < 0) {
- throw new Exception("base58->decode_block(): Invalid character ($digit \"{$digit}\" not found in base58::$alphabet)");
- }
-
- $product = bcadd(bcmul($order, $digit), $res_num);
- if ($product > bcpow(2, 64)) {
- throw new Exception('base58->decode_block(): Integer overflow ($product exceeds the maximum 64bit integer)');
- }
-
- $res_num = $product;
- $order = bcmul($order, 58);
- }
- if ($res_size < self::$full_block_size && bcpow(2, 8 * $res_size) <= 0) {
- throw new Exception('base58->decode_block(): Integer overflow (bcpow(2, 8 * $res_size) exceeds the maximum 64bit integer)');
- }
-
- $tmp_buf = self::uint64_to_8_be($res_num, $res_size);
- for ($i = 0; $i < count($tmp_buf); $i++) {
- $buf[$i + $index] = $tmp_buf[$i];
- }
- return $buf;
+ $res = array_fill(0, count($bin), 0);
+ for ($i = 0; $i < count($bin); $i++) {
+ $res[$i] = chr($bin[$i]);
}
-
- /**
- *
- * Decode a Base58 string to hexadecimal (Base16)
- *
- * @param string $hex A Base58 string to convert to hexadecimal (Base16)
- * @return string
- *
- */
- public function decode($enc) {
- if (gettype($enc) != 'string') {
- throw new Exception ('base58->decode(): Invalid input type (must be a string)');
- }
-
- $enc = self::str_to_bin($enc);
- if (count($enc) == 0) {
- return '';
- }
- $full_block_count = floor(bcdiv(count($enc), self::$full_encoded_block_size));
- $last_block_size = bcmod(count($enc), self::$full_encoded_block_size);
- $last_block_decoded_size = self::index_of(self::$encoded_block_sizes, $last_block_size);
-
- $data_size = $full_block_count * self::$full_block_size + $last_block_decoded_size;
-
- $data = array_fill(0, $data_size, 0);
- for ($i = 0; $i < $full_block_count; $i++) {
- $data = self::decode_block(array_slice($enc, $i * self::$full_encoded_block_size, ($i * self::$full_encoded_block_size + self::$full_encoded_block_size) - ($i * self::$full_encoded_block_size)), $data, $i * self::$full_block_size);
- }
-
- if ($last_block_size > 0) {
- $data = self::decode_block(array_slice($enc, $full_block_count * self::$full_encoded_block_size, $full_block_count * self::$full_encoded_block_size + $last_block_size), $data, $full_block_count * self::$full_block_size);
- }
-
- return self::bin_to_hex($data);
+ return preg_replace('/[[:^print:]]/', '', join($res)); // preg_replace necessary to strip errant non-ASCII characters eg. ''
+ }
+ /**
+ *
+ * Convert a UInt8BE (one unsigned big endian byte) array to UInt64
+ *
+ * @param array $data A UInt8BE array to convert to UInt64
+ *
+ * @return number
+ *
+ */
+ private function uint8_be_to_64($data)
+ {
+ if (gettype($data) != 'array') {
+ throw new Exception ('base58->uint8_be_to_64(): Invalid input type (must be an array)');
}
-
- /**
- *
- * Search an array for a value
- * Source: https://stackoverflow.com/a/30994678
- *
- * @param array $haystack An array to search
- * @param string $needle A string to search for
- * @return number The index of the element found (or -1 for no match)
- *
- */
- private function index_of($haystack, $needle) {
- if (gettype($haystack) != 'array') {
- throw new Exception ('base58->decode(): Invalid input type ($haystack must be an array)');
- }
- // if (gettype($needle) != 'string') {
- // throw new Exception ('base58->decode(): Invalid input type ($needle must be a string)');
- // }
-
- foreach ($haystack as $key => $value) if ($value === $needle) return $key;
- return -1;
+ $res = 0;
+ $i = 0;
+ switch (9 - count($data)) {
+ case 1:
+ $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
+ case 2:
+ $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
+ case 3:
+ $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
+ case 4:
+ $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
+ case 5:
+ $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
+ case 6:
+ $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
+ case 7:
+ $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
+ case 8:
+ $res = bcadd(bcmul($res, bcpow(2, 8)), $data[$i++]);
+ break;
+ default:
+ throw new Exception('base58->uint8_be_to_64: Invalid input length (1 <= count($data) <= 8)');
+ }
+ return $res;
+ }
+ /**
+ *
+ * Convert a UInt64 (unsigned 64 bit integer) to a UInt8BE array
+ *
+ * @param number $num A UInt64 number to convert to a UInt8BE array
+ * @param integer $size Size of array to return
+ *
+ * @return array
+ *
+ */
+ private function uint64_to_8_be($num, $size)
+ {
+ if (gettype($num) != ('integer' || 'double')) {
+ throw new Exception ('base58->uint64_to_8_be(): Invalid input type ($num must be a number)');
}
+ if (gettype($size) != 'integer') {
+ throw new Exception ('base58->uint64_to_8_be(): Invalid input type ($size must be an integer)');
+ }
+ if ($size < 1 || $size > 8) {
+ throw new Exception ('base58->uint64_to_8_be(): Invalid size (1 <= $size <= 8)');
+ }
+ $res = array_fill(0, $size, 0);
+ for ($i = $size - 1; $i >= 0; $i--) {
+ $res[$i] = bcmod($num, bcpow(2, 8));
+ $num = bcdiv($num, bcpow(2, 8));
+ }
+ return $res;
+ }
+ /**
+ *
+ * Convert a hexadecimal (Base16) array to a Base58 string
+ *
+ * @param array $data
+ * @param array $buf
+ * @param number $index
+ *
+ * @return array
+ *
+ */
+ private function encode_block($data, $buf, $index)
+ {
+ if (gettype($data) != 'array') {
+ throw new Exception('base58->encode_block(): Invalid input type ($data must be an array)');
+ }
+ if (gettype($buf) != 'array') {
+ throw new Exception('base58->encode_block(): Invalid input type ($buf must be an array)');
+ }
+ if (gettype($index) != ('integer' || 'double')) {
+ throw new Exception('base58->encode_block(): Invalid input type ($index must be a number)');
+ }
+ if (count($data) < 1 or count($data) > self::$full_encoded_block_size) {
+ throw new Exception('base58->encode_block(): Invalid input length (1 <= count($data) <= 8)');
+ }
+ $num = self::uint8_be_to_64($data);
+ $i = self::$encoded_block_sizes[count($data)] - 1;
+ while ($num > 0) {
+ $remainder = bcmod($num, 58);
+ $num = bcdiv($num, 58);
+ $buf[$index + $i] = ord(self::$alphabet[$remainder]);
+ $i--;
+ }
+ return $buf;
+ }
+ /**
+ *
+ * Encode a hexadecimal (Base16) string to Base58
+ *
+ * @param string $hex A hexadecimal (Base16) string to convert to Base58
+ *
+ * @return string
+ *
+ */
+ public function encode($hex)
+ {
+ if (gettype($hex) != 'string') {
+ throw new Exception ('base58->encode(): Invalid input type (must be a string)');
+ }
+ $data = self::hex_to_bin($hex);
+ if (count($data) == 0) {
+ return '';
+ }
+ $full_block_count = floor(count($data) / self::$full_block_size);
+ $last_block_size = count($data) % self::$full_block_size;
+ $res_size = $full_block_count * self::$full_encoded_block_size + self::$encoded_block_sizes[$last_block_size];
+ $res = array_fill(0, $res_size, ord(self::$alphabet[0]));
+ for ($i = 0; $i < $full_block_count; $i++) {
+ $res = self::encode_block(array_slice($data, $i * self::$full_block_size, ($i * self::$full_block_size + self::$full_block_size) - ($i * self::$full_block_size)), $res, $i * self::$full_encoded_block_size);
+ }
+ if ($last_block_size > 0) {
+ $res = self::encode_block(array_slice($data, $full_block_count * self::$full_block_size, $full_block_count * self::$full_block_size + $last_block_size), $res, $full_block_count * self::$full_encoded_block_size);
+ }
+ return self::bin_to_str($res);
+ }
+ /**
+ *
+ * Convert a Base58 input to hexadecimal (Base16)
+ *
+ * @param array $data
+ * @param array $buf
+ * @param integer $index
+ *
+ * @return array
+ *
+ */
+ private function decode_block($data, $buf, $index)
+ {
+ if (gettype($data) != 'array') {
+ throw new Exception('base58->decode_block(): Invalid input type ($data must be an array)');
+ }
+ if (gettype($buf) != 'array') {
+ throw new Exception('base58->decode_block(): Invalid input type ($buf must be an array)');
+ }
+ if (gettype($index) != ('integer' || 'double')) {
+ throw new Exception('base58->decode_block(): Invalid input type ($index must be a number)');
+ }
+ $res_size = self::index_of(self::$encoded_block_sizes, count($data));
+ if ($res_size <= 0) {
+ throw new Exception('base58->decode_block(): Invalid input length ($data must be a value from base58::$encoded_block_sizes)');
+ }
+ $res_num = 0;
+ $order = 1;
+ for ($i = count($data) - 1; $i >= 0; $i--) {
+ $digit = strpos(self::$alphabet, chr($data[$i]));
+ if ($digit < 0) {
+ throw new Exception("base58->decode_block(): Invalid character ($digit \"{$digit}\" not found in base58::$alphabet)");
+ }
+ $product = bcadd(bcmul($order, $digit), $res_num);
+ if ($product > bcpow(2, 64)) {
+ throw new Exception('base58->decode_block(): Integer overflow ($product exceeds the maximum 64bit integer)');
+ }
+ $res_num = $product;
+ $order = bcmul($order, 58);
+ }
+ if ($res_size < self::$full_block_size && bcpow(2, 8 * $res_size) <= 0) {
+ throw new Exception('base58->decode_block(): Integer overflow (bcpow(2, 8 * $res_size) exceeds the maximum 64bit integer)');
+ }
+
+ $tmp_buf = self::uint64_to_8_be($res_num, $res_size);
+ for ($i = 0; $i < count($tmp_buf); $i++) {
+ $buf[$i + $index] = $tmp_buf[$i];
+ }
+ return $buf;
+ }
+ /**
+ *
+ * Decode a Base58 string to hexadecimal (Base16)
+ *
+ * @param string $hex A Base58 string to convert to hexadecimal (Base16)
+ *
+ * @return string
+ *
+ */
+ public function decode($enc)
+ {
+ if (gettype($enc) != 'string') {
+ throw new Exception ('base58->decode(): Invalid input type (must be a string)');
+ }
+ $enc = self::str_to_bin($enc);
+ if (count($enc) == 0) {
+ return '';
+ }
+ $full_block_count = floor(bcdiv(count($enc), self::$full_encoded_block_size));
+ $last_block_size = bcmod(count($enc), self::$full_encoded_block_size);
+ $last_block_decoded_size = self::index_of(self::$encoded_block_sizes, $last_block_size);
+ $data_size = $full_block_count * self::$full_block_size + $last_block_decoded_size;
+ if ($data_size == -1) {
+ return '';
+ }
+ $data = array_fill(0, $data_size, 0);
+ for ($i = 0; $i <= $full_block_count; $i++) {
+ $data = self::decode_block(array_slice($enc, $i * self::$full_encoded_block_size, ($i * self::$full_encoded_block_size + self::$full_encoded_block_size) - ($i * self::$full_encoded_block_size)), $data, $i * self::$full_block_size);
+ }
+ if ($last_block_size > 0) {
+ $data = self::decode_block(array_slice($enc, $full_block_count * self::$full_encoded_block_size, $full_block_count * self::$full_encoded_block_size + $last_block_size), $data, $full_block_count * self::$full_block_size);
+ }
+ return self::bin_to_hex($data);
+ }
+ /**
+ *
+ * Search an array for a value
+ * Source: https://stackoverflow.com/a/30994678
+ *
+ * @param array $haystack An array to search
+ * @param string $needle A string to search for
+ *)
+ * @return number The index of the element found (or -1 for no match)
+ *
+ */
+ private function index_of($haystack, $needle)
+ {
+ if (gettype($haystack) != 'array') {
+ throw new Exception ('base58->decode(): Invalid input type ($haystack must be an array)');
+ }
+ // if (gettype($needle) != 'string') {
+ // throw new Exception ('base58->decode(): Invalid input type ($needle must be a string)');
+ // }
+ foreach ($haystack as $key => $value) if ($value === $needle) return $key;
+ return -1;
+ }
}
From a29b4d00b61c937ad972702eb3436de14e45f268 Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Wed, 19 Jun 2019 21:30:50 +0200
Subject: [PATCH 18/32] Update class-monero-base58.php
---
include/class-monero-base58.php | 1 -
1 file changed, 1 deletion(-)
diff --git a/include/class-monero-base58.php b/include/class-monero-base58.php
index 795f73c..574d337 100644
--- a/include/class-monero-base58.php
+++ b/include/class-monero-base58.php
@@ -26,7 +26,6 @@
* $decoded = $base58->decode('479cG5opa54beQWSyqNoWw5tna9sHUNmMTtiFqLPaUhDevpJ2YLwXAggSx5ePdeFrYF8cdbmVRSmp1Kn3t4Y9kFu7rZ7pFw');
*
*/
-use Exception;
class Monero_base58
{
static $alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
From 9af67ae75df499143dd849927b6cbdd394640923 Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Wed, 19 Jun 2019 21:31:50 +0200
Subject: [PATCH 19/32] Update monero-woocommerce-gateway.php
---
monero-woocommerce-gateway.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/monero-woocommerce-gateway.php b/monero-woocommerce-gateway.php
index 95429af..1c7e3b5 100644
--- a/monero-woocommerce-gateway.php
+++ b/monero-woocommerce-gateway.php
@@ -3,7 +3,7 @@
Plugin Name: Monero Woocommerce Gateway
Plugin URI: https://github.com/monero-integrations/monerowp
Description: Extends WooCommerce by adding a Monero Gateway
-Version: 3.0.0
+Version: 3.0.1
Tested up to: 4.9.8
Author: mosu-forge, SerHack
Author URI: https://monerointegrations.com/
From a3e10ab36f7ca17cb511efe77b758374b2a2a36e Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Sun, 30 Jun 2019 10:43:03 +0200
Subject: [PATCH 20/32] Add a error message if it is unable to fetch prices
---
include/class-monero-gateway.php | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/include/class-monero-gateway.php b/include/class-monero-gateway.php
index 8322f53..c95e281 100644
--- a/include/class-monero-gateway.php
+++ b/include/class-monero-gateway.php
@@ -1,7 +1,7 @@
query($query);
}
}
+ else{
+ self::$log->add('Monero_Payments', "[ERROR] Unable to fetch prices from cryptocompare.com.");
+ }
// Get current network/wallet height
if(self::$confirm_type == 'monero-wallet-rpc')
From 25416473eb84ae2d9085b2cf88b51ed8437519ac Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Wed, 3 Jul 2019 10:40:26 +0200
Subject: [PATCH 21/32] Update class-monero-gateway.php
---
include/class-monero-gateway.php | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/include/class-monero-gateway.php b/include/class-monero-gateway.php
index c95e281..6d0f68d 100644
--- a/include/class-monero-gateway.php
+++ b/include/class-monero-gateway.php
@@ -87,6 +87,10 @@ class Monero_Gateway extends WC_Payment_Gateway
$explorer_url = self::$testnet ? MONERO_GATEWAY_TESTNET_EXPLORER_URL : MONERO_GATEWAY_MAINNET_EXPLORER_URL;
defined('MONERO_GATEWAY_EXPLORER_URL') || define('MONERO_GATEWAY_EXPLORER_URL', $explorer_url);
+ // Add the currency of the shop to $currencies array. Needed for do_update_event() function
+ $currency_shop = get_woocommerce_currency();
+ array_push(self::$currencies, $currency_shop);
+
if($add_action)
add_action('woocommerce_update_options_payment_gateways_'.$this->id, array($this, 'process_admin_options'));
From 009f1d0594f5380eff994002c7744d24afc5b982 Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Sun, 5 Jan 2020 22:26:35 +0100
Subject: [PATCH 22/32] Update monero-gateway-admin-settings.php
---
include/admin/monero-gateway-admin-settings.php | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/include/admin/monero-gateway-admin-settings.php b/include/admin/monero-gateway-admin-settings.php
index 0a02d40..b0eac2f 100644
--- a/include/admin/monero-gateway-admin-settings.php
+++ b/include/admin/monero-gateway-admin-settings.php
@@ -84,6 +84,12 @@ return array(
'description' => __('Advanced usage only', 'monero_gateway'),
'default' => 'no'
),
+ 'javascript' => array(
+ 'title' => __(' Javascript', 'monero_gateway'),
+ 'label' => __(' Check this to ENABLE Javascript in Checkout page ', 'monero_gateway'),
+ 'type' => 'checkbox',
+ 'default' => 'no'
+ ),
'onion_service' => array(
'title' => __(' SSL warnings ', 'monero_gateway'),
'label' => __(' Check to Silence SSL warnings', 'monero_gateway'),
From b45b9625fb44084f50ca8fb5c4414b6ee1c325d6 Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Wed, 18 Mar 2020 10:44:17 +0100
Subject: [PATCH 23/32] Update monero-woocommerce-gateway.php
---
monero-woocommerce-gateway.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/monero-woocommerce-gateway.php b/monero-woocommerce-gateway.php
index 1c7e3b5..1b10f4d 100644
--- a/monero-woocommerce-gateway.php
+++ b/monero-woocommerce-gateway.php
@@ -209,7 +209,7 @@ function monero_install() {
if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
$sql = "CREATE TABLE $table_name (
order_id BIGINT(20) UNSIGNED NOT NULL,
- payment_id VARCHAR(94) DEFAULT '' NOT NULL,
+ payment_id VARCHAR(95) DEFAULT '' NOT NULL,
currency VARCHAR(6) DEFAULT '' NOT NULL,
rate BIGINT UNSIGNED DEFAULT 0 NOT NULL,
amount BIGINT UNSIGNED DEFAULT 0 NOT NULL,
@@ -226,7 +226,7 @@ function monero_install() {
if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
$sql = "CREATE TABLE $table_name (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
- payment_id VARCHAR(94) DEFAULT '' NOT NULL,
+ payment_id VARCHAR(95) DEFAULT '' NOT NULL,
txid VARCHAR(64) DEFAULT '' NOT NULL,
amount BIGINT UNSIGNED DEFAULT 0 NOT NULL,
height MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
From 954eb92785cef79aa74e4c63614ca17ba3729cd1 Mon Sep 17 00:00:00 2001
From: xiphon
Date: Fri, 19 Jun 2020 17:21:54 +0000
Subject: [PATCH 24/32] monero-explorer-tools: explorer url - strip trailing
slashes
---
include/class-monero-explorer-tools.php | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/class-monero-explorer-tools.php b/include/class-monero-explorer-tools.php
index e43b00f..8f8d2c1 100644
--- a/include/class-monero-explorer-tools.php
+++ b/include/class-monero-explorer-tools.php
@@ -19,6 +19,7 @@ class Monero_Explorer_Tools
public function __construct($testnet = false)
{
$this->url = $testnet ? MONERO_GATEWAY_TESTNET_EXPLORER_URL : MONERO_GATEWAY_MAINNET_EXPLORER_URL;
+ $this->url = preg_replace("/\/+$/", "", $this->url);
}
private function call_api($endpoint)
From 90e058baeb6883f50d9bdabc7c5c9421a5961981 Mon Sep 17 00:00:00 2001
From: xiphon
Date: Sat, 20 Jun 2020 23:55:13 +0000
Subject: [PATCH 25/32] monero-gateway: fix AJAX status updates - use
get_customer_id()
---
include/class-monero-gateway.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/class-monero-gateway.php b/include/class-monero-gateway.php
index 6d0f68d..2187d4a 100644
--- a/include/class-monero-gateway.php
+++ b/include/class-monero-gateway.php
@@ -595,7 +595,7 @@ class Monero_Gateway extends WC_Payment_Gateway
$order_id = preg_replace("/[^0-9]+/", "", $_GET['order_id']);
$order = wc_get_order( $order_id );
- if($order->user_id() != $user->ID)
+ if($order->get_customer_id() != $user->ID)
self::ajax_output(array('error' => '[ERROR] Order does not belong to this user'));
if($order->get_payment_method() != self::$_id)
From fcedf21b3046ea409d54dd5609c591ee6a643209 Mon Sep 17 00:00:00 2001
From: Cactii1 <37589158+Cactii1@users.noreply.github.com>
Date: Fri, 18 Dec 2020 05:44:11 +0100
Subject: [PATCH 26/32] Remove Extra / in URI
Fix extra / in URI that makes link to tx fail on block explorer.
---
templates/monero-gateway/admin/order-history-page.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/monero-gateway/admin/order-history-page.php b/templates/monero-gateway/admin/order-history-page.php
index cfdb47a..c57719e 100644
--- a/templates/monero-gateway/admin/order-history-page.php
+++ b/templates/monero-gateway/admin/order-history-page.php
@@ -72,7 +72,7 @@
-
+
|
|
XMR |
From acfdc094da0dd9a2c8aa3e04048455d19efbeef8 Mon Sep 17 00:00:00 2001
From: Cactii1 <37589158+Cactii1@users.noreply.github.com>
Date: Tue, 2 Mar 2021 18:20:19 +0100
Subject: [PATCH 27/32] Show Proper Address in QR Code
Show integrated address in QR Code rather than base address.
---
include/class-monero-gateway.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/class-monero-gateway.php b/include/class-monero-gateway.php
index 2187d4a..d4dbb44 100644
--- a/include/class-monero-gateway.php
+++ b/include/class-monero-gateway.php
@@ -552,7 +552,7 @@ class Monero_Gateway extends WC_Payment_Gateway
}
$amount_formatted = self::format_monero($amount_due);
- $qrcode_uri = 'monero:'.$address.'?tx_amount='.$amount_formatted.'&tx_payment_id='.$payment_id;
+ $qrcode_uri = 'monero:'.$integrated_addr.'?tx_amount='.$amount_formatted.'&tx_payment_id='.$payment_id;
$my_order_url = wc_get_endpoint_url('view-order', $order_id, wc_get_page_permalink('myaccount'));
$payment_details = array(
From 2e6ec376a250d702217baee15bdd1d879afa45ed Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Sun, 25 Apr 2021 10:38:32 +0200
Subject: [PATCH 28/32] Update class-monero-gateway.php
---
include/class-monero-gateway.php | 63 ++++++++++++++++++++------------
1 file changed, 40 insertions(+), 23 deletions(-)
diff --git a/include/class-monero-gateway.php b/include/class-monero-gateway.php
index d4dbb44..084271a 100644
--- a/include/class-monero-gateway.php
+++ b/include/class-monero-gateway.php
@@ -228,15 +228,25 @@ class Monero_Gateway extends WC_Payment_Gateway
$payment_id = $payment_id['address'];
}
else {
- $this->log->add('Monero_Gateway', 'Couldn\'t create subaddress for order ' . $order_id);
+ self::$log->add('Monero_Gateway', 'Couldn\'t create subaddress for order ' . $order_id);
}
}
$currency = $order->get_currency();
$rate = self::get_live_rate($currency);
$fiat_amount = $order->get_total('');
- $monero_amount = 1e8 * $fiat_amount / $rate;
-
+
+ if($rate != 0)
+ $monero_amount = 1e8 * $fiat_amount / $rate;
+ else{
+ // Critical, the price has not been retrivied.
+ $monero_amount = -1;
+ $error_message = "The price for Monero could not be retrieved. Please contact the merchant.";
+ self::$log->add('Monero_Payments', "[ERROR] Impossible to retrieve price for order: ".$order_id);
+ wc_add_notice( __('Payment error:', 'woothemes') . $error_message, 'error' );
+ return;
+ }
+
if(self::$discount)
$monero_amount = $monero_amount - $monero_amount * self::$discount / 100;
@@ -246,7 +256,7 @@ class Monero_Gateway extends WC_Payment_Gateway
$wpdb->query($query);
$order->update_status('on-hold', __('Awaiting offline payment', 'monero_gateway'));
- $order->reduce_order_stock(); // Reduce stock levels
+ wc_reduce_stock_levels( $order_id );
WC()->cart->empty_cart(); // Remove cart
return array(
@@ -280,8 +290,12 @@ class Monero_Gateway extends WC_Payment_Gateway
foreach($price as $currency=>$rate) {
// shift decimal eight places for precise int storage
$rate = intval($rate * 1e8);
- $query = $wpdb->prepare("INSERT INTO $table_name (currency, rate, updated) VALUES (%s, %d, NOW()) ON DUPLICATE KEY UPDATE rate=%d, updated=NOW()", array($currency, $rate, $rate));
- $wpdb->query($query);
+ $query = $wpdb->prepare("INSERT INTO `$table_name` (currency, rate, updated) VALUES (%s, %d, NOW()) ON DUPLICATE KEY UPDATE rate=%d, updated=NOW()", array( $currency, $rate, $rate));
+ $result = $wpdb->query($query);
+ if(!$result){
+ self::$log->add('Monero_Payments', "[ERROR] Impossible to write DB. Please check your DB connection or enable Debugging.");
+ }
+
}
}
else{
@@ -552,7 +566,7 @@ class Monero_Gateway extends WC_Payment_Gateway
}
$amount_formatted = self::format_monero($amount_due);
- $qrcode_uri = 'monero:'.$integrated_addr.'?tx_amount='.$amount_formatted.'&tx_payment_id='.$payment_id;
+ $qrcode_uri = 'monero:'.$integrated_address.'?tx_amount='.$amount_formatted.'&tx_payment_id='.$payment_id;
$my_order_url = wc_get_endpoint_url('view-order', $order_id, wc_get_page_permalink('myaccount'));
$payment_details = array(
@@ -591,26 +605,29 @@ class Monero_Gateway extends WC_Payment_Gateway
$user = wp_get_current_user();
if($user === 0)
self::ajax_output(array('error' => '[ERROR] User not logged in'));
+
+ if(isset($_GET['order_id'])){
+ $order_id = preg_replace("/[^0-9]+/", "", $_GET['order_id']);
+ $order = wc_get_order($order_id);
+
+ if($order->get_customer_id() != $user->ID)
+ self::ajax_output(array('error' => '[ERROR] Order does not belong to this user'));
- $order_id = preg_replace("/[^0-9]+/", "", $_GET['order_id']);
- $order = wc_get_order( $order_id );
-
- if($order->get_customer_id() != $user->ID)
- self::ajax_output(array('error' => '[ERROR] Order does not belong to this user'));
-
- if($order->get_payment_method() != self::$_id)
- self::ajax_output(array('error' => '[ERROR] Order not paid for with Monero'));
-
- $details = self::get_payment_details($order);
- if(!is_array($details))
- self::ajax_output(array('error' => $details));
-
- self::ajax_output($details);
-
+ if($order->get_payment_method() != self::$_id)
+ self::ajax_output(array('error' => '[ERROR] Order not paid for with Monero'));
+
+ $details = self::get_payment_details($order);
+ if(!is_array($details))
+ self::ajax_output(array('error' => $details));
+
+ self::ajax_output($details);
+ }
}
public static function ajax_output($response) {
- ob_clean();
header('Content-type: application/json');
+ if (ob_get_length() > 0){
+ ob_clean();
+ }
echo json_encode($response);
wp_die();
}
From 9f0a8581e63be3519aea413f26b5545019995b43 Mon Sep 17 00:00:00 2001
From: SerHack <27734319+serhack@users.noreply.github.com>
Date: Sun, 25 Apr 2021 10:41:07 +0200
Subject: [PATCH 29/32] Update class-monero-gateway.php
---
include/class-monero-gateway.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/class-monero-gateway.php b/include/class-monero-gateway.php
index 084271a..1d74554 100644
--- a/include/class-monero-gateway.php
+++ b/include/class-monero-gateway.php
@@ -566,7 +566,7 @@ class Monero_Gateway extends WC_Payment_Gateway
}
$amount_formatted = self::format_monero($amount_due);
- $qrcode_uri = 'monero:'.$integrated_address.'?tx_amount='.$amount_formatted.'&tx_payment_id='.$payment_id;
+ $qrcode_uri = 'monero:'.$integrated_addr.'?tx_amount='.$amount_formatted.'&tx_payment_id='.$payment_id;
$my_order_url = wc_get_endpoint_url('view-order', $order_id, wc_get_page_permalink('myaccount'));
$payment_details = array(
From 572f04dfba66e66d6fcb625f603f3e7a3fc0ec93 Mon Sep 17 00:00:00 2001
From: tidux <1330562+tidux@users.noreply.github.com>
Date: Sat, 8 May 2021 18:56:32 -0700
Subject: [PATCH 30/32] add automated install info to readme
---
README.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/README.md b/README.md
index cfd88b5..ca2d0f7 100644
--- a/README.md
+++ b/README.md
@@ -20,6 +20,12 @@
## Installing the plugin
+### Automatic Method
+
+In the "Add Plugins" section of the WordPress admin UI, search for "monero" and click the Install Now button next to "Monero WooCommerce Extension" by mosu-forge, SerHack. This will enable auto-updates, but only for official releases, so if you need to work from git master or your local fork, please use the manual method below.
+
+### Manual Method
+
* Download the plugin from the [releases page](https://github.com/monero-integrations/monerowp) or clone with `git clone https://github.com/monero-integrations/monerowp`
* Unzip or place the `monero-woocommerce-gateway` folder in the `wp-content/plugins` directory.
* Activate "Monero Woocommerce Gateway" in your WordPress admin dashboard.
From b9e5fcc96eaaa418bbc3bf1bacc0a2026cb1384a Mon Sep 17 00:00:00 2001
From: wowario
Date: Thu, 13 May 2021 12:13:02 +0300
Subject: [PATCH 31/32] such wow
---
LICENSE | 2 +-
README.md | 4 +-
assets/images/monero-accepted-here.png | Bin 4393 -> 0 bytes
assets/images/monero-icon-admin.png | Bin 413 -> 0 bytes
assets/images/monero-icon.png | Bin 2835 -> 0 bytes
assets/images/wownero-accepted-here.png | Bin 0 -> 9671 bytes
assets/images/wownero-icon-admin.png | Bin 0 -> 941 bytes
assets/images/wownero-icon.png | Bin 0 -> 4180 bytes
assets/js/monero-gateway-order-page.js | 8 +-
.../admin/class-monero-admin-interface.php | 33 +++---
.../class-monero-admin-payments-list.php | 23 ++---
.../admin/monero-gateway-admin-settings.php | 94 +++++++++---------
include/class-monero-explorer-tools.php | 1 -
include/class-monero-gateway.php | 71 ++++++-------
include/class-monero-wallet-rpc.php | 3 +-
monero-woocommerce-gateway.php | 32 +++---
readme.txt | 4 +-
.../admin/order-history-page.php | 10 +-
.../monero-gateway/admin/settings-page.php | 10 +-
.../customer/order-email-block.php | 6 +-
.../monero-gateway/customer/order-page.php | 8 +-
21 files changed, 152 insertions(+), 157 deletions(-)
delete mode 100644 assets/images/monero-accepted-here.png
delete mode 100644 assets/images/monero-icon-admin.png
delete mode 100644 assets/images/monero-icon.png
create mode 100644 assets/images/wownero-accepted-here.png
create mode 100644 assets/images/wownero-icon-admin.png
create mode 100644 assets/images/wownero-icon.png
diff --git a/LICENSE b/LICENSE
index d4ba96f..73f6c24 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,7 +1,7 @@
MIT License
Copyright (c) 2017-2018, Monero Integrations
-Copyright (c) 2018, Ryo Currency Project
+Copyright (c) 2018, Fireice Trust Fund
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index ca2d0f7..a973881 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@
### Automatic Method
-In the "Add Plugins" section of the WordPress admin UI, search for "monero" and click the Install Now button next to "Monero WooCommerce Extension" by mosu-forge, SerHack. This will enable auto-updates, but only for official releases, so if you need to work from git master or your local fork, please use the manual method below.
+In the "Add Plugins" section of the WordPress admin UI, search for "monero" and click the Install Now button next to "Monero WooCommerce Extension" by SerHack. This will enable auto-updates, but only for official releases, so if you need to work from git master or your local fork, please use the manual method below.
### Manual Method
@@ -109,5 +109,3 @@ This will display a badge showing that you accept Monero-currency.
## Donations
monero-integrations: 44krVcL6TPkANjpFwS2GWvg1kJhTrN7y9heVeQiDJ3rP8iGbCd5GeA4f3c2NKYHC1R4mCgnW7dsUUUae2m9GiNBGT4T8s2X
-
-ryo-currency: 4A6BQp7do5MTxpCguq1kAS27yMLpbHcf89Ha2a8Shayt2vXkCr6QRpAXr1gLYRV5esfzoK3vLJTm5bDWk5gKmNrT6s6xZep
diff --git a/assets/images/monero-accepted-here.png b/assets/images/monero-accepted-here.png
deleted file mode 100644
index 27ba0c37b37dd0ab13c308b0b66f65c6ad5649a5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 4393
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
diff --git a/assets/images/monero-icon-admin.png b/assets/images/monero-icon-admin.png
deleted file mode 100644
index 2f67892a4d50180a38ad3681123887ed53341982..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 413
zcmV;O0b>4%P)gDg`I#2}09S~1%N-CO}0}lRy
zR3+`1*=qn?I^Yc$^$Z*kYSImoi9cz=r5>Jk?2r%FI9bO||VH-I0
z_YROkNP7}kkW@>qkO5l2NRq)$C}b&`#>`y&2y96@N&xQ;SOcbjwxp_=IiL!B0wrK5
zhzr1G0PF^rK6IRzI5Gl!$sxYS#Xd5?A1j;L8L$)rgMfeC#s}a<_tB8Fnp*i5nC{cc
z_ip=+m6Lw(Mp^6uX#mT=nkf~S*#vL`%;nno8rYEZl@0$&Gnf00000NkvXX
Hu0mjfE6S()
diff --git a/assets/images/monero-icon.png b/assets/images/monero-icon.png
deleted file mode 100644
index 65240e11fbf8199caa7a4caf00093a90e1c522d3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 2835
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
Ys2un6WJq1N=H_pz1JQ->E8aiuKO3v3Pyhe`
diff --git a/assets/images/wownero-accepted-here.png b/assets/images/wownero-accepted-here.png
new file mode 100644
index 0000000000000000000000000000000000000000..639b69ae3fdd869e70fe322d6f5a8bc0e25393f7
GIT binary patch
literal 9671
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
';
jQuery('#monero_tx_table tbody').append(row);
@@ -110,7 +110,7 @@ function monero_updateDetails() {
}
}
if(is_new_tx) {
- monero_showNotification('Transaction received for '+new_txs[i].amount_formatted+' Monero');
+ monero_showNotification('Transaction received for '+new_txs[i].amount_formatted+' Wownero');
}
}
}
diff --git a/include/admin/class-monero-admin-interface.php b/include/admin/class-monero-admin-interface.php
index 930f84e..dba52ef 100644
--- a/include/admin/class-monero-admin-interface.php
+++ b/include/admin/class-monero-admin-interface.php
@@ -1,8 +1,7 @@
@@ -69,32 +68,32 @@ HTML;
}
echo <<
- Monero Payments
+ Wownero Payments
$balance_info
$hidden_fields
- Monero Payments List
+ Wownero Payments List