Plugin Directory

Changeset 2867007


Ignore:
Timestamp:
02/17/2023 02:06:41 PM (3 years ago)
Author:
paybyrd
Message:

Implement validations for webhook services

Location:
paybyrd/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • paybyrd/trunk/README.txt

    r2859745 r2867007  
    55Requires at least: 4.7
    66Tested up to: 5.8
    7 Stable tag: 2.0.0
     7Stable tag: 2.4.0
    88Requires PHP: 7.0
    99License: GPLv2 or later
  • paybyrd/trunk/languages/paybyrd-woocommerce-en_US.po

    r2864655 r2867007  
    11msgid ""
    22msgstr ""
    3 "Project-Id-Version: Paybyrd Payment Plugin 2.3.0\n"
     3"Project-Id-Version: Paybyrd Payment Plugin 2.4.0\n"
    44"MIME-Version: 1.0\n"
    55"Content-Type: text/plain; charset=UTF-8\n"
  • paybyrd/trunk/languages/paybyrd-woocommerce-pt_PT.po

    r2864655 r2867007  
    11msgid ""
    22msgstr ""
    3 "Project-Id-Version: Paybyrd Payment Plugin 2.3.0\n"
     3"Project-Id-Version: Paybyrd Payment Plugin 2.4.0\n"
    44"MIME-Version: 1.0\n"
    55"Content-Type: text/plain; charset=UTF-8\n"
  • paybyrd/trunk/languages/paybyrd-woocommerce.pot

    r2864655 r2867007  
    11msgid ""
    22msgstr ""
    3 "Project-Id-Version: Paybyrd Payment Plugin 2.3.0\n"
     3"Project-Id-Version: Paybyrd Payment Plugin 2.4.0\n"
    44"MIME-Version: 1.0\n"
    55"Content-Type: text/plain; charset=utf-8\n"
  • paybyrd/trunk/paybyrd-payment.php

    r2864655 r2867007  
    55     * Author: Paybyrd
    66     * Author URI: https://www.paybyrd.com
    7      * Version: 2.3.0
     7     * Version: 2.4.0
    88     * Domain Path: /languages
    99     */
     
    372372                        'result' => 'success',
    373373                        'redirect' => add_query_arg('order', $order->get_id(),
    374                         add_query_arg('key', $order_key, $this->get_return_url($order)))
     374                        add_query_arg('key', $order_key, add_query_arg(array(), $wp->request)))
    375375                    ];
    376376                }
     
    467467        // Setup REST
    468468        add_action('rest_api_init', 'generate_rest');
    469         function validateWebhook($orderId, $privateKey, $hookUser, $hookPassword, $hookTestUser, $hookTestPassword, $testMode) {
     469        function validateWebhook($orderId, $privateKey, $hookUser, $hookPassword, $hookTestUser, $hookTestPassword, $testMode, $API_URL, $paidOrderStatus) {
    470470            global $wp;
    471471            global $woocommerce;
     
    481481            ];
    482482
    483             $response = wp_remote_get($this->API_URL . 'api/v2/orders/' . $orderId, $args);
     483            $response = wp_remote_get($API_URL . 'api/v2/orders/' . $orderId, $args);
    484484            $response = wp_remote_retrieve_body($response);
    485485            $response = json_decode($response, true);
     
    492492            $userTestAuth = $hookTestUser . ':' . $hookTestPassword;
    493493            $order = wc_get_order(substr($response['orderRef'], 3));
     494
     495            if (!$response) {
     496                http_response_code(404);
     497                echo "Order not found";
     498                exit();
     499            }
    494500
    495501            // Set new Order State based on WebHook response
     
    504510                        if ($testMode) {
    505511                            $order->update_status('payment-test', __('Test Approved', 'paybyrd-woocommerce'));
     512                            echo "Test order updated successfully";
    506513                        } else {
    507                             $order->update_status($this->paidOrderStatus, __('Payment successfully paid', 'paybyrd-woocommerce'));
     514                            $order->update_status($paidOrderStatus, __('Payment successfully paid', 'paybyrd-woocommerce'));
     515                            echo "Order updated successfully";
    508516                        }
    509517
    510518                        if (WC()->cart) {
     519                            echo "Cart was empty";
    511520                            WC()->cart->empty_cart();
    512521                        }
     522                        echo "Operation successfull";
    513523                        break;
    514524                    case 'Refunded':
    515525                    case 'refunded':
    516526                        $order->update_status('refunded', __('Payment refunded', 'paybyrd-woocommerce'));
     527                        echo "Order refunded";
    517528                        break;
    518529                    default:
     530                        echo "Order still being processed";
    519531                        break;
    520532                }
     
    532544                    // GET orderId from POST Webhook
    533545                    $webhookData = json_decode(file_get_contents('php://input'), true);
     546                   
     547                    if (!$webhookData) {
     548                        echo "No webhook data found";
     549                        http_response_code(404);
     550                        exit();
     551                    }
     552                    if (!$webhookData['orderId']) {
     553                        echo "No orderId found";
     554                        http_response_code(404);
     555                        exit();
     556                    }
    534557
    535558                    return validateWebhook($webhookData['orderId'], $paybyrd->private_key, $paybyrd->hook_user, $paybyrd->hook_password, $paybyrd->hook_test_user, $paybyrd->hook_test_password, $paybyrd->testmode);
     
    544567                    $response = $paybyrd->generate_hook(true);
    545568
     569                    if (!$response) {
     570                        http_response_code(400);
     571                    }
     572
    546573                    echo json_encode($response);
    547574                    exit();
Note: See TracChangeset for help on using the changeset viewer.