mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-01 07:02:48 +08:00
Add updating refund fees in order
This commit is contained in:
parent
4027f4a77e
commit
d32aaab1af
8 changed files with 212 additions and 25 deletions
|
@ -80,6 +80,7 @@ return array(
|
|||
$order_endpoint = $container->get( 'api.endpoint.order' );
|
||||
$authorized_payments_processor = $container->get( 'wcgateway.processor.authorized-payments' );
|
||||
$payment_token_factory = $container->get( 'vaulting.payment-token-factory' );
|
||||
$refund_fees_updater = $container->get( 'wcgateway.helper.refund-fees-updater' );
|
||||
|
||||
return array(
|
||||
new CheckoutOrderApproved(
|
||||
|
@ -91,14 +92,14 @@ return array(
|
|||
),
|
||||
new CheckoutOrderCompleted( $logger ),
|
||||
new CheckoutPaymentApprovalReversed( $logger ),
|
||||
new PaymentCaptureRefunded( $logger ),
|
||||
new PaymentCaptureRefunded( $logger, $refund_fees_updater ),
|
||||
new PaymentCaptureReversed( $logger ),
|
||||
new PaymentCaptureCompleted( $logger, $order_endpoint ),
|
||||
new VaultPaymentTokenCreated( $logger, $prefix, $authorized_payments_processor, $payment_token_factory ),
|
||||
new VaultPaymentTokenDeleted( $logger ),
|
||||
new PaymentCapturePending( $logger ),
|
||||
new PaymentSaleCompleted( $logger ),
|
||||
new PaymentSaleRefunded( $logger ),
|
||||
new PaymentSaleRefunded( $logger, $refund_fees_updater ),
|
||||
new BillingSubscriptionCancelled( $logger ),
|
||||
new BillingPlanPricingChangeActivated( $logger ),
|
||||
new CatalogProductUpdated( $logger ),
|
||||
|
|
|
@ -11,6 +11,7 @@ namespace WooCommerce\PayPalCommerce\Webhooks\Handler;
|
|||
|
||||
use Psr\Log\LoggerInterface;
|
||||
use WC_Order;
|
||||
use WooCommerce\PayPalCommerce\WcGateway\Helper\RefundFeesUpdater;
|
||||
use WooCommerce\PayPalCommerce\WcGateway\Processor\RefundMetaTrait;
|
||||
use WooCommerce\PayPalCommerce\WcGateway\Processor\TransactionIdHandlingTrait;
|
||||
use WP_Error;
|
||||
|
@ -31,13 +32,22 @@ class PaymentCaptureRefunded implements RequestHandler {
|
|||
*/
|
||||
private $logger;
|
||||
|
||||
/**
|
||||
* The refund fees updater.
|
||||
*
|
||||
* @var RefundFeesUpdater
|
||||
*/
|
||||
private $refund_fees_updater;
|
||||
|
||||
/**
|
||||
* PaymentCaptureRefunded constructor.
|
||||
*
|
||||
* @param LoggerInterface $logger The logger.
|
||||
* @param LoggerInterface $logger The logger.
|
||||
* @param RefundFeesUpdater $refund_fees_updater The refund fees updater.
|
||||
*/
|
||||
public function __construct( LoggerInterface $logger ) {
|
||||
$this->logger = $logger;
|
||||
public function __construct( LoggerInterface $logger, RefundFeesUpdater $refund_fees_updater ) {
|
||||
$this->logger = $logger;
|
||||
$this->refund_fees_updater = $refund_fees_updater;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -68,9 +78,11 @@ class PaymentCaptureRefunded implements RequestHandler {
|
|||
* @return WP_REST_Response
|
||||
*/
|
||||
public function handle_request( WP_REST_Request $request ): WP_REST_Response {
|
||||
$order_id = isset( $request['resource']['custom_id'] ) ?
|
||||
$request['resource']['custom_id'] : 0;
|
||||
$refund_id = (string) ( $request['resource']['id'] ?? '' );
|
||||
$resource = ( $request['resource'] ?? array() ) ?: array();
|
||||
|
||||
$order_id = $resource['custom_id'] ?? 0;
|
||||
$refund_id = (string) ( $resource['id'] ?? '' );
|
||||
|
||||
if ( ! $order_id ) {
|
||||
$message = sprintf(
|
||||
'No order for webhook event %s was found.',
|
||||
|
@ -122,6 +134,7 @@ class PaymentCaptureRefunded implements RequestHandler {
|
|||
if ( $refund_id ) {
|
||||
$this->update_transaction_id( $refund_id, $wc_order, $this->logger );
|
||||
$this->add_refund_to_meta( $wc_order, $refund_id );
|
||||
$this->refund_fees_updater->update( $wc_order );
|
||||
}
|
||||
|
||||
return $this->success_response();
|
||||
|
|
|
@ -10,6 +10,7 @@ declare(strict_types=1);
|
|||
namespace WooCommerce\PayPalCommerce\Webhooks\Handler;
|
||||
|
||||
use Psr\Log\LoggerInterface;
|
||||
use WooCommerce\PayPalCommerce\WcGateway\Helper\RefundFeesUpdater;
|
||||
use WooCommerce\PayPalCommerce\WcGateway\Processor\RefundMetaTrait;
|
||||
use WooCommerce\PayPalCommerce\WcGateway\Processor\TransactionIdHandlingTrait;
|
||||
use WP_Error;
|
||||
|
@ -30,13 +31,22 @@ class PaymentSaleRefunded implements RequestHandler {
|
|||
*/
|
||||
private $logger;
|
||||
|
||||
/**
|
||||
* The refund fees updater.
|
||||
*
|
||||
* @var RefundFeesUpdater
|
||||
*/
|
||||
private $refund_fees_updater;
|
||||
|
||||
/**
|
||||
* PaymentSaleRefunded constructor.
|
||||
*
|
||||
* @param LoggerInterface $logger The logger.
|
||||
* @param LoggerInterface $logger The logger.
|
||||
* @param RefundFeesUpdater $refund_fees_updater The refund fees updater.
|
||||
*/
|
||||
public function __construct( LoggerInterface $logger ) {
|
||||
$this->logger = $logger;
|
||||
public function __construct( LoggerInterface $logger, RefundFeesUpdater $refund_fees_updater ) {
|
||||
$this->logger = $logger;
|
||||
$this->refund_fees_updater = $refund_fees_updater;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -120,6 +130,7 @@ class PaymentSaleRefunded implements RequestHandler {
|
|||
|
||||
$this->update_transaction_id( $refund_id, $wc_order, $this->logger );
|
||||
$this->add_refund_to_meta( $wc_order, $refund_id );
|
||||
$this->refund_fees_updater->update( $wc_order );
|
||||
}
|
||||
|
||||
return $this->success_response();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue