@@ -756,8 +756,6 @@ func StripeCreateCustomerPortal(
756756
757757func UnsubscribeStripe (session * session.ClientSession ) error {
758758
759- glog .Infof ("[unsubscribe] Unsubscribing from Stripe for network %s" , session .ByJwt .NetworkId )
760-
761759 var subscriptionRenewals []struct {
762760 TransactionId string
763761 EndTime time.Time
@@ -810,8 +808,6 @@ func UnsubscribeStripe(session *session.ClientSession) error {
810808 EndTime : endTime ,
811809 })
812810
813- glog .Infof ("[unsubscribe] Found active subscription renewal with transaction id: %s and end time: %s" , txId , endTime .String ())
814-
815811 }
816812 })
817813
@@ -822,7 +818,6 @@ func UnsubscribeStripe(session *session.ClientSession) error {
822818 }
823819
824820 if len (subscriptionRenewals ) == 0 {
825- glog .Infof ("[unsubscribe] No active Stripe subscriptions found for network %s" , session .ByJwt .NetworkId )
826821 return nil
827822 }
828823
@@ -866,18 +861,58 @@ func UnsubscribeStripe(session *session.ClientSession) error {
866861 // Cancel the subscription
867862 glog .Infof ("[unsubscribe] Canceling Stripe subscription %s for network %s" , subscriptionId , session .ByJwt .NetworkId )
868863
869- params := & stripe.SubscriptionCancelParams {}
870- _ , err = subscription .Cancel (subscriptionId , params )
864+ cancelUrl := fmt .Sprintf ("https://api.stripe.com/v1/subscriptions/%s" , subscriptionId )
865+
866+ req , err := http .NewRequestWithContext (session .Ctx , "DELETE" , cancelUrl , nil )
867+ if err != nil {
868+ glog .Errorf ("[unsubscribe] Failed to create cancel request for subscription %s: %v" , subscriptionId , err )
869+ continue
870+ }
871+
872+ req .Header .Add ("Authorization" , fmt .Sprintf ("Bearer %s" , stripeApiToken ()))
871873
874+ httpClient := server .DefaultHttpClient ()
875+ resp , err := httpClient .Do (req )
872876 if err != nil {
873877 glog .Errorf ("[unsubscribe] Failed to cancel Stripe subscription %s: %v" , subscriptionId , err )
874- // Continue to try other subscriptions even if one fails
878+ continue
879+ }
880+ defer resp .Body .Close ()
881+
882+ if resp .StatusCode < 200 || resp .StatusCode >= 300 {
883+ glog .Errorf ("[unsubscribe] Stripe API returned error status %d for subscription %s" , resp .StatusCode , subscriptionId )
875884 continue
876885 }
877886
878887 glog .Infof ("[unsubscribe] Successfully canceled Stripe subscription %s" , subscriptionId )
879888
880889 }
881890
891+ // set subscription_renewal end time as now for all active subscriptions
892+ // to prevent transfer balance from being unnecessarily added
893+ server .Tx (session .Ctx , func (tx server.PgTx ) {
894+
895+ _ , err := tx .Exec (
896+ session .Ctx ,
897+ `
898+ UPDATE subscription_renewal
899+ SET end_time = $1
900+ WHERE
901+ network_id = $2
902+ AND market = $3
903+ AND end_time > $4
904+ ` ,
905+ server .NowUtc (),
906+ session .ByJwt .NetworkId ,
907+ model .SubscriptionMarketStripe ,
908+ server .NowUtc (),
909+ )
910+
911+ if err != nil {
912+ glog .Errorf ("[unsubscribe] Failed to update subscription_renewal end times: %v" , err )
913+ }
914+
915+ })
916+
882917 return nil
883918}
0 commit comments