From 857e318e031bd47dfaad31d2dfd7f95d26cfec44 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Thu, 9 May 2024 11:05:04 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20PayPal=20webhooks:=20=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=89=8B=E7=BB=AD=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webht/third_party/paypal/controllers/index.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/webht/third_party/paypal/controllers/index.php b/webht/third_party/paypal/controllers/index.php index 3ab61712..46a5ed42 100644 --- a/webht/third_party/paypal/controllers/index.php +++ b/webht/third_party/paypal/controllers/index.php @@ -648,17 +648,21 @@ class Index extends CI_Controller { $pn_invoice = ''; $pn_mc_gross = ''; $pn_mc_currency = ''; + $pn_mc_fee = ''; switch ($post_data->event_type) { case 'PAYMENT.SALE.COMPLETED': $pn_invoice = $post_data->resource->invoice_number; $pn_mc_gross = $post_data->resource->amount->total; $pn_mc_currency = $post_data->resource->amount->currency; $pn_payment_status = $post_data->resource->state; + $post_data->mc_fee = $post_data->resource->transaction_fee->value; break; case 'PAYMENT.SALE.REFUNDED': $pn_payment_status = 'Refunded'; $pn_mc_gross = '-' . $post_data->resource->amount->total; $post_data->parent_txn_id = $post_data->resource->sale_id; + $pn_mc_fee = '-' . $post_data->resource->refund_from_transaction_fee->value; + $post_data->mc_fee = $pn_mc_fee; break; case 'PAYMENT.CAPTURE.COMPLETED': @@ -666,16 +670,21 @@ class Index extends CI_Controller { $pn_mc_gross = $post_data->resource->amount->value; $pn_mc_currency = $post_data->resource->amount->currency_code; $pn_payment_status = $post_data->resource->status; + $post_data->mc_fee = $post_data->resource->seller_receivable_breakdown->paypal_fee->value; break; case 'PAYMENT.CAPTURE.REFUNDED': $pn_invoice = $post_data->resource->invoice_id; $pn_mc_currency = $post_data->resource->amount->currency_code; $pn_mc_gross = '-' . $post_data->resource->amount->value; $pn_payment_status = 'Refunded'; + // $post_data->parent_txn_id = $post_data->resource->sale_id; $parent_link = $post_data->resource->links[1]->href; $parent_path = parse_url($parent_link, PHP_URL_PATH); // Get the path from the URL $post_data->parent_txn_id = basename($parent_path); + + $pn_mc_fee = '-' . $post_data->resource->seller_payable_breakdown->paypal_fee->value; + $post_data->mc_fee = $pn_mc_fee; break; default: // capture COMPLETED @@ -869,7 +878,7 @@ class Index extends CI_Controller { $is_webhook = false; if (isset($webhook_memo->id) && substr($webhook_memo->id, 0, 2)==="WH") { $is_webhook = true; - $payment_fee = $webhook_memo->resource->transaction_fee->value; + $payment_fee = property_exists($webhook_memo, 'mc_fee') ? $webhook_memo->mc_fee : $webhook_memo->resource->transaction_fee->value; } else { $payment_fee = $webhook_memo->mc_fee; } @@ -1133,7 +1142,8 @@ class Index extends CI_Controller { if (isset($payment_memo->id) && substr($payment_memo->id, 0, 2)==="WH") { $is_webhook = true; $refund_amount = $payment_memo->refund_from_received_amount; - $payment_fee = $payment_memo->resource->refund_from_transaction_fee->value; + // $payment_fee = $payment_memo->resource->refund_from_transaction_fee->value; + $payment_fee = property_exists($payment_memo, 'mc_fee') ? $payment_memo->mc_fee : $payment_memo->resource->refund_from_transaction_fee->value; } else { $refund_amount = bcsub($payment_memo->mc_gross, $payment_memo->mc_fee); $payment_fee = $payment_memo->mc_fee;