Plugin Directory

Changeset 2783062


Ignore:
Timestamp:
09/12/2022 12:14:24 AM (4 years ago)
Author:
payadvantage
Message:

Publish 3.2.2

Location:
pay-advantage/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • pay-advantage/trunk/README.txt

    r2745606 r2783062  
    33Tags: credit cards, payment gateway, online payments, e-commerce
    44Requires at least: 5.2
    5 Tested up to: 6.0.0
     5Tested up to: 6.0.2
    66Stable tag: 3.2.1
    77Requires PHP: 7.0
     
    4949= 3.2.0 =
    5050* If you have 3.1, you must upgrade to this version to continue processing payments.
    51 * Bux fixes
     51* Bug fixes
    5252* Security improvements
    5353* Increased supported Wordpress version to 5.9.1
  • pay-advantage/trunk/admin/options-ajax.php

    r2708855 r2783062  
    66 */
    77function save_pay_advantage_settings_handler() {
    8     check_ajax_referer( 'pay_advantage_nonce', 'security' );
     8    try {
     9        check_ajax_referer( 'pay_advantage_nonce', 'security' );
    910
    10     if ( ! is_admin() ) {
    11         pay_advantage_write_error_to_response( 'Failed, user is not an admin.' );
    12         wp_die();
    13     }
     11        if ( ! is_admin() ) {
     12            pay_advantage_write_error_to_response( 'Failed, user is not an admin.' );
     13            wp_die();
     14        }
    1415
    15     $require_mobile               = filter_var( $_POST['payadvantagerequiremobile'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
    16     $require_address              = filter_var( $_POST['payadvantagerequireaddress'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
    17     $show_credit_card             = filter_var( $_POST['payadvantageshowbcreditcard'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
    18     $oncharge_credit_card_fees    = filter_var( $_POST['payadvantageonchargecreditcardfees'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
    19     $wc_oncharge_credit_card_fees = filter_var( $_POST['payadvantagewconchargecreditcardfees'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
    20     $show_bpay                    = filter_var( $_POST['payadvantageshowbpay'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
    21     $description                  = sanitize_text_field( $_POST['payadvantagecarddescription'] );
    22     $anonymous_permission         = filter_var( $_POST['payadvantageanonymouspermission'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
    23     $register_credit_card_button  = sanitize_text_field( $_POST['payadvantagemakepaymentbutton'] );
    24     $wc_paid_status               = sanitize_text_field( $_POST['payadvantagewcpaidstatus'] );
    25     $wc_cancel_status             = sanitize_text_field( $_POST['payadvantagewccancelstatus'] );
     16        $require_mobile               = filter_var( $_POST['payadvantagerequiremobile'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
     17        $require_address              = filter_var( $_POST['payadvantagerequireaddress'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
     18        $show_credit_card             = filter_var( $_POST['payadvantageshowbcreditcard'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
     19        $oncharge_credit_card_fees    = filter_var( $_POST['payadvantageonchargecreditcardfees'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
     20        $wc_oncharge_credit_card_fees = filter_var( $_POST['payadvantagewconchargecreditcardfees'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
     21        $show_bpay                    = filter_var( $_POST['payadvantageshowbpay'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
     22        $description                  = sanitize_text_field( $_POST['payadvantagecarddescription'] );
     23        $anonymous_permission         = filter_var( $_POST['payadvantageanonymouspermission'], FILTER_VALIDATE_BOOLEAN ) ? 1 : 0;
     24        $register_credit_card_button  = sanitize_text_field( $_POST['payadvantagemakepaymentbutton'] );
     25        $wc_paid_status               = sanitize_text_field( $_POST['payadvantagewcpaidstatus'] );
     26        $wc_cancel_status             = sanitize_text_field( $_POST['payadvantagewccancelstatus'] );
    2627
    27     update_option( 'pay_advantage_credit_card_description', $description );
    28     update_option( 'pay_advantage_show_widget_to_users_not_logged_in', $anonymous_permission );
    29     update_option( 'pay_advantage_require_mobile', $require_mobile );
    30     update_option( 'pay_advantage_require_address', $require_address );
    31     update_option( 'pay_advantage_show_credit_card', $show_credit_card );
    32     update_option( 'pay_advantage_oncharge_credit_card_fees', $oncharge_credit_card_fees );
    33     update_option( 'pay_advantage_wc_oncharge_credit_card_fees', $wc_oncharge_credit_card_fees );
    34     update_option( 'pay_advantage_show_bpay', $show_bpay );
    35     update_option( 'pay_advantage_make_payment_button', $register_credit_card_button );
    36     update_option( 'pay_advantage_wc_paid_status', $wc_paid_status );
    37     update_option( 'pay_advantage_wc_cancel_status', $wc_cancel_status );
     28        update_option( 'pay_advantage_credit_card_description', $description );
     29        update_option( 'pay_advantage_show_widget_to_users_not_logged_in', $anonymous_permission );
     30        update_option( 'pay_advantage_require_mobile', $require_mobile );
     31        update_option( 'pay_advantage_require_address', $require_address );
     32        update_option( 'pay_advantage_show_credit_card', $show_credit_card );
     33        update_option( 'pay_advantage_oncharge_credit_card_fees', $oncharge_credit_card_fees );
     34        update_option( 'pay_advantage_wc_oncharge_credit_card_fees', $wc_oncharge_credit_card_fees );
     35        update_option( 'pay_advantage_show_bpay', $show_bpay );
     36        update_option( 'pay_advantage_make_payment_button', $register_credit_card_button );
     37        update_option( 'pay_advantage_wc_paid_status', $wc_paid_status );
     38        update_option( 'pay_advantage_wc_cancel_status', $wc_cancel_status );
    3839
    39     pay_advantage_send_response( array() );
    40     wp_die();
     40        pay_advantage_send_response( array() );
     41        wp_die();
     42    } catch (Exception $e) {
     43        Pay_Advantage_Api_Error_Handler::log_error( $e->getMessage() . ' ' . $e->getTraceAsString() );
     44        pay_advantage_write_error_to_response( $e->getMessage() );
     45        wp_die();
     46    }
    4147}
    4248
     
    5460add_action( 'wp_ajax_pay_advantage_connect_action', 'pay_advantage_connect_handler' );
    5561function pay_advantage_connect_handler() {
    56     if ( ! is_admin() ) {
    57         pay_advantage_write_error_to_response( 'Not authorised.' );
    58         wp_die();
    59     }
     62    try {
     63        if ( ! is_admin() ) {
     64            pay_advantage_write_error_to_response( 'Not authorised.' );
     65            wp_die();
     66        }
    6067
    61     $env = sanitize_text_field( $_POST['payadvantageenv'] );
    62     update_option( 'pay_advantage_env', $env );
    63     update_option( 'pay_advantage_url', $env == "live" ? PAYADV_API_URL_LIVE : PAYADV_API_URL_SANDBOX );
     68        $env = sanitize_text_field( $_POST['payadvantageenv'] );
     69        update_option( 'pay_advantage_env', $env );
     70        update_option( 'pay_advantage_url', $env == "live" ? PAYADV_API_URL_LIVE : PAYADV_API_URL_SANDBOX );
    6471
    65     // Use a specific instance for the connection. This allows the user to manage various installations of the plugin.
    66     $instance_id = get_option( 'pay_advantage_instance_id' );
     72        // Use a specific instance for the connection. This allows the user to manage various installations of the plugin.
     73        $instance_id = get_option( 'pay_advantage_instance_id' );
    6774
    68     // create a nonce state and append. Pick up nonce and compare on registration callback.
    69     $nonce = wp_create_nonce( 'pay_advantage_connect_nonce' );
     75        // create a nonce state and append. Pick up nonce and compare on registration callback.
     76        $nonce = wp_create_nonce( 'pay_advantage_connect_nonce' );
    7077
    71     $client_id      = 'D69CB714EC1E4B9781C48D9B980FBD36';
    72     $code_verifier  = pay_advantage_create_code_code_verifier();
    73     $code_challenge = base64_encode( hash( 'sha256', $code_verifier, true ) );
    74     update_option( 'pay_advantage_app_client_id', $client_id );
    75     update_option( 'pay_advantage_app_code_verifier', $code_verifier );
     78        $client_id      = 'D69CB714EC1E4B9781C48D9B980FBD36';
     79        $code_verifier  = pay_advantage_create_code_code_verifier();
     80        $code_challenge = base64_encode( hash( 'sha256', $code_verifier, true ) );
     81        update_option( 'pay_advantage_app_client_id', $client_id );
     82        update_option( 'pay_advantage_app_code_verifier', $code_verifier );
    7683
    77     global $wp;
    78     $redirect_uri = get_site_url() . '/wp-admin/options-general.php?page=PayAdvantage';
     84        global $wp;
     85        $redirect_uri = get_site_url() . '/wp-admin/options-general.php?page=PayAdvantage';
    7986
    80     // redirect.
    81     pay_advantage_send_response( array(
    82         'RedirectTo' => (
    83             $env == "live" ? PAYADV_REGISTRATION_URL_LIVE : PAYADV_REGISTRATION_URL_SANDBOX ) .
    84             "?client_id=" . urlencode( $client_id ) .
    85             "&code_challenge=" . urlencode( $code_challenge ) .
    86             "&code_challenge_method=S256" .
    87             "&state=" . urlencode( $nonce ) .
    88             "&redirect_uri=" . urlencode( $redirect_uri ) .
    89             "&response_type=code" .
    90             "&response_mode=query" .
    91             "&instance_id=" . urlencode( $instance_id ) .
    92             "&instance_name=" . rawurlencode( get_bloginfo( 'name' ) )
    93     ) );
    94     wp_die();
     87        // redirect.
     88        pay_advantage_send_response( array(
     89            'RedirectTo' => (
     90                $env == "live" ? PAYADV_REGISTRATION_URL_LIVE : PAYADV_REGISTRATION_URL_SANDBOX ) .
     91                "?client_id=" . urlencode( $client_id ) .
     92                "&code_challenge=" . urlencode( $code_challenge ) .
     93                "&code_challenge_method=S256" .
     94                "&state=" . urlencode( $nonce ) .
     95                "&redirect_uri=" . urlencode( $redirect_uri ) .
     96                "&response_type=code" .
     97                "&response_mode=query" .
     98                "&instance_id=" . urlencode( $instance_id ) .
     99                "&instance_name=" . rawurlencode( get_bloginfo( 'name' ) )
     100        ) );
     101        wp_die();
     102    } catch (Exception $e) {
     103        Pay_Advantage_Api_Error_Handler::log_error( $e->getMessage() . ' ' . $e->getTraceAsString() );
     104        pay_advantage_write_error_to_response( $e->getMessage() );
     105        wp_die();
     106    }
    95107}
    96108
    97109add_action( 'wp_ajax_pay_advantage_disconnect_action', 'pay_advantage_disconnect_handler' );
    98110function pay_advantage_disconnect_handler() {
    99     if ( ! is_admin() ) {
    100         pay_advantage_write_error_to_response( 'Not authorised.' );
    101         wp_die();
    102     }
     111    try {
     112        if ( ! is_admin() ) {
     113            pay_advantage_write_error_to_response( 'Not authorised.' );
     114            wp_die();
     115        }
    103116
    104     pay_advantage_send_response( ( new Pay_Advantage_Api() )->delete_refresh_token() );
    105     wp_die();
     117        pay_advantage_send_response( ( new Pay_Advantage_Api() )->delete_refresh_token() );
     118        wp_die();
     119    } catch (Exception $e) {
     120        Pay_Advantage_Api_Error_Handler::log_error( $e->getMessage() . ' ' . $e->getTraceAsString() );
     121        pay_advantage_write_error_to_response( $e->getMessage() );
     122        wp_die();
     123    }
    106124}
    107125?>
  • pay-advantage/trunk/payadvantage.php

    r2745605 r2783062  
    2323 * Text Domain:       PayAdvantage
    2424 * Domain Path:       /languages
    25  * WC tested up to: 6.5.1
     25 * WC tested up to: 6.8.2
    2626 * WC requires at least: 3.7
    2727 */
     
    3030 * Current plugin version.
    3131 */
    32 define( 'PayAdvantagePluginVersion', '3.2.1' );
     32define( 'PayAdvantagePluginVersion', '3.2.2' );
    3333
    3434include( plugin_dir_path( __FILE__ ) . '/includes/payadvantage-files.php' );
  • pay-advantage/trunk/public/ajax-payadvantage-creditcard.php

    r2721266 r2783062  
    1212//Extracts the data from the widget api call and sends it to pay advantage.
    1313function pay_advantage_credit_card_handler() {
    14     $pay_advantage_api = new Pay_Advantage_Api();
     14    try {
     15        $pay_advantage_api = new Pay_Advantage_Api();
    1516
    16     check_ajax_referer( 'pay_advantage_nonce', 'security' );
     17        check_ajax_referer( 'pay_advantage_nonce', 'security' );
    1718
    18     if ( current_user_can( 'read' ) == 0 && get_option( 'pay_advantage_show_widget_to_users_not_logged_in' ) == "0" ) {
    19         pay_advantage_write_error_to_response( 'Please login to use this service.' );
     19        if ( current_user_can( 'read' ) == 0 && get_option( 'pay_advantage_show_widget_to_users_not_logged_in' ) == "0" ) {
     20            pay_advantage_write_error_to_response( 'Please login to use this service.' );
     21            wp_die();
     22        }
     23
     24        if ( ! get_option( 'pay_advantage_refresh_token' ) ) {
     25            pay_advantage_write_error_to_response( 'Not connected to Pay Advantage.' );
     26            wp_die();
     27        }
     28
     29        if ( ! get_option( 'pay_advantage_verified' ) ) {
     30            pay_advantage_write_error_to_response( 'Your business has not been verified. Please complete your pending verification(s).' );
     31            wp_die();
     32        }
     33
     34        $payment_amount            = sanitize_text_field( $_POST['paymentamount'] );
     35        $payment_description       = sanitize_text_field( $_POST['paymentdescription'] );
     36        $customer_code             = sanitize_text_field( $_POST['customercode'] );
     37        $oncharge_credit_card_fees = get_option( 'pay_advantage_oncharge_credit_card_fees' );
     38
     39        $validation_messages = array();
     40
     41        if ( empty( $payment_amount ) ) {
     42            array_push( $validation_messages, 'Amount is required.' );
     43        } else if ( $payment_amount < 1 || $payment_amount > 99999.00 ) {
     44            array_push( $validation_messages, 'Enter an amount between $1.00 and $99,999.00.' );
     45        }
     46
     47        if ( empty( $payment_description ) ) {
     48            array_push( $validation_messages, 'Description is required.' );
     49        }
     50
     51        if ( empty( $customer_code ) ) {
     52            array_push( $validation_messages, 'Customer is required.' );
     53        }
     54
     55        if ( count( $validation_messages ) > 0 ) {
     56            pay_advantage_write_error_to_response( $validation_messages );
     57            wp_die();
     58        }
     59
     60        $onchargedFees = 0;
     61        if ( $oncharge_credit_card_fees ) {
     62            $onchargedFeesResult = $pay_advantage_api->calculate_oncharge_fees( $payment_amount );
     63            if ( isset( $onchargedFeesResult['Status'] ) && $onchargedFeesResult['Status'] != 200 ) {
     64                pay_advantage_write_error_to_response( 'Failed to calculate the fees.' );
     65                wp_die();
     66            }
     67            $onchargedFees = round( $onchargedFeesResult['AttemptFee'] + $onchargedFeesResult['AttemptFeeGST'] + $onchargedFeesResult['MSF'] + $onchargedFeesResult['MSFGST'], 2 );
     68        }
     69
     70        $iframe_url_response = $pay_advantage_api->get_cc_iframe_url( $customer_code, $payment_amount, $payment_description, null, $onchargedFees );
     71        if ( isset( $iframe_url_response['Status'] ) && $iframe_url_response['Status'] != 200 ) {
     72            pay_advantage_write_error_to_response( 'Failed to prepare the payment.' );
     73            wp_die();
     74        }
     75
     76        pay_advantage_send_response( array(
     77            "IFrameUrl"            => $iframe_url_response['IFrameUrl'],
     78            "ExpectedOnchargedFee" => $onchargedFees
     79        ) );
     80        wp_die();
     81    } catch (Exception $e) {
     82        Pay_Advantage_Api_Error_Handler::log_error( $e->getMessage() . ' ' . $e->getTraceAsString() );
     83        pay_advantage_write_error_to_response( $e->getMessage() );
    2084        wp_die();
    2185    }
    22 
    23     if ( ! get_option( 'pay_advantage_refresh_token' ) ) {
    24         pay_advantage_write_error_to_response( 'Not connected to Pay Advantage.' );
    25         wp_die();
    26     }
    27 
    28     if ( ! get_option( 'pay_advantage_verified' ) ) {
    29         pay_advantage_write_error_to_response( 'Your business has not been verified. Please complete your pending verification(s).' );
    30         wp_die();
    31     }
    32 
    33     $payment_amount            = sanitize_text_field( $_POST['paymentamount'] );
    34     $payment_description       = sanitize_text_field( $_POST['paymentdescription'] );
    35     $customer_code             = sanitize_text_field( $_POST['customercode'] );
    36     $oncharge_credit_card_fees = get_option( 'pay_advantage_oncharge_credit_card_fees' );
    37 
    38     $validation_messages = array();
    39 
    40     if ( empty( $payment_amount ) ) {
    41         array_push( $validation_messages, 'Amount is required.' );
    42     } else if ( $payment_amount < 1 || $payment_amount > 99999.00 ) {
    43         array_push( $validation_messages, 'Enter an amount between $1.00 and $99,999.00.' );
    44     }
    45 
    46     if ( empty( $payment_description ) ) {
    47         array_push( $validation_messages, 'Description is required.' );
    48     }
    49 
    50     if ( empty( $customer_code ) ) {
    51         array_push( $validation_messages, 'Customer is required.' );
    52     }
    53 
    54     if ( count( $validation_messages ) > 0 ) {
    55         pay_advantage_write_error_to_response( $validation_messages );
    56         wp_die();
    57     }
    58 
    59     $onchargedFees = 0;
    60     if ($oncharge_credit_card_fees) {
    61         $onchargedFeesResult = $pay_advantage_api->calculate_oncharge_fees($payment_amount);
    62         if (isset($onchargedFeesResult['Status']) && $onchargedFeesResult['Status'] != 200) {
    63             pay_advantage_write_error_to_response('Failed to calculate the fees.');
    64             wp_die();
    65         }
    66         $onchargedFees = round( $onchargedFeesResult['AttemptFee'] + $onchargedFeesResult['AttemptFeeGST'] + $onchargedFeesResult['MSF'] + $onchargedFeesResult['MSFGST'], 2);
    67     }
    68 
    69     $iframe_url_response = $pay_advantage_api->get_cc_iframe_url( $customer_code, $payment_amount, $payment_description, null, $onchargedFees );
    70     if ( isset( $iframe_url_response['Status'] ) && $iframe_url_response['Status'] != 200 ) {
    71         pay_advantage_write_error_to_response( 'Failed to prepare the payment.' );
    72         wp_die();
    73     }
    74 
    75     pay_advantage_send_response( array(
    76         "IFrameUrl" => $iframe_url_response['IFrameUrl'],
    77         "ExpectedOnchargedFee" => $onchargedFees
    78     ) );
    79     wp_die();
    8086}
    8187
  • pay-advantage/trunk/public/ajax-payadvantage-customer.php

    r2721266 r2783062  
    1414 */
    1515function pay_advantage_create_customer_handler() {
    16     check_ajax_referer( 'pay_advantage_nonce', 'security' );
     16    try {
     17        check_ajax_referer( 'pay_advantage_nonce', 'security' );
    1718
    18     if ( ! get_option( 'pay_advantage_refresh_token' ) ) {
    19         pay_advantage_write_error_to_response( 'Not connected to Pay Advantage.' );
     19        if ( ! get_option( 'pay_advantage_refresh_token' ) ) {
     20            pay_advantage_write_error_to_response( 'Not connected to Pay Advantage.' );
     21            wp_die();
     22        }
     23
     24        if ( ! get_option( 'pay_advantage_verified' ) ) {
     25            pay_advantage_write_error_to_response( 'Your business has not been verified. Please complete your pending verification(s).' );
     26            wp_die();
     27        }
     28
     29        $validator         = new Pay_Advantage_Validator();
     30        $pay_advantage_api = new Pay_Advantage_Api();
     31
     32        $create_bpay = isset( $_POST['payadvantagecreatebpay'] ) ? $_POST['payadvantagecreatebpay'] === 'true' : 0;
     33
     34        $customer_data = Pay_Advantage_Data_Mapper::get_customer_data_from_post();
     35
     36        $validation_messages = $validator->validate_customer_register( $customer_data, $create_bpay );
     37
     38        if ( count( $validation_messages ) > 0 ) {
     39            pay_advantage_write_error_to_response( $validation_messages );
     40            wp_die();
     41        }
     42
     43        pay_advantage_send_response( $pay_advantage_api->create_customer( $customer_data, $create_bpay ) );
     44        wp_die();
     45    } catch (Exception $e) {
     46        Pay_Advantage_Api_Error_Handler::log_error( $e->getMessage() . ' ' . $e->getTraceAsString() );
     47        pay_advantage_write_error_to_response( $e->getMessage() );
    2048        wp_die();
    2149    }
    22 
    23     if ( ! get_option( 'pay_advantage_verified' ) ) {
    24         pay_advantage_write_error_to_response( 'Your business has not been verified. Please complete your pending verification(s).' );
    25         wp_die();
    26     }
    27 
    28     $validator         = new Pay_Advantage_Validator();
    29     $pay_advantage_api = new Pay_Advantage_Api();
    30 
    31     $create_bpay = isset( $_POST['payadvantagecreatebpay'] ) ? $_POST['payadvantagecreatebpay'] === 'true' : 0;
    32 
    33     $customer_data = Pay_Advantage_Data_Mapper::get_customer_data_from_post();
    34 
    35     $validation_messages = $validator->validate_customer_register( $customer_data, $create_bpay );
    36 
    37     if ( count( $validation_messages ) > 0 ) {
    38         pay_advantage_write_error_to_response( $validation_messages );
    39         wp_die();
    40     }
    41 
    42     pay_advantage_send_response( $pay_advantage_api->create_customer( $customer_data, $create_bpay ) );
    43     wp_die();
    4450}
    4551?>
  • pay-advantage/trunk/public/ajax-payadvantage-woocommerce.php

    r2708855 r2783062  
    1414
    1515function pay_advantage_mark_order_as_paid_handler() {
    16     check_ajax_referer( 'pay_advantage_paid_nonce', 'security' );
     16    try {
     17        check_ajax_referer( 'pay_advantage_paid_nonce', 'security' );
    1718
    18     $order_id = sanitize_text_field( $_POST['orderid'] );
    19     if ( empty( $order_id ) ) {
    20         pay_advantage_write_error_to_response( 'Invalid order id.' );
     19        $order_id = sanitize_text_field( $_POST['orderid'] );
     20        if ( empty( $order_id ) ) {
     21            pay_advantage_write_error_to_response( 'Invalid order id.' );
     22            wp_die();
     23        }
     24
     25        $payment_code = sanitize_text_field( $_POST['paymentcode'] );
     26        if ( empty( $payment_code ) ) {
     27            pay_advantage_write_error_to_response( 'Invalid payment code.' );
     28            wp_die();
     29        }
     30
     31        $order = new WC_Order( $order_id );
     32
     33        // The order id being completed needs to be verified against the payment to ensure the correct order is completed. If this is not the case then the merchant must investigate as it is possibly due to tampering.
     34        $pay_advantage_api = new Pay_Advantage_Api();
     35        $receipt           = $pay_advantage_api->get_payment( $payment_code );
     36        if ( ! isset( $receipt['ExternalID'] ) || $receipt['ExternalID'] != 'wc-' . $order_id ) {
     37            pay_advantage_write_error_to_response( 'Payment was not for this order.' );
     38            wp_die();
     39        }
     40
     41        $paid_status = get_option( 'pay_advantage_wc_paid_status' );
     42
     43        if ( $order->get_status() != 'pending' && $order->get_status() != 'failed' ) {
     44            pay_advantage_write_error_to_response( 'Failed to record the order as ' . $paid_status . '. Order does not have a status of pending or failed.' );
     45            wp_die();
     46        }
     47
     48        $order->update_status( apply_filters( 'woocommerce_pay_advantage_process_payment_order_status', $paid_status, $order ), __( 'Payment received.', 'woocommerce' ) );
     49        WC()->cart->empty_cart();
     50
     51        pay_advantage_send_response( array(
     52            'result'   => 'success',
     53            'redirect' => apply_filters( 'woocommerce_get_return_url', $order->get_checkout_order_received_url(), $order )
     54        ) );
     55        wp_die();
     56    } catch (Exception $e) {
     57        Pay_Advantage_Api_Error_Handler::log_error( $e->getMessage() . ' ' . $e->getTraceAsString() );
     58        pay_advantage_write_error_to_response( $e->getMessage() );
    2159        wp_die();
    2260    }
    23 
    24     $payment_code = sanitize_text_field( $_POST['paymentcode'] );
    25     if ( empty( $payment_code ) ) {
    26         pay_advantage_write_error_to_response( 'Invalid payment code.' );
    27         wp_die();
    28     }
    29 
    30     try {
    31         $order = new WC_Order($order_id);
    32     } catch ( Exception $e ) {
    33         pay_advantage_write_error_to_response( $e->getMessage() );
    34         wp_die();
    35     }
    36 
    37     // The order id being completed needs to be verified against the payment to ensure the correct order is completed. If this is not the case then the merchant must investigate as it is possibly due to tampering.
    38     $pay_advantage_api = new Pay_Advantage_Api();
    39     $receipt           = $pay_advantage_api->get_payment( $payment_code );
    40     if ( ! isset( $receipt['ExternalID'] ) || $receipt['ExternalID'] != 'wc-' . $order_id ) {
    41         pay_advantage_write_error_to_response( 'Payment was not for this order.' );
    42         wp_die();
    43     }
    44 
    45     $paid_status = get_option( 'pay_advantage_wc_paid_status' );
    46 
    47     if ( $order->get_status() != 'pending' && $order->get_status() != 'failed' ) {
    48         pay_advantage_write_error_to_response( 'Failed to record the order as ' . $paid_status . '. Order does not have a status of pending or failed.' );
    49         wp_die();
    50     }
    51 
    52     $order->update_status( apply_filters( 'woocommerce_pay_advantage_process_payment_order_status', $paid_status, $order ), __( 'Payment received.', 'woocommerce' ) );
    53     WC()->cart->empty_cart();
    54 
    55     pay_advantage_send_response( array(
    56         'result'   => 'success',
    57         'redirect' => apply_filters( 'woocommerce_get_return_url', $order->get_checkout_order_received_url(), $order )
    58     ) );
    59     wp_die();
    6061}
    6162
    6263function pay_advantage_mark_order_as_cancelled_handler() {
    63     check_ajax_referer( 'pay_advantage_paid_nonce', 'security' );
     64    try {
     65        check_ajax_referer( 'pay_advantage_paid_nonce', 'security' );
    6466
    65     $order_id = sanitize_text_field( $_POST['orderid'] );
    66     if ( empty( $order_id ) ) {
    67         pay_advantage_write_error_to_response( 'Invalid order id.' );
    68         wp_die();
    69     }
     67        $order_id = sanitize_text_field( $_POST['orderid'] );
     68        if ( empty( $order_id ) ) {
     69            pay_advantage_write_error_to_response( 'Invalid order id.' );
     70            wp_die();
     71        }
    7072
    71     try {
    72         $order = new WC_Order($order_id);
    73     } catch ( Exception $e ) {
    74         pay_advantage_write_error_to_response( $e->getMessage() );
    75         wp_die();
    76     }
     73        $order = new WC_Order( $order_id );
    7774
    78     $cancel_status = get_option( 'pay_advantage_wc_cancel_status' );
     75        $cancel_status = get_option( 'pay_advantage_wc_cancel_status' );
    7976
    80     if ( $order->get_status() != 'pending' && $order->get_status() != 'failed' ) {
    81         pay_advantage_write_error_to_response( 'Failed to record the order as ' . $cancel_status . '. Order does not have a status of pending or failed.' );
    82         wp_die();
    83     }
     77        if ( $order->get_status() != 'pending' && $order->get_status() != 'failed' ) {
     78            pay_advantage_write_error_to_response( 'Failed to record the order as ' . $cancel_status . '. Order does not have a status of pending or failed.' );
     79            wp_die();
     80        }
    8481
    85     $order->update_status( apply_filters( 'woocommerce_pay_advantage_process_payment_order_status', $cancel_status, $order ), __( 'Payment cancelled.', 'woocommerce' ) );
     82        $order->update_status( apply_filters( 'woocommerce_pay_advantage_process_payment_order_status', $cancel_status, $order ), __( 'Payment cancelled.', 'woocommerce' ) );
    8683
    87     pay_advantage_send_response( array(
    88         'result'   => 'success'
    89     ) );
    90     wp_die();
     84        pay_advantage_send_response( array(
     85            'result' => 'success'
     86        ) );
     87        wp_die();
     88    } catch (Exception $e) {
     89        Pay_Advantage_Api_Error_Handler::log_error( $e->getMessage() . ' ' . $e->getTraceAsString() );
     90        pay_advantage_write_error_to_response( $e->getMessage() );
     91        wp_die();
     92    }
    9193}
    9294
    9395function pay_advantage_mark_order_as_failed_handler() {
    94     check_ajax_referer( 'pay_advantage_paid_nonce', 'security' );
     96    try {
     97        check_ajax_referer( 'pay_advantage_paid_nonce', 'security' );
    9598
    96     $order_id = sanitize_text_field( $_POST['orderid'] );
    97     if ( empty( $order_id ) ) {
    98         pay_advantage_write_error_to_response( 'Invalid order id.' );
     99        $order_id = sanitize_text_field( $_POST['orderid'] );
     100        if ( empty( $order_id ) ) {
     101            pay_advantage_write_error_to_response( 'Invalid order id.' );
     102            wp_die();
     103        }
     104
     105        $order = new WC_Order($order_id);
     106
     107        if ( $order->get_status() != 'pending' && $order->get_status() != 'failed' ) {
     108            pay_advantage_write_error_to_response( 'Failed to record the order as failed. Order does not have a status of pending or failed.' );
     109            wp_die();
     110        }
     111
     112        $order->update_status( apply_filters( 'woocommerce_pay_advantage_process_payment_order_status', 'failed', $order ), __( 'Payment failed.', 'woocommerce' ) );
     113
     114        pay_advantage_send_response( array(
     115            'result'   => 'success'
     116        ) );
    99117        wp_die();
    100     }
    101 
    102     try {
    103         $order = new WC_Order($order_id);
    104     } catch ( Exception $e ) {
     118    } catch (Exception $e) {
     119        Pay_Advantage_Api_Error_Handler::log_error( $e->getMessage() . ' ' . $e->getTraceAsString() );
    105120        pay_advantage_write_error_to_response( $e->getMessage() );
    106121        wp_die();
    107122    }
    108 
    109     if ( $order->get_status() != 'pending' && $order->get_status() != 'failed' ) {
    110         pay_advantage_write_error_to_response( 'Failed to record the order as failed. Order does not have a status of pending or failed.' );
    111         wp_die();
    112     }
    113 
    114     $order->update_status( apply_filters( 'woocommerce_pay_advantage_process_payment_order_status', 'failed', $order ), __( 'Payment failed.', 'woocommerce' ) );
    115 
    116     pay_advantage_send_response( array(
    117         'result'   => 'success'
    118     ) );
    119     wp_die();
    120123}
    121124
  • pay-advantage/trunk/public/js/common.js

    r2708315 r2783062  
    9797                error: function (response) {
    9898                    console.log(response);
    99                     reject(response);
     99                    if (response.message) {
     100                        reject(response);
     101                    } else if (response.responseText) {
     102                        reject(new Error(response.responseText));
     103                    } else {
     104                        reject(new Error('An unexpected error occurred. Check the browsers console log for more information.'));
     105                    }
    100106                }
    101107            });
Note: See TracChangeset for help on using the changeset viewer.