Automattic\WooCommerce\Gateways\PayPal
WebhookHandler::process_payment_capture_pending
Process the PAYMENT.CAPTURE.PENDING webhook event.
Method of the class: WebhookHandler{}
No Hooks.
Returns
null. Nothing (null).
Usage
// private - for code of main (parent) class only $result = $this->process_payment_capture_pending( $event ): void;
- $event(array) (required)
- The webhook event data.
Changelog
| Since 10.5.0 | Introduced. |
WebhookHandler::process_payment_capture_pending() WebhookHandler::process payment capture pending code WC 10.7.0
private function process_payment_capture_pending( array $event ): void {
$custom_id = $event['resource']['custom_id'] ?? '';
$order = PayPalHelper::get_wc_order_from_paypal_custom_id( $custom_id );
if ( ! $order ) {
\WC_Gateway_Paypal::log( 'Invalid order. Custom ID: ' . wc_print_r( $custom_id, true ) );
return;
}
// Skip if the payment is already processed.
if ( PayPalConstants::STATUS_COMPLETED === $order->get_meta( PayPalConstants::PAYPAL_ORDER_META_STATUS, true ) ) {
return;
}
$transaction_id = $event['resource']['id'] ?? null;
$status = $event['resource']['status'] ?? null;
$reason = $event['resource']['status_details']['reason'] ?? 'Unknown';
$order->set_transaction_id( $transaction_id );
$order->update_meta_data( PayPalConstants::PAYPAL_ORDER_META_CAPTURE_ID, $transaction_id );
$order->update_meta_data( PayPalConstants::PAYPAL_ORDER_META_STATUS, $status );
/* translators: %s: reason */
$order->update_status( OrderStatus::ON_HOLD, sprintf( __( 'Payment pending (reason: %s).', 'woocommerce' ), $reason ) );
$order->save();
}