/** * Delete a card */ public function delete_card() { if (!isset($_POST['stripe_delete_card']) || !is_account_page()) { return; } if (!is_user_logged_in() || !($customer_id = get_user_meta(get_current_user_id(), '_stripe_customer_id', true)) || !is_string($customer_id) || !wp_verify_nonce($_POST['_wpnonce'], "stripe_del_card")) { wp_die(__('Unable to verify deletion, please try again', 'woocommerce-gateway-stripe')); } $stripe = new WC_Gateway_Stripe(); $result = $stripe->stripe_request(array(), 'customers/' . $customer_id . '/cards/' . sanitize_text_field($_POST['stripe_delete_card']), 'DELETE'); delete_transient('stripe_cards_' . $customer_id); if (is_wp_error($result)) { wc_add_notice(__('Unable to delete card.', 'woocommerce-gateway-stripe'), 'error'); } else { wc_add_notice(__('Card deleted.', 'woocommerce-gateway-stripe'), 'success'); } wp_safe_redirect(apply_filters('wc_stripe_manage_saved_cards_url', get_permalink(woocommerce_get_page_id('myaccount')))); exit; }
/** * Cancel pre-auth on refund/cancellation * * @param int $order_id */ public function cancel_payment($order_id) { $order = new WC_Order($order_id); if ($order->payment_method == 'stripe') { $charge = get_post_meta($order_id, '_stripe_charge_id', true); if ($charge) { $stripe = new WC_Gateway_Stripe(); $result = $stripe->stripe_request(array('amount' => $order->order_total * 100), 'charges/' . $charge . '/refund'); if (is_wp_error($result)) { $order->add_order_note(__('Unable to refund charge!', 'woocommerce-gateway-stripe') . ' ' . $result->get_error_message()); } else { $order->add_order_note(sprintf(__('Stripe charge refunded (Charge ID: %s)', 'woocommerce-gateway-stripe'), $result->id)); delete_post_meta($order->id, '_stripe_charge_captured'); delete_post_meta($order->id, '_stripe_charge_id'); } } } }