jigneshkaila

Automatically Update WooCommerce Order Status When PayPal Pa

Dec 11th, 2018
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.20 KB | None | 0 0
  1. function get_paypal_order($raw_custom) {
  2.         $custom = json_decode($raw_custom);
  3.         if ($custom && is_object($custom)) {
  4.             $order_id = $custom->order_id;
  5.             $order_key = $custom->order_key;
  6.         } else {
  7.             return false;
  8.         }
  9.         $order = wc_get_order($order_id);
  10.         if (!$order) {
  11.             $order_id = wc_get_order_id_by_order_key($order_key);
  12.             $order = wc_get_order($order_id);
  13.         }
  14.         if (!$order || $order->get_order_key() !== $order_key) {
  15.             return false;
  16.         }
  17.         return $order;
  18.     }
  19.  
  20.     function update_wc_order_status($posted) {
  21.         $order = !empty($posted['custom']) ? get_paypal_order($posted['custom']) : false;
  22.         if ($order) {
  23.             $posted['payment_status'] = strtolower($posted['payment_status']);
  24.             if ('completed' === $posted['payment_status']) {
  25.                 $order->add_order_note(__('IPN payment completed', ''));
  26.                 $order->payment_complete(!empty($posted['txn_id']) ? wc_clean($posted['txn_id']) : '' );
  27.             }
  28.         }
  29.     }
  30.  
  31.     add_action('paypal_ipn_for_wordpress_payment_status_completed', 'update_wc_order_status', 10, 1);
Add Comment
Please, Sign In to add comment