/** * Set it up */ public function setUp() { parent::setUp(); //Create a Donation Form $this->_post_id = $this->factory->post->create(array('post_title' => 'Test Form', 'post_type' => 'give_forms', 'post_status' => 'publish')); $_multi_level_donations = array(array('_give_id' => array('level_id' => '1'), '_give_amount' => '10.00', '_give_text' => 'Basic Level'), array('_give_id' => array('level_id' => '2'), '_give_amount' => '20.00', '_give_text' => 'Intermediate Level'), array('_give_id' => array('level_id' => '3'), '_give_amount' => '40.00', '_give_text' => 'Advanced Level')); $meta = array('give_price' => '0.00', '_give_price_option' => 'multi', '_give_price_options_mode' => 'on', '_give_donation_levels' => array_values($_multi_level_donations), 'give_product_notes' => 'Donation Notes', '_give_product_type' => 'default'); foreach ($meta as $key => $value) { update_post_meta($this->_post_id, $key, $value); } //Generate Donations $this->_user_id = $this->factory->user->create(array('role' => 'administrator')); $user = get_userdata($this->_user_id); $user_info = array('id' => $user->ID, 'email' => '*****@*****.**', 'first_name' => $user->first_name, 'last_name' => $user->last_name); $donation_details = array(array('id' => $this->_post_id, 'options' => array('price_id' => 1))); $total = 0; $prices = get_post_meta($donation_details[0]['id'], '_give_donation_levels', true); $item_price = $prices[1]['_give_amount']; $total += $item_price; $purchase_data = array('price' => number_format((double) $total, 2), 'give_form_title' => get_the_title($this->_post_id), 'give_form_id' => $this->_post_id, 'date' => date('Y-m-d H:i:s', strtotime('-1 day')), 'purchase_key' => strtolower(md5(uniqid())), 'user_email' => $user_info['email'], 'user_info' => $user_info, 'currency' => 'USD', 'status' => 'pending', 'gateway' => 'manual'); $_SERVER['REMOTE_ADDR'] = '10.0.0.0'; $_SERVER['SERVER_NAME'] = 'give_virtual'; $payment_id = give_insert_payment($purchase_data); give_update_payment_status($payment_id, 'complete'); }
/** * Set it Up */ public function setUp() { parent::setUp(); $this->_payment_id = Give_Helper_Payment::create_simple_payment(); //$20 $this->_payment_id2 = Give_Helper_Payment::create_multilevel_payment(); //$25 give_update_payment_status($this->_payment_id); give_update_payment_status($this->_payment_id2); }
/** * Processes the purchase data and uses the Manual Payment gateway to record * the transaction in the Purchase History * * @since 1.0 * * @param array $purchase_data Purchase Data * * @return void */ function give_manual_payment($purchase_data) { if (!wp_verify_nonce($purchase_data['gateway_nonce'], 'give-gateway')) { wp_die(esc_html__('Nonce verification has failed', 'give'), esc_html__('Error', 'give'), array('response' => 403)); } //Create payment_data array $payment_data = array('price' => $purchase_data['price'], 'give_form_title' => $purchase_data['post_data']['give-form-title'], 'give_form_id' => intval($purchase_data['post_data']['give-form-id']), 'give_price_id' => isset($purchase_data['post_data']['give-price-id']) ? $purchase_data['post_data']['give-price-id'] : '', 'date' => $purchase_data['date'], 'user_email' => $purchase_data['user_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => give_get_currency(), 'user_info' => $purchase_data['user_info'], 'status' => 'pending'); // Record the pending payment $payment = give_insert_payment($payment_data); if ($payment) { give_update_payment_status($payment, 'publish'); give_send_to_success_page(); } else { give_record_gateway_error(esc_html__('Payment Error', 'give'), sprintf(esc_html__('The payment creation failed while processing a manual (free or test) donation. Payment data: %s', 'give'), json_encode($payment_data)), $payment); // If errors are present, send the user back to the purchase page so they can be corrected give_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['give-gateway']); } }
public function setUp() { parent::setUp(); global $wp_rewrite, $wp_query; $GLOBALS['wp_rewrite']->init(); flush_rewrite_rules(false); $this->_api = new Give_API(); $roles = new Give_Roles(); $roles->add_roles(); $roles->add_caps(); $this->_api->add_endpoint($wp_rewrite); $this->_rewrite = $wp_rewrite; $this->_query = $wp_query; //Create a Donation Form $post_id = $this->factory->post->create(array('post_title' => 'Test Form', 'post_type' => 'give_forms', 'post_status' => 'publish')); $this->_user_id = $this->factory->user->create(array('role' => 'administrator')); wp_set_current_user($this->_user_id); $_multi_level_donations = array(array('_give_id' => array('level_id' => '1'), '_give_amount' => '10.00', '_give_text' => 'Basic Level'), array('_give_id' => array('level_id' => '2'), '_give_amount' => '20.00', '_give_text' => 'Intermediate Level'), array('_give_id' => array('level_id' => '3'), '_give_amount' => '40.00', '_give_text' => 'Advanced Level')); $meta = array('give_price' => '0.00', '_give_price_option' => 'multi', '_give_price_options_mode' => 'on', '_give_donation_levels' => array_values($_multi_level_donations), '_give_form_earnings' => 120, '_give_form_sales' => 59); foreach ($meta as $key => $value) { update_post_meta($post_id, $key, $value); } $this->_post = get_post($post_id); $user = get_userdata(1); $user_info = array('id' => $user->ID, 'email' => '*****@*****.**', 'first_name' => $user->first_name, 'last_name' => $user->last_name); $prices = get_post_meta($post_id, '_give_donation_levels', true); $total = $prices[1]['_give_amount']; //Add a payment $purchase_data = array('price' => number_format((double) $total, 2), 'give_form_title' => get_the_title($post_id), 'give_form_id' => $post_id, 'date' => date('Y-m-d H:i:s', strtotime('-1 day')), 'purchase_key' => strtolower(md5(uniqid())), 'user_email' => $user_info['email'], 'user_info' => $user_info, 'currency' => 'USD', 'status' => 'pending', 'gateway' => 'manual'); $_SERVER['REMOTE_ADDR'] = '10.0.0.0'; $this->_payment_id = give_insert_payment($purchase_data); give_update_payment_status($this->_payment_id, 'complete'); $this->_api_output = $this->_api->get_forms(); $this->_api_output_sales = $this->_api->get_recent_donations(); global $wp_query; $wp_query->query_vars['format'] = 'override'; }
/** * Mark payments as Failed when returning to the Failed Transaction page * * @access public * @since 1.0 * @return void */ function give_listen_for_failed_payments() { $failed_page = give_get_option('failure_page', 0); if (!empty($failed_page) && is_page($failed_page) && !empty($_GET['payment-id'])) { $payment_id = absint($_GET['payment-id']); give_update_payment_status($payment_id, 'failed'); } }
/** * Upgrades the Offline Status * * @description: Reverses the issue where offline donation transactions in "pending" status where inappropriately marked as abandoned * * @since 1.3.4 * */ function give_v134_upgrade_give_offline_status() { global $wpdb; if (!current_user_can('manage_give_settings')) { wp_die(__('You do not have permission to do Give upgrades', 'give'), __('Error', 'give'), array('response' => 403)); } ignore_user_abort(true); if (!give_is_func_disabled('set_time_limit') && !ini_get('safe_mode')) { @set_time_limit(0); } // Get abandoned offline payments $select = "SELECT ID FROM {$wpdb->posts} p "; $join = "LEFT JOIN {$wpdb->postmeta} m ON p.ID = m.post_id "; $where = "WHERE p.post_type = 'give_payment' "; $where .= "AND ( p.post_status = 'abandoned' )"; $where .= "AND ( m.meta_key = '_give_payment_gateway' AND m.meta_value = 'offline' )"; $sql = $select . $join . $where; $found_payments = $wpdb->get_col($sql); foreach ($found_payments as $payment) { //Only change ones marked abandoned since our release last week //because the admin may have marked some abandoned themselves $modified_time = get_post_modified_time('U', false, $payment); //1450124863 = 12/10/2015 20:42:25 if ($modified_time >= 1450124863) { give_update_payment_status($payment, 'pending'); } } update_option('give_version', preg_replace('/[^0-9.].*/', '', GIVE_VERSION)); give_set_upgrade_complete('upgrade_give_offline_status'); delete_option('give_doing_upgrade'); wp_redirect(admin_url()); exit; }
/** * Process PayPal IPN Refunds * * @since 1.0 * * @param array $data IPN Data * @param int $payment_id The payment ID. * * @return void */ function give_process_paypal_refund($data, $payment_id = 0) { // Collect payment details if (empty($payment_id)) { return; } if (get_post_status($payment_id) == 'refunded') { return; // Only refund payments once } $payment_amount = give_get_payment_amount($payment_id); $refund_amount = $data['payment_gross'] * -1; if (number_format((double) $refund_amount, 2) < number_format((double) $payment_amount, 2)) { give_insert_payment_note($payment_id, sprintf(esc_html__('Partial PayPal refund processed: %s', 'give'), $data['parent_txn_id'])); return; // This is a partial refund } give_insert_payment_note($payment_id, sprintf(esc_html__('PayPal Payment #%s Refunded for reason: %s', 'give'), $data['parent_txn_id'], $data['reason_code'])); give_insert_payment_note($payment_id, sprintf(esc_html__('PayPal Refund Transaction ID: %s', 'give'), $data['txn_id'])); give_update_payment_status($payment_id, 'refunded'); }
/** * Process the bulk actions * * @access public * @since 1.0 * @return void */ public function process_bulk_action() { $ids = isset($_GET['payment']) ? $_GET['payment'] : false; $action = $this->current_action(); if (!is_array($ids)) { $ids = array($ids); } if (empty($action)) { return; } foreach ($ids as $id) { // Detect when a bulk action is being triggered... if ('delete' === $this->current_action()) { give_delete_purchase($id); } if ('set-status-publish' === $this->current_action()) { give_update_payment_status($id, 'publish'); } if ('set-status-pending' === $this->current_action()) { give_update_payment_status($id, 'pending'); } if ('set-status-refunded' === $this->current_action()) { give_update_payment_status($id, 'refunded'); } if ('set-status-revoked' === $this->current_action()) { give_update_payment_status($id, 'revoked'); } if ('set-status-failed' === $this->current_action()) { give_update_payment_status($id, 'failed'); } if ('set-status-abandoned' === $this->current_action()) { give_update_payment_status($id, 'abandoned'); } if ('resend-receipt' === $this->current_action()) { give_email_donation_receipt($id, false); } do_action('give_payments_table_do_bulk_action', $id, $this->current_action()); } }
/** * Update lead status of the specified payment * * @see https://github.com/Charitable/Charitable/blob/1.1.4/includes/gateways/class-charitable-gateway-paypal.php#L229-L357 * @param Pronamic_Pay_Payment $payment */ public static function status_update(Pronamic_Pay_Payment $payment) { $donation_id = $payment->get_source_id(); switch ($payment->get_status()) { case Pronamic_WP_Pay_Statuses::CANCELLED: give_update_payment_status($donation_id, 'cancelled'); break; case Pronamic_WP_Pay_Statuses::EXPIRED: give_update_payment_status($donation_id, 'abandoned'); break; case Pronamic_WP_Pay_Statuses::FAILURE: give_update_payment_status($donation_id, 'failed'); break; case Pronamic_WP_Pay_Statuses::SUCCESS: give_update_payment_status($donation_id, 'publish'); break; case Pronamic_WP_Pay_Statuses::OPEN: default: give_update_payment_status($donation_id, 'pending'); break; } }
/** * Process the bulk actions * * @access public * @since 1.0 * @return void */ public function process_bulk_action() { $ids = isset($_GET['payment']) ? $_GET['payment'] : false; $action = $this->current_action(); if (!is_array($ids)) { $ids = array($ids); } if (empty($action)) { return; } foreach ($ids as $id) { // Detect when a bulk action is being triggered... switch ($this->current_action()) { case 'delete': give_delete_purchase($id); break; case 'set-status-publish': give_update_payment_status($id, 'publish'); break; case 'set-status-pending': give_update_payment_status($id, 'pending'); break; case 'set-status-refunded': give_update_payment_status($id, 'refunded'); break; case 'set-status-revoked': give_update_payment_status($id, 'revoked'); break; case 'set-status-failed': give_update_payment_status($id, 'failed'); break; case 'set-status-cancelled': give_update_payment_status($id, 'cancelled'); break; case 'set-status-abandoned': give_update_payment_status($id, 'abandoned'); break; case 'set-status-preapproval': give_update_payment_status($id, 'preapproval'); break; case 'resend-receipt': give_email_donation_receipt($id, false); break; } /** * Fires after triggering bulk action on payments table. * * @since 1.0 * * @param int $id The ID of the payment. * @param string $current_action The action that is being triggered. */ do_action('give_payments_table_do_bulk_action', $id, $this->current_action()); } }
/** * Test Payment Status Update */ public function test_payment_status_update() { $payment = new Give_Payment($this->_payment_id); $payment->update_status('pending'); $this->assertEquals('pending', $payment->status); $this->assertEquals('Pending', $payment->status_nicename); // Test backwards compatibility give_update_payment_status($this->_payment_id, 'publish'); // Need to get the payment again since it's been updated $payment = new Give_Payment($this->_payment_id); $this->assertEquals('publish', $payment->status); $this->assertEquals('Complete', $payment->status_nicename); }
/** * Updates week-old+ 'pending' orders to 'abandoned' * * @since 1.0 * @return void */ function give_mark_abandoned_donations() { $args = array('status' => 'pending', 'number' => -1, 'fields' => 'ids'); add_filter('posts_where', 'give_filter_where_older_than_week'); $payments = give_get_payments($args); remove_filter('posts_where', 'give_filter_where_older_than_week'); if ($payments) { foreach ($payments as $payment) { $gateway = give_get_payment_gateway($payment); //Skip offline gateway payments if ($gateway == 'offline') { continue; } //Non-offline get marked as 'abandoned' give_update_payment_status($payment, 'abandoned'); } } }
/** * Updates week-old+ 'pending' orders to 'abandoned' * * @since 1.0 * @return void */ function give_mark_abandoned_orders() { $args = array('status' => 'pending', 'number' => -1, 'fields' => 'ids'); add_filter('posts_where', 'give_filter_where_older_than_week'); $payments = give_get_payments($args); remove_filter('posts_where', 'give_filter_where_older_than_week'); if ($payments) { foreach ($payments as $payment) { give_update_payment_status($payment, 'abandoned'); } } }
/** * * Process the payment details edit * * @access private * * @param $data * * @since 1.0 * @return void * */ function give_update_payment_details($data) { if (!current_user_can('edit_give_payments', $data['give_payment_id'])) { wp_die(__('You do not have permission to edit this payment record', 'give'), __('Error', 'give'), array('response' => 403)); } check_admin_referer('give_update_payment_details_nonce'); // Retrieve the payment ID $payment_id = absint($data['give_payment_id']); // Retrieve existing payment meta $meta = give_get_payment_meta($payment_id); $user_info = give_get_payment_meta_user_info($payment_id); $status = $data['give-payment-status']; $user_id = isset($data['give-payment-user-id']) ? intval($data['give-payment-user-id']) : ''; $date = sanitize_text_field($data['give-payment-date']); $hour = sanitize_text_field($data['give-payment-time-hour']); $form_id = give_get_payment_form_id($payment_id); // Restrict to our high and low if ($hour > 23) { $hour = 23; } elseif ($hour < 0) { $hour = 00; } $minute = sanitize_text_field($data['give-payment-time-min']); // Restrict to our high and low if ($minute > 59) { $minute = 59; } elseif ($minute < 0) { $minute = 00; } $address = array_map('trim', $data['give-payment-address'][0]); $date = date('Y-m-d', strtotime($date)) . ' ' . $hour . ':' . $minute . ':00'; $curr_total = give_sanitize_amount(give_get_payment_amount($payment_id)); $new_total = give_sanitize_amount($_POST['give-payment-total']); $curr_customer_id = sanitize_text_field($data['give-current-customer']); $new_customer_id = sanitize_text_field($data['customer-id']); do_action('give_update_edited_purchase', $payment_id); // Update main payment record $updated = wp_update_post(array('ID' => $payment_id, 'edit_date' => true, 'post_date' => $date)); if (0 === $updated) { wp_die(esc_attr__('Error Updating Payment', 'give'), esc_attr__('Error', 'give'), array('response' => 400)); } $customer_changed = false; if (isset($data['give-new-customer']) && $data['give-new-customer'] == '1') { $email = isset($data['give-new-customer-email']) ? sanitize_text_field($data['give-new-customer-email']) : ''; $names = isset($data['give-new-customer-name']) ? sanitize_text_field($data['give-new-customer-name']) : ''; if (empty($email) || empty($names)) { wp_die(esc_attr__('New Customers require a name and email address', 'give')); } $customer = new Give_Customer($email); if (empty($customer->id)) { $customer_data = array('name' => $names, 'email' => $email); $user_id = email_exists($email); if (false !== $user_id) { $customer_data['user_id'] = $user_id; } if (!$customer->create($customer_data)) { // Failed to crete the new customer, assume the previous customer $customer_changed = false; $customer = new Give_Customer($curr_customer_id); give_set_error('give-payment-new-customer-fail', __('Error creating new customer', 'give')); } } $new_customer_id = $customer->id; $previous_customer = new Give_Customer($curr_customer_id); $customer_changed = true; } elseif ($curr_customer_id !== $new_customer_id) { $customer = new Give_Customer($new_customer_id); $email = $customer->email; $names = $customer->name; $previous_customer = new Give_Customer($curr_customer_id); $customer_changed = true; } else { $customer = new Give_Customer($curr_customer_id); $email = $customer->email; $names = $customer->name; } // Setup first and last name from input values $names = explode(' ', $names); $first_name = !empty($names[0]) ? $names[0] : ''; $last_name = ''; if (!empty($names[1])) { unset($names[0]); $last_name = implode(' ', $names); } if ($customer_changed) { // Remove the stats and payment from the previous customer and attach it to the new customer $previous_customer->remove_payment($payment_id, false); $customer->attach_payment($payment_id, false); // If purchase was completed and not ever refunded, adjust stats of customers if ('revoked' == $status || 'publish' == $status) { $previous_customer->decrease_purchase_count(); $previous_customer->decrease_value($new_total); $customer->increase_purchase_count(); $customer->increase_value($new_total); } update_post_meta($payment_id, '_give_payment_customer_id', $customer->id); } // Set new meta values $user_info['id'] = $customer->user_id; $user_info['email'] = $customer->email; $user_info['first_name'] = $first_name; $user_info['last_name'] = $last_name; $user_info['address'] = $address; $meta['user_info'] = $user_info; // Check for payment notes if (!empty($data['give-payment-note'])) { $note = wp_kses($data['give-payment-note'], array()); give_insert_payment_note($payment_id, $note); } // Set new status give_update_payment_status($payment_id, $status); give_update_payment_meta($payment_id, '_give_payment_user_id', $customer->user_id); give_update_payment_meta($payment_id, '_give_payment_user_email', $customer->email); give_update_payment_meta($payment_id, '_give_payment_meta', $meta); give_update_payment_meta($payment_id, '_give_payment_total', $new_total); // Adjust total store earnings if the payment total has been changed if ($new_total !== $curr_total && ('publish' == $status || 'revoked' == $status)) { if ($new_total > $curr_total) { // Increase if our new total is higher $difference = $new_total - $curr_total; give_increase_total_earnings($difference); $form = new Give_Donate_Form($form_id); $form->increase_earnings($difference); } elseif ($curr_total > $new_total) { // Decrease if our new total is lower $difference = $curr_total - $new_total; give_decrease_total_earnings($difference); $form = new Give_Donate_Form($form_id); $form->decrease_earnings($difference); } } do_action('give_updated_edited_purchase', $payment_id); wp_safe_redirect(admin_url('edit.php?post_type=give_forms&page=give-payment-history&view=view-order-details&give-message=payment-updated&id=' . $payment_id)); exit; }
/** * Authorize.net Payments * * @param $purchase_data */ public function give_process_authorize_net_payment($purchase_data) { if (!isset($_POST['card_number']) || $_POST['card_number'] == '') { give_set_error('empty_card', __('You must enter a card number', 'give')); } if (!isset($_POST['card_name']) || $_POST['card_name'] == '') { give_set_error('empty_card_name', __('You must enter the name on your card', 'give')); } if (!isset($_POST['card_exp_month']) || $_POST['card_exp_month'] == '') { give_set_error('empty_month', __('You must enter an expiration month', 'give')); } if (!isset($_POST['card_exp_year']) || $_POST['card_exp_year'] == '') { give_set_error('empty_year', __('You must enter an expiration year', 'give')); } if (!isset($_POST['card_cvc']) || $_POST['card_cvc'] == '' || strlen($_POST['card_cvc']) < 3) { give_set_error('empty_cvc', __('You must enter a valid CVC', 'give')); } $errors = give_get_errors(); //No errors: Continue with payment processing if (!$errors) { //Include Authorize SDK require_once GIVE_AUTHORIZE_PLUGIN_DIR . '/includes/anet_php_sdk/AuthorizeNet.php'; if (!give_is_test_mode()) { //LIVE: $authorize_api_login = give_get_option('give_api_login'); $authorize_trans_key = give_get_option('give_transaction_key'); } else { //SANDBOX $authorize_api_login = give_get_option('give_authorize_sandbox_api_login'); $authorize_trans_key = give_get_option('give_authorize_sandbox_transaction_key'); } //Check for credentials entered if (empty($authorize_api_login) || empty($authorize_trans_key)) { give_set_error('error_id_here', __('Error: Missing API Login or Transaction key. Please enter them in the plugin settings.', 'give-authorize')); return; } //Proceed with Authorize AIM $transaction = new AuthorizeNetAIM($authorize_api_login, $authorize_trans_key); $transaction->VERIFY_PEER = false; //Sandbox or not? if (give_is_test_mode()) { $transaction->setSandbox(true); } else { $transaction->setSandbox(false); } $card_info = $purchase_data['card_info']; $card_names = explode(' ', $card_info['card_name']); $first_name = isset($card_names[0]) ? $card_names[0] : $purchase_data['user_info']['first_name']; if (!empty($card_names[1])) { unset($card_names[0]); $last_name = implode(' ', $card_names); } else { $last_name = $purchase_data['user_info']['last_name']; } $transaction->amount = $purchase_data['price']; $transaction->card_num = strip_tags(trim($card_info['card_number'])); $transaction->card_code = strip_tags(trim($card_info['card_cvc'])); $transaction->exp_date = strip_tags(trim($card_info['card_exp_month'])) . '/' . strip_tags(trim($card_info['card_exp_year'])); $transaction->description = give_get_purchase_summary($purchase_data); $transaction->first_name = $first_name; $transaction->last_name = $last_name; $transaction->address = $card_info['card_address'] . ' ' . $card_info['card_address_2']; $transaction->city = $card_info['card_city']; $transaction->country = $card_info['card_country']; $transaction->state = $card_info['card_state']; $transaction->zip = $card_info['card_zip']; $transaction->customer_ip = give_get_ip(); $transaction->email = $purchase_data['user_email']; $transaction->invoice_num = $purchase_data['purchase_key']; try { $response = $transaction->authorizeAndCapture(); if ($response->approved) { $payment_data = array('price' => $purchase_data['price'], 'give_form_title' => $purchase_data['post_data']['give-form-title'], 'give_form_id' => intval($purchase_data['post_data']['give-form-id']), 'price_id' => isset($purchase_data['post_data']['give-price-id']) ? intval($purchase_data['post_data']['give-price-id']) : '', 'date' => $purchase_data['date'], 'user_email' => $purchase_data['user_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => give_get_currency(), 'user_info' => $purchase_data['user_info'], 'status' => 'pending', 'gateway' => 'authorizenet'); $payment = give_insert_payment($payment_data); if ($payment) { give_update_payment_status($payment, 'publish'); give_send_to_success_page(); } else { give_set_error('authorize_error', __('Error: your payment could not be recorded. Please try again', 'give')); give_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['give-gateway']); } } else { if (isset($response->response_reason_text)) { $error = $response->response_reason_text; } elseif (isset($response->error_message)) { $error = $response->error_message; } else { $error = ''; } if (strpos(strtolower($error), 'the credit card number is invalid') !== false) { give_set_error('invalid_card', __('Your card number is invalid', 'give')); } elseif (strpos(strtolower($error), 'this transaction has been declined') !== false) { give_set_error('invalid_card', __('Your card has been declined', 'give')); } elseif (isset($response->response_reason_text)) { give_set_error('api_error', $response->response_reason_text); } elseif (isset($response->error_message)) { give_set_error('api_error', $response->error_message); } else { give_set_error('api_error', sprintf(__('An error occurred. Error data: %s', 'give'), print_r($response, true))); } give_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['give-gateway']); } } catch (AuthorizeNetException $e) { give_set_error('request_error', $e->getMessage()); give_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['give-gateway']); } } else { give_send_back_to_checkout('?payment-mode=' . $purchase_data['post_data']['give-gateway']); } }