1
|
|
|
<?php |
2
|
|
|
// Exit if accessed directly |
3
|
|
|
if ( ! defined( 'ABSPATH' ) ) exit; |
4
|
|
|
|
5
|
|
|
add_action( 'wpinv_bank_transfer_cc_form', '__return_false' ); |
6
|
|
|
|
7
|
|
View Code Duplication |
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 ) { |
48
|
|
|
if ( !empty( $invoice ) && $invoice->gateway == 'bank_transfer' && $invoice->status == 'wpi-pending' ) { |
49
|
|
|
$bank_info = wpinv_get_bank_info( true ); |
50
|
|
|
?> |
51
|
|
|
<div class="wpinv-bank-details"> |
52
|
|
|
<?php if ( $instructions = wpinv_get_bank_instructions() ) { ?> |
53
|
|
|
<div class="alert bg-info"><?php echo wpautop( wp_kses_post( $instructions ) ); ?></div> |
54
|
|
|
<?php } ?> |
55
|
|
|
<?php if ( !empty( $bank_info ) ) { ?> |
56
|
|
|
<h3 class="wpinv-bank-t"><?php echo apply_filters( 'wpinv_receipt_bank_details_title', __( 'Our Bank Details', 'invoicing' ) ); ?></h3> |
57
|
|
|
<table class="table table-bordered table-sm wpi-bank-details"> |
58
|
|
|
<?php foreach ( $bank_info as $key => $info ) { ?> |
59
|
|
|
<tr class="wpi-<?php echo sanitize_html_class( $key );?>"><th class="text-left"><?php echo $info['label'] ;?></th><td><?php echo $info['value'] ;?></td></tr> |
60
|
|
|
<?php } ?> |
61
|
|
|
</table> |
62
|
|
|
<?php } ?> |
63
|
|
|
</div> |
64
|
|
|
<?php |
65
|
|
|
} |
66
|
|
|
} |
67
|
|
|
add_action( 'wpinv_before_receipt_details', 'wpinv_show_bank_info', 10, 1 ); |
68
|
|
|
|
69
|
|
View Code Duplication |
function wpinv_invoice_print_bank_info( $invoice ) { |
|
|
|
|
70
|
|
|
if ( !empty( $invoice ) && $invoice->gateway == 'bank_transfer' && $invoice->status == 'wpi-pending' ) { |
71
|
|
|
?> |
72
|
|
|
<div class="row wpinv-bank-info"> |
73
|
|
|
<?php echo wpinv_show_bank_info( $invoice ); ?> |
74
|
|
|
</div> |
75
|
|
|
<?php |
76
|
|
|
} |
77
|
|
|
} |
78
|
|
|
add_action( 'wpinv_invoice_print_after_top_content', 'wpinv_invoice_print_bank_info', 10, 1 ); |
79
|
|
|
|
80
|
|
|
function wpinv_bank_transfer_send_notification( $invoice_ID, $payment_data = array() ) { |
81
|
|
|
if ( !empty( $payment_data['gateway'] ) && $payment_data['gateway'] == 'bank_transfer' ) { |
82
|
|
|
// Send invoice to user. |
83
|
|
|
wpinv_user_invoice_notification( $invoice_ID ); |
84
|
|
|
|
85
|
|
|
// Send invoice to admin. |
86
|
|
|
wpinv_new_invoice_notification( $invoice_ID ); |
87
|
|
|
} |
88
|
|
|
} |
89
|
|
|
add_action( 'wpinv_send_to_success_page', 'wpinv_bank_transfer_send_notification', 10, 2 ); |
90
|
|
|
|
91
|
|
View Code Duplication |
function wpinv_invoice_email_bank_info( $invoice, $email_type = '', $sent_to_admin = false ) { |
|
|
|
|
92
|
|
|
if ( !empty( $invoice ) && $invoice->gateway == 'bank_transfer' && $invoice->status == 'wpi-pending' ) { |
93
|
|
|
?> |
94
|
|
|
<div class="wpi-email-row"> |
95
|
|
|
<?php echo wpinv_show_bank_info( $invoice ); ?> |
96
|
|
|
</div> |
97
|
|
|
<?php |
98
|
|
|
} |
99
|
|
|
} |
100
|
|
|
add_action( 'wpinv_email_invoice_details', 'wpinv_invoice_email_bank_info', 9, 3 ); |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.