|
1
|
|
|
<?php if ( !defined( 'ABSPATH' ) ) exit; |
|
2
|
|
|
|
|
3
|
|
|
/* Check if file is include. No direct access possible with file url */ |
|
4
|
|
|
if ( !defined( 'WPSHOP_VERSION' ) ) { |
|
5
|
|
|
die( __('Access is not allowed by this way', 'wpshop') ); |
|
6
|
|
|
} |
|
7
|
|
|
|
|
8
|
|
|
/** |
|
9
|
|
|
* Checkout |
|
10
|
|
|
* |
|
11
|
|
|
* The WPShop checkout class handles the checkout process, collecting user data and processing the payment. |
|
12
|
|
|
* |
|
13
|
|
|
* @class wpwhop_checkout |
|
14
|
|
|
* @package WPShop |
|
15
|
|
|
* @category Class |
|
16
|
|
|
* @author Eoxia |
|
17
|
|
|
*/ |
|
18
|
|
|
|
|
19
|
|
|
|
|
20
|
|
|
class wpshop_checkout { |
|
21
|
|
|
|
|
22
|
|
|
var $div_register, $div_infos_register, $div_login, $div_infos_login = 'display:block;'; |
|
23
|
|
|
var $creating_account = true; |
|
24
|
|
|
|
|
25
|
|
|
/** Constructor of the class |
|
26
|
|
|
* @return void |
|
|
|
|
|
|
27
|
|
|
*/ |
|
28
|
|
|
function __construct () { |
|
|
|
|
|
|
29
|
|
|
} |
|
30
|
|
|
|
|
31
|
|
|
|
|
32
|
|
|
public static function process_checkout($paymentMethod='paypal', $order_id = 0, $customer_id = 0, $customer_billing_address_id = 0, $customer_shipping_address_id = 0) { |
|
33
|
|
|
|
|
34
|
|
|
global $wpdb, $wpshop, $wpshop_cart; |
|
35
|
|
|
$wps_message = new wps_message_ctr(); |
|
36
|
|
|
$shipping_address_option = get_option('wpshop_shipping_address_choice'); |
|
37
|
|
|
|
|
38
|
|
|
if (is_user_logged_in()) : |
|
39
|
|
|
$user_id = get_current_user_id(); |
|
40
|
|
|
|
|
41
|
|
|
if ( $customer_id != 0 ) { |
|
42
|
|
|
$user_id = $customer_id; |
|
43
|
|
|
} |
|
44
|
|
|
|
|
45
|
|
|
// If the order is already created in the db |
|
46
|
|
|
if(!empty($order_id) && is_numeric($order_id)) { |
|
47
|
|
|
$order = get_post_meta($order_id, '_order_postmeta', true); |
|
48
|
|
|
|
|
49
|
|
|
if(!empty($order)) { |
|
50
|
|
|
if($order['customer_id'] == $user_id) { |
|
51
|
|
|
$order['payment_method'] = $paymentMethod; |
|
52
|
|
|
$_SESSION['order_id'] = (int) $order_id; |
|
53
|
|
|
// Store cart in session |
|
54
|
|
|
//wpshop_cart::store_cart_in_session($order); |
|
|
|
|
|
|
55
|
|
|
// Add a payment |
|
56
|
|
|
$order['order_payment']['received'][] = array( 'method' => $paymentMethod, 'waited_amount' => $order['order_amount_to_pay_now'], 'status' => 'waiting_payment', 'author' => get_current_user_id() ); |
|
57
|
|
|
|
|
58
|
|
|
// On enregistre la commande |
|
59
|
|
|
update_post_meta($order_id, '_order_postmeta', $order); |
|
60
|
|
|
update_post_meta($order_id, '_wpshop_order_customer_id', $user_id); |
|
61
|
|
|
} |
|
62
|
|
|
else $wpshop->add_error(__('You don\'t own the order', 'wpshop')); |
|
63
|
|
|
} |
|
64
|
|
|
else $wpshop->add_error(__('The order doesn\'t exist.', 'wpshop')); |
|
65
|
|
|
} |
|
66
|
|
|
else{ |
|
67
|
|
|
$order_data = array( |
|
68
|
|
|
'post_type' => WPSHOP_NEWTYPE_IDENTIFIER_ORDER, |
|
69
|
|
|
'post_title' => sprintf(__('Order - %s','wpshop'), mysql2date('d M Y\, H:i:s', current_time('mysql', 0), true)), |
|
70
|
|
|
'post_status' => 'publish', |
|
71
|
|
|
'post_excerpt' => !empty($_POST['wps-customer-comment']) ? sanitize_text_field( $_POST['wps-customer-comment'] ) : '', |
|
72
|
|
|
'post_author' => $user_id, |
|
73
|
|
|
'comment_status' => 'closed' |
|
74
|
|
|
); |
|
75
|
|
|
|
|
76
|
|
|
// Cart items |
|
77
|
|
|
$order_items = array(); |
|
|
|
|
|
|
78
|
|
|
$order_tva = array(); |
|
|
|
|
|
|
79
|
|
|
|
|
80
|
|
|
//$cart = (array)$wpshop_cart->cart; |
|
|
|
|
|
|
81
|
|
|
if ( !empty($_SESSION['cart']) && !empty( $_SESSION['cart']['shipping_method']) ) { |
|
82
|
|
|
$_SESSION['cart']['shipping_method'] = __('Standard shipping method', 'wpshop'); |
|
83
|
|
|
} |
|
84
|
|
|
$cart = (array)$_SESSION['cart']; |
|
85
|
|
|
|
|
86
|
|
|
$download_codes = array(); |
|
87
|
|
|
|
|
88
|
|
|
// Nouvelle commande |
|
89
|
|
|
$order_id = wp_insert_post($order_data); |
|
90
|
|
|
$_SESSION['order_id'] = $order_id; |
|
91
|
|
|
|
|
92
|
|
|
// Cr�ation des codes de t�l�chargement si il y a des produits t�l�chargeable dans le panier |
|
93
|
|
|
if ( !empty( $cart['order_items'] ) ) { |
|
94
|
|
|
foreach($cart['order_items'] as $c) { |
|
95
|
|
|
$product_id = $c['item_id']; |
|
96
|
|
|
$product = null; |
|
97
|
|
View Code Duplication |
if( isset( $c['item_meta']['variations'] ) ) { |
|
|
|
|
|
|
98
|
|
|
foreach ( $c['item_meta']['variations'] as $variation_id => $variation ) { |
|
99
|
|
|
if( isset( $variation['item_meta']['is_downloadable_'] ) ) { |
|
100
|
|
|
$product_id = $c['item_id'] . '__' . $variation_id; |
|
101
|
|
|
$product = wpshop_products::get_product_data( $product_id ); |
|
102
|
|
|
} |
|
103
|
|
|
} |
|
104
|
|
|
} |
|
105
|
|
|
if( !isset( $product ) ) { |
|
106
|
|
|
$product = wpshop_products::get_product_data( $c['item_id'] ); |
|
107
|
|
|
$product_id = $c['item_id']; |
|
108
|
|
|
/** Check if it's a variation and check the parent product **/ |
|
109
|
|
|
if ( get_post_type( $c['item_id'] ) == WPSHOP_NEWTYPE_IDENTIFIER_PRODUCT_VARIATION ) { |
|
110
|
|
|
$parent_def = wpshop_products::get_parent_variation( $c['item_id'] ); |
|
111
|
|
|
if ( !empty($parent_def) && !empty($parent_def['parent_post_meta']) && !empty($parent_def['parent_post_meta']['is_downloadable_']) ) { |
|
112
|
|
|
$product['is_downloadable_'] = $parent_def['parent_post_meta']['is_downloadable_']; |
|
113
|
|
|
} |
|
114
|
|
|
} |
|
115
|
|
|
} |
|
116
|
|
|
if(!empty($product['is_downloadable_'])) { |
|
117
|
|
|
$download_codes[$product_id] = array('item_id' => $product_id, 'download_code' => uniqid('', true)); |
|
118
|
|
|
} |
|
119
|
|
|
} |
|
120
|
|
|
} |
|
121
|
|
|
if(!empty($download_codes)) update_user_meta($user_id, '_order_download_codes_'.$order_id, $download_codes); |
|
122
|
|
|
|
|
123
|
|
|
// Informations de commande � stocker |
|
124
|
|
|
$currency = wpshop_tools::wpshop_get_currency(true); |
|
125
|
|
|
$order = array_merge(array( |
|
126
|
|
|
'order_key' => NULL, |
|
127
|
|
|
'customer_id' => $user_id, |
|
128
|
|
|
'order_status' => 'awaiting_payment', |
|
129
|
|
|
'order_date' => current_time('mysql', 0), |
|
130
|
|
|
'order_shipping_date' => null, |
|
131
|
|
|
'order_invoice_ref' => '', |
|
132
|
|
|
'order_currency' => $currency, |
|
133
|
|
|
'order_payment' => array( |
|
134
|
|
|
'customer_choice' => array('method' => $paymentMethod), |
|
135
|
|
|
'received' => array('0' => array('method' => $paymentMethod, 'waited_amount' => $cart['order_amount_to_pay_now'], 'status' => 'waiting_payment', 'author' => $user_id)), |
|
136
|
|
|
'shipping_method' => ( ( !empty( $_SESSION['shipping_method']) ) ? wpshop_tools::varSanitizer( $_SESSION['shipping_method']) : __('Standard shipping method', 'wpshop') ) |
|
137
|
|
|
), |
|
138
|
|
|
), $cart); |
|
139
|
|
|
|
|
140
|
|
|
// Si c'est un devis |
|
141
|
|
|
if ( $paymentMethod == 'quotation' ) { |
|
142
|
|
|
$order['order_temporary_key'] = wpshop_orders::get_new_pre_order_reference(); |
|
143
|
|
|
} |
|
144
|
|
|
else { |
|
145
|
|
|
$order['order_key'] = wpshop_orders::get_new_order_reference(); |
|
146
|
|
|
} |
|
147
|
|
|
|
|
148
|
|
|
//Round final amount |
|
149
|
|
|
$order['order_grand_total'] = number_format( round($order['order_grand_total'], 2), 2, '.', ''); |
|
150
|
|
|
$order['order_total_ttc'] = number_format( round($order['order_total_ttc'], 2), 2, '.', ''); |
|
151
|
|
|
$order['order_amount_to_pay_now'] = number_format( round($order['order_amount_to_pay_now'], 2), 2, '.', ''); |
|
152
|
|
|
|
|
153
|
|
|
/** On enregistre la commande */ |
|
154
|
|
|
update_post_meta($order_id, '_order_postmeta', $order); |
|
155
|
|
|
update_post_meta($order_id, '_wpshop_order_customer_id', $order['customer_id']); |
|
156
|
|
|
update_post_meta($order_id, '_wpshop_order_shipping_date', $order['order_shipping_date']); |
|
157
|
|
|
update_post_meta($order_id, '_wpshop_order_status', $order['order_status']); |
|
158
|
|
|
|
|
159
|
|
|
|
|
160
|
|
|
do_action( 'wps_order_extra_save', $order_id ); |
|
161
|
|
|
|
|
162
|
|
|
//Add an action to extra actions on order save |
|
163
|
|
|
// @TODO : REQUEST |
|
164
|
|
|
$args = array( 'order_id' => $order_id, 'posted_data' => $_REQUEST ); |
|
165
|
|
|
wpshop_tools::create_custom_hook( 'wps_order_extra_save_action', $args ); |
|
166
|
|
|
|
|
167
|
|
|
/** Set custmer information for the order */ |
|
168
|
|
|
$shipping_address = ( !empty($shipping_address_option) && !empty($shipping_address_option['activate']) ) ? ( ( !empty($_SESSION['shipping_address']) ) ? wpshop_tools::varSanitizer($_SESSION['shipping_address']) : $customer_shipping_address_id ) : ''; |
|
169
|
|
|
$billing_address = ( !empty($_SESSION['billing_address']) ) ? wpshop_tools::varSanitizer($_SESSION['billing_address']) : $customer_billing_address_id; |
|
170
|
|
|
|
|
171
|
|
|
|
|
172
|
|
|
if ( !empty( $billing_address) ) { |
|
173
|
|
|
wpshop_orders::set_order_customer_addresses($user_id, $order_id, $shipping_address, $billing_address); |
|
174
|
|
|
} |
|
175
|
|
|
|
|
176
|
|
|
if ( !empty($_SESSION['shipping_address_to_save']) ) { |
|
177
|
|
|
$order_infos_postmeta = get_post_meta($order_id, '_order_info', true); |
|
178
|
|
|
$order_infos_postmeta['shipping']['address'] = $_SESSION['shipping_address_to_save']; |
|
179
|
|
|
$order_infos_postmeta['shipping']['address_id'] = ''; |
|
180
|
|
|
update_post_meta($order_id, '_order_info', $order_infos_postmeta); |
|
181
|
|
|
unset( $_SESSION['shipping_address_to_save'] ); |
|
182
|
|
|
} |
|
183
|
|
|
|
|
184
|
|
|
|
|
185
|
|
|
/** Save Coupon use **/ |
|
186
|
|
|
if ( !empty($_SESSION['cart']['coupon_id']) ) { |
|
187
|
|
|
$wps_coupon_mdl = new wps_coupon_model(); |
|
188
|
|
|
$wps_coupon_mdl->save_coupon_use( $_SESSION['cart']['coupon_id'] ); |
|
189
|
|
|
} |
|
190
|
|
|
|
|
191
|
|
|
/** Notify the customer as the case */ |
|
192
|
|
|
$user_info = get_userdata($user_id); |
|
193
|
|
|
$email = $user_info->user_email; |
|
194
|
|
|
$first_name = $user_info->user_firstname ; |
|
195
|
|
|
$last_name = $user_info->user_lastname; |
|
196
|
|
|
|
|
197
|
|
|
// Envoie du message de confirmation de commande au client |
|
198
|
|
|
$order_meta = get_post_meta( $order_id, '_order_postmeta', true); |
|
199
|
|
|
|
|
200
|
|
|
$shipping_mode_option = get_option( 'wps_shipping_mode' ); |
|
201
|
|
|
$shipping_method = ( !empty($order_meta['order_payment']['shipping_method']) && !empty($shipping_mode_option) && !empty($shipping_mode_option['modes']) && is_array($shipping_mode_option['modes']) && array_key_exists($order_meta['order_payment']['shipping_method'], $shipping_mode_option['modes'])) ? $shipping_mode_option['modes'][$order_meta['order_payment']['shipping_method']]['name'] : ( (!empty($order_meta['order_payment']['shipping_method']) ) ? $order_meta['order_payment']['shipping_method'] : '' ); |
|
202
|
|
|
|
|
203
|
|
|
if ( !empty($order_meta) && !empty($order_meta['cart_type']) && $order_meta['cart_type'] == 'quotation' && empty($order_meta['order_key']) ) { |
|
204
|
|
|
$wps_message->wpshop_prepared_email($email, 'WPSHOP_QUOTATION_CONFIRMATION_MESSAGE', array('order_id' => $order_id,'customer_first_name' => $first_name, 'customer_last_name' => $last_name, 'customer_email' => $email, 'order_date' => current_time('mysql', 0), 'order_content' => '', 'order_addresses' => '', 'order_customer_comments' => '', 'order_billing_address' => '', 'order_shipping_address' => '', 'order_shipping_method' => $shipping_method, 'order_personnal_informations' => '') ); |
|
205
|
|
|
} |
|
206
|
|
|
else { |
|
207
|
|
|
$email_option = get_option( 'wpshop_emails' ); |
|
208
|
|
|
if ( empty($email_option['send_confirmation_order_message']) ) { |
|
209
|
|
|
$payment_method_option = get_option( 'wps_payment_mode' ); |
|
210
|
|
|
$order_payment_method = ( !empty($payment_method_option) && !empty($payment_method_option['mode']) && !empty($order_meta['order_payment']['customer_choice']['method']) && !empty($payment_method_option['mode'][$order_meta['order_payment']['customer_choice']['method']]) ) ? $payment_method_option['mode'][$order_meta['order_payment']['customer_choice']['method']]['name'] : $order_meta['order_payment']['customer_choice']['method']; |
|
211
|
|
|
|
|
212
|
|
|
$wps_message->wpshop_prepared_email($email, 'WPSHOP_ORDER_CONFIRMATION_MESSAGE', array('order_id' => $order_id,'customer_first_name' => $first_name, 'customer_last_name' => $last_name, 'customer_email' => $email, 'order_key' => ( ( !empty($order_meta['order_key']) ) ? $order_meta['order_key'] : ''),'order_date' => current_time('mysql', 0), 'order_payment_method' => $order_payment_method, 'order_content' => '', 'order_addresses' => '', 'order_customer_comments' => '', 'order_billing_address' => '', 'order_shipping_address' => '', 'order_shipping_method' => $shipping_method, 'order_personnal_informations' => '' ) ); |
|
213
|
|
|
} |
|
214
|
|
|
} |
|
215
|
|
|
|
|
216
|
|
View Code Duplication |
if ( empty($_SESSION['wps-pos-addon']) ) { |
|
|
|
|
|
|
217
|
|
|
$email_option = get_option('wpshop_emails'); |
|
218
|
|
|
if( empty($email_option) || ( !empty($email_option) && empty($email_option['send_confirmation_order_message']) ) ){ |
|
219
|
|
|
self::send_order_email_to_administrator( $order_id, $user_info ); |
|
220
|
|
|
} |
|
221
|
|
|
} |
|
222
|
|
|
|
|
223
|
|
|
|
|
224
|
|
|
/** IF Order amount is 0, Finish the Order **/ |
|
225
|
|
|
if ( $cart['order_amount_to_pay_now'] == 0 ) { |
|
226
|
|
|
$order_meta = get_post_meta($order_id, '_order_postmeta', true); |
|
227
|
|
|
$payment_status = 'completed'; |
|
228
|
|
|
$params_array = array ( |
|
229
|
|
|
'method' =>'free', |
|
230
|
|
|
'waited_amount' => $order_meta['order_amount_to_pay_now'], |
|
231
|
|
|
'status' => 'payment_received', |
|
232
|
|
|
'author' => $order_meta['customer_id'], |
|
233
|
|
|
'payment_reference' => 'FREE_ORDER', |
|
234
|
|
|
'date' => current_time('mysql', 0), |
|
235
|
|
|
'received_amount' => $order_meta['order_amount_to_pay_now'] |
|
236
|
|
|
); |
|
237
|
|
|
wpshop_payment::check_order_payment_total_amount($order_id, $params_array, $payment_status); |
|
238
|
|
|
} |
|
239
|
|
|
apply_filters( 'wpshop_finish_order_extra_actions', $order_id); |
|
240
|
|
|
} |
|
241
|
|
|
endif; |
|
242
|
|
|
return $order_id; |
|
243
|
|
|
} |
|
244
|
|
|
|
|
245
|
|
|
public static function send_order_email_to_administrator ( $order_id, $customer_infos = '' ) { |
|
246
|
|
|
if ( !empty($order_id) ) { |
|
247
|
|
|
$wps_message = new wps_message_ctr(); |
|
248
|
|
|
$order_infos = get_post_meta($order_id, '_order_postmeta', true); |
|
249
|
|
|
//Send email to administrator(s) |
|
250
|
|
|
$shop_admin_email_option = get_option('wpshop_emails'); |
|
251
|
|
|
$shop_admin_email = $shop_admin_email_option['contact_email']; |
|
252
|
|
|
$order_tmp_key = ''; |
|
253
|
|
|
|
|
254
|
|
|
$shipping_mode_option = get_option( 'wps_shipping_mode' ); |
|
255
|
|
|
$shipping_method = ( !empty($order_infos['order_payment']['shipping_method']) && !empty($shipping_mode_option) && !empty($shipping_mode_option['modes']) && is_array($shipping_mode_option['modes']) && array_key_exists($order_infos['order_payment']['shipping_method'], $shipping_mode_option['modes'])) ? $shipping_mode_option['modes'][$order_infos['order_payment']['shipping_method']]['name'] : ( (!empty($order_infos['order_payment']['shipping_method']) ) ? $order_infos['order_payment']['shipping_method'] : '' ); |
|
256
|
|
|
|
|
257
|
|
|
|
|
258
|
|
|
if( !empty( $order_infos ) && !empty($order_infos['cart_type']) && $order_infos['cart_type'] == 'normal' && !empty($order_infos['order_key']) ){ |
|
259
|
|
|
$message_type = 'WPSHOP_NEW_ORDER_ADMIN_MESSAGE'; |
|
260
|
|
|
} |
|
261
|
|
|
else { |
|
262
|
|
|
$message_type = 'WPSHOP_NEW_QUOTATION_ADMIN_MESSAGE'; |
|
263
|
|
|
$order_tmp_key = $order_infos['order_temporary_key']; |
|
264
|
|
|
} |
|
265
|
|
|
|
|
266
|
|
|
$payment_method_option = get_option( 'wps_payment_mode' ); |
|
267
|
|
|
$order_payment_method = ( !empty($payment_method_option) && !empty($payment_method_option['mode']) && !empty($order_infos['order_payment']['customer_choice']['method']) && !empty($payment_method_option['mode'][$order_infos['order_payment']['customer_choice']['method']]) ) ? $payment_method_option['mode'][$order_infos['order_payment']['customer_choice']['method']]['name'] : $order_infos['order_payment']['customer_choice']['method']; |
|
268
|
|
|
|
|
269
|
|
|
$data_to_send = array('order_id' => $order_id, 'order_key' => $order_infos['order_key'], 'customer_email' => ( !empty($customer_infos) && !empty($customer_infos->user_email) ) ? $customer_infos->user_email : '' , 'customer_last_name' => ( !empty($customer_infos) && !empty($customer_infos->user_lastname) ) ? $customer_infos->user_lastname : '', 'customer_first_name' => ( !empty($customer_infos) && !empty($customer_infos->user_firstname) ) ? $customer_infos->user_firstname : '', 'order_date' => $order_infos['order_date'], 'order_payment_method' => $order_payment_method, 'order_temporary_key' => $order_tmp_key, 'order_content' => '', 'order_addresses' => '', 'order_customer_comments' => '', 'order_billing_address' => '', 'order_shipping_address' => '','order_shipping_method' => $shipping_method, 'order_personnal_informations' => '' ); |
|
270
|
|
|
|
|
271
|
|
|
$wps_message->wpshop_prepared_email( $shop_admin_email, $message_type, $data_to_send, array('object_type' => 'order', 'object_id' => $order_id)); |
|
272
|
|
|
} |
|
273
|
|
|
} |
|
274
|
|
|
|
|
275
|
|
|
/** |
|
276
|
|
|
* Check token connect user and move to step 5. |
|
277
|
|
|
* |
|
278
|
|
|
* @method wps_direct_payment_link |
|
279
|
|
|
* @param mixed $data Array or false. |
|
280
|
|
|
* @return void |
|
281
|
|
|
*/ |
|
282
|
|
|
public static function wps_direct_payment_link( $data = false ) { |
|
283
|
|
|
$data = empty( $data ) ? self::wps_direct_payment_link_verify_token() : $data; |
|
284
|
|
|
if ( (bool) $data ) { |
|
285
|
|
|
wps_orders_ctr::pay_quotation( $data['oid'] ); |
|
286
|
|
|
wpshop_tools::wpshop_safe_redirect( get_permalink( wpshop_tools::get_page_id( get_option( 'wpshop_checkout_page_id' ) ) ) . '?order_step=5' ); |
|
287
|
|
|
} else { |
|
288
|
|
|
wpshop_tools::wpshop_safe_redirect( get_permalink( wpshop_tools::get_page_id( get_option( 'wpshop_myaccount_page_id' ) ) ) ); |
|
289
|
|
|
} |
|
290
|
|
|
} |
|
291
|
|
|
/** |
|
292
|
|
|
* Use wps_direct_payment_link and force connect. |
|
293
|
|
|
* |
|
294
|
|
|
* @method wps_direct_payment_link_nopriv |
|
295
|
|
|
* @param mixed $data Array or false. |
|
296
|
|
|
* @return void |
|
297
|
|
|
*/ |
|
298
|
|
|
public static function wps_direct_payment_link_nopriv( $data = false ) { |
|
299
|
|
|
$data = empty( $data ) ? self::wps_direct_payment_link_verify_token() : $data; |
|
300
|
|
|
if ( (bool) $data ) { |
|
301
|
|
|
wp_set_auth_cookie( $data['cid'], true, is_ssl() ); |
|
302
|
|
|
} |
|
303
|
|
|
self::wps_direct_payment_link( $data ); |
|
304
|
|
|
} |
|
305
|
|
|
/** |
|
306
|
|
|
* Verify token in request. |
|
307
|
|
|
* |
|
308
|
|
|
* @method wps_direct_payment_link_verify_token |
|
309
|
|
|
* @return mixed Customer id or false. |
|
310
|
|
|
*/ |
|
311
|
|
|
public static function wps_direct_payment_link_verify_token() { |
|
312
|
|
|
$token = ! empty( $_GET['token'] ) ? sanitize_text_field( $_GET['token'] ) : ''; |
|
313
|
|
|
$order_id = ! empty( $_GET['order_id'] ) ? (int) $_GET['order_id'] : ''; |
|
314
|
|
|
$order_metadata = get_post_meta( $order_id, '_order_postmeta', true ); |
|
315
|
|
|
$customer_id = ! empty( $order_metadata['customer_id'] ) ? (int) $order_metadata['customer_id'] : false; |
|
316
|
|
|
return ( (bool) $customer_id && wps_orders_ctr::wps_token_order_customer( $order_id ) === $token ) ? array( 'oid' => $order_id, 'cid' => $customer_id ) : false; |
|
317
|
|
|
} |
|
318
|
|
|
/** |
|
319
|
|
|
* Get URL for wps_direct_link. |
|
320
|
|
|
* |
|
321
|
|
|
* @method wps_direct_payment_link_url |
|
322
|
|
|
* @param int $order_id OrderID. |
|
323
|
|
|
* @return string Url or empty string. |
|
324
|
|
|
*/ |
|
325
|
|
|
public static function wps_direct_payment_link_url( $order_id ) { |
|
326
|
|
|
return ( (bool) ( $token = wps_orders_ctr::wps_token_order_customer( (int) $order_id ) ) ) ? admin_url( 'admin-post.php?action=wps_direct_payment_link&token=' . $token . '&order_id=' . (int) $order_id ) : ''; |
|
327
|
|
|
} |
|
328
|
|
|
} |
|
329
|
|
|
|
Adding a
@returnannotation to a constructor is not recommended, since a constructor does not have a meaningful return value.Please refer to the PHP core documentation on constructors.