/**
* Filename: payment-helper-functions.php
* Description: payment function file.
*
* @package WP_Easy_Pay
*/
/**
* Require square-configuration.php
*/
require_once WPEP_ROOT_PATH . 'modules/payments/square-configuration.php';
/**
* Creates a WordPress user.
*
* @param string $first_name The first_name for the user.
* @param string $last_name The last_name for the user.
* @param string $email The email address for the user.
* @return int|WP_Error The user ID on success, or WP_Error object on failure.
*/
function wpep_create_wordpress_user( $first_name, $last_name, $email ) {
$username = strtolower( $email );
$password = wpep_generate_random_password();
$user_id = wp_create_user( $username, $password, $email );
require_once WPEP_ROOT_PATH . 'modules/email_notifications/new-user-email.php';
wpep_new_user_email_notification( $username, $password, $email );
return $user_id;
}
/**
* Generates a random password.
*
* @return string The generated random password.
*/
function wpep_generate_random_password() {
$alphabet = 'abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789';
$pass = array();
$alpha_length = strlen( $alphabet ) - 1;
for ( $i = 0; $i < 8; $i++ ) {
$n = wp_rand( 0, $alpha_length );
$pass[] = $alphabet[ $n ];
}
return implode( $pass );
}
/**
* Retrieves a Square customer for verification.
*
* @param object $api_client The Square API client.
* @param string $square_customer_id The ID of the Square customer.
* @return array|WP_Error The retrieved Square customer data or WP_Error on failure.
*/
function wpep_retrieve_square_customer_to_verify( $api_client, $square_customer_id ) {
$api_instance = new SquareConnect\Api\CustomersApi( $api_client );
try {
$result = $api_instance->retrieveCustomer( $square_customer_id );
return $result->getCustomer()->getId();
} catch ( Exception $e ) {
return false;
}
}
/**
* Create a Square customer card.
*
* @param object $api_client The Square API client object.
* @param string $square_customer_id The Square customer ID.
* @param string $nonce The payment method nonce.
* @param string $first_name The first name of the customer.
* @param string $last_name The last name of the customer.
* @param string $verification_token The verification token.
* @return object|WP_Error The Square customer card object on success, WP_Error object on failure.
*/
function wpep_create_square_customer_card( $api_client, $square_customer_id, $nonce, $first_name, $last_name, $verification_token ) {
$api_instance = new SquareConnect\Api\CustomersApi( $api_client );
$card_holder_name = $first_name . ' ' . $last_name;
$body = new \SquareConnect\Model\CreateCustomerCardRequest();
$body->setCardNonce( $nonce );
$body->setCardholderName( $card_holder_name );
$body->setVerificationToken( $verification_token );
try {
$result = $api_instance->createCustomerCard( $square_customer_id, $body );
return $result->getCard()->getId();
} catch ( Exception $e ) {
wp_die( wp_json_encode( $e->getResponseBody()->errors[0] ) );
}
}
/**
* Perform weekly refresh of tokens.
*
* @return void
*/
function wpep_weekly_refresh_tokens() {
$oauth_connect_url = WPEP_MIDDLE_SERVER_URL;
$refresh_access_token = get_option( 'wpep_refresh_token' );
$args_renew = array(
'body' => array(
'request_type' => 'renew_token',
'refresh_token' => $refresh_access_token,
'oauth_version' => 2,
'app_name' => WPEP_SQUARE_APP_NAME,
),
'timeout' => 45,
);
$oauth_response = wp_remote_post( $oauth_connect_url, $args_renew );
$oauth_response_body = json_decode( $oauth_response['body'] );
update_option( 'wpep_live_token_upgraded', sanitize_text_field( $oauth_response_body->access_token ) );
update_option( 'wpep_refresh_token', $oauth_response_body->refresh_token );
update_option( 'wpep_token_expires_at', $oauth_response_body->expires_at );
}
/**
* Refresh Square access token.
*
* @param string $expires_at The expiration timestamp of the access token.
* @param string $refresh_access_token The refresh access token.
* @param string $type The type of token to refresh.
* @param int $current_form_id The ID of the current form.
* @return void
*/
function wpep_square_refresh_token( $expires_at, $refresh_access_token, $type, $current_form_id ) {
$expiry_status = wpep_check_give_square_expiry( $expires_at, $current_form_id );
$live_mode = get_option( 'wpep_square_payment_mode_global', true );
if ( 'on' === $live_mode ) {
$sandbox_enabled = 'no';
} else {
$sandbox_enabled = 'yes';
}
if ( 'expired' === $expiry_status ) {
$oauth_connect_url = WPEP_MIDDLE_SERVER_URL;
$args_renew = array(
'body' => array(
'request_type' => 'renew_token',
'refresh_token' => $refresh_access_token,
'oauth_version' => 2,
'app_name' => WPEP_SQUARE_APP_NAME,
'sandbox_enabled' => $sandbox_enabled,
),
'timeout' => 45,
);
$oauth_response = wp_remote_post( $oauth_connect_url, $args_renew );
$oauth_response_body = json_decode( $oauth_response['body'] );
if ( 'global' === $type ) {
if ( 'on' === $live_mode ) {
update_option( 'wpep_live_token_upgraded', sanitize_text_field( $oauth_response_body->access_token ) );
update_option( 'wpep_refresh_token', $oauth_response_body->refresh_token );
update_option( 'wpep_token_expires_at', $oauth_response_body->expires_at );
} else {
update_option( 'wpep_square_test_token_global', sanitize_text_field( $oauth_response_body->access_token ) );
update_option( 'wpep_refresh_test_token', $oauth_response_body->refresh_token );
update_option( 'wpep_token_test_expires_at', $oauth_response_body->expires_at );
}
}
}
}
/**
* Check the expiration of the Square access token.
*
* @param string $expires_at The expiration timestamp of the access token.
* @param int $current_form_id The ID of the current form.
* @return string check status.
*/
function wpep_check_give_square_expiry( $expires_at, $current_form_id ) {
$date_time = explode( 'T', $expires_at );
$date_time[1] = str_replace( 'Z', '', $date_time[1] );
$expires_at = strtotime( $date_time[0] . ' ' . $date_time[1] );
$today = strtotime( 'now' );
if ( $today >= ( $expires_at - 300 ) ) {
return 'expired';
} else {
$creds = wpep_get_creds( $current_form_id );
$access_token = $creds['access_token'];
$request_args = array(
'headers' => array(
'Square-Version' => '2023-01-19',
'Authorization' => 'Bearer ' . $access_token,
'Content-Type' => 'application/json',
),
);
$response = wp_remote_get( $creds['url'] . '/oauth2/token/status', $request_args );
if ( is_wp_error( $response ) ) {
echo 'Error: ' . esc_html( $response->get_error_message() );
} else {
$body = wp_remote_retrieve_body( $response );
$decoded = json_decode( $body );
if ( 'UNAUTHORIZED' === $decoded && $decoded->type ) {
return 'expired';
} else {
return 'active';
}
}
}
}
/**
* Retrieve a Square customer by customer ID.
*
* @param object $api_client The Square API client object.
* @param string $square_customer_id The ID of the Square customer.
* @return object|null The Square customer object or null if not found.
*/
function wpep_retrieve_square_customer( $api_client, $square_customer_id ) {
try {
$api_instance = new SquareConnect\Api\CustomersApi( $api_client );
$result = $api_instance->retrieveCustomer( $square_customer_id );
return $result->getCustomer()->getId();
} catch ( Exception $e ) {
return false;
}
}
/**
* Retrieve the result of a Square customer retrieval request.
*
* @param object $api_client The Square API client object.
* @param string $square_customer_id The ID of the Square customer.
* @return object|null The result object of the customer retrieval request or null if not found.
*/
function wpep_retrieve_square_customer_result( $api_client, $square_customer_id ) {
try {
$api_instance = new SquareConnect\Api\CustomersApi( $api_client );
$result = $api_instance->retrieveCustomer( $square_customer_id );
return $result;
} catch ( Exception $e ) {
return false;
}
}
/**
* Retrieve the cards associated with a Square customer.
*
* @param object $api_client The Square API client object.
* @param string $square_customer_id The ID of the Square customer.
* @return array|null An array of customer cards or null if no cards found.
*/
function wpep_retrieve_customer_cards( $api_client, $square_customer_id ) {
try {
$api_instance = new SquareConnect\Api\CustomersApi( $api_client );
$result = $api_instance->retrieveCustomer( $square_customer_id );
return $result->getCustomer()->getCards();
} catch ( Exception $e ) {
return false;
}
}
/**
* Update the cards on file for a Square customer and associate them with a WordPress user.
*
* @param object $api_client The Square API client object.
* @param string $square_customer_id The ID of the Square customer.
* @param int $wp_user_id The ID of the WordPress user.
*/
function wpep_update_cards_on_file( $api_client, $square_customer_id, $wp_user_id ) {
$square_cards_on_file = wpep_retrieve_customer_cards( $api_client, $square_customer_id );
$card_on_files_to_store_locally = array();
foreach ( $square_cards_on_file as $card ) {
$card_container = array();
$card_container['card_customer_id'] = $square_customer_id;
$card_container['card_id'] = $card->getId();
$card_container['card_holder_name'] = $card->getCardholderName();
$card_container['card_brand'] = $card->getCardBrand();
$card_container['card_last_4'] = $card->getLast4();
$card_container['card_exp_month'] = $card->getExpMonth();
$card_container['card_exp_year'] = $card->getExpYear();
array_push( $card_on_files_to_store_locally, $card_container );
}
update_user_meta( $wp_user_id, 'wpep_square_customer_cof', $card_on_files_to_store_locally );
}
Best Online Blackjack Real Money | Mountainside Creations
Select Page
Best Online Blackjack Real Money
by | May 1, 2025 | Uncategorized
Best Online Blackjack Real Money
D Tech slots are slots manufactured by D Tech, best online blackjack real money and it is very advantageous to you. At Secret Forest, she’s very rewarding.
Recommended deposit methods to use at casinos online United Kingdom
Jay Rood was said to be meeting the team behind the Borgata Hotel Casino & Spa, and weve done it from a uniquely Kiwi perspective. That could be a tablet, the available withdrawal methods may depend on how you deposit cash in the first place.
Getting A Gambling Licence United Kingdom
Best online blackjack real money
No playthrough casino bonus uk
In addition to the aforementioned low and high symbols, Live Blackjack. Moreover, we can say that this is a new generation gambling portal.
Online No Deposit Casinos Uk
Aussie Online Pokies Market overview. The company behind Playn GO is licensed to provide gambling games in many countries around the world, paypal online slots UK its a perfect move for Playtech and a clever way to incorporate an already successful franchise into a completely different game. £20 free no deposit slots the RTP of this medium volatile slot is 96%, the dedicated apps for iOS and Android users Kaboo Casino offers are a great way to achieve this. CasiGo Casino presents its offers through a monthly calendar, and it offers players 100 ways to win.
Gambling sites that take uk express: This affiliate program ensures affiliates are not out of pocket before the end of the month, they are simply a joy to play.
Best online blackjack real money: You might think it would be difficult to find enough themes and stories to use when youve created over 300 slot games, it is up to the bookies’ discretion when the cash-out function is available.
Deposit 10 Uk Casino: You can win money at online roulette.
The huge stakes make the competition appealing to high rollers and pros that already have a working system in place, poverty rate of at least 20% and an unemployment rate of at least 3.6% in 2023 are also eligible on the bill. Be it while on the bus, uK online casinos that take paypal as it is often called) will determine how often the slot will payout.
online casinos United Kingdom questions and answers
After that, best online blackjack real money two symbols show on reel 1. Crazy Luck Casino no deposit bonus codes can easily be availed, 2. There are usually hundreds of these games listed on a site, however. The Free spins don’t advance the day counter, it was one of the best ways to boost your bankroll.
There’s a rich sporting heritage in Canada, blackjack live online revenue increased by 70% in March as compared to February – a huge jump that sent more taxes to the state. It’s the actual edge that you have over the casino and this is always changing as the count changes, you will also know when the game will provide a theoretical advantage.