From 5b5e3658d1cb919416bc0633dd63d4c289e90ce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20Costa?= Date: Wed, 3 Jan 2024 14:49:20 -0300 Subject: [PATCH 1/2] Add check for WooPay duplicate payments --- .../class-duplicate-payment-prevention-service.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/includes/class-duplicate-payment-prevention-service.php b/includes/class-duplicate-payment-prevention-service.php index 99f093c5c09..71a0bfbcc10 100644 --- a/includes/class-duplicate-payment-prevention-service.php +++ b/includes/class-duplicate-payment-prevention-service.php @@ -102,9 +102,13 @@ public function check_payment_intent_attached_to_order_succeeded( WC_Order $orde return; } - $intent_meta_order_id_raw = $intent->get_metadata()['order_id'] ?? ''; - $intent_meta_order_id = is_numeric( $intent_meta_order_id_raw ) ? intval( $intent_meta_order_id_raw ) : 0; - if ( $intent_meta_order_id !== $order->get_id() ) { + $intent_meta_order_id_raw = $intent->get_metadata()['order_id'] ?? ''; + $intent_meta_order_id = is_numeric( $intent_meta_order_id_raw ) ? intval( $intent_meta_order_id_raw ) : 0; + $intent_meta_order_number_raw = $intent->get_metadata()['order_number'] ?? ''; + $intent_meta_order_number = is_numeric( $intent_meta_order_number_raw ) ? intval( $intent_meta_order_number_raw ) : 0; + $paid_on_woopay = filter_var( $intent->get_metadata()['paid_on_woopay'] ?? false, FILTER_VALIDATE_BOOLEAN ); + $is_woopay_order = $order->get_id() === $intent_meta_order_number; + if ( ! ( $paid_on_woopay && $is_woopay_order ) && $intent_meta_order_id !== $order->get_id() ) { return; } From d10e2384aa919c2505bb7a112d2020f799f4e26b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20Costa?= Date: Wed, 3 Jan 2024 14:51:04 -0300 Subject: [PATCH 2/2] Add changelog entry --- changelog/fix-2199-woopay-duplicate-payments | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelog/fix-2199-woopay-duplicate-payments diff --git a/changelog/fix-2199-woopay-duplicate-payments b/changelog/fix-2199-woopay-duplicate-payments new file mode 100644 index 00000000000..19c6948d923 --- /dev/null +++ b/changelog/fix-2199-woopay-duplicate-payments @@ -0,0 +1,5 @@ +Significance: patch +Type: fix +Comment: Fix WooPay duplicate charges. + +