Plugin Directory

Changeset 3298100


Ignore:
Timestamp:
05/21/2025 01:06:50 PM (11 months ago)
Author:
bucksbuspay
Message:

Add fiat payment

Location:
bucksbus/trunk
Files:
32 added
4 edited

Legend:

Unmodified
Added
Removed
  • bucksbus/trunk/README.txt

    r3284029 r3298100  
    55Requires at least: 6.0
    66Tested up to: 6.8
    7 Stable tag: 1.1.3
     7Stable tag: 1.2.0
    88Requires PHP: 7.4
    99License: GPLv2 or later
     
    8383== Changelog ==
    8484
     85= 1.2.0 =
     86* Add fiat payment
     87
    8588= 1.1.1 =
    8689* Add support for WordPress 6.8
  • bucksbus/trunk/bucksbus.php

    r3284029 r3298100  
    44 * Plugin Name: BucksBus
    55 * Description: Adds BucksBus to your WooCommerce website.
    6  * Version: 1.1.3
     6 * Version: 1.2.0
    77 *
    88 * Author: BucksBus
     
    3030{
    3131    public static $currencies = array("BTC", "LTC", "ETH", "TRX", "USDT.TRC20", "USDT.ERC20", "POL", "USDT.POLY", "USDC.POLY", "USDC.ERC20");
     32    public static $providers = array(
     33        array(
     34            'name' => 'Banxa',
     35            'code' => 'cbanxa'
     36        ),
     37        array(
     38            'name' => 'Guardarian',
     39            'code' => 'guardarian'
     40        ),
     41        array(
     42            'name' => 'Kado',
     43            'code' => 'ckado'
     44        ),
     45        array(
     46            'name' => 'Moonpay',
     47            'code' => 'cmoonpay'
     48        ),
     49        array(
     50            'name' => 'Switchere',
     51            'code' => 'kswitchere'
     52        ),
     53        array(
     54            'name' => 'Transak',
     55            'code' => 'ctransak'
     56        ),
     57        array(
     58            'name' => 'Wert',
     59            'code' => 'cwert'
     60        ),
     61    );
    3262
    3363    /**
     
    6595
    6696            if (('yes' === $hide_for_non_admin_users && current_user_can('manage_options')) || 'no' === $hide_for_non_admin_users) {
    67                 foreach (BucksBus::$currencies as $currency) {
    68                     $gateways[] = 'BucksBus_Gateway_' . str_replace(".", "_", $currency);
    69                 }
     97                $gateways[] = 'BucksBus_Gateway_' . str_replace(".", "_", $currency);
     98            }
     99        }
     100
     101        foreach (BucksBus::$providers as $provider => $provider_value) {
     102            $options = get_option('woocommerce_bucksbus_' . strtolower(str_replace(".", "", $provider_value["code"])) . 'settings', array());
     103
     104            if (isset($options['hide_for_non_admin_users'])) {
     105                $hide_for_non_admin_users = $options['hide_for_non_admin_users'];
     106            } else {
     107                $hide_for_non_admin_users = 'no';
     108            }
     109
     110            if (('yes' === $hide_for_non_admin_users && current_user_can('manage_options')) || 'no' === $hide_for_non_admin_users) {
     111                $gateways[] = 'BucksBus_Gateway_Provider_' . str_replace(".", "_", $provider_value["code"]);
    70112            }
    71113        }
     
    82124        if (class_exists('WC_Payment_Gateway')) {
    83125            require_once 'includes/class-wc-gateway-bucksbus-base.php';
     126            require_once 'includes/class-wc-gateway-bucksbus-provider-base.php';
    84127            foreach (BucksBus::$currencies as $currency) {
    85128                require_once 'includes/class-wc-gateway-bucksbus-' . $currency . '.php';
     129            }
     130            foreach (BucksBus::$providers as $provider => $provider_value) {
     131                require_once 'includes/class-wc-gateway-bucksbus-provider-' . $provider_value["code"] . '.php';
    86132            }
    87133        }
     
    116162        if (class_exists('Automattic\WooCommerce\Blocks\Payments\Integrations\AbstractPaymentMethodType')) {
    117163            require_once 'includes/blocks/class-wc-bucksbus-payments-blocks.php';
     164            require_once 'includes/blocks/class-wc-bucksbus-payments-provider-blocks.php';
    118165
    119166            foreach (BucksBus::$currencies as $currency) {
    120167                require_once 'includes/blocks/class-wc-bucksbus-payments-blocks-' . $currency . '.php';
     168            }
     169            foreach (BucksBus::$providers as $provider => $provider_value) {
     170                require_once 'includes/blocks/class-wc-bucksbus-payments-provider-blocks-' . $provider_value['code'] . '.php';
    121171            }
    122172
     
    127177                        $payment_method_registry->register(new BucksBus_Gateway_Blocks_Support($currency));
    128178                    }
     179                    foreach (BucksBus::$providers as $provider => $provider_value) {
     180                        $payment_method_registry->register(new BucksBus_Gateway_Provider_Blocks_Support($provider_value['code'], $provider_value['name']));
     181                    }
    129182                }
    130183            );
  • bucksbus/trunk/includes/class-bucksbus-api-handler.php

    r3086345 r3298100  
    6767                'Authorization' => 'Basic ' . base64_encode(self::$api_key . ':' . self::$api_secret),
    6868                'Content-Type' => 'application/json'
    69             )
     69            ),
     70            'timeout' => 30
    7071        );
    7172
     
    189190        $result = self::send_request('payment', $args, 'POST');
    190191
    191         // Cache last-known available payment methods.
    192 //      if (!empty($result[1]['data']['addresses'])) {
    193 //          update_option(
    194 //              'bucksbus_payment_methods',
    195 //              array_keys($result[1]['data']['addresses']),
    196 //              false
    197 //          );
    198 //      }
    199 
    200192        return $result;
    201193    }
     194
     195
     196    /**
     197     * Create a new fiat payment request.
     198     *
     199     * @param  int    $amount
     200     * @param  string $currency
     201     * @param  array  $metadata
     202     * @param  string $redirect
     203     * @param  string $name
     204     * @param  string $desc
     205     * @param  string $cancel
     206     * @return array
     207     */
     208    public static function create_fiat_payment(
     209        $amount = null,
     210        $currency = null,
     211        $providerCode = null,
     212        $metadata = null,
     213        $redirect = null,
     214        $name = null,
     215        $email = null,
     216        $country = null,
     217        $state = null,
     218        $desc = null,
     219        $cancel = null
     220    ) {
     221        $args = array(
     222            'payer_name'  => is_null($name) ? get_bloginfo('name') : $name,
     223            'description' => is_null($desc) ? get_bloginfo('description') : $desc,
     224        );
     225        $args['payer_name'] = sanitize_text_field($args['payer_name']);
     226        $args['payer_email'] = $email;
     227        $args['payer_lang'] = 'en';
     228        $args['payment_type'] = 'FIXED_AMOUNT';
     229        $args['payment_asset_id'] = 'USDT.ERC20';
     230        $args['amount'] = floatval($amount);
     231        $args['asset_id'] = $currency;
     232        $args['fiat_provider'] = $providerCode;
     233        $args['fiat_asset_id'] = $currency;
     234        $args['country'] = $country;
     235        $args['state'] = $state;
     236        $args['description'] = sanitize_text_field($args['description']);
     237        $args['custom1'] = $providerCode;
     238
     239
     240        if (!is_null($metadata)) {
     241            $args['custom'] = wp_json_encode($metadata);
     242        }
     243        if (!is_null($redirect)) {
     244            $args['success_url'] = $redirect;
     245        }
     246        if (!is_null($cancel)) {
     247            $args['cancel_url'] = $cancel;
     248        }
     249
     250        $result = self::send_request('payment/fiat', $args, 'POST');
     251
     252        return $result;
     253    }
    202254}
  • bucksbus/trunk/includes/class-wc-gateway-bucksbus-handler.php

    r3086345 r3298100  
    2525     * @var bool    Whether or not logging is enabled
    2626     */
    27     public static $log_enabled = false;
     27    public static $log_enabled = true;
    2828
    2929    /**
     
    3232     * @var WC_Logger Logger instance
    3333     * */
    34     public static $log = false;
     34    public static $log = true;
    3535
    3636    /**
     
    7777                json_last_error() === JSON_ERROR_NONE &&
    7878                !empty($data) &&
    79                 !empty($data['payment']) &&
    80                 !empty($data['payment']['payment_asset_id'])
     79                !empty($data['payment'])
    8180            ) {
    82                 $gateway = new BucksBus_Gateway_Base($data['payment']['payment_asset_id']);
    83                 $gateway->handle_webhook($payload);
     81                if (!empty($data['payment']['custom1'])) {
     82                    $provider_key = array_search($data['payment']['custom1'], array_column(BucksBus::$providers, 'code'));
     83
     84                    if ($provider_key) {
     85                        $provider = BucksBus::$providers[$provider_key];
     86                        $gateway = new BucksBus_Gateway_Provider_Base($provider['code'], $provider['name']);
     87                        $gateway->handle_webhook($payload);
     88                    }
     89                } else {
     90                    $gateway = new BucksBus_Gateway_Base($data['payment']['payment_asset_id']);
     91                    $gateway->handle_webhook($payload);
     92                }
    8493            }
    8594        }
Note: See TracChangeset for help on using the changeset viewer.