/** * add_update_card function. * * @return void */ public function add_update_card() { $permission = wp_verify_nonce($_POST['_wpnonce'], 'add_card_nonce'); if (false == $permission) { echo 'error'; } else { $gateway = new WC_Payeezy_Gateway(); $payeezy = new WC_Payeezy_API(); $response = $payeezy->verify($gateway); if (isset($response->transaction_status) && 'approved' == $response->transaction_status) { $current_cards = count($this->get_saved_cards()); $make_default = isset($_POST['payeezy-make-default']) || !$current_cards; if ($make_default) { $this->clear_default(); } $new_card = empty($_POST['payeezy-card-id']); if ($new_card) { $card = array('post_type' => 'payeezy_credit_card', 'post_title' => sprintf(__('Token %s – %s', 'woocommerce-payeezy'), $response->token->token_data->value, strftime(_x('%b %d, %Y @ %I:%M %p', 'Token date parsed by strftime', 'woocommerce-payeezy'))), 'post_content' => '', 'post_status' => 'publish', 'ping_status' => 'closed', 'post_author' => get_current_user_id(), 'post_password' => uniqid('card_'), 'post_category' => ''); $post_id = wp_insert_post($card); $card_meta = array('token' => $response->token->token_data->value, 'expiry' => $response->card->exp_date, 'cardtype' => $response->card->type, 'is_default' => $make_default ? 'yes' : 'no'); add_post_meta($post_id, '_payeezy_card', $card_meta); } else { $card_id = wc_clean($_POST['payeezy-card-id']); $card = get_post($card_id); $card_meta = get_post_meta($card->ID, '_payeezy_card', true); if ('yes' == $card_meta['is_default']) { $current_default = true; } else { $current_default = false; } $card->post_title = sprintf(__('Token %s – %s', 'woocommerce-payeezy'), $response->token->token_data->value, strftime(_x('%b %d, %Y @ %I:%M %p', 'Token date parsed by strftime', 'woocommerce-payeezy'))); wp_update_post($card); $new_card_meta = array('token' => $response->token->token_data->value, 'expiry' => $response->card->exp_date, 'cardtype' => $response->card->type, 'is_default' => $current_default || $make_default ? 'yes' : 'no'); update_post_meta($card_id, '_payeezy_card', $new_card_meta); } $cards = $this->get_saved_cards(); echo wc_get_template('credit-cards-table.php', array('cards' => $cards), 'woocommerce-payeezy/', WC_PAYEEZY_TEMPLATE_PATH); } else { echo 'error'; } } die; }
/** * Process a pre-order payment when the pre-order is released * * @param WC_Order $order * @return wp_error|void */ public function process_pre_order_release_payment($order) { $amount = $order->get_total(); $card = array('token' => get_post_meta($order->id, '_payeezy_token', true), 'expiry' => get_post_meta($order->id, '_payeezy_expiry', true), 'cardtype' => get_post_meta($order->id, '_payeezy_cardtype', true)); if (!$card) { return new WP_Error('payeezy_error', __('Customer not found', 'woocommerce-payeezy')); } $payeezy = new WC_Payeezy_API(); if ('authorize' == $this->transaction_type) { $response = $payeezy->authorize($this, $order, $amount, $card); } else { $response = $payeezy->purchase($this, $order, $amount, $card); } if (isset($response->transaction_status) && 'approved' == $response->transaction_status) { $order->payment_complete(); $amount_approved = number_format($response->amount / 100, '2', '.', ''); $message = 'authorize' == $this->transaction_type ? 'authorized' : 'completed'; $order->add_order_note(sprintf(__("Payeezy payment %s for %s. Transaction ID: %s.\n\n <strong>AVS Response:</strong> %s.\n\n <strong>CVV2 Response:</strong> %s.", 'woocommerce-payeezy'), $message, $amount_approved, $response->transaction_id, $this->get_avs_message($response->avs), $this->get_cvv_message($response->cvv2))); $tran_meta = array('transaction_id' => $response->transaction_id, 'transaction_tag' => $response->transaction_tag, 'transaction_type' => $this->transaction_type); add_post_meta($order_id, '_payeezy_transaction', $tran_meta); } else { $order->add_order_note(__('Payeezy payment declined', 'woocommerce-payeezy')); return new WP_Error('payeezy_payment_declined', __('Payment was declined - please try another card.', 'woocommerce-payeezy')); } }
/** * process_capture function. * * @access public * @param int $order_id * @return bool */ public function process_capture($order_id) { $order = wc_get_order($order_id); $tran_meta = get_post_meta($order_id, '_payeezy_transaction', true); $orig_tran_type = $tran_meta['transaction_type']; $amount = $order->get_total(); if ('authorize' == $orig_tran_type && 'yes' == $this->auto_capture) { $payeezy = new WC_Payeezy_API(); $response = $payeezy->capture($this, $order, $amount); if (isset($response->transaction_status) && 'approved' == $response->transaction_status) { $captured_amount = number_format($response->amount / 100, '2', '.', ''); $order->add_order_note(sprintf(__('Payeezy auto capture completed for %s. Capture ID: %s', 'woocommerce-payeezy'), $captured_amount, $response->transaction_id)); $tran_meta = array('transaction_id' => $response->transaction_id, 'transaction_tag' => $response->transaction_tag, 'transaction_type' => 'capture'); update_post_meta($order_id, '_payeezy_transaction', $tran_meta); return true; } else { $order->add_order_note(__('Payeezy auto capture failed. Log into your gateway to manually process the capture.', 'woocommerce-payeezy')); return true; } } }