Code Duplication    Length = 38-55 lines in 2 locations

includes/gateways/bank_transfer.php 1 location

@@ 7-44 (lines=38) @@
4
5
add_action( 'wpinv_bank_transfer_cc_form', '__return_false' );
6
7
function wpinv_process_bank_transfer_payment( $purchase_data ) {
8
    if( ! wp_verify_nonce( $purchase_data['gateway_nonce'], 'wpi-gateway' ) ) {
9
        wp_die( __( 'Nonce verification has failed', 'invoicing' ), __( 'Error', 'invoicing' ), array( 'response' => 403 ) );
10
    }
11
12
    // Collect payment data
13
    $payment_data = array(
14
        'price'         => $purchase_data['price'],
15
        'date'          => $purchase_data['date'],
16
        'user_email'    => $purchase_data['user_email'],
17
        'invoice_key'   => $purchase_data['invoice_key'],
18
        'currency'      => wpinv_get_currency(),
19
        'items'         => $purchase_data['items'],
20
        'user_info'     => $purchase_data['user_info'],
21
        'cart_details'  => $purchase_data['cart_details'],
22
        'gateway'       => 'bank_transfer',
23
        'status'        => 'wpi-pending'
24
    );
25
26
    // Record the pending payment
27
    $invoice = wpinv_get_invoice( $purchase_data['invoice_id'] );
28
    
29
    if ( !empty( $invoice ) ) {
30
        wpinv_set_payment_transaction_id( $invoice->ID, $invoice->generate_key() );
31
        wpinv_update_payment_status( $invoice, 'wpi-pending' );
32
        
33
        // Empty the shopping cart
34
        wpinv_empty_cart();
35
        
36
        do_action( 'wpinv_send_to_success_page', $invoice->ID, $payment_data );
37
        
38
        wpinv_send_to_success_page( array( 'invoice_key' => $invoice->get_key() ) );
39
    } else {
40
        wpinv_record_gateway_error( __( 'Payment Error', 'invoicing' ), sprintf( __( 'Payment creation failed while processing a bank transfer payment. Payment data: %s', 'invoicing' ), json_encode( $payment_data ) ), $invoice );
41
        // If errors are present, send the user back to the purchase page so they can be corrected
42
        wpinv_send_back_to_checkout( '?payment-mode=' . $purchase_data['post_data']['wpi-gateway'] );
43
    }
44
}
45
add_action( 'wpinv_gateway_bank_transfer', 'wpinv_process_bank_transfer_payment' );
46
47
function wpinv_show_bank_info( $invoice ) {

includes/gateways/manual.php 1 location

@@ 7-61 (lines=55) @@
4
5
add_action( 'wpinv_manual_cc_form', '__return_false' );
6
7
function wpinv_process_manual_payment( $purchase_data ) {
8
    if( ! wp_verify_nonce( $purchase_data['gateway_nonce'], 'wpi-gateway' ) ) {
9
        wp_die( __( 'Nonce verification has failed', 'invoicing' ), __( 'Error', 'invoicing' ), array( 'response' => 403 ) );
10
    }
11
12
    /*
13
    * Purchase data comes in like this
14
    *
15
    $purchase_data = array(
16
        'items' => array of item IDs,
17
        'price' => total price of cart contents,
18
        'invoice_key' =>  // Random key
19
        'user_email' => $user_email,
20
        'date' => date('Y-m-d H:i:s'),
21
        'user_id' => $user_id,
22
        'post_data' => $_POST,
23
        'user_info' => array of user's information and used discount code
24
        'cart_details' => array of cart details,
25
        'gateway' => payment gateway,
26
    );
27
    */
28
    
29
    // Collect payment data
30
    $payment_data = array(
31
        'price'         => $purchase_data['price'],
32
        'date'          => $purchase_data['date'],
33
        'user_email'    => $purchase_data['user_email'],
34
        'invoice_key'   => $purchase_data['invoice_key'],
35
        'currency'      => wpinv_get_currency(),
36
        'items'         => $purchase_data['items'],
37
        'user_info'     => $purchase_data['user_info'],
38
        'cart_details'  => $purchase_data['cart_details'],
39
        'gateway'       => 'manual',
40
        'status'        => 'wpi-pending'
41
    );
42
43
    // Record the pending payment
44
    $invoice = wpinv_get_invoice( $purchase_data['invoice_id'] );
45
    
46
    if ( !empty( $invoice ) ) {        
47
        wpinv_set_payment_transaction_id( $invoice->ID, $invoice->generate_key() );
48
        wpinv_update_payment_status( $invoice, 'publish' );
49
        
50
        // Empty the shopping cart
51
        wpinv_empty_cart();
52
        
53
        do_action( 'wpinv_send_to_success_page', $invoice->ID, $payment_data );
54
        
55
        wpinv_send_to_success_page( array( 'invoice_key' => $invoice->get_key() ) );
56
    } else {
57
        wpinv_record_gateway_error( __( 'Payment Error', 'invoicing' ), sprintf( __( 'Payment creation failed while processing a manual (free or test) purchase. Payment data: %s', 'invoicing' ), json_encode( $payment_data ) ), $invoice );
58
        // If errors are present, send the user back to the purchase page so they can be corrected
59
        wpinv_send_back_to_checkout( '?payment-mode=' . $purchase_data['post_data']['wpi-gateway'] );
60
    }
61
}
62
add_action( 'wpinv_gateway_manual', 'wpinv_process_manual_payment' );