Google
Edit File: stripe.php
<?php /** * Seamless Donations by David Gewirtz, adopted from Allen Snook * * Lab Notes: http://zatzlabs.com/lab-notes/ * Plugin Page: http://zatzlabs.com/seamless-donations/ * Contact: http://zatzlabs.com/contact-us/ * * Copyright (c) 2015-2020 by David Gewirtz * */ function seamless_donations_init_stripe($api_key) { \Stripe\Stripe::setAppInfo( 'WordPress SeamlessDonationsStripe', get_option('dgx_donate_active_version'), 'https://zatzlabs.com', 'pp_partner_HLBzVKtlNzaGrU' // Used by Stripe to identify your plugin ); \Stripe\Stripe::setApiKey($api_key); \Stripe\Stripe::setApiVersion('2017-06-05'); wp_enqueue_script('stripe', 'https://js.stripe.com/v3/'); if (isset($_SERVER['HTTPS'])) { // Present an error to the user } } function seamless_donations_stripe_get_payment_intent($payment_id) { $intent = \Stripe\PaymentIntent::retrieve( $payment_id, [] ); return $intent; } function seamless_donations_stripe_get_invoice_from_payment_intent($payment_id) { $intent = seamless_donations_stripe_get_payment_intent($payment_id); $invoice_id = $intent->invoice; return $invoice_id; } function seamless_donations_stripe_get_invoice_list_from_payment_intents($days = 30) { $intent_array = array(); $intent_list = \Stripe\PaymentIntent::all([ 'created' => [ // Check for subscriptions created in the last year. 'gte' => time() - $days * 24 * 60 * 60, ], ]); foreach ($intent_list->autoPagingIterator() as $intent) { if (isset($intent->invoice)) { $invoice_id = $intent->invoice; $subscription_id = seamless_donations_stripe_get_subscription_from_invoice($invoice_id); $intent_array[$invoice_id] = $subscription_id; } } return $intent_array; } function seamless_donations_stripe_get_invoice($invoice_id) { $invoice = \Stripe\Invoice::retrieve( $invoice_id, [] ); return $invoice; } function seamless_donations_stripe_get_subscription_from_invoice($invoice_id) { $invoice = seamless_donations_stripe_get_invoice($invoice_id); $subscription_id = $invoice->subscription; return $subscription_id; } function seamless_donations_stripe_get_invoice_list_from_subscription($subscription_id, $days = 30) { $invoice_array = array(); $invoice_list = \Stripe\Invoice::all([ 'created' => [ // Check for subscriptions created in the last year. 'gte' => time() - $days * 24 * 60 * 60, ], 'subscription' => $subscription_id, ]); foreach ($invoice_list->autoPagingIterator() as $invoice) { $reason = $invoice->billing_reason; $invoice_id = $invoice->id; $invoice_array[$invoice_id] = $reason; } return $invoice_array; } function seamless_donations_stripe_get_subscription($subscription_id) { $subscription = \Stripe\Subscription::retrieve( $subscription_id, [] ); return $subscription; } function seamless_donations_stripe_get_latest_invoice_from_subscription($subscription_id) { $subscription = seamless_donations_stripe_get_subscription($subscription_id); $latest = $subscription->latest_invoice; return $latest; } function seamless_donations_stripe_get_first_invoice_from_subscription($subscription_id, $days = 30) { $list = seamless_donations_stripe_get_invoice_list_from_subscription($subscription_id, $days); foreach ($list as $invoice_id => $status) { if ($status == 'subscription_update') { return $invoice_id; } if ($status == 'subscription_create') { return $invoice_id; } } return false; } function seamless_donations_stripe_is_first_invoice_of_subscription($invoice_id, $days = 30) { $subscription_id = seamless_donations_stripe_get_subscription_from_invoice($invoice_id); $list = seamless_donations_stripe_get_invoice_list_from_subscription($subscription_id, $days); if ($list[$invoice_id] == 'subscription_update') { return true; } return false; } function seamless_donations_stripe_get_event_history_json($days = 1) { dgx_donate_debug_log('Entering Stripe event scan'); $event_log = ''; $currency_code = get_option('dgx_donate_currency'); $server_mode = get_option('dgx_donate_stripe_server'); if ($server_mode == 'LIVE') { $stripe_secret_key = get_option('dgx_donate_live_stripe_secret_key'); $endpoint_secret = get_option('dgx_donate_live_webhook_stripe_secret_key'); } else { $stripe_secret_key = get_option('dgx_donate_test_stripe_secret_key'); //$stripe_secret_key = get_option('dgx_donate_test_stripe_api_key'); $endpoint_secret = get_option('dgx_donate_test_webhook_stripe_secret_key'); } // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys \Stripe\Stripe::setApiKey($stripe_secret_key); dgx_donate_debug_log('Stripe API key set'); // 'dgx_donate_stripe_event_type_to_scan' $stripe_event_query_array = [ //'type' => 'checkout.session.completed', 'created' => [ // Check for events created in the last 24 hours. 'gte' => time() - 24 * 60 * 60 * $days, ], ]; $stripe_event_type_to_scan = get_option('dgx_donate_stripe_event_type_to_scan'); if ($stripe_event_type_to_scan != 'ALL') { $stripe_event_query_array['type'] = $stripe_event_type_to_scan; } $events = \Stripe\Event::all($stripe_event_query_array); dgx_donate_debug_log('Stripe events object created'); foreach ($events->autoPagingIterator() as $event) { if($event_log != '') { $event_log .= PHP_EOL . PHP_EOL; } $stripe_event_id = $event->id; $stripe_event_created = $event->created; $stripe_event_created_string = date('m/d/Y H:i:s', $stripe_event_created); $stripe_event_livemode = $event->livemode; $stripe_event_type = $event->type; $event_log .= "EVENT ID: " . $stripe_event_id . PHP_EOL; $event_log .= "EVENT TYPE: " . $stripe_event_type . PHP_EOL; $event_log .= "EVENT CREATED: " . $stripe_event_created_string . PHP_EOL; $event_log .= "LIVE MODE: " . $stripe_event_livemode . PHP_EOL; $stripe_retrieved_event = \Stripe\Event::retrieve( $stripe_event_id, [] ); $json = $stripe_retrieved_event->toJSON(); // I would modify dgx_donate_debug_log('Checking for donations'); to explicitly log the count of $events->data and the first element $event_log .= $json; } return $event_log; }