Skip to content

[POC] Introducing constant class for order metas #4308

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 6 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ public function process_payment( $order_id, $retry = true, $force_save_save = fa

$intent = $this->create_or_update_payment_intent( $order );

$order->update_meta_data( '_stripe_upe_payment_type', $this->stripe_id );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_UPE_PAYMENT_TYPE, $this->stripe_id );
$order->update_status( OrderStatus::PENDING, __( 'Awaiting payment.', 'woocommerce-gateway-stripe' ) );
$order->save();

Expand Down Expand Up @@ -386,7 +386,7 @@ public function update_payment_intent_ajax() {
$intent = $this->create_or_update_payment_intent( $order );

$order->update_status( OrderStatus::PENDING, __( 'Awaiting payment.', 'woocommerce-gateway-stripe' ) );
$order->update_meta_data( '_stripe_upe_payment_type', $this->stripe_id );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_UPE_PAYMENT_TYPE, $this->stripe_id );
$order->save();

wp_send_json(
Expand Down
58 changes: 29 additions & 29 deletions includes/abstracts/abstract-wc-stripe-payment-gateway.php
Original file line number Diff line number Diff line change
Expand Up @@ -329,8 +329,8 @@ public function maybe_remove_non_existent_customer( $error, $order ) {
return false;
}

delete_user_option( $order->get_customer_id(), '_stripe_customer_id' );
$order->delete_meta_data( '_stripe_customer_id' );
delete_user_option( $order->get_customer_id(), WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID );
$order->delete_meta_data( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID );
$order->save();

return true;
Expand Down Expand Up @@ -410,10 +410,10 @@ public function get_transaction_url( $order ) {
*/
public function get_stripe_customer_id( $order ) {
// Try to get it via the order first.
$customer = $order->get_meta( '_stripe_customer_id', true );
$customer = $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID, true );

if ( empty( $customer ) ) {
$customer = get_user_option( '_stripe_customer_id', $order->get_customer_id() );
$customer = get_user_option( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID, $order->get_customer_id() );
}

return $customer;
Expand Down Expand Up @@ -554,7 +554,7 @@ public function process_response( $response, $order ) {
$captured = ( isset( $response->captured ) && $response->captured ) ? 'yes' : 'no';

// Store charge data.
$order->update_meta_data( '_stripe_charge_captured', $captured );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_CHARGE_CAPTURED, $captured );

if ( isset( $response->balance_transaction ) ) {
$this->update_fees( $order, is_string( $response->balance_transaction ) ? $response->balance_transaction : $response->balance_transaction->id );
Expand All @@ -564,9 +564,9 @@ public function process_response( $response, $order ) {
// The mandate ID is not available for the intent object, so we need to fetch the charge.
// Mandate ID is necessary for renewal payments for certain payment methods and Indian cards.
if ( isset( $response->payment_method_details->card->mandate ) ) {
$order->update_meta_data( '_stripe_mandate_id', $response->payment_method_details->card->mandate );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_MANDATE_ID, $response->payment_method_details->card->mandate );
} elseif ( isset( $response->payment_method_details->acss_debit->mandate ) ) {
$order->update_meta_data( '_stripe_mandate_id', $response->payment_method_details->acss_debit->mandate );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_MANDATE_ID, $response->payment_method_details->acss_debit->mandate );
}

if ( isset( $response->payment_method, $response->payment_method_details ) ) {
Expand Down Expand Up @@ -979,14 +979,14 @@ public function prepare_order_source( $order = null ) {
$stripe_customer->set_id( $stripe_customer_id );
}

$source_id = $order->get_meta( '_stripe_source_id', true );
$source_id = $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_SOURCE_ID, true );

// Since 4.0.0, we changed card to source so we need to account for that.
if ( empty( $source_id ) ) {
$source_id = $order->get_meta( '_stripe_card_id', true );

// Take this opportunity to update the key name.
$order->update_meta_data( '_stripe_source_id', $source_id );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_SOURCE_ID, $source_id );

if ( is_callable( [ $order, 'save' ] ) ) {
$order->save();
Expand Down Expand Up @@ -1039,11 +1039,11 @@ public function check_source( $prepared_source ) {
public function save_source_to_order( $order, $source ) {
// Store source in the order.
if ( $source->customer ) {
$order->update_meta_data( '_stripe_customer_id', $source->customer );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID, $source->customer );
}

if ( $source->source ) {
$order->update_meta_data( '_stripe_source_id', $source->source );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_SOURCE_ID, $source->source );
}

if ( is_callable( [ $order, 'save' ] ) ) {
Expand Down Expand Up @@ -1116,7 +1116,7 @@ public function process_refund( $order_id, $amount = null, $reason = '' ) {
$request = [];

$order_currency = $order->get_currency();
$captured = $order->get_meta( '_stripe_charge_captured', true );
$captured = $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_CHARGE_CAPTURED, true );
$charge_id = $order->get_transaction_id();

if ( ! $charge_id ) {
Expand Down Expand Up @@ -1234,7 +1234,7 @@ public function process_refund( $order_id, $amount = null, $reason = '' ) {
}
}

$order->update_meta_data( '_stripe_refund_id', $response->id );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_REFUND_ID, $response->id );

if ( isset( $response->balance_transaction ) ) {
$this->update_fees( $order, $response->balance_transaction );
Expand Down Expand Up @@ -1644,16 +1644,16 @@ public function save_intent_to_order( $order, $intent ) {
$charge = $this->get_latest_charge_from_intent( $intent );

if ( isset( $charge->payment_method_details->card->mandate ) ) {
$order->update_meta_data( '_stripe_mandate_id', $charge->payment_method_details->card->mandate );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_MANDATE_ID, $charge->payment_method_details->card->mandate );
} elseif ( isset( $charge->payment_method_details->acss_debit->mandate ) ) {
$order->update_meta_data( '_stripe_mandate_id', $charge->payment_method_details->acss_debit->mandate );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_MANDATE_ID, $charge->payment_method_details->acss_debit->mandate );
}
} elseif ( 'setup_intent' === $intent->object ) {
$order->update_meta_data( '_stripe_setup_intent', $intent->id );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_SETUP_INTENT, $intent->id );

// Add mandate for free trial subscriptions.
if ( isset( $intent->mandate ) ) {
$order->update_meta_data( '_stripe_mandate_id', $intent->mandate );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_MANDATE_ID, $intent->mandate );
}
}

Expand All @@ -1670,14 +1670,14 @@ public function save_intent_to_order( $order, $intent ) {
* @return obect|bool Either the intent object or `false`.
*/
public function get_intent_from_order( $order ) {
$intent_id = $order->get_meta( '_stripe_intent_id' );
$intent_id = $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_INTENT_ID );

if ( $intent_id ) {
return $this->get_intent( 'payment_intents', $intent_id );
}

// The order doesn't have a payment intent, but it may have a setup intent.
$intent_id = $order->get_meta( '_stripe_setup_intent' );
$intent_id = $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_SETUP_INTENT );

if ( $intent_id ) {
return $this->get_intent( 'setup_intents', $intent_id );
Expand Down Expand Up @@ -1722,7 +1722,7 @@ private function get_intent( $intent_type, $intent_id ) {
public function lock_order_payment( $order, $intent = null ) {
$order->read_meta_data( true );

$existing_lock = $order->get_meta( '_stripe_lock_payment', true );
$existing_lock = $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_LOCK_PAYMENT, true );

if ( $existing_lock ) {
$parts = explode( '|', $existing_lock ); // Format is: "{expiry_timestamp}" or "{expiry_timestamp}|{pi_xxxx}" if an intent is passed.
Expand All @@ -1737,7 +1737,7 @@ public function lock_order_payment( $order, $intent = null ) {

$new_lock = ( time() + 5 * MINUTE_IN_SECONDS ) . ( isset( $intent->id ) ? '|' . $intent->id : '' );

$order->update_meta_data( '_stripe_lock_payment', $new_lock );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_LOCK_PAYMENT, $new_lock );
$order->save_meta_data();

return false;
Expand All @@ -1750,7 +1750,7 @@ public function lock_order_payment( $order, $intent = null ) {
* @param WC_Order $order The order that is being unlocked.
*/
public function unlock_order_payment( $order ) {
$order->delete_meta_data( '_stripe_lock_payment' );
$order->delete_meta_data( WC_Stripe_Order_Metas::META_STRIPE_LOCK_PAYMENT );
$order->save_meta_data();
}

Expand All @@ -1764,7 +1764,7 @@ public function unlock_order_payment( $order ) {
public function lock_order_refund( $order ) {
$order->read_meta_data( true );

$existing_lock = $order->get_meta( '_stripe_lock_refund', true );
$existing_lock = $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_LOCK_REFUND, true );

if ( $existing_lock ) {
$expiration = (int) $existing_lock;
Expand All @@ -1777,7 +1777,7 @@ public function lock_order_refund( $order ) {

$new_lock = time() + 5 * MINUTE_IN_SECONDS;

$order->update_meta_data( '_stripe_lock_refund', $new_lock );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_LOCK_REFUND, $new_lock );
$order->save_meta_data();

return false;
Expand All @@ -1790,7 +1790,7 @@ public function lock_order_refund( $order ) {
* @param WC_Order $order The order that is being unlocked.
*/
public function unlock_order_refund( $order ) {
$order->delete_meta_data( '_stripe_lock_refund' );
$order->delete_meta_data( WC_Stripe_Order_Metas::META_STRIPE_LOCK_REFUND );
$order->save_meta_data();
}

Expand Down Expand Up @@ -1834,7 +1834,7 @@ public function setup_intent( $order, $prepared_source ) {
if ( is_wp_error( $setup_intent ) ) {
WC_Stripe_Logger::log( "Unable to create SetupIntent for Order #$order_id: " . print_r( $setup_intent, true ) );
} elseif ( WC_Stripe_Intent_Status::REQUIRES_ACTION === $setup_intent->status ) {
$order->update_meta_data( '_stripe_setup_intent', $setup_intent->id );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_SETUP_INTENT, $setup_intent->id );
$order->save();

return $setup_intent->client_secret;
Expand Down Expand Up @@ -1884,7 +1884,7 @@ public function create_and_confirm_intent_for_off_session( $order, $prepared_sou
}

// Add mandate if it exists.
$mandate = $order->get_meta( '_stripe_mandate_id', true );
$mandate = $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_MANDATE_ID, true );
if ( ! empty( $mandate ) ) {
$request['mandate'] = $mandate;
}
Expand Down Expand Up @@ -2268,7 +2268,7 @@ private function needs_ssl_setup() {
* @return string The status of the order before it was put on hold.
*/
protected function get_stripe_order_status_before_hold( $order ) {
$before_hold_status = $order->get_meta( '_stripe_status_before_hold' );
$before_hold_status = $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_STATUS_BEFORE_HOLD );

if ( ! empty( $before_hold_status ) ) {
return $before_hold_status;
Expand All @@ -2294,7 +2294,7 @@ protected function set_stripe_order_status_before_hold( $order, $status ) {
$status = apply_filters( 'woocommerce_payment_complete_order_status', $payment_complete_status, $order->get_id(), $order );
}

$order->update_meta_data( '_stripe_status_before_hold', $status );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_STATUS_BEFORE_HOLD, $status );
}

/**
Expand Down
4 changes: 2 additions & 2 deletions includes/admin/class-wc-rest-stripe-orders-controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ public function create_customer( $request ) {
$customer = new WC_Stripe_Customer( $order_user->ID );

// Set the customer ID if known but not already set.
$customer_id = $order->get_meta( '_stripe_customer_id', true );
$customer_id = $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID, true );
if ( ! $customer->get_id() && $customer_id ) {
$customer->set_id( $customer_id );
}
Expand All @@ -143,7 +143,7 @@ public function create_customer( $request ) {
return new WP_Error( 'stripe_error', $e->getMessage() );
}

$order->update_meta_data( '_stripe_customer_id', $customer_id );
$order->update_meta_data( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID, $customer_id );
$order->save();

return rest_ensure_response( [ 'id' => $customer_id ] );
Expand Down
44 changes: 22 additions & 22 deletions includes/admin/class-wc-stripe-privacy.php
Original file line number Diff line number Diff line change
Expand Up @@ -133,11 +133,11 @@ public function order_data_exporter( $email_address, $page = 1 ) {
'data' => [
[
'name' => __( 'Stripe payment id', 'woocommerce-gateway-stripe' ),
'value' => $order->get_meta( '_stripe_source_id', true ),
'value' => $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_SOURCE_ID, true ),
],
[
'name' => __( 'Stripe customer id', 'woocommerce-gateway-stripe' ),
'value' => $order->get_meta( '_stripe_customer_id', true ),
'value' => $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID, true ),
],
],
];
Expand Down Expand Up @@ -198,11 +198,11 @@ public function subscriptions_data_exporter( $email_address, $page = 1 ) {
'data' => [
[
'name' => __( 'Stripe payment id', 'woocommerce-gateway-stripe' ),
'value' => $subscription->get_meta( '_stripe_source_id', true ),
'value' => $subscription->get_meta( WC_Stripe_Order_Metas::META_STRIPE_SOURCE_ID, true ),
],
[
'name' => __( 'Stripe customer id', 'woocommerce-gateway-stripe' ),
'value' => $subscription->get_meta( '_stripe_customer_id', true ),
'value' => $subscription->get_meta( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID, true ),
],
],
];
Expand Down Expand Up @@ -238,7 +238,7 @@ public function customer_data_exporter( $email_address, $page ) {
'data' => [
[
'name' => __( 'Stripe payment id', 'woocommerce-gateway-stripe' ),
'value' => get_user_option( '_stripe_source_id', $user->ID ),
'value' => get_user_option( WC_Stripe_Order_Metas::META_STRIPE_SOURCE_ID, $user->ID ),
],
[
'name' => __( 'Stripe customer id', 'woocommerce-gateway-stripe' ),
Expand Down Expand Up @@ -268,17 +268,17 @@ public function customer_data_eraser( $email_address, $page ) {
$stripe_source_id = '';

if ( $user instanceof WP_User ) {
$stripe_customer_id = get_user_option( '_stripe_customer_id', $user->ID );
$stripe_source_id = get_user_option( '_stripe_source_id', $user->ID );
$stripe_customer_id = get_user_option( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID, $user->ID );
$stripe_source_id = get_user_option( WC_Stripe_Order_Metas::META_STRIPE_SOURCE_ID, $user->ID );
}

$items_removed = false;
$messages = [];

if ( ! empty( $stripe_customer_id ) || ! empty( $stripe_source_id ) ) {
$items_removed = true;
delete_user_option( $user->ID, '_stripe_customer_id' );
delete_user_option( $user->ID, '_stripe_source_id' );
delete_user_option( $user->ID, WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID );
delete_user_option( $user->ID, WC_Stripe_Order_Metas::META_STRIPE_SOURCE_ID );
$messages[] = __( 'Stripe User Data Erased.', 'woocommerce-gateway-stripe' );
}

Expand Down Expand Up @@ -350,7 +350,7 @@ protected function maybe_handle_subscription( $order ) {

$subscription = current( wcs_get_subscriptions_for_order( $order->get_id() ) );

$stripe_source_id = $subscription->get_meta( '_stripe_source_id', true );
$stripe_source_id = $subscription->get_meta( WC_Stripe_Order_Metas::META_STRIPE_SOURCE_ID, true );

if ( empty( $stripe_source_id ) ) {
return [ false, false, [] ];
Expand All @@ -369,14 +369,14 @@ protected function maybe_handle_subscription( $order ) {
$renewal_orders = class_exists( 'WC_Subscriptions_Renewal_Order' ) ? WC_Subscriptions_Renewal_Order::get_renewal_orders( $order->get_id(), 'WC_Order' ) : [];

foreach ( $renewal_orders as $renewal_order ) {
$renewal_order->delete_meta_data( '_stripe_source_id' );
$renewal_order->delete_meta_data( '_stripe_refund_id' );
$renewal_order->delete_meta_data( '_stripe_customer_id' );
$renewal_order->delete_meta_data( WC_Stripe_Order_Metas::META_STRIPE_SOURCE_ID );
$renewal_order->delete_meta_data( WC_Stripe_Order_Metas::META_STRIPE_REFUND_ID );
$renewal_order->delete_meta_data( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID );
}

$subscription->delete_meta_data( '_stripe_source_id' );
$subscription->delete_meta_data( '_stripe_refund_id' );
$subscription->delete_meta_data( '_stripe_customer_id' );
$subscription->delete_meta_data( WC_Stripe_Order_Metas::META_STRIPE_SOURCE_ID );
$subscription->delete_meta_data( WC_Stripe_Order_Metas::META_STRIPE_REFUND_ID );
$subscription->delete_meta_data( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID );

return [ true, false, [ __( 'Stripe Subscription Data Erased.', 'woocommerce-gateway-stripe' ) ] ];
}
Expand All @@ -388,9 +388,9 @@ protected function maybe_handle_subscription( $order ) {
* @return array
*/
protected function maybe_handle_order( $order ) {
$stripe_source_id = $order->get_meta( '_stripe_source_id', true );
$stripe_refund_id = $order->get_meta( '_stripe_refund_id', true );
$stripe_customer_id = $order->get_meta( '_stripe_customer_id', true );
$stripe_source_id = $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_SOURCE_ID, true );
$stripe_refund_id = $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_REFUND_ID, true );
$stripe_customer_id = $order->get_meta( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID, true );

if ( ! $this->is_retention_expired( $order->get_date_created()->getTimestamp() ) ) {
/* translators: %d Order ID */
Expand All @@ -401,9 +401,9 @@ protected function maybe_handle_order( $order ) {
return [ false, false, [] ];
}

$order->delete_meta_data( '_stripe_source_id' );
$order->delete_meta_data( '_stripe_refund_id' );
$order->delete_meta_data( '_stripe_customer_id' );
$order->delete_meta_data( WC_Stripe_Order_Metas::META_STRIPE_SOURCE_ID );
$order->delete_meta_data( WC_Stripe_Order_Metas::META_STRIPE_REFUND_ID );
$order->delete_meta_data( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID );

return [ true, false, [ __( 'Stripe personal data erased.', 'woocommerce-gateway-stripe' ) ] ];
}
Expand Down
6 changes: 3 additions & 3 deletions includes/class-wc-stripe-customer.php
Original file line number Diff line number Diff line change
Expand Up @@ -719,7 +719,7 @@ public function clear_cache() {
* @return string|bool Either the Stripe ID or false.
*/
public function get_id_from_meta( $user_id ) {
return get_user_option( '_stripe_customer_id', $user_id );
return get_user_option( WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID, $user_id );
}

/**
Expand All @@ -728,14 +728,14 @@ public function get_id_from_meta( $user_id ) {
* @param string $id The Stripe customer ID.
*/
public function update_id_in_meta( $id ) {
update_user_option( $this->get_user_id(), '_stripe_customer_id', $id, false );
update_user_option( $this->get_user_id(), WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID, $id, false );
}

/**
* Deletes the user ID from the meta table with the right key.
*/
public function delete_id_from_meta() {
delete_user_option( $this->get_user_id(), '_stripe_customer_id', false );
delete_user_option( $this->get_user_id(), WC_Stripe_Order_Metas::META_STRIPE_CUSTOMER_ID, false );
}

/**
Expand Down
Loading
Loading