| Server IP : 46.105.57.169 / Your IP : 216.73.216.67 Web Server : Apache System : Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64 User : verseaumee ( 152031) PHP Version : 8.5.7 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/verseaumee/blueversion/wp-content/plugins/coinbase-commerce/ |
Upload File : |
<?php
/*
Plugin Name: Coinbase Commerce
Plugin URI: https://github.com/coinbase/coinbase-commerce-woocommerce/
Description: A payment gateway that allows your customers to pay with cryptocurrency via Coinbase Commerce (https://commerce.coinbase.com/)
Version: 1.4.1
Author: Coinbase Commerce
Author URI: https://commerce.coinbase.com/
License: GPLv3+
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Text Domain: coinbase
Domain Path: /languages
WC requires at least: 3.0.9
WC tested up to: 8.9.1
Coinbase Commerce is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
any later version.
Coinbase Commerce is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Coinbase WooCommerce. If not, see https://www.gnu.org/licenses/gpl-3.0.html.
*/
function cb_init_gateway() {
// If WooCommerce is available, initialise WC parts.
/** DOCBLOCK - Makes linter happy.
*
* @since today
*/
if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
require_once 'class-wc-gateway-coinbase.php';
add_action( 'init', 'cb_wc_register_blockchain_status' );
add_filter( 'woocommerce_valid_order_statuses_for_payment', 'cb_wc_status_valid_for_payment', 10, 2 );
add_action( 'cb_check_orders', 'cb_wc_check_orders' );
add_filter( 'woocommerce_payment_gateways', 'cb_wc_add_coinbase_class' );
add_filter( 'wc_order_statuses', 'cb_wc_add_status' );
add_action( 'woocommerce_admin_order_data_after_order_details', 'cb_order_meta_general' );
add_action( 'woocommerce_order_details_after_order_table', 'cb_order_meta_general' );
add_filter( 'woocommerce_email_order_meta_fields', 'cb_custom_woocommerce_email_order_meta_fields', 10, 3 );
add_filter( 'woocommerce_email_actions', 'cb_register_email_action' );
add_action( 'woocommerce_email', 'cb_add_email_triggers' );
add_action( 'before_woocommerce_init', function() {
if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
\Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
}
} );
}
}
add_action( 'plugins_loaded', 'cb_init_gateway' );
// Setup cron job.
function cb_activation() {
if ( ! wp_next_scheduled( 'cb_check_orders' ) ) {
wp_schedule_event( time(), 'hourly', 'cb_check_orders' );
}
}
register_activation_hook( __FILE__, 'cb_activation' );
function cb_deactivation() {
wp_clear_scheduled_hook( 'cb_check_orders' );
}
register_deactivation_hook( __FILE__, 'cb_deactivation' );
// WooCommerce
function cb_wc_add_coinbase_class( $methods ) {
$methods[] = 'WC_Gateway_Coinbase';
return $methods;
}
function cb_wc_check_orders() {
$gateway = WC()->payment_gateways()->payment_gateways()['coinbase'];
return $gateway->check_orders();
}
/**
* Register new status with ID "wc-blockchainpending" and label "Blockchain Pending"
*/
function cb_wc_register_blockchain_status() {
register_post_status( 'wc-blockchainpending', array(
'label' => __( 'Blockchain Pending', 'coinbase' ),
'public' => true,
'show_in_admin_status_list' => true,
/* translators: WooCommerce order count in blockchain pending. */
'label_count' => _n_noop( 'Blockchain pending <span class="count">(%s)</span>', 'Blockchain pending <span class="count">(%s)</span>' ),
) );
}
/**
* Register wc-blockchainpending status as valid for payment.
*/
function cb_wc_status_valid_for_payment( $statuses, $order ) {
$statuses[] = 'wc-blockchainpending';
return $statuses;
}
/**
* Add registered status to list of WC Order statuses
*
* @param array $wc_statuses_arr Array of all order statuses on the website.
*/
function cb_wc_add_status( $wc_statuses_arr ) {
$new_statuses_arr = array();
// Add new order status after payment pending.
foreach ( $wc_statuses_arr as $id => $label ) {
$new_statuses_arr[ $id ] = $label;
if ( 'wc-pending' === $id ) { // after "Payment Pending" status.
$new_statuses_arr['wc-blockchainpending'] = __( 'Blockchain Pending', 'coinbase' );
}
}
return $new_statuses_arr;
}
/**
* Add order Coinbase meta after General and before Billing
*
* @see: https://rudrastyh.com/woocommerce/customize-order-details.html
*
* @param WC_Order $order WC order instance
*/
function cb_order_meta_general( $order ) {
if ($order->get_payment_method() == 'coinbase') {
?>
<br class="clear"/>
<h3>Coinbase Commerce Data</h3>
<div class="">
<p>Coinbase Commerce Reference # <?php echo esc_html($order->get_meta('_coinbase_charge_id')); ?></p>
</div>
<?php
}
}
/**
* Add Coinbase meta to WC emails
*
* @see https://docs.woocommerce.com/document/add-a-custom-field-in-an-order-to-the-emails/
*
* @param array $fields indexed list of existing additional fields.
* @param bool $sent_to_admin If should sent to admin.
* @param WC_Order $order WC order instance
*
*/
function cb_custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
if ($order->get_payment_method() == 'coinbase') {
$fields['coinbase_commerce_reference'] = array(
'label' => __( 'Coinbase Commerce Reference #' ),
'value' => $order->get_meta( '_coinbase_charge_id' ),
);
}
return $fields;
}
/**
* Registers "woocommerce_order_status_blockchainpending_to_processing" as a WooCommerce email action.
*
* @param array $email_actions
*
* @return array
*/
function cb_register_email_action( $email_actions ) {
$email_actions[] = 'woocommerce_order_status_blockchainpending_to_processing';
return $email_actions;
}
/**
* Adds new triggers for emails sent when the order status transitions to Processing.
*
* @param WC_Emails $wc_emails
*/
function cb_add_email_triggers( $wc_emails ) {
$emails = $wc_emails->get_emails();
/**
* A list of WooCommerce emails sent when the order status transitions to Processing.
*
* Developers can use the `cb_processing_order_emails` filter to add in their own emails.
*
* @param array $emails List of email class names.
*
* @return array
*
* @since today
*/
$processing_order_emails = apply_filters( 'cb_processing_order_emails', [
'WC_Email_New_Order',
'WC_Email_Customer_Processing_Order',
] );
foreach ( $processing_order_emails as $email_class ) {
if ( isset( $emails[ $email_class ] ) ) {
$email = $emails[ $email_class ];
add_action(
'woocommerce_order_status_blockchainpending_to_processing_notification',
array( $email, 'trigger' )
);
}
}
}